Replace the old snapshot-based approach with the new publish document system for findings and obligations. Includes GraphQL mutations, MCP tools, CLI commands, e2e tests, frontend publish dialogs, and snapshot-to-document migration tools. Remove snapshot mode entirely from findings and obligations: drop snapshotId from GraphQL schemas, filters, resolvers, MCP spec, frontend routes, pages, and helpers. The snapshot_id column remains in the database but is now filtered out with snapshot_id IS NULL. Remove auditor's ability to publish SoA. Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
94 lines
2.4 KiB
GraphQL
94 lines
2.4 KiB
GraphQL
enum SnapshotsType
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.SnapshotsType") {
|
|
RISKS @goEnum(value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeRisks")
|
|
VENDORS
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeVendors")
|
|
PROCESSING_ACTIVITIES
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeProcessingActivities"
|
|
)
|
|
STATEMENTS_OF_APPLICABILITY
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.SnapshotsTypeStatementsOfApplicability"
|
|
)
|
|
}
|
|
|
|
enum SnapshotOrderField
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.SnapshotOrderField") {
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.SnapshotOrderFieldCreatedAt"
|
|
)
|
|
NAME
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.SnapshotOrderFieldName")
|
|
TYPE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.SnapshotOrderFieldType")
|
|
}
|
|
|
|
input SnapshotOrder
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SnapshotOrderBy"
|
|
) {
|
|
direction: OrderDirection!
|
|
field: SnapshotOrderField!
|
|
}
|
|
|
|
type Snapshot implements Node {
|
|
id: ID!
|
|
organization: Organization! @goField(forceResolver: true)
|
|
name: String!
|
|
description: String
|
|
type: SnapshotsType!
|
|
|
|
controls(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
orderBy: ControlOrder
|
|
filter: ControlFilter
|
|
): ControlConnection! @goField(forceResolver: true)
|
|
|
|
createdAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type SnapshotConnection
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SnapshotConnection"
|
|
) {
|
|
totalCount: Int! @goField(forceResolver: true)
|
|
edges: [SnapshotEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type SnapshotEdge {
|
|
cursor: CursorKey!
|
|
node: Snapshot!
|
|
}
|
|
|
|
extend type Mutation {
|
|
createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload!
|
|
deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload!
|
|
}
|
|
|
|
input CreateSnapshotInput {
|
|
organizationId: ID!
|
|
name: String!
|
|
description: String
|
|
type: SnapshotsType!
|
|
}
|
|
|
|
input DeleteSnapshotInput {
|
|
snapshotId: ID!
|
|
}
|
|
|
|
type CreateSnapshotPayload {
|
|
snapshotEdge: SnapshotEdge!
|
|
}
|
|
|
|
type DeleteSnapshotPayload {
|
|
deletedSnapshotId: ID!
|
|
}
|