Add enum to handle rejected status of trust center document access

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2025-12-05 22:42:27 +04:00
parent c8471cd48d
commit 19d850e90a
10 changed files with 635 additions and 189 deletions

View File

@@ -0,0 +1,21 @@
CREATE TYPE trust_center_document_access_status AS ENUM ('REQUESTED', 'GRANTED', 'REJECTED', 'REVOKED');
ALTER TABLE
trust_center_document_accesses
ADD
COLUMN status trust_center_document_access_status;
UPDATE
trust_center_document_accesses
SET
status = CASE
WHEN active = 'T' THEN 'GRANTED' :: trust_center_document_access_status
ELSE 'REQUESTED' :: trust_center_document_access_status
END;
ALTER TABLE
trust_center_document_accesses
ALTER COLUMN
status
SET
NOT NULL;

View File

@@ -37,6 +37,7 @@ type (
ReportID *gid.GID `db:"report_id"` ReportID *gid.GID `db:"report_id"`
TrustCenterFileID *gid.GID `db:"trust_center_file_id"` TrustCenterFileID *gid.GID `db:"trust_center_file_id"`
Active bool `db:"active"` Active bool `db:"active"`
Status TrustCenterDocumentAccessStatus `db:"status"`
Requested bool `db:"requested"` Requested bool `db:"requested"`
CreatedAt time.Time `db:"created_at"` CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"` UpdatedAt time.Time `db:"updated_at"`
@@ -85,6 +86,7 @@ SELECT
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -135,6 +137,7 @@ SELECT
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -186,6 +189,7 @@ SELECT
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -236,6 +240,7 @@ INSERT INTO trust_center_document_accesses (
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -248,6 +253,7 @@ INSERT INTO trust_center_document_accesses (
@report_id, @report_id,
@trust_center_file_id, @trust_center_file_id,
@active, @active,
@status::trust_center_document_access_status,
@requested, @requested,
@created_at, @created_at,
@updated_at @updated_at
@@ -262,6 +268,7 @@ INSERT INTO trust_center_document_accesses (
"document_id": tcda.DocumentID, "document_id": tcda.DocumentID,
"report_id": tcda.ReportID, "report_id": tcda.ReportID,
"trust_center_file_id": tcda.TrustCenterFileID, "trust_center_file_id": tcda.TrustCenterFileID,
"status": tcda.Status,
"active": tcda.Active, "active": tcda.Active,
"requested": tcda.Requested, "requested": tcda.Requested,
"created_at": tcda.CreatedAt, "created_at": tcda.CreatedAt,
@@ -302,7 +309,7 @@ func (tcda *TrustCenterDocumentAccess) Update(
) error { ) error {
q := ` q := `
UPDATE trust_center_document_accesses SET UPDATE trust_center_document_accesses SET
active = @active, status = @status::trust_center_document_access_status,
updated_at = @updated_at updated_at = @updated_at
WHERE WHERE
%s %s
@@ -313,7 +320,7 @@ WHERE
args := pgx.StrictNamedArgs{ args := pgx.StrictNamedArgs{
"id": tcda.ID, "id": tcda.ID,
"active": tcda.Active, "status": tcda.Status,
"updated_at": tcda.UpdatedAt, "updated_at": tcda.UpdatedAt,
} }
maps.Copy(args, scope.SQLArguments()) maps.Copy(args, scope.SQLArguments())
@@ -401,7 +408,7 @@ WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
AND requested = true AND requested = true
AND active = false AND status = 'REQUESTED'::trust_center_document_access_status
` `
q = fmt.Sprintf(q, scope.SQLFragment()) q = fmt.Sprintf(q, scope.SQLFragment())
@@ -435,7 +442,7 @@ FROM
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
AND active = true AND status = 'GRANTED'::trust_center_document_access_status
` `
q = fmt.Sprintf(q, scope.SQLFragment()) q = fmt.Sprintf(q, scope.SQLFragment())
@@ -525,6 +532,7 @@ final_items AS (
ai.report_id, ai.report_id,
ai.trust_center_file_id, ai.trust_center_file_id,
COALESCE(tcda.active, false) AS active, COALESCE(tcda.active, false) AS active,
COALESCE(tcda.status, 'REQUESTED'::trust_center_document_access_status) AS status,
COALESCE(tcda.requested, false) AS requested, COALESCE(tcda.requested, false) AS requested,
COALESCE(tcda.created_at, ai.item_created_at) AS created_at, COALESCE(tcda.created_at, ai.item_created_at) AS created_at,
COALESCE(tcda.updated_at, ai.item_updated_at) AS updated_at COALESCE(tcda.updated_at, ai.item_updated_at) AS updated_at
@@ -546,6 +554,7 @@ SELECT
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -591,6 +600,7 @@ SELECT
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -623,7 +633,7 @@ WHERE
return nil return nil
} }
func DeactivateByTrustCenterAccessID( func DeleteByTrustCenterAccessID(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -631,8 +641,7 @@ func DeactivateByTrustCenterAccessID(
updatedAt time.Time, updatedAt time.Time,
) error { ) error {
q := ` q := `
UPDATE trust_center_document_accesses DELETE FROM trust_center_document_accesses
SET active = false, updated_at = @updated_at
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -648,7 +657,7 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot deactivate trust center document accesses: %w", err) return fmt.Errorf("cannot delete trust center document accesses: %w", err)
} }
return nil return nil
@@ -664,7 +673,7 @@ func ActivateByDocumentIDs(
) error { ) error {
q := ` q := `
UPDATE trust_center_document_accesses UPDATE trust_center_document_accesses
SET active = true, updated_at = @updated_at SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -688,7 +697,7 @@ WHERE
return nil return nil
} }
func DeleteByDocumentIDs( func RejectByDocumentIDs(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -696,7 +705,8 @@ func DeleteByDocumentIDs(
documentIDs []gid.GID, documentIDs []gid.GID,
) error { ) error {
q := ` q := `
DELETE FROM trust_center_document_accesses UPDATE trust_center_document_accesses
SET status = 'REJECTED'::trust_center_document_access_status
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -713,7 +723,7 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot delete trust center document accesses by document IDs: %w", err) return fmt.Errorf("cannot reject trust center document accesses by document IDs: %w", err)
} }
return nil return nil
@@ -729,7 +739,7 @@ func ActivateByReportIDs(
) error { ) error {
q := ` q := `
UPDATE trust_center_document_accesses UPDATE trust_center_document_accesses
SET active = true, updated_at = @updated_at SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -753,7 +763,7 @@ WHERE
return nil return nil
} }
func DeleteByReportIDs( func RejectByReportIDs(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -761,7 +771,8 @@ func DeleteByReportIDs(
reportIDs []gid.GID, reportIDs []gid.GID,
) error { ) error {
q := ` q := `
DELETE FROM trust_center_document_accesses UPDATE trust_center_document_accesses
SET status = 'REJECTED'::trust_center_document_access_status
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -778,7 +789,7 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot delete trust center document accesses by report IDs: %w", err) return fmt.Errorf("cannot reject trust center document accesses by report IDs: %w", err)
} }
return nil return nil
@@ -809,12 +820,24 @@ WITH document_access_data AS (
null::text AS report_id, null::text AS report_id,
null::text AS trust_center_file_id, null::text AS trust_center_file_id,
false AS active, false AS active,
'REQUESTED'::trust_center_document_access_status AS status,
@requested::boolean AS requested, @requested::boolean AS requested,
@created_at::timestamptz AS created_at, @created_at::timestamptz AS created_at,
@updated_at::timestamptz AS updated_at @updated_at::timestamptz AS updated_at
) )
INSERT INTO trust_center_document_accesses ( INSERT INTO trust_center_document_accesses (
id, tenant_id, organization_id, trust_center_access_id, document_id, report_id, trust_center_file_id, active, requested, created_at, updated_at id,
tenant_id,
organization_id,
trust_center_access_id,
document_id,
report_id,
trust_center_file_id,
active,
status,
requested,
created_at,
updated_at
) )
SELECT * FROM document_access_data SELECT * FROM document_access_data
ON CONFLICT DO NOTHING ON CONFLICT DO NOTHING
@@ -907,6 +930,7 @@ SELECT
report_id, report_id,
trust_center_file_id, trust_center_file_id,
active, active,
status,
requested, requested,
created_at, created_at,
updated_at updated_at
@@ -952,7 +976,7 @@ func ActivateByTrustCenterFileIDs(
) error { ) error {
q := ` q := `
UPDATE trust_center_document_accesses UPDATE trust_center_document_accesses
SET active = true, updated_at = @updated_at SET status = 'GRANTED'::trust_center_document_access_status, updated_at = @updated_at
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -976,7 +1000,7 @@ WHERE
return nil return nil
} }
func DeleteByTrustCenterFileIDs( func RejectByTrustCenterFileIDs(
ctx context.Context, ctx context.Context,
conn pg.Conn, conn pg.Conn,
scope Scoper, scope Scoper,
@@ -984,7 +1008,8 @@ func DeleteByTrustCenterFileIDs(
trustCenterFileIDs []gid.GID, trustCenterFileIDs []gid.GID,
) error { ) error {
q := ` q := `
DELETE FROM trust_center_document_accesses UPDATE trust_center_document_accesses
SET status = 'REJECTED'::trust_center_document_access_status
WHERE WHERE
%s %s
AND trust_center_access_id = @trust_center_access_id AND trust_center_access_id = @trust_center_access_id
@@ -1001,7 +1026,7 @@ WHERE
_, err := conn.Exec(ctx, q, args) _, err := conn.Exec(ctx, q, args)
if err != nil { if err != nil {
return fmt.Errorf("cannot delete trust center document accesses by trust center file IDs: %w", err) return fmt.Errorf("cannot reject trust center document accesses by trust center file IDs: %w", err)
} }
return nil return nil
@@ -1028,12 +1053,24 @@ WITH trust_center_file_access_data AS (
null::text AS report_id, null::text AS report_id,
unnest(@trust_center_file_ids::text[]) AS trust_center_file_id, unnest(@trust_center_file_ids::text[]) AS trust_center_file_id,
false AS active, false AS active,
'REQUESTED'::trust_center_document_access_status AS status,
@requested::boolean AS requested, @requested::boolean AS requested,
@created_at::timestamptz AS created_at, @created_at::timestamptz AS created_at,
@updated_at::timestamptz AS updated_at @updated_at::timestamptz AS updated_at
) )
INSERT INTO trust_center_document_accesses ( INSERT INTO trust_center_document_accesses (
id, tenant_id, organization_id, trust_center_access_id, document_id, report_id, trust_center_file_id, active, requested, created_at, updated_at id,
tenant_id,
organization_id,
trust_center_access_id,
document_id,
report_id,
trust_center_file_id,
active,
status,
requested,
created_at,
updated_at
) )
SELECT * FROM trust_center_file_access_data SELECT * FROM trust_center_file_access_data
ON CONFLICT DO NOTHING ON CONFLICT DO NOTHING

View File

@@ -0,0 +1,49 @@
package coredata
import (
"database/sql/driver"
"fmt"
)
type TrustCenterDocumentAccessStatus string
const (
TrustCenterDocumentAccessStatusRequested TrustCenterDocumentAccessStatus = "REQUESTED"
TrustCenterDocumentAccessStatusGranted TrustCenterDocumentAccessStatus = "GRANTED"
TrustCenterDocumentAccessStatusRejected TrustCenterDocumentAccessStatus = "REJECTED"
TrustCenterDocumentAccessStatusRevoked TrustCenterDocumentAccessStatus = "REVOKED"
)
func (tcdas TrustCenterDocumentAccessStatus) String() string {
return string(tcdas)
}
func (tcdas *TrustCenterDocumentAccessStatus) Scan(value any) error {
var s string
switch v := value.(type) {
case string:
s = v
case []byte:
s = string(v)
default:
return fmt.Errorf("unsupported type for TrustCenterDocumentAccessStatus: %T", value)
}
switch s {
case "REQUESTED":
*tcdas = TrustCenterDocumentAccessStatusRequested
case "GRANTED":
*tcdas = TrustCenterDocumentAccessStatusGranted
case "REJECTED":
*tcdas = TrustCenterDocumentAccessStatusRejected
case "REVOKED":
*tcdas = TrustCenterDocumentAccessStatusRevoked
default:
return fmt.Errorf("invalid TrustCenterDocumentAccessStatus value: %q", s)
}
return nil
}
func (tcdas TrustCenterDocumentAccessStatus) Value() (driver.Value, error) {
return tcdas.String(), nil
}

View File

@@ -397,8 +397,8 @@ func (s TrustCenterAccessService) upsertDocumentAccesses(
return nil return nil
} }
if err := coredata.DeactivateByTrustCenterAccessID(ctx, tx, s.svc.scope, accessID, now); err != nil { if err := coredata.DeleteByTrustCenterAccessID(ctx, tx, s.svc.scope, accessID, now); err != nil {
return fmt.Errorf("cannot deactivate existing document accesses: %w", err) return fmt.Errorf("cannot delete existing document accesses: %w", err)
} }
if documentIDs != nil { if documentIDs != nil {

View File

@@ -91,10 +91,12 @@ enum InvitationStatus
@goEnum(value: "go.probo.inc/probo/pkg/coredata.InvitationStatusExpired") @goEnum(value: "go.probo.inc/probo/pkg/coredata.InvitationStatusExpired")
} }
enum MembershipRole @goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipRole") { enum MembershipRole
@goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipRole") {
OWNER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleOwner") OWNER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleOwner")
ADMIN @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleAdmin") ADMIN @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleAdmin")
EMPLOYEE @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleEmployee") EMPLOYEE
@goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleEmployee")
VIEWER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleViewer") VIEWER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleViewer")
} }
@@ -102,7 +104,6 @@ enum APIRole @goModel(model: "go.probo.inc/probo/pkg/coredata.APIRole") {
FULL @goEnum(value: "go.probo.inc/probo/pkg/coredata.APIRoleFull") FULL @goEnum(value: "go.probo.inc/probo/pkg/coredata.APIRoleFull")
} }
enum DocumentStatus enum DocumentStatus
@goModel(model: "go.probo.inc/probo/pkg/coredata.DocumentStatus") { @goModel(model: "go.probo.inc/probo/pkg/coredata.DocumentStatus") {
DRAFT @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentStatusDraft") DRAFT @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentStatusDraft")
@@ -172,6 +173,28 @@ enum TrustCenterVisibility
) )
} }
enum TrustCenterDocumentAccessStatus
@goModel(
model: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatus"
) {
REQUESTED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusRequested"
)
GRANTED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusGranted"
)
REJECTED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusRejected"
)
REVOKED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusRevoked"
)
}
enum NonconformityStatus enum NonconformityStatus
@goModel(model: "go.probo.inc/probo/pkg/coredata.NonconformityStatus") { @goModel(model: "go.probo.inc/probo/pkg/coredata.NonconformityStatus") {
OPEN @goEnum(value: "go.probo.inc/probo/pkg/coredata.NonconformityStatusOpen") OPEN @goEnum(value: "go.probo.inc/probo/pkg/coredata.NonconformityStatusOpen")
@@ -1864,7 +1887,8 @@ type Framework implements Node {
updatedAt: Datetime! updatedAt: Datetime!
} }
type Control implements Node @goModel( type Control implements Node
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Control" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Control"
) { ) {
id: ID! id: ID!
@@ -2032,9 +2056,10 @@ type Document implements Node {
updatedAt: Datetime! updatedAt: Datetime!
} }
type SignableDocument @goModel( type SignableDocument
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SignableDocument" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SignableDocument"
){ ) {
id: ID! id: ID!
title: String! title: String!
description: String description: String
@@ -2339,6 +2364,7 @@ type TrustCenterDocumentAccess
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TrustCenterDocumentAccess" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TrustCenterDocumentAccess"
) { ) {
active: Boolean! active: Boolean!
status: TrustCenterDocumentAccessStatus!
requested: Boolean! requested: Boolean!
document: Document @goField(forceResolver: true) document: Document @goField(forceResolver: true)
report: Report @goField(forceResolver: true) report: Report @goField(forceResolver: true)
@@ -2784,7 +2810,8 @@ type Mutation {
# Organization mutations # Organization mutations
createOrganization( createOrganization(
input: CreateOrganizationInput! input: CreateOrganizationInput!
): CreateOrganizationPayload! updateOrganization( ): CreateOrganizationPayload!
updateOrganization(
input: UpdateOrganizationInput! input: UpdateOrganizationInput!
): UpdateOrganizationPayload! ): UpdateOrganizationPayload!
updateOrganizationContext( updateOrganizationContext(
@@ -2792,7 +2819,8 @@ type Mutation {
): UpdateOrganizationContextPayload! ): UpdateOrganizationContextPayload!
deleteOrganizationHorizontalLogo( deleteOrganizationHorizontalLogo(
input: DeleteOrganizationHorizontalLogoInput! input: DeleteOrganizationHorizontalLogoInput!
): DeleteOrganizationHorizontalLogoPayload! deleteOrganization( ): DeleteOrganizationHorizontalLogoPayload!
deleteOrganization(
input: DeleteOrganizationInput! input: DeleteOrganizationInput!
): DeleteOrganizationPayload! ): DeleteOrganizationPayload!
updateTrustCenter(input: UpdateTrustCenterInput!): UpdateTrustCenterPayload! updateTrustCenter(input: UpdateTrustCenterInput!): UpdateTrustCenterPayload!
@@ -2839,96 +2867,138 @@ type Mutation {
confirmEmail(input: ConfirmEmailInput!): ConfirmEmailPayload! confirmEmail(input: ConfirmEmailInput!): ConfirmEmailPayload!
inviteUser(input: InviteUserInput!): InviteUserPayload! inviteUser(input: InviteUserInput!): InviteUserPayload!
acceptInvitation(input: AcceptInvitationInput!): AcceptInvitationPayload! acceptInvitation(input: AcceptInvitationInput!): AcceptInvitationPayload!
deleteInvitation(input: DeleteInvitationInput!): DeleteInvitationPayload! removeMember(input: RemoveMemberInput!): RemoveMemberPayload! deleteInvitation(input: DeleteInvitationInput!): DeleteInvitationPayload!
removeMember(input: RemoveMemberInput!): RemoveMemberPayload!
updateMembership(input: UpdateMembershipInput!): UpdateMembershipPayload! updateMembership(input: UpdateMembershipInput!): UpdateMembershipPayload!
# People mutations # People mutations
createPeople(input: CreatePeopleInput!): CreatePeoplePayload! updatePeople(input: UpdatePeopleInput!): UpdatePeoplePayload! deletePeople(input: DeletePeopleInput!): DeletePeoplePayload! createPeople(input: CreatePeopleInput!): CreatePeoplePayload!
updatePeople(input: UpdatePeopleInput!): UpdatePeoplePayload!
deletePeople(input: DeletePeopleInput!): DeletePeoplePayload!
# Vendor mutations # Vendor mutations
createVendor(input: CreateVendorInput!): CreateVendorPayload! updateVendor(input: UpdateVendorInput!): UpdateVendorPayload! deleteVendor(input: DeleteVendorInput!): DeleteVendorPayload! createVendor(input: CreateVendorInput!): CreateVendorPayload!
updateVendor(input: UpdateVendorInput!): UpdateVendorPayload!
deleteVendor(input: DeleteVendorInput!): DeleteVendorPayload!
# Vendor Contact mutations # Vendor Contact mutations
createVendorContact( createVendorContact(
input: CreateVendorContactInput! input: CreateVendorContactInput!
): CreateVendorContactPayload! updateVendorContact( ): CreateVendorContactPayload!
updateVendorContact(
input: UpdateVendorContactInput! input: UpdateVendorContactInput!
): UpdateVendorContactPayload! deleteVendorContact( ): UpdateVendorContactPayload!
deleteVendorContact(
input: DeleteVendorContactInput! input: DeleteVendorContactInput!
): DeleteVendorContactPayload! ): DeleteVendorContactPayload!
# Vendor Service mutations # Vendor Service mutations
createVendorService( createVendorService(
input: CreateVendorServiceInput! input: CreateVendorServiceInput!
): CreateVendorServicePayload! updateVendorService( ): CreateVendorServicePayload!
updateVendorService(
input: UpdateVendorServiceInput! input: UpdateVendorServiceInput!
): UpdateVendorServicePayload! deleteVendorService( ): UpdateVendorServicePayload!
deleteVendorService(
input: DeleteVendorServiceInput! input: DeleteVendorServiceInput!
): DeleteVendorServicePayload! ): DeleteVendorServicePayload!
# Framework mutations # Framework mutations
createFramework(input: CreateFrameworkInput!): CreateFrameworkPayload! updateFramework(input: UpdateFrameworkInput!): UpdateFrameworkPayload! importFramework(input: ImportFrameworkInput!): ImportFrameworkPayload! deleteFramework(input: DeleteFrameworkInput!): DeleteFrameworkPayload! generateFrameworkStateOfApplicability( createFramework(input: CreateFrameworkInput!): CreateFrameworkPayload!
updateFramework(input: UpdateFrameworkInput!): UpdateFrameworkPayload!
importFramework(input: ImportFrameworkInput!): ImportFrameworkPayload!
deleteFramework(input: DeleteFrameworkInput!): DeleteFrameworkPayload!
generateFrameworkStateOfApplicability(
input: GenerateFrameworkStateOfApplicabilityInput! input: GenerateFrameworkStateOfApplicabilityInput!
): GenerateFrameworkStateOfApplicabilityPayload! exportFramework(input: ExportFrameworkInput!): ExportFrameworkPayload! ): GenerateFrameworkStateOfApplicabilityPayload!
exportFramework(input: ExportFrameworkInput!): ExportFrameworkPayload!
# Control mutations # Control mutations
createControl(input: CreateControlInput!): CreateControlPayload! updateControl(input: UpdateControlInput!): UpdateControlPayload! deleteControl(input: DeleteControlInput!): DeleteControlPayload! createControl(input: CreateControlInput!): CreateControlPayload!
updateControl(input: UpdateControlInput!): UpdateControlPayload!
deleteControl(input: DeleteControlInput!): DeleteControlPayload!
# Measure mutations # Measure mutations
createMeasure(input: CreateMeasureInput!): CreateMeasurePayload! updateMeasure(input: UpdateMeasureInput!): UpdateMeasurePayload! importMeasure(input: ImportMeasureInput!): ImportMeasurePayload! deleteMeasure(input: DeleteMeasureInput!): DeleteMeasurePayload! createMeasure(input: CreateMeasureInput!): CreateMeasurePayload!
updateMeasure(input: UpdateMeasureInput!): UpdateMeasurePayload!
importMeasure(input: ImportMeasureInput!): ImportMeasurePayload!
deleteMeasure(input: DeleteMeasureInput!): DeleteMeasurePayload!
# Control mutations # Control mutations
createControlMeasureMapping( createControlMeasureMapping(
input: CreateControlMeasureMappingInput! input: CreateControlMeasureMappingInput!
): CreateControlMeasureMappingPayload! createControlDocumentMapping( ): CreateControlMeasureMappingPayload!
createControlDocumentMapping(
input: CreateControlDocumentMappingInput! input: CreateControlDocumentMappingInput!
): CreateControlDocumentMappingPayload! deleteControlMeasureMapping( ): CreateControlDocumentMappingPayload!
deleteControlMeasureMapping(
input: DeleteControlMeasureMappingInput! input: DeleteControlMeasureMappingInput!
): DeleteControlMeasureMappingPayload! deleteControlDocumentMapping( ): DeleteControlMeasureMappingPayload!
deleteControlDocumentMapping(
input: DeleteControlDocumentMappingInput! input: DeleteControlDocumentMappingInput!
): DeleteControlDocumentMappingPayload! createControlAuditMapping( ): DeleteControlDocumentMappingPayload!
createControlAuditMapping(
input: CreateControlAuditMappingInput! input: CreateControlAuditMappingInput!
): CreateControlAuditMappingPayload! deleteControlAuditMapping( ): CreateControlAuditMappingPayload!
deleteControlAuditMapping(
input: DeleteControlAuditMappingInput! input: DeleteControlAuditMappingInput!
): DeleteControlAuditMappingPayload! createControlSnapshotMapping( ): DeleteControlAuditMappingPayload!
createControlSnapshotMapping(
input: CreateControlSnapshotMappingInput! input: CreateControlSnapshotMappingInput!
): CreateControlSnapshotMappingPayload! deleteControlSnapshotMapping( ): CreateControlSnapshotMappingPayload!
deleteControlSnapshotMapping(
input: DeleteControlSnapshotMappingInput! input: DeleteControlSnapshotMappingInput!
): DeleteControlSnapshotMappingPayload! ): DeleteControlSnapshotMappingPayload!
# Task mutations # Task mutations
createTask(input: CreateTaskInput!): CreateTaskPayload! updateTask(input: UpdateTaskInput!): UpdateTaskPayload! deleteTask(input: DeleteTaskInput!): DeleteTaskPayload! assignTask(input: AssignTaskInput!): AssignTaskPayload! unassignTask(input: UnassignTaskInput!): UnassignTaskPayload! createTask(input: CreateTaskInput!): CreateTaskPayload!
updateTask(input: UpdateTaskInput!): UpdateTaskPayload!
deleteTask(input: DeleteTaskInput!): DeleteTaskPayload!
assignTask(input: AssignTaskInput!): AssignTaskPayload!
unassignTask(input: UnassignTaskInput!): UnassignTaskPayload!
# Risk mutations # Risk mutations
createRisk(input: CreateRiskInput!): CreateRiskPayload! updateRisk(input: UpdateRiskInput!): UpdateRiskPayload! deleteRisk(input: DeleteRiskInput!): DeleteRiskPayload! createRiskMeasureMapping( createRisk(input: CreateRiskInput!): CreateRiskPayload!
updateRisk(input: UpdateRiskInput!): UpdateRiskPayload!
deleteRisk(input: DeleteRiskInput!): DeleteRiskPayload!
createRiskMeasureMapping(
input: CreateRiskMeasureMappingInput! input: CreateRiskMeasureMappingInput!
): CreateRiskMeasureMappingPayload! deleteRiskMeasureMapping( ): CreateRiskMeasureMappingPayload!
deleteRiskMeasureMapping(
input: DeleteRiskMeasureMappingInput! input: DeleteRiskMeasureMappingInput!
): DeleteRiskMeasureMappingPayload! ): DeleteRiskMeasureMappingPayload!
createRiskDocumentMapping( createRiskDocumentMapping(
input: CreateRiskDocumentMappingInput! input: CreateRiskDocumentMappingInput!
): CreateRiskDocumentMappingPayload! deleteRiskDocumentMapping( ): CreateRiskDocumentMappingPayload!
deleteRiskDocumentMapping(
input: DeleteRiskDocumentMappingInput! input: DeleteRiskDocumentMappingInput!
): DeleteRiskDocumentMappingPayload! ): DeleteRiskDocumentMappingPayload!
createRiskObligationMapping( createRiskObligationMapping(
input: CreateRiskObligationMappingInput! input: CreateRiskObligationMappingInput!
): CreateRiskObligationMappingPayload! deleteRiskObligationMapping( ): CreateRiskObligationMappingPayload!
deleteRiskObligationMapping(
input: DeleteRiskObligationMappingInput! input: DeleteRiskObligationMappingInput!
): DeleteRiskObligationMappingPayload! ): DeleteRiskObligationMappingPayload!
# Evidence mutations # Evidence mutations
deleteEvidence(input: DeleteEvidenceInput!): DeleteEvidencePayload! uploadMeasureEvidence( deleteEvidence(input: DeleteEvidenceInput!): DeleteEvidencePayload!
uploadMeasureEvidence(
input: UploadMeasureEvidenceInput! input: UploadMeasureEvidenceInput!
): UploadMeasureEvidencePayload! ): UploadMeasureEvidencePayload!
# Vendor Compliance Report mutations # Vendor Compliance Report mutations
uploadVendorComplianceReport( uploadVendorComplianceReport(
input: UploadVendorComplianceReportInput! input: UploadVendorComplianceReportInput!
): UploadVendorComplianceReportPayload! deleteVendorComplianceReport( ): UploadVendorComplianceReportPayload!
deleteVendorComplianceReport(
input: DeleteVendorComplianceReportInput! input: DeleteVendorComplianceReportInput!
): DeleteVendorComplianceReportPayload! ): DeleteVendorComplianceReportPayload!
# Vendor Business Associate Agreement mutations # Vendor Business Associate Agreement mutations
uploadVendorBusinessAssociateAgreement( uploadVendorBusinessAssociateAgreement(
input: UploadVendorBusinessAssociateAgreementInput! input: UploadVendorBusinessAssociateAgreementInput!
): UploadVendorBusinessAssociateAgreementPayload! updateVendorBusinessAssociateAgreement( ): UploadVendorBusinessAssociateAgreementPayload!
updateVendorBusinessAssociateAgreement(
input: UpdateVendorBusinessAssociateAgreementInput! input: UpdateVendorBusinessAssociateAgreementInput!
): UpdateVendorBusinessAssociateAgreementPayload! deleteVendorBusinessAssociateAgreement( ): UpdateVendorBusinessAssociateAgreementPayload!
deleteVendorBusinessAssociateAgreement(
input: DeleteVendorBusinessAssociateAgreementInput! input: DeleteVendorBusinessAssociateAgreementInput!
): DeleteVendorBusinessAssociateAgreementPayload! ): DeleteVendorBusinessAssociateAgreementPayload!
# Vendor Data Privacy Agreement mutations # Vendor Data Privacy Agreement mutations
uploadVendorDataPrivacyAgreement( uploadVendorDataPrivacyAgreement(
input: UploadVendorDataPrivacyAgreementInput! input: UploadVendorDataPrivacyAgreementInput!
): UploadVendorDataPrivacyAgreementPayload! updateVendorDataPrivacyAgreement( ): UploadVendorDataPrivacyAgreementPayload!
updateVendorDataPrivacyAgreement(
input: UpdateVendorDataPrivacyAgreementInput! input: UpdateVendorDataPrivacyAgreementInput!
): UpdateVendorDataPrivacyAgreementPayload! deleteVendorDataPrivacyAgreement( ): UpdateVendorDataPrivacyAgreementPayload!
deleteVendorDataPrivacyAgreement(
input: DeleteVendorDataPrivacyAgreementInput! input: DeleteVendorDataPrivacyAgreementInput!
): DeleteVendorDataPrivacyAgreementPayload! ): DeleteVendorDataPrivacyAgreementPayload!
# Document mutations # Document mutations
@@ -2941,30 +3011,39 @@ type Mutation {
deleteMeeting(input: DeleteMeetingInput!): DeleteMeetingPayload! deleteMeeting(input: DeleteMeetingInput!): DeleteMeetingPayload!
publishDocumentVersion( publishDocumentVersion(
input: PublishDocumentVersionInput! input: PublishDocumentVersionInput!
): PublishDocumentVersionPayload! bulkPublishDocumentVersions( ): PublishDocumentVersionPayload!
bulkPublishDocumentVersions(
input: BulkPublishDocumentVersionsInput! input: BulkPublishDocumentVersionsInput!
): BulkPublishDocumentVersionsPayload! bulkDeleteDocuments( ): BulkPublishDocumentVersionsPayload!
bulkDeleteDocuments(
input: BulkDeleteDocumentsInput! input: BulkDeleteDocumentsInput!
): BulkDeleteDocumentsPayload! bulkExportDocuments( ): BulkDeleteDocumentsPayload!
bulkExportDocuments(
input: BulkExportDocumentsInput! input: BulkExportDocumentsInput!
): BulkExportDocumentsPayload! generateDocumentChangelog( ): BulkExportDocumentsPayload!
generateDocumentChangelog(
input: GenerateDocumentChangelogInput! input: GenerateDocumentChangelogInput!
): GenerateDocumentChangelogPayload! createDraftDocumentVersion( ): GenerateDocumentChangelogPayload!
createDraftDocumentVersion(
input: CreateDraftDocumentVersionInput! input: CreateDraftDocumentVersionInput!
): CreateDraftDocumentVersionPayload! deleteDraftDocumentVersion( ): CreateDraftDocumentVersionPayload!
deleteDraftDocumentVersion(
input: DeleteDraftDocumentVersionInput! input: DeleteDraftDocumentVersionInput!
): DeleteDraftDocumentVersionPayload! updateDocumentVersion( ): DeleteDraftDocumentVersionPayload!
updateDocumentVersion(
input: UpdateDocumentVersionInput! input: UpdateDocumentVersionInput!
): UpdateDocumentVersionPayload! requestSignature(input: RequestSignatureInput!): RequestSignaturePayload! bulkRequestSignatures( ): UpdateDocumentVersionPayload!
requestSignature(input: RequestSignatureInput!): RequestSignaturePayload!
bulkRequestSignatures(
input: BulkRequestSignaturesInput! input: BulkRequestSignaturesInput!
): BulkRequestSignaturesPayload! sendSigningNotifications( ): BulkRequestSignaturesPayload!
sendSigningNotifications(
input: SendSigningNotificationsInput! input: SendSigningNotificationsInput!
): SendSigningNotificationsPayload! cancelSignatureRequest( ): SendSigningNotificationsPayload!
cancelSignatureRequest(
input: CancelSignatureRequestInput! input: CancelSignatureRequestInput!
): CancelSignatureRequestPayload! ): CancelSignatureRequestPayload!
signDocument( signDocument(input: SignDocumentInput!): SignDocumentPayload!
input: SignDocumentInput!
): SignDocumentPayload!
exportDocumentVersionPDF( exportDocumentVersionPDF(
input: ExportDocumentVersionPDFInput! input: ExportDocumentVersionPDFInput!
): ExportDocumentVersionPDFPayload! ): ExportDocumentVersionPDFPayload!
@@ -2975,41 +3054,59 @@ type Mutation {
input: CreateVendorRiskAssessmentInput! input: CreateVendorRiskAssessmentInput!
): CreateVendorRiskAssessmentPayload! ): CreateVendorRiskAssessmentPayload!
assessVendor(input: AssessVendorInput!): AssessVendorPayload! assessVendor(input: AssessVendorInput!): AssessVendorPayload!
createAsset(input: CreateAssetInput!): CreateAssetPayload! updateAsset(input: UpdateAssetInput!): UpdateAssetPayload! deleteAsset(input: DeleteAssetInput!): DeleteAssetPayload! createAsset(input: CreateAssetInput!): CreateAssetPayload!
createDatum(input: CreateDatumInput!): CreateDatumPayload! updateDatum(input: UpdateDatumInput!): UpdateDatumPayload! deleteDatum(input: DeleteDatumInput!): DeleteDatumPayload! updateAsset(input: UpdateAssetInput!): UpdateAssetPayload!
createAudit(input: CreateAuditInput!): CreateAuditPayload! updateAudit(input: UpdateAuditInput!): UpdateAuditPayload! deleteAudit(input: DeleteAuditInput!): DeleteAuditPayload! uploadAuditReport(input: UploadAuditReportInput!): UploadAuditReportPayload! deleteAuditReport(input: DeleteAuditReportInput!): DeleteAuditReportPayload! deleteAsset(input: DeleteAssetInput!): DeleteAssetPayload!
createDatum(input: CreateDatumInput!): CreateDatumPayload!
updateDatum(input: UpdateDatumInput!): UpdateDatumPayload!
deleteDatum(input: DeleteDatumInput!): DeleteDatumPayload!
createAudit(input: CreateAuditInput!): CreateAuditPayload!
updateAudit(input: UpdateAuditInput!): UpdateAuditPayload!
deleteAudit(input: DeleteAuditInput!): DeleteAuditPayload!
uploadAuditReport(input: UploadAuditReportInput!): UploadAuditReportPayload!
deleteAuditReport(input: DeleteAuditReportInput!): DeleteAuditReportPayload!
# Nonconformity mutations # Nonconformity mutations
createNonconformity( createNonconformity(
input: CreateNonconformityInput! input: CreateNonconformityInput!
): CreateNonconformityPayload! updateNonconformity( ): CreateNonconformityPayload!
updateNonconformity(
input: UpdateNonconformityInput! input: UpdateNonconformityInput!
): UpdateNonconformityPayload! deleteNonconformity( ): UpdateNonconformityPayload!
deleteNonconformity(
input: DeleteNonconformityInput! input: DeleteNonconformityInput!
): DeleteNonconformityPayload! ): DeleteNonconformityPayload!
# Obligation mutations # Obligation mutations
createObligation(input: CreateObligationInput!): CreateObligationPayload! updateObligation(input: UpdateObligationInput!): UpdateObligationPayload! deleteObligation(input: DeleteObligationInput!): DeleteObligationPayload! createObligation(input: CreateObligationInput!): CreateObligationPayload!
updateObligation(input: UpdateObligationInput!): UpdateObligationPayload!
deleteObligation(input: DeleteObligationInput!): DeleteObligationPayload!
# Continual Improvement mutations # Continual Improvement mutations
createContinualImprovement( createContinualImprovement(
input: CreateContinualImprovementInput! input: CreateContinualImprovementInput!
): CreateContinualImprovementPayload! updateContinualImprovement( ): CreateContinualImprovementPayload!
updateContinualImprovement(
input: UpdateContinualImprovementInput! input: UpdateContinualImprovementInput!
): UpdateContinualImprovementPayload! deleteContinualImprovement( ): UpdateContinualImprovementPayload!
deleteContinualImprovement(
input: DeleteContinualImprovementInput! input: DeleteContinualImprovementInput!
): DeleteContinualImprovementPayload! ): DeleteContinualImprovementPayload!
# Processing Activity mutations # Processing Activity mutations
createProcessingActivity( createProcessingActivity(
input: CreateProcessingActivityInput! input: CreateProcessingActivityInput!
): CreateProcessingActivityPayload! updateProcessingActivity( ): CreateProcessingActivityPayload!
updateProcessingActivity(
input: UpdateProcessingActivityInput! input: UpdateProcessingActivityInput!
): UpdateProcessingActivityPayload! deleteProcessingActivity( ): UpdateProcessingActivityPayload!
deleteProcessingActivity(
input: DeleteProcessingActivityInput! input: DeleteProcessingActivityInput!
): DeleteProcessingActivityPayload! ): DeleteProcessingActivityPayload!
# Snapshot mutations # Snapshot mutations
createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload! deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload! createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload!
deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload!
# Custom Domain mutations # Custom Domain mutations
createCustomDomain( createCustomDomain(
input: CreateCustomDomainInput! input: CreateCustomDomainInput!
): CreateCustomDomainPayload! deleteCustomDomain( ): CreateCustomDomainPayload!
deleteCustomDomain(
input: DeleteCustomDomainInput! input: DeleteCustomDomainInput!
): DeleteCustomDomainPayload! ): DeleteCustomDomainPayload!
# SAML Configuration mutations (OWNER/ADMIN only) # SAML Configuration mutations (OWNER/ADMIN only)
@@ -3022,11 +3119,16 @@ type Mutation {
# Step 3: Configure SAML (only allowed after domain is verified) # Step 3: Configure SAML (only allowed after domain is verified)
createSAMLConfiguration( createSAMLConfiguration(
input: CreateSAMLConfigurationInput! input: CreateSAMLConfigurationInput!
): CreateSAMLConfigurationPayload! updateSAMLConfiguration( ): CreateSAMLConfigurationPayload!
updateSAMLConfiguration(
input: UpdateSAMLConfigurationInput! input: UpdateSAMLConfigurationInput!
): UpdateSAMLConfigurationPayload! deleteSAMLConfiguration( ): UpdateSAMLConfigurationPayload!
deleteSAMLConfiguration(
input: DeleteSAMLConfigurationInput! input: DeleteSAMLConfigurationInput!
): DeleteSAMLConfigurationPayload! enableSAML(input: EnableSAMLInput!): EnableSAMLPayload! disableSAML(input: DisableSAMLInput!): DisableSAMLPayload!} ): DeleteSAMLConfigurationPayload!
enableSAML(input: EnableSAMLInput!): EnableSAMLPayload!
disableSAML(input: DisableSAMLInput!): DisableSAMLPayload!
}
# Input Types # Input Types
input GenerateFrameworkStateOfApplicabilityInput { input GenerateFrameworkStateOfApplicabilityInput {
@@ -4228,7 +4330,10 @@ type DeleteMeasurePayload {
deletedMeasureId: ID! deletedMeasureId: ID!
} }
type DocumentVersion implements Node @goModel(model: "go.probo.inc/probo/pkg/server/api/console/v1/types.DocumentVersion") { type DocumentVersion implements Node
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.DocumentVersion"
) {
id: ID! id: ID!
document: Document! @goField(forceResolver: true) document: Document! @goField(forceResolver: true)
status: DocumentStatus! status: DocumentStatus!
@@ -4523,7 +4628,8 @@ type DeleteAssetPayload {
deletedAssetId: ID! deletedAssetId: ID!
} }
type Datum implements Node @goModel(model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Datum") { type Datum implements Node
@goModel(model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Datum") {
id: ID! id: ID!
snapshotId: ID snapshotId: ID
name: String! name: String!

View File

@@ -1456,6 +1456,7 @@ type ComplexityRoot struct {
Document func(childComplexity int) int Document func(childComplexity int) int
Report func(childComplexity int) int Report func(childComplexity int) int
Requested func(childComplexity int) int Requested func(childComplexity int) int
Status func(childComplexity int) int
TrustCenterFile func(childComplexity int) int TrustCenterFile func(childComplexity int) int
} }
@@ -2223,6 +2224,8 @@ type TrustCenterAccessResolver interface {
AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error) AvailableDocumentAccesses(ctx context.Context, obj *types.TrustCenterAccess, first *int, after *page.CursorKey, last *int, before *page.CursorKey, orderBy *types.OrderBy[coredata.TrustCenterDocumentAccessOrderField]) (*types.TrustCenterDocumentAccessConnection, error)
} }
type TrustCenterDocumentAccessResolver interface { type TrustCenterDocumentAccessResolver interface {
Status(ctx context.Context, obj *types.TrustCenterDocumentAccess) (coredata.TrustCenterDocumentAccessStatus, error)
Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error)
Report(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Report, error) Report(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Report, error)
TrustCenterFile(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.TrustCenterFile, error) TrustCenterFile(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.TrustCenterFile, error)
@@ -8033,6 +8036,12 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin
} }
return e.complexity.TrustCenterDocumentAccess.Requested(childComplexity), true return e.complexity.TrustCenterDocumentAccess.Requested(childComplexity), true
case "TrustCenterDocumentAccess.status":
if e.complexity.TrustCenterDocumentAccess.Status == nil {
break
}
return e.complexity.TrustCenterDocumentAccess.Status(childComplexity), true
case "TrustCenterDocumentAccess.trustCenterFile": case "TrustCenterDocumentAccess.trustCenterFile":
if e.complexity.TrustCenterDocumentAccess.TrustCenterFile == nil { if e.complexity.TrustCenterDocumentAccess.TrustCenterFile == nil {
break break
@@ -9644,10 +9653,12 @@ enum InvitationStatus
@goEnum(value: "go.probo.inc/probo/pkg/coredata.InvitationStatusExpired") @goEnum(value: "go.probo.inc/probo/pkg/coredata.InvitationStatusExpired")
} }
enum MembershipRole @goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipRole") { enum MembershipRole
@goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipRole") {
OWNER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleOwner") OWNER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleOwner")
ADMIN @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleAdmin") ADMIN @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleAdmin")
EMPLOYEE @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleEmployee") EMPLOYEE
@goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleEmployee")
VIEWER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleViewer") VIEWER @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipRoleViewer")
} }
@@ -9655,7 +9666,6 @@ enum APIRole @goModel(model: "go.probo.inc/probo/pkg/coredata.APIRole") {
FULL @goEnum(value: "go.probo.inc/probo/pkg/coredata.APIRoleFull") FULL @goEnum(value: "go.probo.inc/probo/pkg/coredata.APIRoleFull")
} }
enum DocumentStatus enum DocumentStatus
@goModel(model: "go.probo.inc/probo/pkg/coredata.DocumentStatus") { @goModel(model: "go.probo.inc/probo/pkg/coredata.DocumentStatus") {
DRAFT @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentStatusDraft") DRAFT @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentStatusDraft")
@@ -9725,6 +9735,28 @@ enum TrustCenterVisibility
) )
} }
enum TrustCenterDocumentAccessStatus
@goModel(
model: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatus"
) {
REQUESTED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusRequested"
)
GRANTED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusGranted"
)
REJECTED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusRejected"
)
REVOKED
@goEnum(
value: "go.probo.inc/probo/pkg/coredata.TrustCenterDocumentAccessStatusRevoked"
)
}
enum NonconformityStatus enum NonconformityStatus
@goModel(model: "go.probo.inc/probo/pkg/coredata.NonconformityStatus") { @goModel(model: "go.probo.inc/probo/pkg/coredata.NonconformityStatus") {
OPEN @goEnum(value: "go.probo.inc/probo/pkg/coredata.NonconformityStatusOpen") OPEN @goEnum(value: "go.probo.inc/probo/pkg/coredata.NonconformityStatusOpen")
@@ -11417,7 +11449,8 @@ type Framework implements Node {
updatedAt: Datetime! updatedAt: Datetime!
} }
type Control implements Node @goModel( type Control implements Node
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Control" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Control"
) { ) {
id: ID! id: ID!
@@ -11585,9 +11618,10 @@ type Document implements Node {
updatedAt: Datetime! updatedAt: Datetime!
} }
type SignableDocument @goModel( type SignableDocument
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SignableDocument" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.SignableDocument"
){ ) {
id: ID! id: ID!
title: String! title: String!
description: String description: String
@@ -11892,6 +11926,7 @@ type TrustCenterDocumentAccess
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TrustCenterDocumentAccess" model: "go.probo.inc/probo/pkg/server/api/console/v1/types.TrustCenterDocumentAccess"
) { ) {
active: Boolean! active: Boolean!
status: TrustCenterDocumentAccessStatus!
requested: Boolean! requested: Boolean!
document: Document @goField(forceResolver: true) document: Document @goField(forceResolver: true)
report: Report @goField(forceResolver: true) report: Report @goField(forceResolver: true)
@@ -12337,7 +12372,8 @@ type Mutation {
# Organization mutations # Organization mutations
createOrganization( createOrganization(
input: CreateOrganizationInput! input: CreateOrganizationInput!
): CreateOrganizationPayload! updateOrganization( ): CreateOrganizationPayload!
updateOrganization(
input: UpdateOrganizationInput! input: UpdateOrganizationInput!
): UpdateOrganizationPayload! ): UpdateOrganizationPayload!
updateOrganizationContext( updateOrganizationContext(
@@ -12345,7 +12381,8 @@ type Mutation {
): UpdateOrganizationContextPayload! ): UpdateOrganizationContextPayload!
deleteOrganizationHorizontalLogo( deleteOrganizationHorizontalLogo(
input: DeleteOrganizationHorizontalLogoInput! input: DeleteOrganizationHorizontalLogoInput!
): DeleteOrganizationHorizontalLogoPayload! deleteOrganization( ): DeleteOrganizationHorizontalLogoPayload!
deleteOrganization(
input: DeleteOrganizationInput! input: DeleteOrganizationInput!
): DeleteOrganizationPayload! ): DeleteOrganizationPayload!
updateTrustCenter(input: UpdateTrustCenterInput!): UpdateTrustCenterPayload! updateTrustCenter(input: UpdateTrustCenterInput!): UpdateTrustCenterPayload!
@@ -12392,96 +12429,138 @@ type Mutation {
confirmEmail(input: ConfirmEmailInput!): ConfirmEmailPayload! confirmEmail(input: ConfirmEmailInput!): ConfirmEmailPayload!
inviteUser(input: InviteUserInput!): InviteUserPayload! inviteUser(input: InviteUserInput!): InviteUserPayload!
acceptInvitation(input: AcceptInvitationInput!): AcceptInvitationPayload! acceptInvitation(input: AcceptInvitationInput!): AcceptInvitationPayload!
deleteInvitation(input: DeleteInvitationInput!): DeleteInvitationPayload! removeMember(input: RemoveMemberInput!): RemoveMemberPayload! deleteInvitation(input: DeleteInvitationInput!): DeleteInvitationPayload!
removeMember(input: RemoveMemberInput!): RemoveMemberPayload!
updateMembership(input: UpdateMembershipInput!): UpdateMembershipPayload! updateMembership(input: UpdateMembershipInput!): UpdateMembershipPayload!
# People mutations # People mutations
createPeople(input: CreatePeopleInput!): CreatePeoplePayload! updatePeople(input: UpdatePeopleInput!): UpdatePeoplePayload! deletePeople(input: DeletePeopleInput!): DeletePeoplePayload! createPeople(input: CreatePeopleInput!): CreatePeoplePayload!
updatePeople(input: UpdatePeopleInput!): UpdatePeoplePayload!
deletePeople(input: DeletePeopleInput!): DeletePeoplePayload!
# Vendor mutations # Vendor mutations
createVendor(input: CreateVendorInput!): CreateVendorPayload! updateVendor(input: UpdateVendorInput!): UpdateVendorPayload! deleteVendor(input: DeleteVendorInput!): DeleteVendorPayload! createVendor(input: CreateVendorInput!): CreateVendorPayload!
updateVendor(input: UpdateVendorInput!): UpdateVendorPayload!
deleteVendor(input: DeleteVendorInput!): DeleteVendorPayload!
# Vendor Contact mutations # Vendor Contact mutations
createVendorContact( createVendorContact(
input: CreateVendorContactInput! input: CreateVendorContactInput!
): CreateVendorContactPayload! updateVendorContact( ): CreateVendorContactPayload!
updateVendorContact(
input: UpdateVendorContactInput! input: UpdateVendorContactInput!
): UpdateVendorContactPayload! deleteVendorContact( ): UpdateVendorContactPayload!
deleteVendorContact(
input: DeleteVendorContactInput! input: DeleteVendorContactInput!
): DeleteVendorContactPayload! ): DeleteVendorContactPayload!
# Vendor Service mutations # Vendor Service mutations
createVendorService( createVendorService(
input: CreateVendorServiceInput! input: CreateVendorServiceInput!
): CreateVendorServicePayload! updateVendorService( ): CreateVendorServicePayload!
updateVendorService(
input: UpdateVendorServiceInput! input: UpdateVendorServiceInput!
): UpdateVendorServicePayload! deleteVendorService( ): UpdateVendorServicePayload!
deleteVendorService(
input: DeleteVendorServiceInput! input: DeleteVendorServiceInput!
): DeleteVendorServicePayload! ): DeleteVendorServicePayload!
# Framework mutations # Framework mutations
createFramework(input: CreateFrameworkInput!): CreateFrameworkPayload! updateFramework(input: UpdateFrameworkInput!): UpdateFrameworkPayload! importFramework(input: ImportFrameworkInput!): ImportFrameworkPayload! deleteFramework(input: DeleteFrameworkInput!): DeleteFrameworkPayload! generateFrameworkStateOfApplicability( createFramework(input: CreateFrameworkInput!): CreateFrameworkPayload!
updateFramework(input: UpdateFrameworkInput!): UpdateFrameworkPayload!
importFramework(input: ImportFrameworkInput!): ImportFrameworkPayload!
deleteFramework(input: DeleteFrameworkInput!): DeleteFrameworkPayload!
generateFrameworkStateOfApplicability(
input: GenerateFrameworkStateOfApplicabilityInput! input: GenerateFrameworkStateOfApplicabilityInput!
): GenerateFrameworkStateOfApplicabilityPayload! exportFramework(input: ExportFrameworkInput!): ExportFrameworkPayload! ): GenerateFrameworkStateOfApplicabilityPayload!
exportFramework(input: ExportFrameworkInput!): ExportFrameworkPayload!
# Control mutations # Control mutations
createControl(input: CreateControlInput!): CreateControlPayload! updateControl(input: UpdateControlInput!): UpdateControlPayload! deleteControl(input: DeleteControlInput!): DeleteControlPayload! createControl(input: CreateControlInput!): CreateControlPayload!
updateControl(input: UpdateControlInput!): UpdateControlPayload!
deleteControl(input: DeleteControlInput!): DeleteControlPayload!
# Measure mutations # Measure mutations
createMeasure(input: CreateMeasureInput!): CreateMeasurePayload! updateMeasure(input: UpdateMeasureInput!): UpdateMeasurePayload! importMeasure(input: ImportMeasureInput!): ImportMeasurePayload! deleteMeasure(input: DeleteMeasureInput!): DeleteMeasurePayload! createMeasure(input: CreateMeasureInput!): CreateMeasurePayload!
updateMeasure(input: UpdateMeasureInput!): UpdateMeasurePayload!
importMeasure(input: ImportMeasureInput!): ImportMeasurePayload!
deleteMeasure(input: DeleteMeasureInput!): DeleteMeasurePayload!
# Control mutations # Control mutations
createControlMeasureMapping( createControlMeasureMapping(
input: CreateControlMeasureMappingInput! input: CreateControlMeasureMappingInput!
): CreateControlMeasureMappingPayload! createControlDocumentMapping( ): CreateControlMeasureMappingPayload!
createControlDocumentMapping(
input: CreateControlDocumentMappingInput! input: CreateControlDocumentMappingInput!
): CreateControlDocumentMappingPayload! deleteControlMeasureMapping( ): CreateControlDocumentMappingPayload!
deleteControlMeasureMapping(
input: DeleteControlMeasureMappingInput! input: DeleteControlMeasureMappingInput!
): DeleteControlMeasureMappingPayload! deleteControlDocumentMapping( ): DeleteControlMeasureMappingPayload!
deleteControlDocumentMapping(
input: DeleteControlDocumentMappingInput! input: DeleteControlDocumentMappingInput!
): DeleteControlDocumentMappingPayload! createControlAuditMapping( ): DeleteControlDocumentMappingPayload!
createControlAuditMapping(
input: CreateControlAuditMappingInput! input: CreateControlAuditMappingInput!
): CreateControlAuditMappingPayload! deleteControlAuditMapping( ): CreateControlAuditMappingPayload!
deleteControlAuditMapping(
input: DeleteControlAuditMappingInput! input: DeleteControlAuditMappingInput!
): DeleteControlAuditMappingPayload! createControlSnapshotMapping( ): DeleteControlAuditMappingPayload!
createControlSnapshotMapping(
input: CreateControlSnapshotMappingInput! input: CreateControlSnapshotMappingInput!
): CreateControlSnapshotMappingPayload! deleteControlSnapshotMapping( ): CreateControlSnapshotMappingPayload!
deleteControlSnapshotMapping(
input: DeleteControlSnapshotMappingInput! input: DeleteControlSnapshotMappingInput!
): DeleteControlSnapshotMappingPayload! ): DeleteControlSnapshotMappingPayload!
# Task mutations # Task mutations
createTask(input: CreateTaskInput!): CreateTaskPayload! updateTask(input: UpdateTaskInput!): UpdateTaskPayload! deleteTask(input: DeleteTaskInput!): DeleteTaskPayload! assignTask(input: AssignTaskInput!): AssignTaskPayload! unassignTask(input: UnassignTaskInput!): UnassignTaskPayload! createTask(input: CreateTaskInput!): CreateTaskPayload!
updateTask(input: UpdateTaskInput!): UpdateTaskPayload!
deleteTask(input: DeleteTaskInput!): DeleteTaskPayload!
assignTask(input: AssignTaskInput!): AssignTaskPayload!
unassignTask(input: UnassignTaskInput!): UnassignTaskPayload!
# Risk mutations # Risk mutations
createRisk(input: CreateRiskInput!): CreateRiskPayload! updateRisk(input: UpdateRiskInput!): UpdateRiskPayload! deleteRisk(input: DeleteRiskInput!): DeleteRiskPayload! createRiskMeasureMapping( createRisk(input: CreateRiskInput!): CreateRiskPayload!
updateRisk(input: UpdateRiskInput!): UpdateRiskPayload!
deleteRisk(input: DeleteRiskInput!): DeleteRiskPayload!
createRiskMeasureMapping(
input: CreateRiskMeasureMappingInput! input: CreateRiskMeasureMappingInput!
): CreateRiskMeasureMappingPayload! deleteRiskMeasureMapping( ): CreateRiskMeasureMappingPayload!
deleteRiskMeasureMapping(
input: DeleteRiskMeasureMappingInput! input: DeleteRiskMeasureMappingInput!
): DeleteRiskMeasureMappingPayload! ): DeleteRiskMeasureMappingPayload!
createRiskDocumentMapping( createRiskDocumentMapping(
input: CreateRiskDocumentMappingInput! input: CreateRiskDocumentMappingInput!
): CreateRiskDocumentMappingPayload! deleteRiskDocumentMapping( ): CreateRiskDocumentMappingPayload!
deleteRiskDocumentMapping(
input: DeleteRiskDocumentMappingInput! input: DeleteRiskDocumentMappingInput!
): DeleteRiskDocumentMappingPayload! ): DeleteRiskDocumentMappingPayload!
createRiskObligationMapping( createRiskObligationMapping(
input: CreateRiskObligationMappingInput! input: CreateRiskObligationMappingInput!
): CreateRiskObligationMappingPayload! deleteRiskObligationMapping( ): CreateRiskObligationMappingPayload!
deleteRiskObligationMapping(
input: DeleteRiskObligationMappingInput! input: DeleteRiskObligationMappingInput!
): DeleteRiskObligationMappingPayload! ): DeleteRiskObligationMappingPayload!
# Evidence mutations # Evidence mutations
deleteEvidence(input: DeleteEvidenceInput!): DeleteEvidencePayload! uploadMeasureEvidence( deleteEvidence(input: DeleteEvidenceInput!): DeleteEvidencePayload!
uploadMeasureEvidence(
input: UploadMeasureEvidenceInput! input: UploadMeasureEvidenceInput!
): UploadMeasureEvidencePayload! ): UploadMeasureEvidencePayload!
# Vendor Compliance Report mutations # Vendor Compliance Report mutations
uploadVendorComplianceReport( uploadVendorComplianceReport(
input: UploadVendorComplianceReportInput! input: UploadVendorComplianceReportInput!
): UploadVendorComplianceReportPayload! deleteVendorComplianceReport( ): UploadVendorComplianceReportPayload!
deleteVendorComplianceReport(
input: DeleteVendorComplianceReportInput! input: DeleteVendorComplianceReportInput!
): DeleteVendorComplianceReportPayload! ): DeleteVendorComplianceReportPayload!
# Vendor Business Associate Agreement mutations # Vendor Business Associate Agreement mutations
uploadVendorBusinessAssociateAgreement( uploadVendorBusinessAssociateAgreement(
input: UploadVendorBusinessAssociateAgreementInput! input: UploadVendorBusinessAssociateAgreementInput!
): UploadVendorBusinessAssociateAgreementPayload! updateVendorBusinessAssociateAgreement( ): UploadVendorBusinessAssociateAgreementPayload!
updateVendorBusinessAssociateAgreement(
input: UpdateVendorBusinessAssociateAgreementInput! input: UpdateVendorBusinessAssociateAgreementInput!
): UpdateVendorBusinessAssociateAgreementPayload! deleteVendorBusinessAssociateAgreement( ): UpdateVendorBusinessAssociateAgreementPayload!
deleteVendorBusinessAssociateAgreement(
input: DeleteVendorBusinessAssociateAgreementInput! input: DeleteVendorBusinessAssociateAgreementInput!
): DeleteVendorBusinessAssociateAgreementPayload! ): DeleteVendorBusinessAssociateAgreementPayload!
# Vendor Data Privacy Agreement mutations # Vendor Data Privacy Agreement mutations
uploadVendorDataPrivacyAgreement( uploadVendorDataPrivacyAgreement(
input: UploadVendorDataPrivacyAgreementInput! input: UploadVendorDataPrivacyAgreementInput!
): UploadVendorDataPrivacyAgreementPayload! updateVendorDataPrivacyAgreement( ): UploadVendorDataPrivacyAgreementPayload!
updateVendorDataPrivacyAgreement(
input: UpdateVendorDataPrivacyAgreementInput! input: UpdateVendorDataPrivacyAgreementInput!
): UpdateVendorDataPrivacyAgreementPayload! deleteVendorDataPrivacyAgreement( ): UpdateVendorDataPrivacyAgreementPayload!
deleteVendorDataPrivacyAgreement(
input: DeleteVendorDataPrivacyAgreementInput! input: DeleteVendorDataPrivacyAgreementInput!
): DeleteVendorDataPrivacyAgreementPayload! ): DeleteVendorDataPrivacyAgreementPayload!
# Document mutations # Document mutations
@@ -12494,30 +12573,39 @@ type Mutation {
deleteMeeting(input: DeleteMeetingInput!): DeleteMeetingPayload! deleteMeeting(input: DeleteMeetingInput!): DeleteMeetingPayload!
publishDocumentVersion( publishDocumentVersion(
input: PublishDocumentVersionInput! input: PublishDocumentVersionInput!
): PublishDocumentVersionPayload! bulkPublishDocumentVersions( ): PublishDocumentVersionPayload!
bulkPublishDocumentVersions(
input: BulkPublishDocumentVersionsInput! input: BulkPublishDocumentVersionsInput!
): BulkPublishDocumentVersionsPayload! bulkDeleteDocuments( ): BulkPublishDocumentVersionsPayload!
bulkDeleteDocuments(
input: BulkDeleteDocumentsInput! input: BulkDeleteDocumentsInput!
): BulkDeleteDocumentsPayload! bulkExportDocuments( ): BulkDeleteDocumentsPayload!
bulkExportDocuments(
input: BulkExportDocumentsInput! input: BulkExportDocumentsInput!
): BulkExportDocumentsPayload! generateDocumentChangelog( ): BulkExportDocumentsPayload!
generateDocumentChangelog(
input: GenerateDocumentChangelogInput! input: GenerateDocumentChangelogInput!
): GenerateDocumentChangelogPayload! createDraftDocumentVersion( ): GenerateDocumentChangelogPayload!
createDraftDocumentVersion(
input: CreateDraftDocumentVersionInput! input: CreateDraftDocumentVersionInput!
): CreateDraftDocumentVersionPayload! deleteDraftDocumentVersion( ): CreateDraftDocumentVersionPayload!
deleteDraftDocumentVersion(
input: DeleteDraftDocumentVersionInput! input: DeleteDraftDocumentVersionInput!
): DeleteDraftDocumentVersionPayload! updateDocumentVersion( ): DeleteDraftDocumentVersionPayload!
updateDocumentVersion(
input: UpdateDocumentVersionInput! input: UpdateDocumentVersionInput!
): UpdateDocumentVersionPayload! requestSignature(input: RequestSignatureInput!): RequestSignaturePayload! bulkRequestSignatures( ): UpdateDocumentVersionPayload!
requestSignature(input: RequestSignatureInput!): RequestSignaturePayload!
bulkRequestSignatures(
input: BulkRequestSignaturesInput! input: BulkRequestSignaturesInput!
): BulkRequestSignaturesPayload! sendSigningNotifications( ): BulkRequestSignaturesPayload!
sendSigningNotifications(
input: SendSigningNotificationsInput! input: SendSigningNotificationsInput!
): SendSigningNotificationsPayload! cancelSignatureRequest( ): SendSigningNotificationsPayload!
cancelSignatureRequest(
input: CancelSignatureRequestInput! input: CancelSignatureRequestInput!
): CancelSignatureRequestPayload! ): CancelSignatureRequestPayload!
signDocument( signDocument(input: SignDocumentInput!): SignDocumentPayload!
input: SignDocumentInput!
): SignDocumentPayload!
exportDocumentVersionPDF( exportDocumentVersionPDF(
input: ExportDocumentVersionPDFInput! input: ExportDocumentVersionPDFInput!
): ExportDocumentVersionPDFPayload! ): ExportDocumentVersionPDFPayload!
@@ -12528,41 +12616,59 @@ type Mutation {
input: CreateVendorRiskAssessmentInput! input: CreateVendorRiskAssessmentInput!
): CreateVendorRiskAssessmentPayload! ): CreateVendorRiskAssessmentPayload!
assessVendor(input: AssessVendorInput!): AssessVendorPayload! assessVendor(input: AssessVendorInput!): AssessVendorPayload!
createAsset(input: CreateAssetInput!): CreateAssetPayload! updateAsset(input: UpdateAssetInput!): UpdateAssetPayload! deleteAsset(input: DeleteAssetInput!): DeleteAssetPayload! createAsset(input: CreateAssetInput!): CreateAssetPayload!
createDatum(input: CreateDatumInput!): CreateDatumPayload! updateDatum(input: UpdateDatumInput!): UpdateDatumPayload! deleteDatum(input: DeleteDatumInput!): DeleteDatumPayload! updateAsset(input: UpdateAssetInput!): UpdateAssetPayload!
createAudit(input: CreateAuditInput!): CreateAuditPayload! updateAudit(input: UpdateAuditInput!): UpdateAuditPayload! deleteAudit(input: DeleteAuditInput!): DeleteAuditPayload! uploadAuditReport(input: UploadAuditReportInput!): UploadAuditReportPayload! deleteAuditReport(input: DeleteAuditReportInput!): DeleteAuditReportPayload! deleteAsset(input: DeleteAssetInput!): DeleteAssetPayload!
createDatum(input: CreateDatumInput!): CreateDatumPayload!
updateDatum(input: UpdateDatumInput!): UpdateDatumPayload!
deleteDatum(input: DeleteDatumInput!): DeleteDatumPayload!
createAudit(input: CreateAuditInput!): CreateAuditPayload!
updateAudit(input: UpdateAuditInput!): UpdateAuditPayload!
deleteAudit(input: DeleteAuditInput!): DeleteAuditPayload!
uploadAuditReport(input: UploadAuditReportInput!): UploadAuditReportPayload!
deleteAuditReport(input: DeleteAuditReportInput!): DeleteAuditReportPayload!
# Nonconformity mutations # Nonconformity mutations
createNonconformity( createNonconformity(
input: CreateNonconformityInput! input: CreateNonconformityInput!
): CreateNonconformityPayload! updateNonconformity( ): CreateNonconformityPayload!
updateNonconformity(
input: UpdateNonconformityInput! input: UpdateNonconformityInput!
): UpdateNonconformityPayload! deleteNonconformity( ): UpdateNonconformityPayload!
deleteNonconformity(
input: DeleteNonconformityInput! input: DeleteNonconformityInput!
): DeleteNonconformityPayload! ): DeleteNonconformityPayload!
# Obligation mutations # Obligation mutations
createObligation(input: CreateObligationInput!): CreateObligationPayload! updateObligation(input: UpdateObligationInput!): UpdateObligationPayload! deleteObligation(input: DeleteObligationInput!): DeleteObligationPayload! createObligation(input: CreateObligationInput!): CreateObligationPayload!
updateObligation(input: UpdateObligationInput!): UpdateObligationPayload!
deleteObligation(input: DeleteObligationInput!): DeleteObligationPayload!
# Continual Improvement mutations # Continual Improvement mutations
createContinualImprovement( createContinualImprovement(
input: CreateContinualImprovementInput! input: CreateContinualImprovementInput!
): CreateContinualImprovementPayload! updateContinualImprovement( ): CreateContinualImprovementPayload!
updateContinualImprovement(
input: UpdateContinualImprovementInput! input: UpdateContinualImprovementInput!
): UpdateContinualImprovementPayload! deleteContinualImprovement( ): UpdateContinualImprovementPayload!
deleteContinualImprovement(
input: DeleteContinualImprovementInput! input: DeleteContinualImprovementInput!
): DeleteContinualImprovementPayload! ): DeleteContinualImprovementPayload!
# Processing Activity mutations # Processing Activity mutations
createProcessingActivity( createProcessingActivity(
input: CreateProcessingActivityInput! input: CreateProcessingActivityInput!
): CreateProcessingActivityPayload! updateProcessingActivity( ): CreateProcessingActivityPayload!
updateProcessingActivity(
input: UpdateProcessingActivityInput! input: UpdateProcessingActivityInput!
): UpdateProcessingActivityPayload! deleteProcessingActivity( ): UpdateProcessingActivityPayload!
deleteProcessingActivity(
input: DeleteProcessingActivityInput! input: DeleteProcessingActivityInput!
): DeleteProcessingActivityPayload! ): DeleteProcessingActivityPayload!
# Snapshot mutations # Snapshot mutations
createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload! deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload! createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload!
deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload!
# Custom Domain mutations # Custom Domain mutations
createCustomDomain( createCustomDomain(
input: CreateCustomDomainInput! input: CreateCustomDomainInput!
): CreateCustomDomainPayload! deleteCustomDomain( ): CreateCustomDomainPayload!
deleteCustomDomain(
input: DeleteCustomDomainInput! input: DeleteCustomDomainInput!
): DeleteCustomDomainPayload! ): DeleteCustomDomainPayload!
# SAML Configuration mutations (OWNER/ADMIN only) # SAML Configuration mutations (OWNER/ADMIN only)
@@ -12575,11 +12681,16 @@ type Mutation {
# Step 3: Configure SAML (only allowed after domain is verified) # Step 3: Configure SAML (only allowed after domain is verified)
createSAMLConfiguration( createSAMLConfiguration(
input: CreateSAMLConfigurationInput! input: CreateSAMLConfigurationInput!
): CreateSAMLConfigurationPayload! updateSAMLConfiguration( ): CreateSAMLConfigurationPayload!
updateSAMLConfiguration(
input: UpdateSAMLConfigurationInput! input: UpdateSAMLConfigurationInput!
): UpdateSAMLConfigurationPayload! deleteSAMLConfiguration( ): UpdateSAMLConfigurationPayload!
deleteSAMLConfiguration(
input: DeleteSAMLConfigurationInput! input: DeleteSAMLConfigurationInput!
): DeleteSAMLConfigurationPayload! enableSAML(input: EnableSAMLInput!): EnableSAMLPayload! disableSAML(input: DisableSAMLInput!): DisableSAMLPayload!} ): DeleteSAMLConfigurationPayload!
enableSAML(input: EnableSAMLInput!): EnableSAMLPayload!
disableSAML(input: DisableSAMLInput!): DisableSAMLPayload!
}
# Input Types # Input Types
input GenerateFrameworkStateOfApplicabilityInput { input GenerateFrameworkStateOfApplicabilityInput {
@@ -13781,7 +13892,10 @@ type DeleteMeasurePayload {
deletedMeasureId: ID! deletedMeasureId: ID!
} }
type DocumentVersion implements Node @goModel(model: "go.probo.inc/probo/pkg/server/api/console/v1/types.DocumentVersion") { type DocumentVersion implements Node
@goModel(
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.DocumentVersion"
) {
id: ID! id: ID!
document: Document! @goField(forceResolver: true) document: Document! @goField(forceResolver: true)
status: DocumentStatus! status: DocumentStatus!
@@ -14076,7 +14190,8 @@ type DeleteAssetPayload {
deletedAssetId: ID! deletedAssetId: ID!
} }
type Datum implements Node @goModel(model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Datum") { type Datum implements Node
@goModel(model: "go.probo.inc/probo/pkg/server/api/console/v1/types.Datum") {
id: ID! id: ID!
snapshotId: ID snapshotId: ID
name: String! name: String!
@@ -47039,6 +47154,35 @@ func (ec *executionContext) fieldContext_TrustCenterDocumentAccess_active(_ cont
return fc, nil return fc, nil
} }
func (ec *executionContext) _TrustCenterDocumentAccess_status(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterDocumentAccess) (ret graphql.Marshaler) {
return graphql.ResolveField(
ctx,
ec.OperationContext,
field,
ec.fieldContext_TrustCenterDocumentAccess_status,
func(ctx context.Context) (any, error) {
return ec.resolvers.TrustCenterDocumentAccess().Status(ctx, obj)
},
nil,
ec.marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus,
true,
true,
)
}
func (ec *executionContext) fieldContext_TrustCenterDocumentAccess_status(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
fc = &graphql.FieldContext{
Object: "TrustCenterDocumentAccess",
Field: field,
IsMethod: true,
IsResolver: true,
Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
return nil, errors.New("field of type TrustCenterDocumentAccessStatus does not have child fields")
},
}
return fc, nil
}
func (ec *executionContext) _TrustCenterDocumentAccess_requested(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterDocumentAccess) (ret graphql.Marshaler) { func (ec *executionContext) _TrustCenterDocumentAccess_requested(ctx context.Context, field graphql.CollectedField, obj *types.TrustCenterDocumentAccess) (ret graphql.Marshaler) {
return graphql.ResolveField( return graphql.ResolveField(
ctx, ctx,
@@ -47379,6 +47523,8 @@ func (ec *executionContext) fieldContext_TrustCenterDocumentAccessEdge_node(_ co
switch field.Name { switch field.Name {
case "active": case "active":
return ec.fieldContext_TrustCenterDocumentAccess_active(ctx, field) return ec.fieldContext_TrustCenterDocumentAccess_active(ctx, field)
case "status":
return ec.fieldContext_TrustCenterDocumentAccess_status(ctx, field)
case "requested": case "requested":
return ec.fieldContext_TrustCenterDocumentAccess_requested(ctx, field) return ec.fieldContext_TrustCenterDocumentAccess_requested(ctx, field)
case "document": case "document":
@@ -78680,6 +78826,42 @@ func (ec *executionContext) _TrustCenterDocumentAccess(ctx context.Context, sel
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
atomic.AddUint32(&out.Invalids, 1) atomic.AddUint32(&out.Invalids, 1)
} }
case "status":
field := field
innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) {
defer func() {
if r := recover(); r != nil {
ec.Error(ctx, ec.Recover(ctx, r))
}
}()
res = ec._TrustCenterDocumentAccess_status(ctx, field, obj)
if res == graphql.Null {
atomic.AddUint32(&fs.Invalids, 1)
}
return res
}
if field.Deferrable != nil {
dfs, ok := deferred[field.Deferrable.Label]
di := 0
if ok {
dfs.AddField(field)
di = len(dfs.Values) - 1
} else {
dfs = graphql.NewFieldSet([]graphql.CollectedField{field})
deferred[field.Deferrable.Label] = dfs
}
dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler {
return innerFunc(ctx, dfs)
})
// don't run the out.Concurrently() call below
out.Values[i] = graphql.Null
continue
}
out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) })
case "requested": case "requested":
out.Values[i] = ec._TrustCenterDocumentAccess_requested(ctx, field, obj) out.Values[i] = ec._TrustCenterDocumentAccess_requested(ctx, field, obj)
if out.Values[i] == graphql.Null { if out.Values[i] == graphql.Null {
@@ -89705,6 +89887,38 @@ var (
} }
) )
func (ec *executionContext) unmarshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus(ctx context.Context, v any) (coredata.TrustCenterDocumentAccessStatus, error) {
tmp, err := graphql.UnmarshalString(v)
res := unmarshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus[tmp]
return res, graphql.ErrorOnPath(ctx, err)
}
func (ec *executionContext) marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus(ctx context.Context, sel ast.SelectionSet, v coredata.TrustCenterDocumentAccessStatus) graphql.Marshaler {
_ = sel
res := graphql.MarshalString(marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus[v])
if res == graphql.Null {
if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
ec.Errorf(ctx, "the requested element is null which the schema does not allow")
}
}
return res
}
var (
unmarshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus = map[string]coredata.TrustCenterDocumentAccessStatus{
"REQUESTED": coredata.TrustCenterDocumentAccessStatusRequested,
"GRANTED": coredata.TrustCenterDocumentAccessStatusGranted,
"REJECTED": coredata.TrustCenterDocumentAccessStatusRejected,
"REVOKED": coredata.TrustCenterDocumentAccessStatusRevoked,
}
marshalNTrustCenterDocumentAccessStatus2goᚗproboᚗincᚋproboᚋpkgᚋcoredataᚐTrustCenterDocumentAccessStatus = map[coredata.TrustCenterDocumentAccessStatus]string{
coredata.TrustCenterDocumentAccessStatusRequested: "REQUESTED",
coredata.TrustCenterDocumentAccessStatusGranted: "GRANTED",
coredata.TrustCenterDocumentAccessStatusRejected: "REJECTED",
coredata.TrustCenterDocumentAccessStatusRevoked: "REVOKED",
}
)
func (ec *executionContext) marshalNTrustCenterEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐTrustCenterEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*types.TrustCenterEdge) graphql.Marshaler { func (ec *executionContext) marshalNTrustCenterEdge2ᚕᚖgoᚗproboᚗincᚋproboᚋpkgᚋserverᚋapiᚋconsoleᚋv1ᚋtypesᚐTrustCenterEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*types.TrustCenterEdge) graphql.Marshaler {
ret := make(graphql.Array, len(v)) ret := make(graphql.Array, len(v))
var wg sync.WaitGroup var wg sync.WaitGroup

View File

@@ -6492,6 +6492,11 @@ func (r *trustCenterAccessResolver) AvailableDocumentAccesses(ctx context.Contex
return types.NewTrustCenterDocumentAccessConnection(result, obj, obj.ID), nil return types.NewTrustCenterDocumentAccessConnection(result, obj, obj.ID), nil
} }
// Status is the resolver for the status field.
func (r *trustCenterDocumentAccessResolver) Status(ctx context.Context, obj *types.TrustCenterDocumentAccess) (coredata.TrustCenterDocumentAccessStatus, error) {
panic(fmt.Errorf("not implemented: Status - status"))
}
// Document is the resolver for the document field. // Document is the resolver for the document field.
func (r *trustCenterDocumentAccessResolver) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) { func (r *trustCenterDocumentAccessResolver) Document(ctx context.Context, obj *types.TrustCenterDocumentAccess) (*types.Document, error) {
r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet) r.MustBeAuthorized(ctx, obj.ID, authz.ActionGet)

View File

@@ -22,11 +22,11 @@ import (
"fmt" "fmt"
"time" "time"
"go.gearno.de/kit/pg"
"go.probo.inc/probo/pkg/baseurl" "go.probo.inc/probo/pkg/baseurl"
"go.probo.inc/probo/pkg/coredata" "go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/gid" "go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/slack" "go.probo.inc/probo/pkg/slack"
"go.gearno.de/kit/pg"
) )
const ( const (
@@ -42,21 +42,21 @@ type (
SlackMessageDocument struct { SlackMessageDocument struct {
ID string ID string
Title string Title string
Granted bool Status string
} }
SlackMessageReport struct { SlackMessageReport struct {
ID string ID string
Title string Title string
AuditID string AuditID string
Granted bool Status string
} }
SlackMessageFile struct { SlackMessageFile struct {
ID string ID string
Name string Name string
Category string Category string
Granted bool Status string
} }
SlackMessageMetadata struct { SlackMessageMetadata struct {
@@ -338,7 +338,7 @@ func (s *SlackMessageService) loadDocumentsReportsAndFilesFromAccesses(
documents = append(documents, SlackMessageDocument{ documents = append(documents, SlackMessageDocument{
ID: access.DocumentID.String(), ID: access.DocumentID.String(),
Title: doc.Title, Title: doc.Title,
Granted: access.Active, Status: access.Status.String(),
}) })
} }
@@ -366,7 +366,7 @@ func (s *SlackMessageService) loadDocumentsReportsAndFilesFromAccesses(
ID: access.ReportID.String(), ID: access.ReportID.String(),
Title: label, Title: label,
AuditID: audit.ID.String(), AuditID: audit.ID.String(),
Granted: access.Active, Status: access.Status.String(),
}) })
} }
@@ -379,7 +379,7 @@ func (s *SlackMessageService) loadDocumentsReportsAndFilesFromAccesses(
ID: access.TrustCenterFileID.String(), ID: access.TrustCenterFileID.String(),
Name: file.Name, Name: file.Name,
Category: file.Category, Category: file.Category,
Granted: access.Active, Status: access.Status.String(),
}) })
} }
} }

