# Directives directive @goField( forceResolver: Boolean name: String omittable: Boolean ) on INPUT_FIELD_DEFINITION | FIELD_DEFINITION directive @goModel( model: String models: [String!] ) on OBJECT | INPUT_OBJECT | SCALAR | ENUM | INTERFACE | UNION directive @goEnum(value: String) on ENUM_VALUE # Scalars scalar CursorKey scalar Void scalar Datetime scalar Upload scalar Duration # Interfaces interface Node { id: ID! } # Pagination type PageInfo { hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: CursorKey endCursor: CursorKey } # Enums enum OrderDirection @goModel(model: "github.com/getprobo/probo/pkg/page.OrderDirection") { ASC @goEnum(value: "github.com/getprobo/probo/pkg/page.OrderDirectionAsc") DESC @goEnum(value: "github.com/getprobo/probo/pkg/page.OrderDirectionDesc") } enum MeasureState @goModel(model: "github.com/getprobo/probo/pkg/coredata.MeasureState") { NOT_STARTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.MeasureStateNotStarted" ) IN_PROGRESS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.MeasureStateInProgress" ) NOT_APPLICABLE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.MeasureStateNotApplicable" ) IMPLEMENTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.MeasureStateImplemented" ) } enum TaskState @goModel(model: "github.com/getprobo/probo/pkg/coredata.TaskState") { TODO @goEnum(value: "github.com/getprobo/probo/pkg/coredata.TaskStateTodo") DONE @goEnum(value: "github.com/getprobo/probo/pkg/coredata.TaskStateDone") } enum EvidenceState @goModel(model: "github.com/getprobo/probo/pkg/coredata.EvidenceState") { FULFILLED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.EvidenceStateFulfilled" ) REQUESTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.EvidenceStateRequested" ) } enum PeopleKind @goModel(model: "github.com/getprobo/probo/pkg/coredata.PeopleKind") { EMPLOYEE @goEnum(value: "github.com/getprobo/probo/pkg/coredata.PeopleKindEmployee") CONTRACTOR @goEnum( value: "github.com/getprobo/probo/pkg/coredata.PeopleKindContractor" ) SERVICE_ACCOUNT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.PeopleKindServiceAccount" ) } enum DocumentStatus @goModel(model: "github.com/getprobo/probo/pkg/coredata.DocumentStatus") { DRAFT @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DocumentStatusDraft") PUBLISHED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentStatusPublished" ) } enum EvidenceType @goModel(model: "github.com/getprobo/probo/pkg/coredata.EvidenceType") { FILE @goEnum(value: "github.com/getprobo/probo/pkg/coredata.EvidenceTypeFile") LINK @goEnum(value: "github.com/getprobo/probo/pkg/coredata.EvidenceTypeLink") } enum RiskTreatment @goModel(model: "github.com/getprobo/probo/pkg/coredata.RiskTreatment") { MITIGATED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskTreatmentMitigated" ) ACCEPTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskTreatmentAccepted" ) AVOIDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskTreatmentAvoided" ) TRANSFERRED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskTreatmentTransferred" ) } enum AuditState @goModel(model: "github.com/getprobo/probo/pkg/coredata.AuditState") { NOT_STARTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditStateNotStarted" ) IN_PROGRESS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditStateInProgress" ) COMPLETED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditStateCompleted" ) REJECTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditStateRejected" ) OUTDATED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditStateOutdated" ) } enum NonconformityRegistryStatus @goModel(model: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryStatus") { OPEN @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryStatusOpen" ) IN_PROGRESS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryStatusInProgress" ) CLOSED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryStatusClosed" ) } enum ComplianceRegistryStatus @goModel(model: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryStatus") { OPEN @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryStatusOpen" ) IN_PROGRESS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryStatusInProgress" ) CLOSED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryStatusClosed" ) } enum ContinualImprovementRegistriesStatus @goModel(model: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesStatus") { OPEN @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesStatusOpen" ) IN_PROGRESS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesStatusInProgress" ) CLOSED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesStatusClosed" ) } enum ContinualImprovementRegistriesPriority @goModel(model: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesPriority") { LOW @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesPriorityLow" ) MEDIUM @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesPriorityMedium" ) HIGH @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesPriorityHigh" ) } enum ProcessingActivityRegistrySpecialOrCriminalData @goModel(model: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistrySpecialOrCriminalData") { YES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistrySpecialOrCriminalDataYes" ) NO @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistrySpecialOrCriminalDataNo" ) POSSIBLE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistrySpecialOrCriminalDataPossible" ) } enum ProcessingActivityRegistryLawfulBasis @goModel(model: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasis") { LEGITIMATE_INTEREST @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasisLegitimateInterest" ) CONSENT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasisConsent" ) CONTRACTUAL_NECESSITY @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasisContractualNecessity" ) LEGAL_OBLIGATION @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasisLegalObligation" ) VITAL_INTERESTS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasisVitalInterests" ) PUBLIC_TASK @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryLawfulBasisPublicTask" ) } enum ProcessingActivityRegistryTransferSafeguards @goModel(model: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguards") { STANDARD_CONTRACTUAL_CLAUSES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguardsStandardContractualClauses" ) BINDING_CORPORATE_RULES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguardsBindingCorporateRules" ) ADEQUACY_DECISION @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguardsAdequacyDecision" ) DEROGATIONS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguardsDerogations" ) CODES_OF_CONDUCT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguardsCodesOfConduct" ) CERTIFICATION_MECHANISMS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferSafeguardsCertificationMechanisms" ) } enum ProcessingActivityRegistryDataProtectionImpactAssessment @goModel(model: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryDataProtectionImpactAssessment") { NEEDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryDataProtectionImpactAssessmentNeeded" ) NOT_NEEDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryDataProtectionImpactAssessmentNotNeeded" ) } enum ProcessingActivityRegistryTransferImpactAssessment @goModel(model: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferImpactAssessment") { NEEDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferImpactAssessmentNeeded" ) NOT_NEEDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryTransferImpactAssessmentNotNeeded" ) } # Order Field Enums enum UserOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.UserOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.UserOrderFieldCreatedAt" ) } enum PeopleOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.PeopleOrderField") { FULL_NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldFullName" ) CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldCreatedAt" ) KIND @goEnum( value: "github.com/getprobo/probo/pkg/coredata.PeopleOrderFieldKind" ) } enum VendorOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.VendorOrderField") { NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorOrderFieldName" ) CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorOrderFieldCreatedAt" ) UPDATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorOrderFieldUpdatedAt" ) } enum FrameworkOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.FrameworkOrderField" ) { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.FrameworkOrderFieldCreatedAt" ) } enum ControlOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.ControlOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ControlOrderFieldCreatedAt" ) SECTION_TITLE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ControlOrderFieldSectionTitle" ) } enum MeasureOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.MeasureOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.MeasureOrderFieldCreatedAt" ) } enum TaskOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.TaskOrderField") { CREATED_AT } enum DocumentOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.DocumentOrderField") { TITLE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentOrderFieldTitle" ) CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentOrderFieldCreatedAt" ) DOCUMENT_TYPE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentOrderFieldDocumentType" ) } enum RiskOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.RiskOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldCreatedAt" ) UPDATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldUpdatedAt" ) NAME @goEnum(value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldName") CATEGORY @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldCategory" ) TREATMENT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldTreatment" ) INHERENT_RISK_SCORE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldInherentRiskScore" ) RESIDUAL_RISK_SCORE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.RiskOrderFieldResidualRiskScore" ) } enum EvidenceOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.EvidenceOrderField") { CREATED_AT } enum VendorComplianceReportOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.VendorComplianceReportOrderField" ) { REPORT_DATE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorComplianceReportOrderFieldReportDate" ) CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorComplianceReportOrderFieldCreatedAt" ) } enum VendorContactOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.VendorContactOrderField" ) { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorContactOrderFieldCreatedAt" ) FULL_NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorContactOrderFieldFullName" ) EMAIL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorContactOrderFieldEmail" ) } enum VendorServiceOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.VendorServiceOrderField" ) { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorServiceOrderFieldCreatedAt" ) NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorServiceOrderFieldName" ) } enum OrganizationOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.OrganizationOrderField" ) { NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.OrganizationOrderFieldName" ) CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.OrganizationOrderFieldCreatedAt" ) UPDATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.OrganizationOrderFieldUpdatedAt" ) } enum ConnectorOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.ConnectorOrderField" ) { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ConnectorOrderFieldCreatedAt" ) NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ConnectorOrderFieldName" ) } enum DataSensitivity @goModel(model: "github.com/getprobo/probo/pkg/coredata.DataSensitivity") { NONE @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DataSensitivityNone") LOW @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DataSensitivityLow") MEDIUM @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DataSensitivityMedium" ) HIGH @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DataSensitivityHigh") CRITICAL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DataSensitivityCritical" ) } enum BusinessImpact @goModel(model: "github.com/getprobo/probo/pkg/coredata.BusinessImpact") { LOW @goEnum(value: "github.com/getprobo/probo/pkg/coredata.BusinessImpactLow") MEDIUM @goEnum( value: "github.com/getprobo/probo/pkg/coredata.BusinessImpactMedium" ) HIGH @goEnum(value: "github.com/getprobo/probo/pkg/coredata.BusinessImpactHigh") CRITICAL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.BusinessImpactCritical" ) } enum DocumentVersionOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.DocumentVersionOrderField" ) { VERSION @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentVersionOrderFieldVersion" ) CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentVersionOrderFieldCreatedAt" ) } enum VendorCategory @goModel(model: "github.com/getprobo/probo/pkg/coredata.VendorCategory") { ANALYTICS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryAnalytics" ) CLOUD_MONITORING @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryCloudMonitoring" ) CLOUD_PROVIDER @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryCloudProvider" ) COLLABORATION @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryCollaboration" ) CUSTOMER_SUPPORT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryCustomerSupport" ) DATA_STORAGE_AND_PROCESSING @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryDataStorageAndProcessing" ) DOCUMENT_MANAGEMENT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryDocumentManagement" ) EMPLOYEE_MANAGEMENT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryEmployeeManagement" ) ENGINEERING @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryEngineering" ) FINANCE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryFinance" ) IDENTITY_PROVIDER @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryIdentityProvider" ) IT @goEnum(value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryIT") MARKETING @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryMarketing" ) OFFICE_OPERATIONS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryOfficeOperations" ) OTHER @goEnum(value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryOther") PASSWORD_MANAGEMENT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryPasswordManagement" ) PRODUCT_AND_DESIGN @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryProductAndDesign" ) PROFESSIONAL_SERVICES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryProfessionalServices" ) RECRUITING @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryRecruiting" ) SALES @goEnum(value: "github.com/getprobo/probo/pkg/coredata.VendorCategorySales") SECURITY @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategorySecurity" ) VERSION_CONTROL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorCategoryVersionControl" ) } enum DocumentType @goModel(model: "github.com/getprobo/probo/pkg/coredata.DocumentType") { OTHER @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DocumentTypeOther") ISMS @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DocumentTypeISMS") POLICY @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DocumentTypePolicy") } enum AssetType @goModel(model: "github.com/getprobo/probo/pkg/coredata.AssetType") { PHYSICAL @goEnum(value: "github.com/getprobo/probo/pkg/coredata.AssetTypePhysical") VIRTUAL @goEnum(value: "github.com/getprobo/probo/pkg/coredata.AssetTypeVirtual") } enum CriticityLevel @goModel(model: "github.com/getprobo/probo/pkg/coredata.CriticityLevel") { LOW @goEnum(value: "github.com/getprobo/probo/pkg/coredata.CriticityLevelLow") MEDIUM @goEnum( value: "github.com/getprobo/probo/pkg/coredata.CriticityLevelMedium" ) HIGH @goEnum(value: "github.com/getprobo/probo/pkg/coredata.CriticityLevelHigh") } enum AssetOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.AssetOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AssetOrderFieldCreatedAt" ) AMOUNT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AssetOrderFieldAmount" ) CRITICITY @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AssetOrderFieldCriticity" ) } enum DatumOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.DatumOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DatumOrderFieldCreatedAt" ) NAME @goEnum(value: "github.com/getprobo/probo/pkg/coredata.DatumOrderFieldName") DATA_CLASSIFICATION @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DatumOrderFieldDataClassification" ) } enum DataClassification @goModel(model: "github.com/getprobo/probo/pkg/coredata.DataClassification") { PUBLIC @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DataClassificationPublic" ) INTERNAL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DataClassificationInternal" ) CONFIDENTIAL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DataClassificationConfidential" ) SECRET @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DataClassificationSecret" ) } enum ControlStatus @goModel(model: "github.com/getprobo/probo/pkg/coredata.ControlStatus") { INCLUDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ControlStatusIncluded" ) EXCLUDED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ControlStatusExcluded" ) } enum AuditOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.AuditOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldCreatedAt" ) VALID_FROM @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldValidFrom" ) VALID_UNTIL @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldValidUntil" ) STATE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.AuditOrderFieldState" ) } enum NonconformityRegistryOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryOrderFieldCreatedAt" ) REFERENCE_ID @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryOrderFieldReferenceId" ) DATE_IDENTIFIED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryOrderFieldDateIdentified" ) DUE_DATE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryOrderFieldDueDate" ) STATUS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.NonconformityRegistryOrderFieldStatus" ) } enum ComplianceRegistryOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryOrderFieldCreatedAt" ) REFERENCE_ID @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryOrderFieldReferenceId" ) LAST_REVIEW_DATE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryOrderFieldLastReviewDate" ) DUE_DATE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryOrderFieldDueDate" ) STATUS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ComplianceRegistryOrderFieldStatus" ) } enum ContinualImprovementRegistriesOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesOrderFieldCreatedAt" ) REFERENCE_ID @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesOrderFieldReferenceId" ) TARGET_DATE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesOrderFieldTargetDate" ) STATUS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesOrderFieldStatus" ) PRIORITY @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ContinualImprovementRegistriesOrderFieldPriority" ) } enum ProcessingActivityRegistryOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryOrderFieldCreatedAt" ) NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.ProcessingActivityRegistryOrderFieldName" ) } enum TrustCenterAccessOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.TrustCenterAccessOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.TrustCenterAccessOrderFieldCreatedAt" ) } enum SnapshotsType @goModel(model: "github.com/getprobo/probo/pkg/coredata.SnapshotsType") { RISKS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeRisks" ) VENDORS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeVendors" ) ASSETS @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeAssets" ) DATA @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeData" ) NONCONFORMITY_REGISTRIES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeNonConformityRegistries" ) COMPLIANCE_REGISTRIES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeComplianceRegistries" ) CONTINUAL_IMPROVEMENT_REGISTRIES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeContinualImprovementRegistries" ) PROCESSING_ACTIVITY_REGISTRIES @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotsTypeProcessingActivityRegistries" ) } enum SnapshotOrderField @goModel(model: "github.com/getprobo/probo/pkg/coredata.SnapshotOrderField") { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotOrderFieldCreatedAt" ) NAME @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotOrderFieldName" ) TYPE @goEnum( value: "github.com/getprobo/probo/pkg/coredata.SnapshotOrderFieldType" ) } # Input Types input UserOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.UserOrderBy" ) { direction: OrderDirection! field: UserOrderField! } input PeopleOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.PeopleOrderBy" ) { direction: OrderDirection! field: PeopleOrderField! } input VendorOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorOrderBy" ) { direction: OrderDirection! field: VendorOrderField! } input FrameworkOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.FrameworkOrderBy" ) { direction: OrderDirection! field: FrameworkOrderField! } input ControlOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ControlOrderBy" ) { direction: OrderDirection! field: ControlOrderField! } input MeasureOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.MeasureOrderBy" ) { direction: OrderDirection! field: MeasureOrderField! } input TaskOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.TaskOrderBy" ) { direction: OrderDirection! field: TaskOrderField! } input DocumentOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.DocumentOrderBy" ) { direction: OrderDirection! field: DocumentOrderField! } input RiskOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.RiskOrderBy" ) { direction: OrderDirection! field: RiskOrderField! } input AuditOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.AuditOrderBy" ) { direction: OrderDirection! field: AuditOrderField! } input NonconformityRegistryOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.NonconformityRegistryOrderBy" ) { direction: OrderDirection! field: NonconformityRegistryOrderField! } input ComplianceRegistryOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ComplianceRegistryOrderBy" ) { direction: OrderDirection! field: ComplianceRegistryOrderField! } input ContinualImprovementRegistriesOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ContinualImprovementRegistriesOrderBy" ) { direction: OrderDirection! field: ContinualImprovementRegistriesOrderField! } input ProcessingActivityRegistryOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ProcessingActivityRegistryOrderBy" ) { direction: OrderDirection! field: ProcessingActivityRegistryOrderField! } input TrustCenterAccessOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.TrustCenterAccessOrderBy" ) { direction: OrderDirection! field: TrustCenterAccessOrderField! } input EvidenceOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.EvidenceOrderBy" ) { direction: OrderDirection! field: EvidenceOrderField! } input VendorComplianceReportOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorComplianceReportOrderBy" ) { direction: OrderDirection! field: VendorComplianceReportOrderField! } input VendorContactOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorContactOrderBy" ) { direction: OrderDirection! field: VendorContactOrderField! } input VendorServiceOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorServiceOrderBy" ) { direction: OrderDirection! field: VendorServiceOrderField! } input OrganizationOrder { direction: OrderDirection! field: OrganizationOrderField! } input ConnectorOrder { field: ConnectorOrderField! direction: OrderDirection! } input DocumentVersionOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.DocumentVersionOrderBy" ) { direction: OrderDirection! field: DocumentVersionOrderField! } input SnapshotOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.SnapshotOrderBy" ) { direction: OrderDirection! field: SnapshotOrderField! } input DocumentVersionFilter { status: DocumentStatus } # Input Types for Filtering input ControlFilter { query: String } input DocumentFilter { query: String } input MeasureFilter { query: String } input RiskFilter { query: String } input PeopleFilter { excludeContractEnded: Boolean } input OrganizationFilter { trustCenterSlug: String } input DatumFilter { snapshotId: ID } input NonconformityRegistryFilter { snapshotId: ID } input ComplianceRegistryFilter { snapshotId: ID } input ContinualImprovementRegistryFilter { snapshotId: ID } input ProcessingActivityRegistryFilter { snapshotId: ID } input AssetFilter { snapshotId: ID } # Core Types type TrustCenter implements Node { id: ID! active: Boolean! slug: String! createdAt: Datetime! updatedAt: Datetime! organization: Organization! @goField(forceResolver: true) accesses( first: Int after: CursorKey last: Int before: CursorKey orderBy: TrustCenterAccessOrder ): TrustCenterAccessConnection! @goField(forceResolver: true) } type Organization implements Node { id: ID! name: String! logoUrl: String @goField(forceResolver: true) users( first: Int after: CursorKey last: Int before: CursorKey orderBy: UserOrder ): UserConnection! @goField(forceResolver: true) connectors( first: Int after: CursorKey last: Int before: CursorKey orderBy: ConnectorOrder ): ConnectorConnection! @goField(forceResolver: true) frameworks( first: Int after: CursorKey last: Int before: CursorKey orderBy: FrameworkOrder ): FrameworkConnection! @goField(forceResolver: true) controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) vendors( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorOrder ): VendorConnection! @goField(forceResolver: true) peoples( first: Int after: CursorKey last: Int before: CursorKey orderBy: PeopleOrder filter: PeopleFilter ): PeopleConnection! @goField(forceResolver: true) documents( first: Int after: CursorKey last: Int before: CursorKey orderBy: DocumentOrder filter: DocumentFilter ): DocumentConnection! @goField(forceResolver: true) measures( first: Int after: CursorKey last: Int before: CursorKey orderBy: MeasureOrder filter: MeasureFilter ): MeasureConnection! @goField(forceResolver: true) risks( first: Int after: CursorKey last: Int before: CursorKey orderBy: RiskOrder filter: RiskFilter ): RiskConnection! @goField(forceResolver: true) tasks( first: Int after: CursorKey last: Int before: CursorKey orderBy: TaskOrder ): TaskConnection! @goField(forceResolver: true) assets( first: Int after: CursorKey last: Int before: CursorKey orderBy: AssetOrder filter: AssetFilter = { snapshotId: null } ): AssetConnection! @goField(forceResolver: true) data( first: Int after: CursorKey last: Int before: CursorKey orderBy: DatumOrder filter: DatumFilter = { snapshotId: null } ): DatumConnection! @goField(forceResolver: true) audits( first: Int after: CursorKey last: Int before: CursorKey orderBy: AuditOrder ): AuditConnection! @goField(forceResolver: true) nonconformityRegistries( first: Int after: CursorKey last: Int before: CursorKey orderBy: NonconformityRegistryOrder filter: NonconformityRegistryFilter = { snapshotId: null } ): NonconformityRegistryConnection! @goField(forceResolver: true) complianceRegistries( first: Int after: CursorKey last: Int before: CursorKey orderBy: ComplianceRegistryOrder filter: ComplianceRegistryFilter = { snapshotId: null } ): ComplianceRegistryConnection! @goField(forceResolver: true) continualImprovementRegistries( first: Int after: CursorKey last: Int before: CursorKey orderBy: ContinualImprovementRegistriesOrder filter: ContinualImprovementRegistryFilter = { snapshotId: null } ): ContinualImprovementRegistryConnection! @goField(forceResolver: true) processingActivityRegistries( first: Int after: CursorKey last: Int before: CursorKey orderBy: ProcessingActivityRegistryOrder filter: ProcessingActivityRegistryFilter = { snapshotId: null } ): ProcessingActivityRegistryConnection! @goField(forceResolver: true) snapshots( first: Int after: CursorKey last: Int before: CursorKey orderBy: SnapshotOrder ): SnapshotConnection! @goField(forceResolver: true) trustCenter: TrustCenter @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type User implements Node { id: ID! fullName: String! email: String! createdAt: Datetime! updatedAt: Datetime! people(organizationId: ID!): People @goField(forceResolver: true) } type Connector implements Node { id: ID! name: String! type: String! createdAt: Datetime! updatedAt: Datetime! } type People implements Node { id: ID! fullName: String! primaryEmailAddress: String! additionalEmailAddresses: [String!]! kind: PeopleKind! position: String contractStartDate: Datetime contractEndDate: Datetime createdAt: Datetime! updatedAt: Datetime! } type Vendor implements Node { id: ID! name: String! category: VendorCategory! description: String organization: Organization! @goField(forceResolver: true) complianceReports( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorComplianceReportOrder ): VendorComplianceReportConnection! @goField(forceResolver: true) businessAssociateAgreement: VendorBusinessAssociateAgreement @goField(forceResolver: true) dataPrivacyAgreement: VendorDataPrivacyAgreement @goField(forceResolver: true) contacts( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorContactOrder ): VendorContactConnection! @goField(forceResolver: true) services( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorServiceOrder ): VendorServiceConnection! @goField(forceResolver: true) riskAssessments( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorRiskAssessmentOrder ): VendorRiskAssessmentConnection! @goField(forceResolver: true) businessOwner: People @goField(forceResolver: true) securityOwner: People @goField(forceResolver: true) statusPageUrl: String termsOfServiceUrl: String privacyPolicyUrl: String serviceLevelAgreementUrl: String dataProcessingAgreementUrl: String businessAssociateAgreementUrl: String subprocessorsListUrl: String certifications: [String!]! securityPageUrl: String trustPageUrl: String headquarterAddress: String legalName: String websiteUrl: String showOnTrustCenter: Boolean! createdAt: Datetime! updatedAt: Datetime! } type VendorComplianceReport implements Node { id: ID! vendor: Vendor! @goField(forceResolver: true) reportDate: Datetime! validUntil: Datetime reportName: String! fileUrl: String! @goField(forceResolver: true) fileSize: Int! createdAt: Datetime! updatedAt: Datetime! } type VendorBusinessAssociateAgreement implements Node { id: ID! vendor: Vendor! @goField(forceResolver: true) validFrom: Datetime validUntil: Datetime fileName: String! fileUrl: String! @goField(forceResolver: true) fileSize: Int! createdAt: Datetime! updatedAt: Datetime! } type VendorContact implements Node { id: ID! vendor: Vendor! @goField(forceResolver: true) fullName: String email: String phone: String role: String createdAt: Datetime! updatedAt: Datetime! } type VendorService implements Node { id: ID! vendor: Vendor! @goField(forceResolver: true) name: String! description: String createdAt: Datetime! updatedAt: Datetime! } type VendorDataPrivacyAgreement implements Node { id: ID! vendor: Vendor! @goField(forceResolver: true) validFrom: Datetime validUntil: Datetime fileName: String! fileUrl: String! @goField(forceResolver: true) fileSize: Int! createdAt: Datetime! updatedAt: Datetime! } type Framework implements Node { id: ID! name: String! description: String! organization: Organization! @goField(forceResolver: true) controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Control implements Node { id: ID! sectionTitle: String! name: String! description: String! status: ControlStatus! exclusionJustification: String framework: Framework! @goField(forceResolver: true) measures( first: Int after: CursorKey last: Int before: CursorKey orderBy: MeasureOrder filter: MeasureFilter ): MeasureConnection! @goField(forceResolver: true) documents( first: Int after: CursorKey last: Int before: CursorKey orderBy: DocumentOrder filter: DocumentFilter ): DocumentConnection! @goField(forceResolver: true) audits( first: Int after: CursorKey last: Int before: CursorKey orderBy: AuditOrder ): AuditConnection! @goField(forceResolver: true) snapshots( first: Int after: CursorKey last: Int before: CursorKey orderBy: SnapshotOrder ): SnapshotConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Measure implements Node { id: ID! category: String! name: String! description: String! state: MeasureState! evidences( first: Int after: CursorKey last: Int before: CursorKey orderBy: EvidenceOrder ): EvidenceConnection! @goField(forceResolver: true) tasks( first: Int after: CursorKey last: Int before: CursorKey orderBy: TaskOrder ): TaskConnection! @goField(forceResolver: true) risks( first: Int after: CursorKey last: Int before: CursorKey orderBy: RiskOrder filter: RiskFilter ): RiskConnection! @goField(forceResolver: true) controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Task implements Node { id: ID! name: String! description: String! state: TaskState! timeEstimate: Duration deadline: Datetime assignedTo: People @goField(forceResolver: true) organization: Organization! @goField(forceResolver: true) measure: Measure @goField(forceResolver: true) evidences( first: Int after: CursorKey last: Int before: CursorKey orderBy: EvidenceOrder ): EvidenceConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Evidence implements Node { id: ID! fileUrl: String @goField(forceResolver: true) mimeType: String! size: Int! state: EvidenceState! type: EvidenceType! filename: String! url: String description: String! task: Task @goField(forceResolver: true) measure: Measure! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Document implements Node { id: ID! title: String! description: String! documentType: DocumentType! currentPublishedVersion: Int showOnTrustCenter: Boolean! owner: People! @goField(forceResolver: true) organization: Organization! @goField(forceResolver: true) versions( first: Int after: CursorKey last: Int before: CursorKey orderBy: DocumentVersionOrder filter: DocumentVersionFilter ): DocumentVersionConnection! @goField(forceResolver: true) controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Risk implements Node { id: ID! name: String! description: String! category: String! treatment: RiskTreatment! inherentLikelihood: Int! inherentImpact: Int! inherentRiskScore: Int! residualLikelihood: Int! residualImpact: Int! residualRiskScore: Int! note: String! owner: People @goField(forceResolver: true) organization: Organization! @goField(forceResolver: true) measures( first: Int after: CursorKey last: Int before: CursorKey orderBy: MeasureOrder filter: MeasureFilter ): MeasureConnection! @goField(forceResolver: true) documents( first: Int after: CursorKey last: Int before: CursorKey orderBy: DocumentOrder filter: DocumentFilter ): DocumentConnection! @goField(forceResolver: true) controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Audit implements Node { id: ID! name: String organization: Organization! @goField(forceResolver: true) framework: Framework! @goField(forceResolver: true) validFrom: Datetime validUntil: Datetime report: Report @goField(forceResolver: true) reportUrl: String @goField(forceResolver: true) state: AuditState! controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) showOnTrustCenter: Boolean! createdAt: Datetime! updatedAt: Datetime! } type NonconformityRegistry implements Node { id: ID! snapshotId: ID organization: Organization! @goField(forceResolver: true) referenceId: String! description: String audit: Audit! @goField(forceResolver: true) dateIdentified: Datetime rootCause: String! correctiveAction: String owner: People! @goField(forceResolver: true) dueDate: Datetime status: NonconformityRegistryStatus! effectivenessCheck: String createdAt: Datetime! updatedAt: Datetime! } type ComplianceRegistry implements Node { id: ID! snapshotId: ID sourceId: ID organization: Organization! @goField(forceResolver: true) referenceId: String! area: String source: String requirement: String actionsToBeImplemented: String regulator: String owner: People! @goField(forceResolver: true) lastReviewDate: Datetime dueDate: Datetime status: ComplianceRegistryStatus! createdAt: Datetime! updatedAt: Datetime! } type ContinualImprovementRegistry implements Node { id: ID! snapshotId: ID sourceId: ID organization: Organization! @goField(forceResolver: true) referenceId: String! description: String source: String owner: People! @goField(forceResolver: true) targetDate: Datetime status: ContinualImprovementRegistriesStatus! priority: ContinualImprovementRegistriesPriority! createdAt: Datetime! updatedAt: Datetime! } type ProcessingActivityRegistry implements Node { id: ID! snapshotId: ID sourceId: ID organization: Organization! @goField(forceResolver: true) name: String! purpose: String dataSubjectCategory: String personalDataCategory: String specialOrCriminalData: ProcessingActivityRegistrySpecialOrCriminalData! consentEvidenceLink: String lawfulBasis: ProcessingActivityRegistryLawfulBasis! recipients: String location: String internationalTransfers: Boolean! transferSafeguards: ProcessingActivityRegistryTransferSafeguards retentionPeriod: String securityMeasures: String dataProtectionImpactAssessment: ProcessingActivityRegistryDataProtectionImpactAssessment! transferImpactAssessment: ProcessingActivityRegistryTransferImpactAssessment! createdAt: Datetime! updatedAt: Datetime! } type Snapshot implements Node { id: ID! organization: Organization! @goField(forceResolver: true) name: String! description: String type: SnapshotsType! controls( first: Int after: CursorKey last: Int before: CursorKey orderBy: ControlOrder filter: ControlFilter ): ControlConnection! @goField(forceResolver: true) createdAt: Datetime! } type Report implements Node { id: ID! objectKey: String! mimeType: String! filename: String! size: Int! downloadUrl: String @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type Session { id: ID! expiresAt: Datetime! } type Viewer { id: ID! user: User! organizations( first: Int after: CursorKey last: Int before: CursorKey orderBy: OrganizationOrder filter: OrganizationFilter ): OrganizationConnection! @goField(forceResolver: true) } # Connection Types type OrganizationConnection { edges: [OrganizationEdge!]! pageInfo: PageInfo! } type OrganizationEdge { cursor: CursorKey! node: Organization! } type TrustCenterConnection { edges: [TrustCenterEdge!]! pageInfo: PageInfo! } type TrustCenterEdge { cursor: CursorKey! node: TrustCenter! } type TrustCenterAccess implements Node { id: ID! email: String! name: String! active: Boolean! createdAt: Datetime! updatedAt: Datetime! } type TrustCenterAccessConnection { edges: [TrustCenterAccessEdge!]! pageInfo: PageInfo! } type TrustCenterAccessEdge { cursor: CursorKey! node: TrustCenterAccess! } type UserConnection { edges: [UserEdge!]! pageInfo: PageInfo! } type UserEdge { cursor: CursorKey! node: User! } type PeopleConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.PeopleConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [PeopleEdge!]! pageInfo: PageInfo! } type PeopleEdge { cursor: CursorKey! node: People! } type VendorConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.VendorConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [VendorEdge!]! pageInfo: PageInfo! } type VendorEdge { cursor: CursorKey! node: Vendor! } type FrameworkConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.FrameworkConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [FrameworkEdge!]! pageInfo: PageInfo! } type FrameworkEdge { cursor: CursorKey! node: Framework! } type ControlConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ControlConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [ControlEdge!]! pageInfo: PageInfo! } type ControlEdge { cursor: CursorKey! node: Control! } type MeasureConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.MeasureConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [MeasureEdge!]! pageInfo: PageInfo! } type MeasureEdge { cursor: CursorKey! node: Measure! } type TaskConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.TaskConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [TaskEdge!]! pageInfo: PageInfo! } type TaskEdge { cursor: CursorKey! node: Task! } type EvidenceConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.EvidenceConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [EvidenceEdge!]! pageInfo: PageInfo! } type EvidenceEdge { cursor: CursorKey! node: Evidence! } type DocumentConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.DocumentConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [DocumentEdge!]! pageInfo: PageInfo! } type DocumentEdge { cursor: CursorKey! node: Document! } type RiskConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.RiskConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [RiskEdge!]! pageInfo: PageInfo! } type RiskEdge { cursor: CursorKey! node: Risk! } type VendorComplianceReportConnection { edges: [VendorComplianceReportEdge!]! pageInfo: PageInfo! } type VendorComplianceReportEdge { cursor: CursorKey! node: VendorComplianceReport! } type VendorContactConnection { edges: [VendorContactEdge!]! pageInfo: PageInfo! } type VendorContactEdge { cursor: CursorKey! node: VendorContact! } type VendorServiceConnection { edges: [VendorServiceEdge!]! pageInfo: PageInfo! } type VendorServiceEdge { cursor: CursorKey! node: VendorService! } type ConnectorConnection { edges: [ConnectorEdge!]! pageInfo: PageInfo! } type ConnectorEdge { cursor: CursorKey! node: Connector! } type VendorRiskAssessmentConnection { edges: [VendorRiskAssessmentEdge!]! pageInfo: PageInfo! } type VendorRiskAssessmentEdge { cursor: CursorKey! node: VendorRiskAssessment! } type DocumentVersionConnection { edges: [DocumentVersionEdge!]! pageInfo: PageInfo! } type DocumentVersionEdge { cursor: CursorKey! node: DocumentVersion! } type DatumConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.DatumConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [DatumEdge!]! pageInfo: PageInfo! } type DatumEdge { cursor: CursorKey! node: Datum! } type AuditConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.AuditConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [AuditEdge!]! pageInfo: PageInfo! } type AuditEdge { cursor: CursorKey! node: Audit! } type NonconformityRegistryConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.NonconformityRegistryConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [NonconformityRegistryEdge!]! pageInfo: PageInfo! } type NonconformityRegistryEdge { cursor: CursorKey! node: NonconformityRegistry! } type ComplianceRegistryConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ComplianceRegistryConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [ComplianceRegistryEdge!]! pageInfo: PageInfo! } type ComplianceRegistryEdge { cursor: CursorKey! node: ComplianceRegistry! } type ContinualImprovementRegistryConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ContinualImprovementRegistryConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [ContinualImprovementRegistryEdge!]! pageInfo: PageInfo! } type ContinualImprovementRegistryEdge { cursor: CursorKey! node: ContinualImprovementRegistry! } type ProcessingActivityRegistryConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.ProcessingActivityRegistryConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [ProcessingActivityRegistryEdge!]! pageInfo: PageInfo! } type ProcessingActivityRegistryEdge { cursor: CursorKey! node: ProcessingActivityRegistry! } type SnapshotConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.SnapshotConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [SnapshotEdge!]! pageInfo: PageInfo! } type SnapshotEdge { cursor: CursorKey! node: Snapshot! } # Root Types type Query { node(id: ID!): Node! viewer: Viewer! } type Mutation { # Organization mutations createOrganization( input: CreateOrganizationInput! ): CreateOrganizationPayload! updateOrganization( input: UpdateOrganizationInput! ): UpdateOrganizationPayload! deleteOrganization( input: DeleteOrganizationInput! ): DeleteOrganizationPayload! updateTrustCenter( input: UpdateTrustCenterInput! ): UpdateTrustCenterPayload! # Trust Center Access CRUD mutations createTrustCenterAccess( input: CreateTrustCenterAccessInput! ): CreateTrustCenterAccessPayload! updateTrustCenterAccess( input: UpdateTrustCenterAccessInput! ): UpdateTrustCenterAccessPayload! deleteTrustCenterAccess( input: DeleteTrustCenterAccessInput! ): DeleteTrustCenterAccessPayload! # User mutations confirmEmail(input: ConfirmEmailInput!): ConfirmEmailPayload! inviteUser(input: InviteUserInput!): InviteUserPayload! removeUser(input: RemoveUserInput!): RemoveUserPayload! # People mutations createPeople(input: CreatePeopleInput!): CreatePeoplePayload! updatePeople(input: UpdatePeopleInput!): UpdatePeoplePayload! deletePeople(input: DeletePeopleInput!): DeletePeoplePayload! # Vendor mutations createVendor(input: CreateVendorInput!): CreateVendorPayload! updateVendor(input: UpdateVendorInput!): UpdateVendorPayload! deleteVendor(input: DeleteVendorInput!): DeleteVendorPayload! # Vendor Contact mutations createVendorContact(input: CreateVendorContactInput!): CreateVendorContactPayload! updateVendorContact(input: UpdateVendorContactInput!): UpdateVendorContactPayload! deleteVendorContact(input: DeleteVendorContactInput!): DeleteVendorContactPayload! # Vendor Service mutations createVendorService(input: CreateVendorServiceInput!): CreateVendorServicePayload! updateVendorService(input: UpdateVendorServiceInput!): UpdateVendorServicePayload! deleteVendorService(input: DeleteVendorServiceInput!): DeleteVendorServicePayload! # Framework mutations createFramework(input: CreateFrameworkInput!): CreateFrameworkPayload! updateFramework(input: UpdateFrameworkInput!): UpdateFrameworkPayload! importFramework(input: ImportFrameworkInput!): ImportFrameworkPayload! deleteFramework(input: DeleteFrameworkInput!): DeleteFrameworkPayload! generateFrameworkStateOfApplicability( input: GenerateFrameworkStateOfApplicabilityInput! ): GenerateFrameworkStateOfApplicabilityPayload! # Control mutations createControl(input: CreateControlInput!): CreateControlPayload! updateControl(input: UpdateControlInput!): UpdateControlPayload! deleteControl(input: DeleteControlInput!): DeleteControlPayload! # Measure mutations createMeasure(input: CreateMeasureInput!): CreateMeasurePayload! updateMeasure(input: UpdateMeasureInput!): UpdateMeasurePayload! importMeasure(input: ImportMeasureInput!): ImportMeasurePayload! deleteMeasure(input: DeleteMeasureInput!): DeleteMeasurePayload! # Control mutations createControlMeasureMapping( input: CreateControlMeasureMappingInput! ): CreateControlMeasureMappingPayload! createControlDocumentMapping( input: CreateControlDocumentMappingInput! ): CreateControlDocumentMappingPayload! deleteControlMeasureMapping( input: DeleteControlMeasureMappingInput! ): DeleteControlMeasureMappingPayload! deleteControlDocumentMapping( input: DeleteControlDocumentMappingInput! ): DeleteControlDocumentMappingPayload! createControlAuditMapping( input: CreateControlAuditMappingInput! ): CreateControlAuditMappingPayload! deleteControlAuditMapping( input: DeleteControlAuditMappingInput! ): DeleteControlAuditMappingPayload! createControlSnapshotMapping( input: CreateControlSnapshotMappingInput! ): CreateControlSnapshotMappingPayload! deleteControlSnapshotMapping( input: DeleteControlSnapshotMappingInput! ): DeleteControlSnapshotMappingPayload! # Task mutations createTask(input: CreateTaskInput!): CreateTaskPayload! updateTask(input: UpdateTaskInput!): UpdateTaskPayload! deleteTask(input: DeleteTaskInput!): DeleteTaskPayload! assignTask(input: AssignTaskInput!): AssignTaskPayload! unassignTask(input: UnassignTaskInput!): UnassignTaskPayload! # Risk mutations createRisk(input: CreateRiskInput!): CreateRiskPayload! updateRisk(input: UpdateRiskInput!): UpdateRiskPayload! deleteRisk(input: DeleteRiskInput!): DeleteRiskPayload! createRiskMeasureMapping( input: CreateRiskMeasureMappingInput! ): CreateRiskMeasureMappingPayload! deleteRiskMeasureMapping( input: DeleteRiskMeasureMappingInput! ): DeleteRiskMeasureMappingPayload! createRiskDocumentMapping( input: CreateRiskDocumentMappingInput! ): CreateRiskDocumentMappingPayload! deleteRiskDocumentMapping( input: DeleteRiskDocumentMappingInput! ): DeleteRiskDocumentMappingPayload! # Evidence mutations requestEvidence(input: RequestEvidenceInput!): RequestEvidencePayload! fulfillEvidence(input: FulfillEvidenceInput!): FulfillEvidencePayload! deleteEvidence(input: DeleteEvidenceInput!): DeleteEvidencePayload! uploadTaskEvidence( input: UploadTaskEvidenceInput! ): UploadTaskEvidencePayload! uploadMeasureEvidence( input: UploadMeasureEvidenceInput! ): UploadMeasureEvidencePayload! # Vendor Compliance Report mutations uploadVendorComplianceReport( input: UploadVendorComplianceReportInput! ): UploadVendorComplianceReportPayload! deleteVendorComplianceReport( input: DeleteVendorComplianceReportInput! ): DeleteVendorComplianceReportPayload! # Vendor Business Associate Agreement mutations uploadVendorBusinessAssociateAgreement( input: UploadVendorBusinessAssociateAgreementInput! ): UploadVendorBusinessAssociateAgreementPayload! updateVendorBusinessAssociateAgreement( input: UpdateVendorBusinessAssociateAgreementInput! ): UpdateVendorBusinessAssociateAgreementPayload! deleteVendorBusinessAssociateAgreement( input: DeleteVendorBusinessAssociateAgreementInput! ): DeleteVendorBusinessAssociateAgreementPayload! # Vendor Data Privacy Agreement mutations uploadVendorDataPrivacyAgreement( input: UploadVendorDataPrivacyAgreementInput! ): UploadVendorDataPrivacyAgreementPayload! updateVendorDataPrivacyAgreement( input: UpdateVendorDataPrivacyAgreementInput! ): UpdateVendorDataPrivacyAgreementPayload! deleteVendorDataPrivacyAgreement( input: DeleteVendorDataPrivacyAgreementInput! ): DeleteVendorDataPrivacyAgreementPayload! # Document mutations createDocument(input: CreateDocumentInput!): CreateDocumentPayload! updateDocument(input: UpdateDocumentInput!): UpdateDocumentPayload! deleteDocument(input: DeleteDocumentInput!): DeleteDocumentPayload! publishDocumentVersion( input: PublishDocumentVersionInput! ): PublishDocumentVersionPayload! bulkPublishDocumentVersions( input: BulkPublishDocumentVersionsInput! ): BulkPublishDocumentVersionsPayload! generateDocumentChangelog( input: GenerateDocumentChangelogInput! ): GenerateDocumentChangelogPayload! createDraftDocumentVersion( input: CreateDraftDocumentVersionInput! ): CreateDraftDocumentVersionPayload! deleteDraftDocumentVersion( input: DeleteDraftDocumentVersionInput! ): DeleteDraftDocumentVersionPayload! updateDocumentVersion( input: UpdateDocumentVersionInput! ): UpdateDocumentVersionPayload! requestSignature(input: RequestSignatureInput!): RequestSignaturePayload! bulkRequestSignatures( input: BulkRequestSignaturesInput! ): BulkRequestSignaturesPayload! sendSigningNotifications( input: SendSigningNotificationsInput! ): SendSigningNotificationsPayload! cancelSignatureRequest( input: CancelSignatureRequestInput! ): CancelSignatureRequestPayload! exportDocumentVersionPDF( input: ExportDocumentVersionPDFInput! ): ExportDocumentVersionPDFPayload! createVendorRiskAssessment( input: CreateVendorRiskAssessmentInput! ): CreateVendorRiskAssessmentPayload! assessVendor(input: AssessVendorInput!): AssessVendorPayload! createAsset(input: CreateAssetInput!): CreateAssetPayload! updateAsset(input: UpdateAssetInput!): UpdateAssetPayload! 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 Registry mutations createNonconformityRegistry( input: CreateNonconformityRegistryInput! ): CreateNonconformityRegistryPayload! updateNonconformityRegistry( input: UpdateNonconformityRegistryInput! ): UpdateNonconformityRegistryPayload! deleteNonconformityRegistry( input: DeleteNonconformityRegistryInput! ): DeleteNonconformityRegistryPayload! # Compliance Registry mutations createComplianceRegistry( input: CreateComplianceRegistryInput! ): CreateComplianceRegistryPayload! updateComplianceRegistry( input: UpdateComplianceRegistryInput! ): UpdateComplianceRegistryPayload! deleteComplianceRegistry( input: DeleteComplianceRegistryInput! ): DeleteComplianceRegistryPayload! # Continual Improvement Registry mutations createContinualImprovementRegistry( input: CreateContinualImprovementRegistryInput! ): CreateContinualImprovementRegistryPayload! updateContinualImprovementRegistry( input: UpdateContinualImprovementRegistryInput! ): UpdateContinualImprovementRegistryPayload! deleteContinualImprovementRegistry( input: DeleteContinualImprovementRegistryInput! ): DeleteContinualImprovementRegistryPayload! # Processing Activity Registry mutations createProcessingActivityRegistry( input: CreateProcessingActivityRegistryInput! ): CreateProcessingActivityRegistryPayload! updateProcessingActivityRegistry( input: UpdateProcessingActivityRegistryInput! ): UpdateProcessingActivityRegistryPayload! deleteProcessingActivityRegistry( input: DeleteProcessingActivityRegistryInput! ): DeleteProcessingActivityRegistryPayload! # Snapshot mutations createSnapshot(input: CreateSnapshotInput!): CreateSnapshotPayload! deleteSnapshot(input: DeleteSnapshotInput!): DeleteSnapshotPayload! } # Input Types input GenerateFrameworkStateOfApplicabilityInput { frameworkId: ID! } type GenerateFrameworkStateOfApplicabilityPayload { data: String! } input CreateOrganizationInput { name: String! } input UpdateOrganizationInput { organizationId: ID! name: String logo: Upload } input DeleteOrganizationInput { organizationId: ID! } input UpdateTrustCenterInput { trustCenterId: ID! active: Boolean slug: String } input CreateTrustCenterAccessInput { trustCenterId: ID! email: String! name: String! active: Boolean! } input UpdateTrustCenterAccessInput { id: ID! name: String active: Boolean } input DeleteTrustCenterAccessInput { id: ID! } input CreateVendorInput { organizationId: ID! name: String! description: String headquarterAddress: String legalName: String websiteUrl: String privacyPolicyUrl: String category: VendorCategory serviceLevelAgreementUrl: String dataProcessingAgreementUrl: String businessAssociateAgreementUrl: String subprocessorsListUrl: String certifications: [String!] securityPageUrl: String trustPageUrl: String statusPageUrl: String termsOfServiceUrl: String businessOwnerId: ID securityOwnerId: ID } input UpdateVendorInput { id: ID! name: String description: String statusPageUrl: String termsOfServiceUrl: String privacyPolicyUrl: String serviceLevelAgreementUrl: String dataProcessingAgreementUrl: String businessAssociateAgreementUrl: String subprocessorsListUrl: String websiteUrl: String legalName: String headquarterAddress: String category: VendorCategory certifications: [String!] securityPageUrl: String trustPageUrl: String businessOwnerId: ID securityOwnerId: ID showOnTrustCenter: Boolean } input DeleteVendorInput { vendorId: ID! } input CreateVendorContactInput { vendorId: ID! fullName: String email: String phone: String role: String } input UpdateVendorContactInput { id: ID! fullName: String email: String phone: String role: String } input DeleteVendorContactInput { vendorContactId: ID! } input CreateVendorServiceInput { vendorId: ID! name: String! description: String url: String type: String } input UpdateVendorServiceInput { id: ID! name: String description: String url: String type: String } input DeleteVendorServiceInput { vendorServiceId: ID! } input CreatePeopleInput { organizationId: ID! fullName: String! primaryEmailAddress: String! additionalEmailAddresses: [String!] kind: PeopleKind! position: String contractStartDate: Datetime contractEndDate: Datetime } input UpdatePeopleInput { id: ID! fullName: String primaryEmailAddress: String additionalEmailAddresses: [String!] kind: PeopleKind position: String contractStartDate: Datetime contractEndDate: Datetime } input DeletePeopleInput { peopleId: ID! } input CreateFrameworkInput { organizationId: ID! name: String! description: String! } input UpdateFrameworkInput { id: ID! name: String description: String } input ImportFrameworkInput { organizationId: ID! file: Upload! } input DeleteFrameworkInput { frameworkId: ID! } input CreateMeasureInput { organizationId: ID! name: String! description: String! category: String! } input UpdateMeasureInput { id: ID! name: String description: String category: String state: MeasureState } input ImportMeasureInput { organizationId: ID! file: Upload! } input CreateTaskInput { organizationId: ID! measureId: ID name: String! description: String! timeEstimate: Duration assignedToId: ID deadline: Datetime } input UpdateTaskInput { taskId: ID! name: String description: String state: TaskState timeEstimate: Duration deadline: Datetime } input DeleteTaskInput { taskId: ID! } input AssignTaskInput { taskId: ID! assignedToId: ID! } input UnassignTaskInput { taskId: ID! } input CreateControlMeasureMappingInput { controlId: ID! measureId: ID! } input CreateControlDocumentMappingInput { controlId: ID! documentId: ID! } input DeleteControlMeasureMappingInput { controlId: ID! measureId: ID! } input DeleteControlDocumentMappingInput { controlId: ID! documentId: ID! } input CreateControlAuditMappingInput { controlId: ID! auditId: ID! } input DeleteControlAuditMappingInput { controlId: ID! auditId: ID! } input CreateControlSnapshotMappingInput { controlId: ID! snapshotId: ID! } input DeleteControlSnapshotMappingInput { controlId: ID! snapshotId: ID! } input CreateRiskInput { organizationId: ID! name: String! description: String! category: String! ownerId: ID treatment: RiskTreatment! inherentLikelihood: Int! inherentImpact: Int! residualLikelihood: Int residualImpact: Int note: String } input UpdateRiskInput { id: ID! name: String description: String category: String ownerId: ID treatment: RiskTreatment inherentLikelihood: Int inherentImpact: Int residualLikelihood: Int residualImpact: Int note: String } input DeleteRiskInput { riskId: ID! } input CreateRiskMeasureMappingInput { riskId: ID! measureId: ID! } input DeleteRiskMeasureMappingInput { riskId: ID! measureId: ID! } input CreateRiskDocumentMappingInput { riskId: ID! documentId: ID! } input DeleteRiskDocumentMappingInput { riskId: ID! documentId: ID! } input RequestEvidenceInput { taskId: ID! name: String! type: EvidenceType! description: String! } input FulfillEvidenceInput { evidenceId: ID! name: String file: Upload url: String } input CreateEvidenceInput { taskId: ID! name: String! type: EvidenceType! url: String file: Upload description: String! } input DeleteEvidenceInput { evidenceId: ID! } input UploadVendorComplianceReportInput { vendorId: ID! reportDate: Datetime! validUntil: Datetime reportName: String! file: Upload! } input DeleteVendorComplianceReportInput { reportId: ID! } input UploadVendorBusinessAssociateAgreementInput { vendorId: ID! validFrom: Datetime validUntil: Datetime fileName: String! file: Upload! } input UpdateVendorBusinessAssociateAgreementInput { vendorId: ID! validFrom: Datetime validUntil: Datetime } input DeleteVendorBusinessAssociateAgreementInput { vendorId: ID! } input UploadVendorDataPrivacyAgreementInput { vendorId: ID! validFrom: Datetime validUntil: Datetime fileName: String! file: Upload! } input UpdateVendorDataPrivacyAgreementInput { vendorId: ID! validFrom: Datetime validUntil: Datetime } input DeleteVendorDataPrivacyAgreementInput { vendorId: ID! } input CreateDocumentInput { organizationId: ID! title: String! content: String! ownerId: ID! documentType: DocumentType! } input UpdateDocumentInput { id: ID! title: String content: String ownerId: ID createdBy: ID documentType: DocumentType showOnTrustCenter: Boolean } input ExportDocumentVersionPDFInput { documentVersionId: ID! } input DeleteDocumentInput { documentId: ID! } input ConfirmEmailInput { token: String! } input InviteUserInput { organizationId: ID! email: String! fullName: String! } input RemoveUserInput { organizationId: ID! userId: ID! } input CreateControlInput { frameworkId: ID! sectionTitle: String! name: String! description: String! status: ControlStatus! exclusionJustification: String } input UpdateControlInput { id: ID! sectionTitle: String name: String description: String status: ControlStatus exclusionJustification: String } input DeleteControlInput { controlId: ID! } # Audit input types input CreateAuditInput { organizationId: ID! frameworkId: ID! name: String validFrom: Datetime validUntil: Datetime state: AuditState } input UpdateAuditInput { id: ID! name: String validFrom: Datetime validUntil: Datetime state: AuditState showOnTrustCenter: Boolean } input DeleteAuditInput { auditId: ID! } input UploadAuditReportInput { auditId: ID! file: Upload! } input DeleteAuditReportInput { auditId: ID! } # Nonconformity Registry input types input CreateNonconformityRegistryInput { organizationId: ID! referenceId: String! description: String auditId: ID! dateIdentified: Datetime rootCause: String! correctiveAction: String ownerId: ID! dueDate: Datetime status: NonconformityRegistryStatus! effectivenessCheck: String } input UpdateNonconformityRegistryInput { id: ID! referenceId: String description: String dateIdentified: Datetime rootCause: String correctiveAction: String ownerId: ID auditId: ID dueDate: Datetime status: NonconformityRegistryStatus effectivenessCheck: String } input DeleteNonconformityRegistryInput { nonconformityRegistryId: ID! } input CreateComplianceRegistryInput { organizationId: ID! referenceId: String! area: String source: String requirement: String actionsToBeImplemented: String regulator: String ownerId: ID! lastReviewDate: Datetime dueDate: Datetime status: ComplianceRegistryStatus! } input UpdateComplianceRegistryInput { id: ID! referenceId: String area: String source: String requirement: String actionsToBeImplemented: String regulator: String ownerId: ID lastReviewDate: Datetime dueDate: Datetime status: ComplianceRegistryStatus } input DeleteComplianceRegistryInput { complianceRegistryId: ID! } input CreateContinualImprovementRegistryInput { organizationId: ID! referenceId: String! description: String source: String ownerId: ID! targetDate: Datetime status: ContinualImprovementRegistriesStatus! priority: ContinualImprovementRegistriesPriority! } input UpdateContinualImprovementRegistryInput { id: ID! referenceId: String description: String source: String ownerId: ID targetDate: Datetime status: ContinualImprovementRegistriesStatus priority: ContinualImprovementRegistriesPriority } input DeleteContinualImprovementRegistryInput { continualImprovementRegistryId: ID! } input CreateProcessingActivityRegistryInput { organizationId: ID! name: String! purpose: String dataSubjectCategory: String personalDataCategory: String specialOrCriminalData: ProcessingActivityRegistrySpecialOrCriminalData! consentEvidenceLink: String lawfulBasis: ProcessingActivityRegistryLawfulBasis! recipients: String location: String internationalTransfers: Boolean! transferSafeguards: ProcessingActivityRegistryTransferSafeguards retentionPeriod: String securityMeasures: String dataProtectionImpactAssessment: ProcessingActivityRegistryDataProtectionImpactAssessment! transferImpactAssessment: ProcessingActivityRegistryTransferImpactAssessment! } input UpdateProcessingActivityRegistryInput { id: ID! name: String purpose: String dataSubjectCategory: String personalDataCategory: String specialOrCriminalData: ProcessingActivityRegistrySpecialOrCriminalData consentEvidenceLink: String lawfulBasis: ProcessingActivityRegistryLawfulBasis recipients: String location: String internationalTransfers: Boolean transferSafeguards: ProcessingActivityRegistryTransferSafeguards retentionPeriod: String securityMeasures: String dataProtectionImpactAssessment: ProcessingActivityRegistryDataProtectionImpactAssessment transferImpactAssessment: ProcessingActivityRegistryTransferImpactAssessment } input DeleteProcessingActivityRegistryInput { processingActivityRegistryId: ID! } input CreateSnapshotInput { organizationId: ID! name: String! description: String type: SnapshotsType! } input DeleteSnapshotInput { snapshotId: ID! } # Payload Types type CreateOrganizationPayload { organizationEdge: OrganizationEdge! } type UpdateOrganizationPayload { organization: Organization! } type DeleteOrganizationPayload { deletedOrganizationId: ID! } type UpdateTrustCenterPayload { trustCenter: TrustCenter! } type CreateTrustCenterAccessPayload { trustCenterAccessEdge: TrustCenterAccessEdge! } type UpdateTrustCenterAccessPayload { trustCenterAccess: TrustCenterAccess! } type DeleteTrustCenterAccessPayload { deletedTrustCenterAccessId: ID! } type CreateControlPayload { controlEdge: ControlEdge! } type UpdateControlPayload { control: Control! } type DeleteControlPayload { deletedControlId: ID! } type CreateVendorPayload { vendorEdge: VendorEdge! } type UpdateVendorPayload { vendor: Vendor! } type DeleteVendorPayload { deletedVendorId: ID! } type CreateVendorContactPayload { vendorContactEdge: VendorContactEdge! } type UpdateVendorContactPayload { vendorContact: VendorContact! } type DeleteVendorContactPayload { deletedVendorContactId: ID! } type CreateVendorServicePayload { vendorServiceEdge: VendorServiceEdge! } type UpdateVendorServicePayload { vendorService: VendorService! } type DeleteVendorServicePayload { deletedVendorServiceId: ID! } type CreatePeoplePayload { peopleEdge: PeopleEdge! } type UpdatePeoplePayload { people: People! } type DeletePeoplePayload { deletedPeopleId: ID! } type CreateFrameworkPayload { frameworkEdge: FrameworkEdge! } type UpdateFrameworkPayload { framework: Framework! } type ImportFrameworkPayload { frameworkEdge: FrameworkEdge! } type DeleteFrameworkPayload { deletedFrameworkId: ID! } type CreateMeasurePayload { measureEdge: MeasureEdge! } type UpdateMeasurePayload { measure: Measure! } type ImportMeasurePayload { measureEdges: [MeasureEdge!]! } type CreateTaskPayload { taskEdge: TaskEdge! } type UpdateTaskPayload { task: Task! } type DeleteTaskPayload { deletedTaskId: ID! } type AssignTaskPayload { task: Task! } type UnassignTaskPayload { task: Task! } type CreateControlMeasureMappingPayload { controlEdge: ControlEdge! measureEdge: MeasureEdge! } type CreateControlDocumentMappingPayload { controlEdge: ControlEdge! documentEdge: DocumentEdge! } type DeleteControlMeasureMappingPayload { deletedControlId: ID! deletedMeasureId: ID! } type DeleteControlDocumentMappingPayload { deletedControlId: ID! deletedDocumentId: ID! } type CreateControlAuditMappingPayload { controlEdge: ControlEdge! auditEdge: AuditEdge! } type DeleteControlAuditMappingPayload { deletedControlId: ID! deletedAuditId: ID! } type CreateControlSnapshotMappingPayload { controlEdge: ControlEdge! snapshotEdge: SnapshotEdge! } type DeleteControlSnapshotMappingPayload { deletedControlId: ID! deletedSnapshotId: ID! } type CreateRiskPayload { riskEdge: RiskEdge! } type UpdateRiskPayload { risk: Risk! } type DeleteRiskPayload { deletedRiskId: ID! } type CreateRiskMeasureMappingPayload { riskEdge: RiskEdge! measureEdge: MeasureEdge! } type DeleteRiskMeasureMappingPayload { deletedMeasureId: ID! deletedRiskId: ID! } type CreateRiskDocumentMappingPayload { riskEdge: RiskEdge! documentEdge: DocumentEdge! } type DeleteRiskDocumentMappingPayload { deletedRiskId: ID! deletedDocumentId: ID! } type RequestEvidencePayload { evidenceEdge: EvidenceEdge! } type FulfillEvidencePayload { evidenceEdge: EvidenceEdge! } type CreateEvidencePayload { evidenceEdge: EvidenceEdge! } type DeleteEvidencePayload { deletedEvidenceId: ID! } type UploadVendorComplianceReportPayload { vendorComplianceReportEdge: VendorComplianceReportEdge! } type DeleteVendorComplianceReportPayload { deletedVendorComplianceReportId: ID! } type UploadVendorBusinessAssociateAgreementPayload { vendorBusinessAssociateAgreement: VendorBusinessAssociateAgreement! } type UpdateVendorBusinessAssociateAgreementPayload { vendorBusinessAssociateAgreement: VendorBusinessAssociateAgreement! } type DeleteVendorBusinessAssociateAgreementPayload { deletedVendorId: ID! } type UploadVendorDataPrivacyAgreementPayload { vendorDataPrivacyAgreement: VendorDataPrivacyAgreement! } type UpdateVendorDataPrivacyAgreementPayload { vendorDataPrivacyAgreement: VendorDataPrivacyAgreement! } type DeleteVendorDataPrivacyAgreementPayload { deletedVendorId: ID! } type CreateDocumentPayload { documentEdge: DocumentEdge! documentVersionEdge: DocumentVersionEdge! } type ExportDocumentVersionPDFPayload { data: String! } type UpdateDocumentPayload { document: Document! } type DeleteDocumentPayload { deletedDocumentId: ID! } type ConfirmEmailPayload { success: Boolean! } type InviteUserPayload { success: Boolean! } type RemoveUserPayload { success: Boolean! } input VendorRiskAssessmentOrder { field: VendorRiskAssessmentOrderField! direction: OrderDirection! } type VendorRiskAssessment implements Node { id: ID! vendor: Vendor! @goField(forceResolver: true) assessedAt: Datetime! assessedBy: People! @goField(forceResolver: true) expiresAt: Datetime! dataSensitivity: DataSensitivity! businessImpact: BusinessImpact! notes: String createdAt: Datetime! updatedAt: Datetime! } enum VendorRiskAssessmentOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderField" ) { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldCreatedAt" ) EXPIRES_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldExpiresAt" ) ASSESSED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.VendorRiskAssessmentOrderFieldAssessedAt" ) } input CreateVendorRiskAssessmentInput { vendorId: ID! assessedBy: ID! expiresAt: Datetime! dataSensitivity: DataSensitivity! businessImpact: BusinessImpact! notes: String } type CreateVendorRiskAssessmentPayload { vendorRiskAssessmentEdge: VendorRiskAssessmentEdge! } input DeleteMeasureInput { measureId: ID! } type DeleteMeasurePayload { deletedMeasureId: ID! } type DocumentVersion implements Node { id: ID! document: Document! @goField(forceResolver: true) status: DocumentStatus! version: Int! content: String! changelog: String! title: String! owner: People! @goField(forceResolver: true) signatures( first: Int after: CursorKey last: Int before: CursorKey orderBy: DocumentVersionSignatureOrder ): DocumentVersionSignatureConnection! @goField(forceResolver: true) publishedBy: People @goField(forceResolver: true) publishedAt: Datetime createdAt: Datetime! updatedAt: Datetime! } type DocumentVersionSignatureConnection { edges: [DocumentVersionSignatureEdge!]! pageInfo: PageInfo! } type DocumentVersionSignatureEdge { cursor: CursorKey! node: DocumentVersionSignature! } input DocumentVersionSignatureOrder { field: DocumentVersionSignatureOrderField! direction: OrderDirection! } enum DocumentVersionSignatureState @goModel( model: "github.com/getprobo/probo/pkg/coredata.DocumentVersionSignatureState" ) { REQUESTED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentVersionSignatureStateRequested" ) SIGNED @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentVersionSignatureStateSigned" ) } enum DocumentVersionSignatureOrderField @goModel( model: "github.com/getprobo/probo/pkg/coredata.DocumentVersionSignatureOrderField" ) { CREATED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentVersionSignatureOrderFieldCreatedAt" ) SIGNED_AT @goEnum( value: "github.com/getprobo/probo/pkg/coredata.DocumentVersionSignatureOrderFieldSignedAt" ) } type DocumentVersionSignature implements Node { id: ID! documentVersion: DocumentVersion! @goField(forceResolver: true) state: DocumentVersionSignatureState! signedBy: People! @goField(forceResolver: true) signedAt: Datetime requestedAt: Datetime! requestedBy: People! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } input RequestSignatureInput { documentVersionId: ID! signatoryId: ID! } input BulkRequestSignaturesInput { documentIds: [ID!]! signatoryIds: [ID!]! } type RequestSignaturePayload { documentVersionSignatureEdge: DocumentVersionSignatureEdge! } type BulkRequestSignaturesPayload { documentVersionSignatureEdges: [DocumentVersionSignatureEdge!]! } input BulkPublishDocumentVersionsInput { documentIds: [ID!]! changelog: String! } type BulkPublishDocumentVersionsPayload { documentVersionEdges: [DocumentVersionEdge!]! documentEdges: [DocumentEdge!]! } input PublishDocumentVersionInput { documentId: ID! changelog: String } type PublishDocumentVersionPayload { documentVersion: DocumentVersion! document: Document! } type CreateDraftDocumentVersionPayload { documentVersionEdge: DocumentVersionEdge! } type DeleteDraftDocumentVersionPayload { deletedDocumentVersionId: ID! } input CreateDraftDocumentVersionInput { documentID: ID! } input DeleteDraftDocumentVersionInput { documentVersionId: ID! } input UpdateDocumentVersionInput { documentVersionId: ID! content: String! } input CancelSignatureRequestInput { documentVersionSignatureId: ID! } type UpdateDocumentVersionPayload { documentVersion: DocumentVersion! } input SendSigningNotificationsInput { organizationId: ID! } type SendSigningNotificationsPayload { success: Boolean! } type CancelSignatureRequestPayload { deletedDocumentVersionSignatureId: ID! } type UploadTaskEvidencePayload { evidenceEdge: EvidenceEdge! } type UploadMeasureEvidencePayload { evidenceEdge: EvidenceEdge! } input UploadTaskEvidenceInput { taskId: ID! file: Upload! } input UploadMeasureEvidenceInput { measureId: ID! file: Upload! } input GenerateDocumentChangelogInput { documentId: ID! } type GenerateDocumentChangelogPayload { changelog: String! } input AssessVendorInput { id: ID! websiteUrl: String! } type AssessVendorPayload { vendor: Vendor! } type Asset implements Node { id: ID! snapshotId: ID name: String! amount: Int! owner: People! @goField(forceResolver: true) vendors( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorOrder ): VendorConnection! @goField(forceResolver: true) criticity: CriticityLevel! assetType: AssetType! @goField(forceResolver: true) dataTypesStored: String! organization: Organization! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } type AssetConnection @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.AssetConnection" ) { totalCount: Int! @goField(forceResolver: true) edges: [AssetEdge!]! pageInfo: PageInfo! } type AssetEdge { cursor: CursorKey! node: Asset! } input AssetOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.AssetOrderBy" ) { direction: OrderDirection! field: AssetOrderField! } input CreateAssetInput { organizationId: ID! name: String! amount: Int! ownerId: ID! criticity: CriticityLevel! = MEDIUM assetType: AssetType! dataTypesStored: String! vendorIds: [ID!] } input UpdateAssetInput { id: ID! name: String amount: Int ownerId: ID criticity: CriticityLevel assetType: AssetType dataTypesStored: String vendorIds: [ID!] } input DeleteAssetInput { assetId: ID! } type CreateAssetPayload { assetEdge: AssetEdge! } type UpdateAssetPayload { asset: Asset! } type DeleteAssetPayload { deletedAssetId: ID! } type Datum implements Node { id: ID! snapshotId: ID name: String! dataClassification: DataClassification! owner: People! @goField(forceResolver: true) vendors( first: Int after: CursorKey last: Int before: CursorKey orderBy: VendorOrder ): VendorConnection! @goField(forceResolver: true) organization: Organization! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! } input DatumOrder @goModel( model: "github.com/getprobo/probo/pkg/server/api/console/v1/types.DatumOrderBy" ) { direction: OrderDirection! field: DatumOrderField! } input CreateDatumInput { organizationId: ID! name: String! dataClassification: DataClassification! ownerId: ID! vendorIds: [ID!] } input UpdateDatumInput { id: ID! name: String dataClassification: DataClassification ownerId: ID vendorIds: [ID!] } input DeleteDatumInput { datumId: ID! } type CreateDatumPayload { datumEdge: DatumEdge! } type UpdateDatumPayload { datum: Datum! } type DeleteDatumPayload { deletedDatumId: ID! } type CreateAuditPayload { auditEdge: AuditEdge! } type UpdateAuditPayload { audit: Audit! } type DeleteAuditPayload { deletedAuditId: ID! } type UploadAuditReportPayload { audit: Audit! } type DeleteAuditReportPayload { audit: Audit! } # Nonconformity Registry payload types type CreateNonconformityRegistryPayload { nonconformityRegistryEdge: NonconformityRegistryEdge! } type UpdateNonconformityRegistryPayload { nonconformityRegistry: NonconformityRegistry! } type DeleteNonconformityRegistryPayload { deletedNonconformityRegistryId: ID! } type CreateComplianceRegistryPayload { complianceRegistryEdge: ComplianceRegistryEdge! } type UpdateComplianceRegistryPayload { complianceRegistry: ComplianceRegistry! } type DeleteComplianceRegistryPayload { deletedComplianceRegistryId: ID! } type CreateContinualImprovementRegistryPayload { continualImprovementRegistryEdge: ContinualImprovementRegistryEdge! } type UpdateContinualImprovementRegistryPayload { continualImprovementRegistry: ContinualImprovementRegistry! } type DeleteContinualImprovementRegistryPayload { deletedContinualImprovementRegistryId: ID! } type CreateProcessingActivityRegistryPayload { processingActivityRegistryEdge: ProcessingActivityRegistryEdge! } type UpdateProcessingActivityRegistryPayload { processingActivityRegistry: ProcessingActivityRegistry! } type DeleteProcessingActivityRegistryPayload { deletedProcessingActivityRegistryId: ID! } type CreateSnapshotPayload { snapshotEdge: SnapshotEdge! } type DeleteSnapshotPayload { deletedSnapshotId: ID! }