Renames the user-facing 'vendor' concept to 'third party' across the entire codebase. The shared common_third_parties reference table is unchanged. Migration. Renames the vendor_category enum, the vendors and vendor_<entity> tables (contacts, services, compliance_reports, business_associate_agreements, data_privacy_agreements, risk_assessments) and their vendor_id columns, the asset_vendors / data_vendors / processing_activity_vendors junction tables, generated_documents.vendors_document_id, the webhook_event_type 'vendor:<verb>' values, and the snapshots_type 'VENDORS' value. Backend. Renames coredata models and SQL queries, probo services, GraphQL / MCP API surface, console / trust / webhook resolvers and types, the CLI (prb vendor* -> prb third-party*; pkg/cmd/vendormgmt -> pkg/cmd/thirdpartymgmt), the document generator, vetting agent prompts, and the common-third-parties-import command. Frontend, packages, n8n, e2e. Renames apps/console pages, components, hooks, routes, dialogs, and tabs; the shared @probo/vendors package (now @probo/third-parties); the @probo/ui Vendors atoms (now ThirdParties, VendorLogo -> ThirdPartyLogo); the n8n community node actions/vendor folder (now actions/thirdParty); and the e2e Go test suite (console and MCP). Filesystem and URL paths use kebab-case (third-parties), GraphQL fields and TypeScript identifiers use camelCase (thirdParty / thirdParties), Go types use PascalCase (ThirdParty), and human-facing text uses 'third party' with a space. Co-authored-by: Bryan Frimin <bryan@getprobo.com> Signed-off-by: Bryan Frimin <bryan@getprobo.com> Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
712 lines
20 KiB
GraphQL
712 lines
20 KiB
GraphQL
enum ThirdPartyCategory
|
|
@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"
|
|
)
|
|
}
|
|
|
|
enum DataSensitivity
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.DataSensitivity") {
|
|
NONE @goEnum(value: "go.probo.inc/probo/pkg/coredata.DataSensitivityNone")
|
|
LOW @goEnum(value: "go.probo.inc/probo/pkg/coredata.DataSensitivityLow")
|
|
MEDIUM
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.DataSensitivityMedium")
|
|
HIGH @goEnum(value: "go.probo.inc/probo/pkg/coredata.DataSensitivityHigh")
|
|
CRITICAL
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.DataSensitivityCritical"
|
|
)
|
|
}
|
|
|
|
enum BusinessImpact
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.BusinessImpact") {
|
|
LOW @goEnum(value: "go.probo.inc/probo/pkg/coredata.BusinessImpactLow")
|
|
MEDIUM
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.BusinessImpactMedium")
|
|
HIGH @goEnum(value: "go.probo.inc/probo/pkg/coredata.BusinessImpactHigh")
|
|
CRITICAL
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.BusinessImpactCritical")
|
|
}
|
|
|
|
enum ThirdPartyOrderField
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.ThirdPartyOrderField") {
|
|
NAME @goEnum(value: "go.probo.inc/probo/pkg/coredata.ThirdPartyOrderFieldName")
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyOrderFieldCreatedAt"
|
|
)
|
|
UPDATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyOrderFieldUpdatedAt"
|
|
)
|
|
}
|
|
|
|
enum ThirdPartyComplianceReportOrderField
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/coredata.ThirdPartyComplianceReportOrderField"
|
|
) {
|
|
REPORT_DATE
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyComplianceReportOrderFieldReportDate"
|
|
)
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyComplianceReportOrderFieldCreatedAt"
|
|
)
|
|
}
|
|
|
|
enum ThirdPartyContactOrderField
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.ThirdPartyContactOrderField") {
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyContactOrderFieldCreatedAt"
|
|
)
|
|
FULL_NAME
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyContactOrderFieldFullName"
|
|
)
|
|
EMAIL
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyContactOrderFieldEmail"
|
|
)
|
|
}
|
|
|
|
enum ThirdPartyServiceOrderField
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.ThirdPartyServiceOrderField") {
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyServiceOrderFieldCreatedAt"
|
|
)
|
|
NAME
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyServiceOrderFieldName"
|
|
)
|
|
}
|
|
|
|
enum ThirdPartyRiskAssessmentOrderField
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/coredata.ThirdPartyRiskAssessmentOrderField"
|
|
) {
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyRiskAssessmentOrderFieldCreatedAt"
|
|
)
|
|
EXPIRES_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.ThirdPartyRiskAssessmentOrderFieldExpiresAt"
|
|
)
|
|
}
|
|
|
|
input ThirdPartyOrder
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ThirdPartyOrderBy"
|
|
) {
|
|
direction: OrderDirection!
|
|
field: ThirdPartyOrderField!
|
|
}
|
|
|
|
input ThirdPartyComplianceReportOrder
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ThirdPartyComplianceReportOrderBy"
|
|
) {
|
|
direction: OrderDirection!
|
|
field: ThirdPartyComplianceReportOrderField!
|
|
}
|
|
|
|
input ThirdPartyContactOrder
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ThirdPartyContactOrderBy"
|
|
) {
|
|
direction: OrderDirection!
|
|
field: ThirdPartyContactOrderField!
|
|
}
|
|
|
|
input ThirdPartyServiceOrder
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ThirdPartyServiceOrderBy"
|
|
) {
|
|
direction: OrderDirection!
|
|
field: ThirdPartyServiceOrderField!
|
|
}
|
|
|
|
input ThirdPartyRiskAssessmentOrder {
|
|
field: ThirdPartyRiskAssessmentOrderField!
|
|
direction: OrderDirection!
|
|
}
|
|
|
|
type ThirdParty implements Node {
|
|
id: ID!
|
|
name: String!
|
|
category: ThirdPartyCategory!
|
|
description: String
|
|
|
|
organization: Organization! @goField(forceResolver: true)
|
|
|
|
complianceReports(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
orderBy: ThirdPartyComplianceReportOrder
|
|
): ThirdPartyComplianceReportConnection! @goField(forceResolver: true)
|
|
|
|
businessAssociateAgreement: ThirdPartyBusinessAssociateAgreement
|
|
@goField(forceResolver: true)
|
|
dataPrivacyAgreement: ThirdPartyDataPrivacyAgreement
|
|
@goField(forceResolver: true)
|
|
|
|
contacts(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
orderBy: ThirdPartyContactOrder
|
|
): ThirdPartyContactConnection! @goField(forceResolver: true)
|
|
|
|
services(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
orderBy: ThirdPartyServiceOrder
|
|
): ThirdPartyServiceConnection! @goField(forceResolver: true)
|
|
|
|
riskAssessments(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
orderBy: ThirdPartyRiskAssessmentOrder
|
|
): ThirdPartyRiskAssessmentConnection! @goField(forceResolver: true)
|
|
|
|
businessOwner: Profile @goField(forceResolver: true)
|
|
securityOwner: Profile @goField(forceResolver: true)
|
|
|
|
statusPageUrl: String
|
|
termsOfServiceUrl: String
|
|
privacyPolicyUrl: String
|
|
serviceLevelAgreementUrl: String
|
|
dataProcessingAgreementUrl: String
|
|
businessAssociateAgreementUrl: String
|
|
subprocessorsListUrl: String
|
|
certifications: [String!]!
|
|
countries: [CountryCode!]!
|
|
securityPageUrl: String
|
|
trustPageUrl: String
|
|
headquarterAddress: String
|
|
legalName: String
|
|
websiteUrl: String
|
|
showOnTrustCenter: Boolean!
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyComplianceReport implements Node {
|
|
id: ID!
|
|
thirdParty: ThirdParty! @goField(forceResolver: true)
|
|
reportDate: Datetime!
|
|
validUntil: Datetime
|
|
reportName: String!
|
|
file: File @goField(forceResolver: true)
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyBusinessAssociateAgreement implements Node {
|
|
id: ID!
|
|
thirdParty: ThirdParty! @goField(forceResolver: true)
|
|
validFrom: Datetime
|
|
validUntil: Datetime
|
|
fileName: String!
|
|
fileUrl: String! @goField(forceResolver: true)
|
|
fileSize: BigInt!
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyContact implements Node {
|
|
id: ID!
|
|
thirdParty: ThirdParty! @goField(forceResolver: true)
|
|
fullName: String
|
|
email: EmailAddr
|
|
phone: String
|
|
role: String
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyService implements Node {
|
|
id: ID!
|
|
thirdParty: ThirdParty! @goField(forceResolver: true)
|
|
name: String!
|
|
description: String
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyDataPrivacyAgreement implements Node {
|
|
id: ID!
|
|
thirdParty: ThirdParty! @goField(forceResolver: true)
|
|
validFrom: Datetime
|
|
validUntil: Datetime
|
|
fileName: String!
|
|
fileUrl: String! @goField(forceResolver: true)
|
|
fileSize: BigInt!
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyRiskAssessment implements Node {
|
|
id: ID!
|
|
thirdParty: ThirdParty! @goField(forceResolver: true)
|
|
expiresAt: Datetime!
|
|
dataSensitivity: DataSensitivity!
|
|
businessImpact: BusinessImpact!
|
|
notes: String
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
permission(action: String!): Boolean! @goField(forceResolver: true)
|
|
}
|
|
|
|
type ThirdPartyConnection
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/console/v1/types.ThirdPartyConnection"
|
|
) {
|
|
totalCount: Int! @goField(forceResolver: true)
|
|
edges: [ThirdPartyEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ThirdPartyEdge {
|
|
cursor: CursorKey!
|
|
node: ThirdParty!
|
|
}
|
|
|
|
type ThirdPartyComplianceReportConnection {
|
|
edges: [ThirdPartyComplianceReportEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ThirdPartyComplianceReportEdge {
|
|
cursor: CursorKey!
|
|
node: ThirdPartyComplianceReport!
|
|
}
|
|
|
|
type ThirdPartyContactConnection {
|
|
edges: [ThirdPartyContactEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ThirdPartyContactEdge {
|
|
cursor: CursorKey!
|
|
node: ThirdPartyContact!
|
|
}
|
|
|
|
type ThirdPartyServiceConnection {
|
|
edges: [ThirdPartyServiceEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ThirdPartyServiceEdge {
|
|
cursor: CursorKey!
|
|
node: ThirdPartyService!
|
|
}
|
|
|
|
type ThirdPartyRiskAssessmentConnection {
|
|
edges: [ThirdPartyRiskAssessmentEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ThirdPartyRiskAssessmentEdge {
|
|
cursor: CursorKey!
|
|
node: ThirdPartyRiskAssessment!
|
|
}
|
|
|
|
extend type Mutation {
|
|
createThirdParty(input: CreateThirdPartyInput!): CreateThirdPartyPayload!
|
|
updateThirdParty(input: UpdateThirdPartyInput!): UpdateThirdPartyPayload!
|
|
deleteThirdParty(input: DeleteThirdPartyInput!): DeleteThirdPartyPayload!
|
|
createThirdPartyContact(
|
|
input: CreateThirdPartyContactInput!
|
|
): CreateThirdPartyContactPayload!
|
|
updateThirdPartyContact(
|
|
input: UpdateThirdPartyContactInput!
|
|
): UpdateThirdPartyContactPayload!
|
|
deleteThirdPartyContact(
|
|
input: DeleteThirdPartyContactInput!
|
|
): DeleteThirdPartyContactPayload!
|
|
createThirdPartyService(
|
|
input: CreateThirdPartyServiceInput!
|
|
): CreateThirdPartyServicePayload!
|
|
updateThirdPartyService(
|
|
input: UpdateThirdPartyServiceInput!
|
|
): UpdateThirdPartyServicePayload!
|
|
deleteThirdPartyService(
|
|
input: DeleteThirdPartyServiceInput!
|
|
): DeleteThirdPartyServicePayload!
|
|
uploadThirdPartyComplianceReport(
|
|
input: UploadThirdPartyComplianceReportInput!
|
|
): UploadThirdPartyComplianceReportPayload!
|
|
deleteThirdPartyComplianceReport(
|
|
input: DeleteThirdPartyComplianceReportInput!
|
|
): DeleteThirdPartyComplianceReportPayload!
|
|
uploadThirdPartyBusinessAssociateAgreement(
|
|
input: UploadThirdPartyBusinessAssociateAgreementInput!
|
|
): UploadThirdPartyBusinessAssociateAgreementPayload!
|
|
updateThirdPartyBusinessAssociateAgreement(
|
|
input: UpdateThirdPartyBusinessAssociateAgreementInput!
|
|
): UpdateThirdPartyBusinessAssociateAgreementPayload!
|
|
deleteThirdPartyBusinessAssociateAgreement(
|
|
input: DeleteThirdPartyBusinessAssociateAgreementInput!
|
|
): DeleteThirdPartyBusinessAssociateAgreementPayload!
|
|
uploadThirdPartyDataPrivacyAgreement(
|
|
input: UploadThirdPartyDataPrivacyAgreementInput!
|
|
): UploadThirdPartyDataPrivacyAgreementPayload!
|
|
updateThirdPartyDataPrivacyAgreement(
|
|
input: UpdateThirdPartyDataPrivacyAgreementInput!
|
|
): UpdateThirdPartyDataPrivacyAgreementPayload!
|
|
deleteThirdPartyDataPrivacyAgreement(
|
|
input: DeleteThirdPartyDataPrivacyAgreementInput!
|
|
): DeleteThirdPartyDataPrivacyAgreementPayload!
|
|
createThirdPartyRiskAssessment(
|
|
input: CreateThirdPartyRiskAssessmentInput!
|
|
): CreateThirdPartyRiskAssessmentPayload!
|
|
assessThirdParty(input: AssessThirdPartyInput!): AssessThirdPartyPayload!
|
|
publishThirdPartyList(
|
|
input: PublishThirdPartyListInput!
|
|
): PublishThirdPartyListPayload!
|
|
}
|
|
|
|
input PublishThirdPartyListInput {
|
|
organizationId: ID!
|
|
approverIds: [ID!]
|
|
minor: Boolean!
|
|
}
|
|
|
|
type PublishThirdPartyListPayload {
|
|
documentEdge: DocumentEdge!
|
|
documentVersionEdge: DocumentVersionEdge!
|
|
}
|
|
|
|
input CreateThirdPartyInput {
|
|
organizationId: ID!
|
|
name: String!
|
|
description: String
|
|
headquarterAddress: String
|
|
legalName: String
|
|
websiteUrl: String
|
|
privacyPolicyUrl: String
|
|
category: ThirdPartyCategory
|
|
serviceLevelAgreementUrl: String
|
|
dataProcessingAgreementUrl: String
|
|
businessAssociateAgreementUrl: String
|
|
subprocessorsListUrl: String
|
|
certifications: [String!]
|
|
countries: [CountryCode!]
|
|
securityPageUrl: String
|
|
trustPageUrl: String
|
|
statusPageUrl: String
|
|
termsOfServiceUrl: String
|
|
businessOwnerId: ID
|
|
securityOwnerId: ID
|
|
}
|
|
|
|
input UpdateThirdPartyInput {
|
|
id: ID!
|
|
name: String
|
|
description: String @goField(omittable: true)
|
|
statusPageUrl: String @goField(omittable: true)
|
|
termsOfServiceUrl: String @goField(omittable: true)
|
|
privacyPolicyUrl: String @goField(omittable: true)
|
|
serviceLevelAgreementUrl: String @goField(omittable: true)
|
|
dataProcessingAgreementUrl: String @goField(omittable: true)
|
|
businessAssociateAgreementUrl: String @goField(omittable: true)
|
|
subprocessorsListUrl: String @goField(omittable: true)
|
|
websiteUrl: String @goField(omittable: true)
|
|
legalName: String @goField(omittable: true)
|
|
headquarterAddress: String @goField(omittable: true)
|
|
category: ThirdPartyCategory
|
|
certifications: [String!]
|
|
countries: [CountryCode!]
|
|
securityPageUrl: String @goField(omittable: true)
|
|
trustPageUrl: String @goField(omittable: true)
|
|
businessOwnerId: ID @goField(omittable: true)
|
|
securityOwnerId: ID @goField(omittable: true)
|
|
showOnTrustCenter: Boolean
|
|
}
|
|
|
|
input DeleteThirdPartyInput {
|
|
thirdPartyId: ID!
|
|
}
|
|
|
|
input CreateThirdPartyContactInput {
|
|
thirdPartyId: ID!
|
|
fullName: String
|
|
email: EmailAddr
|
|
phone: String
|
|
role: String
|
|
}
|
|
|
|
input UpdateThirdPartyContactInput {
|
|
id: ID!
|
|
fullName: String @goField(omittable: true)
|
|
email: EmailAddr @goField(omittable: true)
|
|
phone: String @goField(omittable: true)
|
|
role: String @goField(omittable: true)
|
|
}
|
|
|
|
input DeleteThirdPartyContactInput {
|
|
thirdPartyContactId: ID!
|
|
}
|
|
|
|
input CreateThirdPartyServiceInput {
|
|
thirdPartyId: ID!
|
|
name: String!
|
|
description: String
|
|
url: String
|
|
type: String
|
|
}
|
|
|
|
input UpdateThirdPartyServiceInput {
|
|
id: ID!
|
|
name: String
|
|
description: String @goField(omittable: true)
|
|
url: String
|
|
type: String
|
|
}
|
|
|
|
input DeleteThirdPartyServiceInput {
|
|
thirdPartyServiceId: ID!
|
|
}
|
|
|
|
input UploadThirdPartyComplianceReportInput {
|
|
thirdPartyId: ID!
|
|
reportDate: Datetime!
|
|
validUntil: Datetime
|
|
reportName: String!
|
|
file: Upload!
|
|
}
|
|
|
|
input DeleteThirdPartyComplianceReportInput {
|
|
reportId: ID!
|
|
}
|
|
|
|
input UploadThirdPartyBusinessAssociateAgreementInput {
|
|
thirdPartyId: ID!
|
|
validFrom: Datetime
|
|
validUntil: Datetime
|
|
fileName: String!
|
|
file: Upload!
|
|
}
|
|
|
|
input UpdateThirdPartyBusinessAssociateAgreementInput {
|
|
thirdPartyId: ID!
|
|
validFrom: Datetime @goField(omittable: true)
|
|
validUntil: Datetime @goField(omittable: true)
|
|
}
|
|
|
|
input DeleteThirdPartyBusinessAssociateAgreementInput {
|
|
thirdPartyId: ID!
|
|
}
|
|
|
|
input UploadThirdPartyDataPrivacyAgreementInput {
|
|
thirdPartyId: ID!
|
|
validFrom: Datetime
|
|
validUntil: Datetime
|
|
fileName: String!
|
|
file: Upload!
|
|
}
|
|
|
|
input UpdateThirdPartyDataPrivacyAgreementInput {
|
|
thirdPartyId: ID!
|
|
validFrom: Datetime @goField(omittable: true)
|
|
validUntil: Datetime @goField(omittable: true)
|
|
}
|
|
|
|
input DeleteThirdPartyDataPrivacyAgreementInput {
|
|
thirdPartyId: ID!
|
|
}
|
|
|
|
input CreateThirdPartyRiskAssessmentInput {
|
|
thirdPartyId: ID!
|
|
expiresAt: Datetime!
|
|
dataSensitivity: DataSensitivity!
|
|
businessImpact: BusinessImpact!
|
|
notes: String
|
|
}
|
|
|
|
input AssessThirdPartyInput {
|
|
id: ID!
|
|
websiteUrl: String!
|
|
procedure: String
|
|
}
|
|
|
|
type ThirdPartySubprocessor {
|
|
name: String!
|
|
country: String!
|
|
purpose: String!
|
|
}
|
|
|
|
type CreateThirdPartyPayload {
|
|
thirdPartyEdge: ThirdPartyEdge!
|
|
}
|
|
|
|
type UpdateThirdPartyPayload {
|
|
thirdParty: ThirdParty!
|
|
}
|
|
|
|
type DeleteThirdPartyPayload {
|
|
deletedThirdPartyId: ID!
|
|
}
|
|
|
|
type CreateThirdPartyContactPayload {
|
|
thirdPartyContactEdge: ThirdPartyContactEdge!
|
|
}
|
|
|
|
type UpdateThirdPartyContactPayload {
|
|
thirdPartyContact: ThirdPartyContact!
|
|
}
|
|
|
|
type DeleteThirdPartyContactPayload {
|
|
deletedThirdPartyContactId: ID!
|
|
}
|
|
|
|
type CreateThirdPartyServicePayload {
|
|
thirdPartyServiceEdge: ThirdPartyServiceEdge!
|
|
}
|
|
|
|
type UpdateThirdPartyServicePayload {
|
|
thirdPartyService: ThirdPartyService!
|
|
}
|
|
|
|
type DeleteThirdPartyServicePayload {
|
|
deletedThirdPartyServiceId: ID!
|
|
}
|
|
|
|
type UploadThirdPartyComplianceReportPayload {
|
|
thirdPartyComplianceReportEdge: ThirdPartyComplianceReportEdge!
|
|
}
|
|
|
|
type DeleteThirdPartyComplianceReportPayload {
|
|
deletedThirdPartyComplianceReportId: ID!
|
|
}
|
|
|
|
type UploadThirdPartyBusinessAssociateAgreementPayload {
|
|
thirdPartyBusinessAssociateAgreement: ThirdPartyBusinessAssociateAgreement!
|
|
}
|
|
|
|
type UpdateThirdPartyBusinessAssociateAgreementPayload {
|
|
thirdPartyBusinessAssociateAgreement: ThirdPartyBusinessAssociateAgreement!
|
|
}
|
|
|
|
type DeleteThirdPartyBusinessAssociateAgreementPayload {
|
|
deletedThirdPartyId: ID!
|
|
}
|
|
|
|
type UploadThirdPartyDataPrivacyAgreementPayload {
|
|
thirdPartyDataPrivacyAgreement: ThirdPartyDataPrivacyAgreement!
|
|
}
|
|
|
|
type UpdateThirdPartyDataPrivacyAgreementPayload {
|
|
thirdPartyDataPrivacyAgreement: ThirdPartyDataPrivacyAgreement!
|
|
}
|
|
|
|
type DeleteThirdPartyDataPrivacyAgreementPayload {
|
|
deletedThirdPartyId: ID!
|
|
}
|
|
|
|
type CreateThirdPartyRiskAssessmentPayload {
|
|
thirdPartyRiskAssessmentEdge: ThirdPartyRiskAssessmentEdge!
|
|
}
|
|
|
|
type AssessThirdPartyPayload {
|
|
thirdParty: ThirdParty!
|
|
report: String!
|
|
subprocessors: [ThirdPartySubprocessor!]!
|
|
}
|