View File

@@ -66,14 +66,28 @@
"type": "mrkdwn", "type": "mrkdwn",
"text": "<https://{{$.Domain}}/organizations/{{$.OrganizationID}}/documents/{{.ID}}|{{jsonEscape .Title}}>" "text": "<https://{{$.Domain}}/organizations/{{$.OrganizationID}}/documents/{{.ID}}|{{jsonEscape .Title}}>"
}, },
"accessory": {{if .Granted}}{ "accessory": {{if eq .Status "GRANTED"}}{
"type": "button", "type": "button",
"text": { "text": {
"type": "plain_text", "type": "plain_text",
"text": "✓ Granted" "text": "✓ Granted"
}, },
"url": "https://{{$.Domain}}/organizations/{{$.OrganizationID}}/trust-center/access" "url": "https://{{$.Domain}}/organizations/{{$.OrganizationID}}/trust-center/access"
}{{else}}{ }{{else if eq .Status "REJECTED"}}{
"type": "button",
"text": {
"type": "plain_text",
"text": "✗ Rejected"
},
"url": "https://{{$.Domain}}/organizations/{{$.OrganizationID}}/trust-center/access"
}{{else if eq .Status "REVOKED"}}{
"type": "button",
"text": {
"type": "plain_text",
"text": "✗ Revoked"
},
"url": "https://{{$.Domain}}/organizations/{{$.OrganizationID}}/trust-center/access"
}{{else if eq .Status "REQUESTED"}}{
"type": "button", "type": "button",
"text": { "text": {
"type": "plain_text", "type": "plain_text",

View File

@@ -572,20 +572,20 @@ func (s *TrustCenterAccessService) RejectByIDs(
if len(documentIDs) > 0 { if len(documentIDs) > 0 {
shouldSendEmail = true shouldSendEmail = true
if err := coredata.DeleteByDocumentIDs(ctx, tx, s.svc.scope, access.ID, documentIDs); err != nil { if err := coredata.RejectByDocumentIDs(ctx, tx, s.svc.scope, access.ID, documentIDs); err != nil {
return fmt.Errorf("cannot delete document accesses: %w", err) return fmt.Errorf("cannot reject document accesses: %w", err)
} }
} }
if len(reportIDs) > 0 { if len(reportIDs) > 0 {
shouldSendEmail = true shouldSendEmail = true
if err := coredata.DeleteByReportIDs(ctx, tx, s.svc.scope, access.ID, reportIDs); err != nil { if err := coredata.RejectByReportIDs(ctx, tx, s.svc.scope, access.ID, reportIDs); err != nil {
return fmt.Errorf("cannot delete report accesses: %w", err) return fmt.Errorf("cannot reject report accesses: %w", err)
} }
} }
if len(fileIDs) > 0 { if len(fileIDs) > 0 {
shouldSendEmail = true shouldSendEmail = true
if err := coredata.DeleteByTrustCenterFileIDs(ctx, tx, s.svc.scope, access.ID, fileIDs); err != nil { if err := coredata.RejectByTrustCenterFileIDs(ctx, tx, s.svc.scope, access.ID, fileIDs); err != nil {
return fmt.Errorf("cannot delete trust center file accesses: %w", err) return fmt.Errorf("cannot reject trust center file accesses: %w", err)
} }
} }