diff --git a/.repository-projection.json b/.repository-projection.json index a44e214..1b6b08a 100644 --- a/.repository-projection.json +++ b/.repository-projection.json @@ -3,11 +3,11 @@ "projection": "api", "projectionSchemaVersion": 1, "sourceRepository": "dx-corp/mono", - "sourceSha": "0135ea0655c81b1b2a8e7fb5e4fb00d827607b35", + "sourceSha": "7f322bbd03a590ed5a478b12303369ea8d48c00a", "destinationRepository": "dx-corp/api", - "priorProjectedBase": "c4d7654c2c9fe69d1da9ea22080477b295672aef", + "priorProjectedBase": "5600cfa72fda9a25825e3b72c756b4ab8fcdea92", "definitionDigest": "144b18a5c1f3e7ee6e2d1abc32f80a97adfeacd088911ec659d63622fe85d18c", - "toolDigest": "f58d71f023a4f0a27d77cb96dcc5348a40816d0b", - "contentDigest": "ecd825d20fda2280d75beeb94a05a0dde6db315da21a4958e4024159b7824a8f", + "toolDigest": "898e8657d9153a2a51d7c283bf83bb3350b5d1e6", + "contentDigest": "c7b3e94ab12c7c9cfbf16f5cfe0dcaf59e8910e82c4ce5ebcc4d30f80cfbb966", "publicationEligible": true } diff --git a/openapi/console/v1/console.openapi.yaml b/openapi/console/v1/console.openapi.yaml index 5a0d556..eb679bd 100644 --- a/openapi/console/v1/console.openapi.yaml +++ b/openapi/console/v1/console.openapi.yaml @@ -38,6 +38,76 @@ paths: application/json: schema: $ref: '#/components/schemas/console.v1.AssessComplianceSubjectResponse' + /console.v1.ConsoleService/RecordComplianceAssessment: + post: + tags: + - console.v1.ConsoleService + summary: RecordComplianceAssessment + operationId: console.v1.ConsoleService.RecordComplianceAssessment + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.RecordComplianceAssessmentRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.RecordComplianceAssessmentResponse' + /console.v1.ConsoleService/GetComplianceAssessment: + post: + tags: + - console.v1.ConsoleService + summary: GetComplianceAssessment + operationId: console.v1.ConsoleService.GetComplianceAssessment + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.GetComplianceAssessmentRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.GetComplianceAssessmentResponse' /console.v1.ConsoleService/ListBusinessBlueprints: post: tags: @@ -14518,6 +14588,32 @@ components: required: - upload additionalProperties: false + console.v1.ComplianceAssessmentRecord: + type: object + properties: + id: + type: string + title: id + organizationId: + type: string + title: organization_id + workspaceId: + type: string + title: workspace_id + evaluatorVersion: + type: string + title: evaluator_version + assessment: + title: assessment + $ref: '#/components/schemas/console.v1.ComplianceSubjectAssessment' + manifestDigest: + type: string + title: manifest_digest + recordedByPrincipalId: + type: string + title: recorded_by_principal_id + title: ComplianceAssessmentRecord + additionalProperties: false console.v1.ComplianceRequirementFinding: type: object properties: @@ -18722,6 +18818,28 @@ components: required: - submission additionalProperties: false + console.v1.GetComplianceAssessmentRequest: + type: object + properties: + organizationId: + type: string + title: organization_id + workspaceId: + type: string + title: workspace_id + recordId: + type: string + title: record_id + title: GetComplianceAssessmentRequest + additionalProperties: false + console.v1.GetComplianceAssessmentResponse: + type: object + properties: + record: + title: record + $ref: '#/components/schemas/console.v1.ComplianceAssessmentRecord' + title: GetComplianceAssessmentResponse + additionalProperties: false console.v1.GetComputerMissionCanaryEvidenceRequest: type: object properties: @@ -26549,6 +26667,41 @@ components: required: - profile additionalProperties: false + console.v1.RecordComplianceAssessmentRequest: + type: object + properties: + organizationId: + type: string + title: organization_id + workspaceId: + type: string + title: workspace_id + profileId: + type: string + title: profile_id + subjectKind: + type: string + title: subject_kind + subjectId: + type: string + title: subject_id + idempotencyKey: + type: string + title: idempotency_key + title: RecordComplianceAssessmentRequest + additionalProperties: false + description: Records a server-evaluated snapshot. A replay key always returns its first accepted result. + console.v1.RecordComplianceAssessmentResponse: + type: object + properties: + record: + title: record + $ref: '#/components/schemas/console.v1.ComplianceAssessmentRecord' + idempotentReplay: + type: boolean + title: idempotent_replay + title: RecordComplianceAssessmentResponse + additionalProperties: false console.v1.RecordOperatingHomepageSuggestionFeedbackRequest: type: object properties: diff --git a/openapi/deixic/v1/deixic.openapi.yaml b/openapi/deixic/v1/deixic.openapi.yaml index 2ea87cb..b96cc15 100644 --- a/openapi/deixic/v1/deixic.openapi.yaml +++ b/openapi/deixic/v1/deixic.openapi.yaml @@ -38,6 +38,76 @@ paths: application/json: schema: $ref: '#/components/schemas/console.v1.AssessComplianceSubjectResponse' + /deixic.v1.DeixicService/RecordComplianceAssessment: + post: + tags: + - deixic.v1.DeixicService + summary: RecordComplianceAssessment + operationId: deixic.v1.DeixicService.RecordComplianceAssessment + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.RecordComplianceAssessmentRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.RecordComplianceAssessmentResponse' + /deixic.v1.DeixicService/GetComplianceAssessment: + post: + tags: + - deixic.v1.DeixicService + summary: GetComplianceAssessment + operationId: deixic.v1.DeixicService.GetComplianceAssessment + parameters: + - name: Connect-Protocol-Version + in: header + required: true + schema: + $ref: '#/components/schemas/connect-protocol-version' + - name: Connect-Timeout-Ms + in: header + schema: + $ref: '#/components/schemas/connect-timeout-header' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.GetComplianceAssessmentRequest' + required: true + responses: + default: + description: Error + content: + application/json: + schema: + $ref: '#/components/schemas/connect.error' + "200": + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/console.v1.GetComplianceAssessmentResponse' /deixic.v1.DeixicService/ListBusinessBlueprints: post: tags: @@ -13907,6 +13977,32 @@ components: required: - upload additionalProperties: false + console.v1.ComplianceAssessmentRecord: + type: object + properties: + id: + type: string + title: id + organizationId: + type: string + title: organization_id + workspaceId: + type: string + title: workspace_id + evaluatorVersion: + type: string + title: evaluator_version + assessment: + title: assessment + $ref: '#/components/schemas/console.v1.ComplianceSubjectAssessment' + manifestDigest: + type: string + title: manifest_digest + recordedByPrincipalId: + type: string + title: recorded_by_principal_id + title: ComplianceAssessmentRecord + additionalProperties: false console.v1.ComplianceRequirementFinding: type: object properties: @@ -18098,6 +18194,28 @@ components: required: - submission additionalProperties: false + console.v1.GetComplianceAssessmentRequest: + type: object + properties: + organizationId: + type: string + title: organization_id + workspaceId: + type: string + title: workspace_id + recordId: + type: string + title: record_id + title: GetComplianceAssessmentRequest + additionalProperties: false + console.v1.GetComplianceAssessmentResponse: + type: object + properties: + record: + title: record + $ref: '#/components/schemas/console.v1.ComplianceAssessmentRecord' + title: GetComplianceAssessmentResponse + additionalProperties: false console.v1.GetComputerMissionCanaryEvidenceRequest: type: object properties: @@ -25098,6 +25216,41 @@ components: required: - profile additionalProperties: false + console.v1.RecordComplianceAssessmentRequest: + type: object + properties: + organizationId: + type: string + title: organization_id + workspaceId: + type: string + title: workspace_id + profileId: + type: string + title: profile_id + subjectKind: + type: string + title: subject_kind + subjectId: + type: string + title: subject_id + idempotencyKey: + type: string + title: idempotency_key + title: RecordComplianceAssessmentRequest + additionalProperties: false + description: Records a server-evaluated snapshot. A replay key always returns its first accepted result. + console.v1.RecordComplianceAssessmentResponse: + type: object + properties: + record: + title: record + $ref: '#/components/schemas/console.v1.ComplianceAssessmentRecord' + idempotentReplay: + type: boolean + title: idempotent_replay + title: RecordComplianceAssessmentResponse + additionalProperties: false console.v1.RecordOperatingHomepageSuggestionFeedbackRequest: type: object properties: diff --git a/proto/console/v1/console.proto b/proto/console/v1/console.proto index 35b0ca3..ee1478f 100644 --- a/proto/console/v1/console.proto +++ b/proto/console/v1/console.proto @@ -33,6 +33,18 @@ service ConsoleService { option (common.v1.workspace_scope_field) = "workspace_id"; option (common.v1.risk_level) = RISK_LEVEL_LOW; } + rpc RecordComplianceAssessment(RecordComplianceAssessmentRequest) returns (RecordComplianceAssessmentResponse) { + option (common.v1.required_scopes) = "console:write"; + option (common.v1.organization_scope_field) = "organization_id"; + option (common.v1.workspace_scope_field) = "workspace_id"; + option (common.v1.risk_level) = RISK_LEVEL_MEDIUM; + } + rpc GetComplianceAssessment(GetComplianceAssessmentRequest) returns (GetComplianceAssessmentResponse) { + option (common.v1.required_scopes) = "console:read"; + option (common.v1.organization_scope_field) = "organization_id"; + option (common.v1.workspace_scope_field) = "workspace_id"; + option (common.v1.risk_level) = RISK_LEVEL_LOW; + } // Lists built-in native business blueprints available to every authorized tenant. rpc ListBusinessBlueprints(ListBusinessBlueprintsRequest) returns (ListBusinessBlueprintsResponse) { option (common.v1.required_scopes) = "console:read"; @@ -11080,3 +11092,38 @@ message ComplianceSubjectAssessment { message AssessComplianceSubjectResponse { ComplianceSubjectAssessment assessment = 1; } + +// Records a server-evaluated snapshot. A replay key always returns its first accepted result. +message RecordComplianceAssessmentRequest { + string organization_id = 1 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string workspace_id = 2 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string profile_id = 3 [(common.v1.classification) = DATA_CLASSIFICATION_SAFE]; + string subject_kind = 4 [(common.v1.classification) = DATA_CLASSIFICATION_SAFE]; + string subject_id = 5 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string idempotency_key = 6 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; +} + +message ComplianceAssessmentRecord { + string id = 1 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string organization_id = 2 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string workspace_id = 3 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string evaluator_version = 4 [(common.v1.classification) = DATA_CLASSIFICATION_SAFE]; + ComplianceSubjectAssessment assessment = 5; + string manifest_digest = 6 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string recorded_by_principal_id = 7 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; +} + +message RecordComplianceAssessmentResponse { + ComplianceAssessmentRecord record = 1; + bool idempotent_replay = 2; +} + +message GetComplianceAssessmentRequest { + string organization_id = 1 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string workspace_id = 2 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; + string record_id = 3 [(common.v1.classification) = DATA_CLASSIFICATION_IDENTIFIER]; +} + +message GetComplianceAssessmentResponse { + ComplianceAssessmentRecord record = 1; +} diff --git a/proto/deixic/v1/deixic.proto b/proto/deixic/v1/deixic.proto index 00ab699..6cb3449 100644 --- a/proto/deixic/v1/deixic.proto +++ b/proto/deixic/v1/deixic.proto @@ -18,6 +18,18 @@ service DeixicService { option (common.v1.workspace_scope_field) = "workspace_id"; option (common.v1.risk_level) = RISK_LEVEL_LOW; } + rpc RecordComplianceAssessment(console.v1.RecordComplianceAssessmentRequest) returns (console.v1.RecordComplianceAssessmentResponse) { + option (common.v1.required_scopes) = "console:write"; + option (common.v1.organization_scope_field) = "organization_id"; + option (common.v1.workspace_scope_field) = "workspace_id"; + option (common.v1.risk_level) = RISK_LEVEL_MEDIUM; + } + rpc GetComplianceAssessment(console.v1.GetComplianceAssessmentRequest) returns (console.v1.GetComplianceAssessmentResponse) { + option (common.v1.required_scopes) = "console:read"; + option (common.v1.organization_scope_field) = "organization_id"; + option (common.v1.workspace_scope_field) = "workspace_id"; + option (common.v1.risk_level) = RISK_LEVEL_LOW; + } // Lists built-in native business blueprints available to every authorized tenant. rpc ListBusinessBlueprints(console.v1.ListBusinessBlueprintsRequest) returns (console.v1.ListBusinessBlueprintsResponse) { option (common.v1.required_scopes) = "console:read";