Rewire the console and visitor resolvers onto the management and visitor services with compliance-portal authorization. Rename the GraphQL and MCP ComplianceExternalURL type to ComplianceCustomLink, expose trust center profile fields, default and custom domains, public URL, and the managed flag, and drop the profile fields from the organization surface. Signed-off-by: Bryan Frimin <bryan@probo.com>
552 lines
14 KiB
GraphQL
552 lines
14 KiB
GraphQL
type TrustCenter implements Node {
|
|
id: ID!
|
|
active: Boolean!
|
|
slug: String!
|
|
logo: File @goField(forceResolver: true)
|
|
darkLogo: File @goField(forceResolver: true)
|
|
|
|
description: String
|
|
websiteUrl: String
|
|
email: String
|
|
headquarterAddress: String
|
|
|
|
nonDisclosureAgreement: NonDisclosureAgreement @goField(forceResolver: true)
|
|
|
|
viewerSubscription: MailingListSubscriber @goField(forceResolver: true)
|
|
|
|
organization: Organization! @goField(forceResolver: true)
|
|
|
|
documents(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
filter: TrustCenterVisibilityFilter
|
|
): DocumentConnection! @goField(forceResolver: true)
|
|
|
|
audits(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
filter: TrustCenterVisibilityFilter
|
|
): AuditConnection! @goField(forceResolver: true)
|
|
|
|
subprocessors(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
filter: SubprocessorFilter
|
|
): SubprocessorConnection! @goField(forceResolver: true)
|
|
|
|
subprocessorCategories: [SubprocessorCategory!]!
|
|
@goField(forceResolver: true)
|
|
|
|
subprocessorCountries: [CountryCode!]! @goField(forceResolver: true)
|
|
|
|
references(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
): TrustCenterReferenceConnection! @goField(forceResolver: true)
|
|
|
|
commitmentGroups(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
): CompliancePortalCommitmentGroupConnection! @goField(forceResolver: true)
|
|
|
|
trustCenterFiles(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
filter: TrustCenterVisibilityFilter
|
|
): TrustCenterFileConnection! @goField(forceResolver: true)
|
|
|
|
complianceFrameworks(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
): ComplianceFrameworkConnection! @goField(forceResolver: true)
|
|
|
|
customLinks(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
): ComplianceCustomLinkConnection! @goField(forceResolver: true)
|
|
|
|
updates(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
): MailingListUpdateConnection! @goField(forceResolver: true)
|
|
}
|
|
|
|
enum DocumentType
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.DocumentType") {
|
|
OTHER @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeOther")
|
|
GOVERNANCE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeGovernance")
|
|
POLICY @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypePolicy")
|
|
PROCEDURE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeProcedure")
|
|
PLAN @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypePlan")
|
|
REGISTER
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeRegister")
|
|
RECORD @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeRecord")
|
|
REPORT @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeReport")
|
|
TEMPLATE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeTemplate")
|
|
STATEMENT_OF_APPLICABILITY
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.DocumentTypeStatementOfApplicability"
|
|
)
|
|
}
|
|
|
|
enum TrustCenterVisibility
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.TrustCenterVisibility") {
|
|
PRIVATE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.TrustCenterVisibilityPrivate")
|
|
PUBLIC
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.TrustCenterVisibilityPublic")
|
|
}
|
|
|
|
input TrustCenterVisibilityFilter {
|
|
visibility: TrustCenterVisibility
|
|
}
|
|
|
|
type Document implements Node @nda {
|
|
id: ID!
|
|
title: String!
|
|
documentType: DocumentType!
|
|
alias: String @goField(forceResolver: true)
|
|
isUserAuthorized: Boolean! @goField(forceResolver: true)
|
|
access: DocumentAccess @goField(forceResolver: true)
|
|
}
|
|
|
|
type DocumentConnection @nda {
|
|
edges: [DocumentEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type DocumentEdge @nda {
|
|
cursor: CursorKey!
|
|
node: Document!
|
|
}
|
|
|
|
type Framework implements Node @nda {
|
|
id: ID!
|
|
name: String!
|
|
lightLogo: File @goField(forceResolver: true)
|
|
darkLogo: File @goField(forceResolver: true)
|
|
}
|
|
|
|
type AuditReport implements Node @nda {
|
|
id: ID!
|
|
fileName: String!
|
|
alias: String @goField(forceResolver: true)
|
|
isUserAuthorized: Boolean! @goField(forceResolver: true)
|
|
access: DocumentAccess @goField(forceResolver: true)
|
|
}
|
|
|
|
type Audit implements Node @nda {
|
|
id: ID!
|
|
name: String
|
|
framework: Framework! @goField(forceResolver: true)
|
|
reportFile: AuditReport @goField(forceResolver: true)
|
|
}
|
|
|
|
type AuditConnection @nda {
|
|
edges: [AuditEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type AuditEdge @nda {
|
|
cursor: CursorKey!
|
|
node: Audit!
|
|
}
|
|
|
|
type ComplianceFramework implements Node
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/trust/v1/types.ComplianceFramework"
|
|
) {
|
|
id: ID!
|
|
framework: Framework! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ComplianceFrameworkConnection
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/trust/v1/types.ComplianceFrameworkConnection"
|
|
) {
|
|
edges: [ComplianceFrameworkEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ComplianceFrameworkEdge
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/trust/v1/types.ComplianceFrameworkEdge"
|
|
) {
|
|
cursor: CursorKey!
|
|
node: ComplianceFramework!
|
|
}
|
|
|
|
enum SubprocessorCategory
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategory") {
|
|
ANALYTICS
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryAnalytics")
|
|
CLOUD_MONITORING
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryCloudMonitoring"
|
|
)
|
|
CLOUD_PROVIDER
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryCloudProvider"
|
|
)
|
|
COLLABORATION
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryCollaboration"
|
|
)
|
|
CUSTOMER_SUPPORT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryCustomerSupport"
|
|
)
|
|
DATA_STORAGE_AND_PROCESSING
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryDataStorageAndProcessing"
|
|
)
|
|
DOCUMENT_MANAGEMENT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryDocumentManagement"
|
|
)
|
|
EMPLOYEE_MANAGEMENT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryEmployeeManagement"
|
|
)
|
|
ENGINEERING
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryEngineering")
|
|
FINANCE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryFinance")
|
|
IDENTITY_PROVIDER
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryIdentityProvider"
|
|
)
|
|
IT @goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryIT")
|
|
MARKETING
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryMarketing")
|
|
OFFICE_OPERATIONS
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryOfficeOperations"
|
|
)
|
|
OTHER @goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryOther")
|
|
PASSWORD_MANAGEMENT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryPasswordManagement"
|
|
)
|
|
PRODUCT_AND_DESIGN
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryProductAndDesign"
|
|
)
|
|
PROFESSIONAL_SERVICES
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryProfessionalServices"
|
|
)
|
|
RECRUITING
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryRecruiting")
|
|
SALES @goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategorySales")
|
|
SECURITY
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategorySecurity")
|
|
VERSION_CONTROL
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyCategoryVersionControl"
|
|
)
|
|
}
|
|
|
|
type Subprocessor implements Node @nda {
|
|
id: ID!
|
|
name: String!
|
|
description: String
|
|
category: SubprocessorCategory!
|
|
websiteUrl: String
|
|
privacyPolicyUrl: String
|
|
countries: [CountryCode!]!
|
|
}
|
|
|
|
input SubprocessorFilter {
|
|
query: String
|
|
category: SubprocessorCategory
|
|
country: CountryCode
|
|
}
|
|
|
|
type SubprocessorConnection
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/trust/v1/types.SubprocessorConnection"
|
|
) @nda {
|
|
edges: [SubprocessorEdge!]!
|
|
pageInfo: PageInfo!
|
|
totalCount: Int! @goField(forceResolver: true)
|
|
}
|
|
|
|
type SubprocessorEdge @nda {
|
|
cursor: CursorKey!
|
|
node: Subprocessor!
|
|
}
|
|
|
|
type TrustCenterReference implements Node @nda {
|
|
id: ID!
|
|
name: String!
|
|
description: String
|
|
websiteUrl: String!
|
|
logo: File! @goField(forceResolver: true)
|
|
}
|
|
|
|
type TrustCenterReferenceConnection @nda {
|
|
edges: [TrustCenterReferenceEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type TrustCenterReferenceEdge @nda {
|
|
cursor: CursorKey!
|
|
node: TrustCenterReference!
|
|
}
|
|
|
|
enum CompliancePortalCommitmentIcon
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIcon") {
|
|
LOCK_KEY
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconLockKey")
|
|
EYE_SLASH
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconEyeSlash")
|
|
FINGERPRINT
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconFingerprint")
|
|
SHIELD_WARNING
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconShieldWarning")
|
|
SHIELD_CHECK
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconShieldCheck")
|
|
SIREN
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconSiren")
|
|
KEY
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconKey")
|
|
LOCK
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconLock")
|
|
CLOUD
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconCloud")
|
|
DATABASE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconDatabase")
|
|
GLOBE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconGlobe")
|
|
EYE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconEye")
|
|
USERS
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconUsers")
|
|
CERTIFICATE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconCertificate")
|
|
GAVEL
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconGavel")
|
|
HEARTBEAT
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconHeartbeat")
|
|
BELL
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconBell")
|
|
BUG
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconBug")
|
|
CODE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconCode")
|
|
SERVER
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.CompliancePortalCommitmentIconServer")
|
|
}
|
|
|
|
type CompliancePortalCommitmentGroup implements Node {
|
|
id: ID!
|
|
title: String!
|
|
description: String!
|
|
|
|
commitments(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
): CompliancePortalCommitmentConnection! @goField(forceResolver: true)
|
|
}
|
|
|
|
type CompliancePortalCommitmentGroupConnection {
|
|
edges: [CompliancePortalCommitmentGroupEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type CompliancePortalCommitmentGroupEdge {
|
|
cursor: CursorKey!
|
|
node: CompliancePortalCommitmentGroup!
|
|
}
|
|
|
|
type CompliancePortalCommitment implements Node {
|
|
id: ID!
|
|
icon: CompliancePortalCommitmentIcon!
|
|
eyebrow: String!
|
|
title: String!
|
|
description: String!
|
|
}
|
|
|
|
type CompliancePortalCommitmentConnection {
|
|
edges: [CompliancePortalCommitmentEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type CompliancePortalCommitmentEdge {
|
|
cursor: CursorKey!
|
|
node: CompliancePortalCommitment!
|
|
}
|
|
|
|
type TrustCenterFile implements Node @nda {
|
|
id: ID!
|
|
name: String!
|
|
category: String!
|
|
alias: String @goField(forceResolver: true)
|
|
isUserAuthorized: Boolean! @goField(forceResolver: true)
|
|
access: DocumentAccess @goField(forceResolver: true)
|
|
}
|
|
|
|
type TrustCenterFileConnection @nda {
|
|
edges: [TrustCenterFileEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type TrustCenterFileEdge @nda {
|
|
cursor: CursorKey!
|
|
node: TrustCenterFile!
|
|
}
|
|
|
|
type ComplianceCustomLink implements Node {
|
|
id: ID!
|
|
name: String!
|
|
url: String!
|
|
rank: Int!
|
|
}
|
|
|
|
type ComplianceCustomLinkConnection {
|
|
edges: [ComplianceCustomLinkEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ComplianceCustomLinkEdge {
|
|
cursor: CursorKey!
|
|
node: ComplianceCustomLink!
|
|
}
|
|
|
|
type TrustCenterAccess implements Node {
|
|
id: ID!
|
|
email: EmailAddr!
|
|
name: String!
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
}
|
|
|
|
enum DocumentAccessStatus
|
|
@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"
|
|
)
|
|
}
|
|
|
|
type DocumentAccess implements Node {
|
|
id: ID!
|
|
status: DocumentAccessStatus!
|
|
}
|
|
|
|
extend type Mutation {
|
|
requestAllAccesses: RequestAccessesPayload! @authentication(required: PRESENT) @nda
|
|
|
|
exportDocumentPDF(input: ExportDocumentPDFInput!): ExportDocumentPDFPayload!
|
|
@authentication(required: OPTIONAL) @nda
|
|
|
|
exportReportPDF(input: ExportReportPDFInput!): ExportReportPDFPayload!
|
|
@authentication(required: OPTIONAL) @nda
|
|
|
|
exportTrustCenterFile(
|
|
input: ExportTrustCenterFileInput!
|
|
): ExportTrustCenterFilePayload! @authentication(required: OPTIONAL) @nda
|
|
|
|
requestDocumentAccess(
|
|
input: RequestDocumentAccessInput!
|
|
): RequestDocumentAccessPayload! @authentication(required: PRESENT) @nda
|
|
|
|
requestReportAccess(
|
|
input: RequestReportAccessInput!
|
|
): RequestReportAccessPayload! @authentication(required: PRESENT) @nda
|
|
|
|
requestTrustCenterFileAccess(
|
|
input: RequestTrustCenterFileAccessInput!
|
|
): RequestFileAccessPayload! @authentication(required: PRESENT) @nda
|
|
}
|
|
|
|
type RequestDocumentAccessPayload {
|
|
document: Document
|
|
}
|
|
|
|
type RequestReportAccessPayload {
|
|
audit: Audit
|
|
}
|
|
|
|
type RequestFileAccessPayload {
|
|
file: TrustCenterFile
|
|
}
|
|
|
|
type RequestAccessesPayload {
|
|
trustCenterAccess: TrustCenterAccess!
|
|
}
|
|
|
|
input ExportDocumentPDFInput {
|
|
documentId: ID!
|
|
}
|
|
|
|
input ExportReportPDFInput {
|
|
reportId: ID!
|
|
}
|
|
|
|
input RequestDocumentAccessInput {
|
|
documentId: ID!
|
|
}
|
|
|
|
input RequestReportAccessInput {
|
|
reportId: ID!
|
|
}
|
|
|
|
input RequestTrustCenterFileAccessInput {
|
|
trustCenterFileId: ID!
|
|
}
|
|
|
|
input ExportTrustCenterFileInput {
|
|
trustCenterFileId: ID!
|
|
}
|
|
|
|
type ExportDocumentPDFPayload {
|
|
data: String!
|
|
}
|
|
|
|
type ExportReportPDFPayload {
|
|
data: String!
|
|
}
|
|
|
|
type ExportTrustCenterFilePayload {
|
|
data: String!
|
|
}
|