# GENERATED FILE — do not edit by hand.
# Source: Zod schemas + registries in @arbiter/shared (openapi/).
# Regenerate: npm run generate:api-contracts
# Contract: REST (Partner Read + public CRUD slice + OSCAL export)
# Ticket: #531 / TKT-COV-2026-0043
openapi: "3.1.0"
info:
  title: "Arbiter Developer API"
  version: "arbiter.partner.v1"
  description: "Partner operating systems: use `/api/v1` (Partner Read,
    `arbiter.partner.v1`). Auth: Bearer `arb_…`. Unversioned
    `/api/{policies,controls,risks,assets}` is for the Arbiter UI and may change
    without a contract bump. Breaking Partner Read changes bump
    `contractVersion` with 30-day notice. Integrity fields (`evidence_hash`,
    `body_hash`, `verified_no_npi`) let you verify without NPI. OSCAL under
    `/api/export/oscal/*` is admin export, not the sync envelope. Signed
    push/ack webhooks: Partner Sync Events (`arbiter.partner.events.v1`) —
    https://docs.arbiter.blockskunk.com/webhooks."
servers:
  - url: "https://{org}.arbiter.blockskunk.com"
    description: "Tenant API host (replace {org} with tenant slug)"
tags:
  - name: "Partner Read"
    description: "Versioned partner envelopes under /api/v1"
  - name: "Policies"
    description: "Unversioned policy CRUD (UI / early-access)"
  - name: "Controls"
    description: "Unversioned control CRUD"
  - name: "Risks"
    description: "Unversioned risk CRUD"
  - name: "Assets"
    description: "Unversioned asset CRUD"
paths:
  /api/v1/assets:
    get:
      operationId: "partnerListAssets"
      summary: "Partner Read — list assets (metadata only)"
      tags:
        - "Partner Read"
      parameters:
        - &a1
          name: "limit"
          in: "query"
          required: false
          description: "Max items to return"
          schema:
            type: "integer"
            minimum: 1
            maximum: 200
        - &a2
          name: "order"
          in: "query"
          required: false
          description: "Sort order"
          schema:
            type: "string"
            enum:
              - "asc"
              - "desc"
        - name: "classification"
          in: "query"
          schema:
            type: "string"
        - name: "coverageStatus"
          in: "query"
          schema:
            type: "string"
        - name: "projectId"
          in: "query"
          schema:
            type: "string"
        - name: "resourceType"
          in: "query"
          schema:
            type: "string"
        - name: "cloudOnly"
          in: "query"
          schema:
            type: "boolean"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerAssetListEnvelope"
              example:
                contractVersion: "arbiter.partner.v1"
                orgId: "acme"
                generatedAt: "2026-07-22T18:00:00.000Z"
                snapshotId: "snap-001"
                evidence_hash: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
                  a"
                verified_no_npi: true
                pagination:
                  limit: 50
                  count: 1
                  nextCursor: null
                items:
                  - id: "asset-1"
                    uuid: "00000000-0000-4000-8000-000000000001"
                    name: "prod-api"
                    assetType: "service"
                    classification: "internal"
                    coverageStatus: "covered"
                    cloud:
                      resourceId: "//compute.googleapis.com/projects/acme/zones/us/instances/i-1"
                      resourceType: "compute_instance"
                      projectId: "acme-prod"
                      labelKeys:
                        - "env"
                        - "team"
                      snapshotId: "snap-001"
                      evidence_hash: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\
                        b"
                    linkedRiskCount: 0
                    linkedControlCount: 2
                    evidence_hash: "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\
                      c"
                    snapshotId: "snap-001"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      description: "Inventory envelope with `verified_no_npi: true`, `evidence_hash`,
        and cloud `labelKeys` only (no label values)."
  /api/v1/assets/coverage:
    get:
      operationId: "partnerGetCoverage"
      summary: "Partner Read — estate coverage rollup"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - name: "snapshotId"
          in: "query"
          schema:
            type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerCoverageEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/v1/assets/snapshots:
    get:
      operationId: "partnerListSnapshots"
      summary: "Partner Read — list inventory snapshots"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerSnapshotListEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/v1/assets/snapshots/{snapshotId}:
    get:
      operationId: "partnerGetSnapshot"
      summary: "Partner Read — get inventory snapshot"
      tags:
        - "Partner Read"
      parameters:
        - name: "snapshotId"
          in: "path"
          required: true
          schema:
            type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerSnapshotItemEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/v1/controls:
    get:
      operationId: "partnerListControls"
      summary: "Partner Read — list controls"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerControlListEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/v1/policies:
    get:
      operationId: "partnerListPolicies"
      summary: "Partner Read — list policies (body_hash only; never policy body)"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerPolicyListEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      description: "Returns `body_hash` for integrity verification. Policy body text
        is never included on Partner Read."
  /api/v1/risks:
    get:
      operationId: "partnerListRisks"
      summary: "Partner Read — list risks"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - *a2
        - name: "status"
          in: "query"
          schema:
            type: "string"
        - name: "categoryId"
          in: "query"
          schema:
            type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerRiskListEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/v1/findings:
    get:
      operationId: "partnerListFindings"
      summary: "Partner Read — list findings"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - name: "source"
          in: "query"
          description: "estate (default) or oscal"
          schema:
            type: "string"
            enum:
              - "estate"
              - "oscal"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerFindingListEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/v1/verification-proofs:
    get:
      operationId: "partnerListVerificationProofs"
      summary: "Partner Read — list verification proofs"
      tags:
        - "Partner Read"
      parameters:
        - *a1
        - name: "kinds"
          in: "query"
          description: "Comma-separated: remediation_packet, asset_snapshot, register_seal"
          schema:
            type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PartnerProofListEnvelope"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
  /api/policies:
    get:
      operationId: "listPolicies"
      summary: "List policies"
      tags:
        - "Policies"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyList"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    post:
      operationId: "createPolicy"
      summary: "Create policy (draft v1)"
      tags:
        - "Policies"
      parameters: []
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema: &a3
                $ref: "#/components/schemas/Policy"
        "201":
          description: "Created"
          content:
            application/json:
              schema: *a3
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePolicy"
  /api/policies/{id}:
    get:
      operationId: "getPolicy"
      summary: "Get policy by id"
      tags:
        - "Policies"
      parameters:
        - &a4
          name: "id"
          in: "path"
          required: true
          schema:
            type: "string"
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    put:
      operationId: "updatePolicy"
      summary: "Update draft policy"
      tags:
        - "Policies"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Policy"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdatePolicy"
  /api/controls:
    get:
      operationId: "listControls"
      summary: "List controls"
      tags:
        - "Controls"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ControlList"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    post:
      operationId: "createControl"
      summary: "Create control"
      tags:
        - "Controls"
      parameters: []
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema: &a5
                $ref: "#/components/schemas/Control"
        "201":
          description: "Created"
          content:
            application/json:
              schema: *a5
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateControl"
  /api/controls/{id}:
    get:
      operationId: "getControl"
      summary: "Get control by id"
      tags:
        - "Controls"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Control"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    put:
      operationId: "updateControl"
      summary: "Update control"
      tags:
        - "Controls"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Control"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateControl"
  /api/risks:
    get:
      operationId: "listRisks"
      summary: "List risks"
      tags:
        - "Risks"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RiskList"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    post:
      operationId: "createRisk"
      summary: "Create risk"
      tags:
        - "Risks"
      parameters: []
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema: &a6
                $ref: "#/components/schemas/Risk"
        "201":
          description: "Created"
          content:
            application/json:
              schema: *a6
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRisk"
  /api/risks/{id}:
    get:
      operationId: "getRisk"
      summary: "Get risk by id"
      tags:
        - "Risks"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Risk"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    put:
      operationId: "updateRisk"
      summary: "Update risk"
      tags:
        - "Risks"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Risk"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateRisk"
  /api/assets:
    get:
      operationId: "listAssets"
      summary: "List assets"
      tags:
        - "Assets"
      parameters:
        - *a1
        - *a2
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AssetList"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    post:
      operationId: "createAsset"
      summary: "Create asset"
      tags:
        - "Assets"
      parameters: []
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema: &a7
                $ref: "#/components/schemas/Asset"
        "201":
          description: "Created"
          content:
            application/json:
              schema: *a7
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAsset"
  /api/assets/{id}:
    get:
      operationId: "getAsset"
      summary: "Get asset by id"
      tags:
        - "Assets"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Asset"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
    put:
      operationId: "updateAsset"
      summary: "Update asset"
      tags:
        - "Assets"
      parameters:
        - *a4
      responses:
        "200":
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Asset"
        "401":
          description: "Unauthorized"
        "403":
          description: "Forbidden"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateAsset"
components:
  securitySchemes:
    ArbiterApiKey:
      type: "http"
      scheme: "bearer"
      bearerFormat: "arb_"
      description: "Arbiter API key. Format: `arb_` + 43 url-safe base64 characters.
        Pass as `Authorization: Bearer arb_REDACTED_EXAMPLE_DO_NOT_USE`
        (redacted placeholder — never a live key). Raw keys are shown once at
        mint; examples in this document never contain live secrets."
  schemas:
    PartnerAssetListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                minLength: 1
              uuid:
                type: "string"
                minLength: 1
              name:
                type: "string"
                minLength: 1
              assetType:
                type: "string"
                minLength: 1
              classification:
                type: "string"
                minLength: 1
              coverageStatus:
                type: "string"
                enum:
                  - "covered"
                  - "uncovered"
                  - "noncompliant"
                  - "unknown"
              coverageRationale:
                type: "string"
              coverageControlUuids:
                type: "array"
                items:
                  type: "string"
              coveragePolicyUuids:
                type: "array"
                items:
                  type: "string"
              coverageEvaluatedAt:
                type: "string"
              coverageSnapshotId:
                type: "string"
              cloud:
                type: "object"
                properties:
                  resourceId:
                    type: "string"
                    minLength: 1
                  resourceType:
                    type: "string"
                    enum:
                      - "iam_service_account_key"
                      - "gcs_bucket"
                      - "firewall_rule"
                      - "compute_instance"
                      - "audit_config"
                      - "wif_provider"
                  projectId:
                    type: "string"
                    minLength: 1
                  labelKeys:
                    type: "array"
                    items:
                      type: "string"
                  discoveredAt:
                    type: "string"
                  collectorVersion:
                    type: "string"
                  snapshotId:
                    type: "string"
                    minLength: 1
                  evidence_hash:
                    type: "string"
                    minLength: 1
                required:
                  - "resourceId"
                  - "resourceType"
                  - "projectId"
                  - "labelKeys"
                  - "snapshotId"
                  - "evidence_hash"
                additionalProperties: false
              linkedRiskCount:
                type: "integer"
                minimum: 0
                maximum: 9007199254740991
              linkedControlCount:
                type: "integer"
                minimum: 0
                maximum: 9007199254740991
              evidence_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              snapshotId:
                anyOf:
                  - type: "string"
                  - type: "null"
              updatedAt:
                type: "string"
            required:
              - "id"
              - "uuid"
              - "name"
              - "assetType"
              - "classification"
              - "linkedRiskCount"
              - "linkedControlCount"
              - "evidence_hash"
              - "snapshotId"
            additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PartnerCoverageEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              assetId:
                type: "string"
                minLength: 1
              assetUuid:
                type: "string"
              name:
                type: "string"
                minLength: 1
              coverageStatus:
                type: "string"
                enum:
                  - "covered"
                  - "uncovered"
                  - "noncompliant"
                  - "unknown"
              coverageRationale:
                type: "string"
              coverageControlUuids:
                type: "array"
                items:
                  type: "string"
              coveragePolicyUuids:
                type: "array"
                items:
                  type: "string"
              coverageSnapshotId:
                type: "string"
              evidence_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              snapshotId:
                anyOf:
                  - type: "string"
                  - type: "null"
              openFindings:
                default: []
                type: "array"
                items:
                  type: "object"
                  properties:
                    cisBenchmarkId:
                      type: "string"
                      minLength: 1
                    title:
                      type: "string"
                      minLength: 1
                    severity:
                      type: "string"
                      enum:
                        - "CRITICAL"
                        - "HIGH"
                        - "MEDIUM"
                        - "LOW"
                    detail:
                      type: "string"
                      minLength: 1
                    resourceName:
                      type: "string"
                      minLength: 1
                  required:
                    - "cisBenchmarkId"
                    - "title"
                    - "severity"
                    - "detail"
                    - "resourceName"
                  additionalProperties: false
            required:
              - "assetId"
              - "name"
              - "coverageStatus"
              - "evidence_hash"
              - "snapshotId"
              - "openFindings"
            additionalProperties: false
        summary:
          type: "object"
          properties:
            byStatus:
              type: "object"
              properties:
                covered:
                  type: "integer"
                  minimum: 0
                  maximum: 9007199254740991
                uncovered:
                  type: "integer"
                  minimum: 0
                  maximum: 9007199254740991
                noncompliant:
                  type: "integer"
                  minimum: 0
                  maximum: 9007199254740991
                unknown:
                  type: "integer"
                  minimum: 0
                  maximum: 9007199254740991
              required:
                - "covered"
                - "uncovered"
                - "noncompliant"
                - "unknown"
              additionalProperties: false
            snapshotId:
              anyOf:
                - type: "string"
                - type: "null"
            evaluatedAssetCount:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
          required:
            - "byStatus"
            - "snapshotId"
            - "evaluatedAssetCount"
          additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
        - "summary"
      additionalProperties: false
    PartnerSnapshotListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              snapshotId:
                type: "string"
                minLength: 1
              projectId:
                type: "string"
                minLength: 1
              pulledAt:
                type: "string"
                minLength: 1
              collectorVersion:
                type: "string"
                minLength: 1
              completeness:
                type: "string"
                enum:
                  - "complete"
                  - "partial"
                  - "empty"
              resourceCounts:
                type: "object"
                propertyNames:
                  type: "string"
                additionalProperties:
                  type: "integer"
                  minimum: 0
                  maximum: 9007199254740991
              envelope_hash:
                type: "string"
                minLength: 1
              sealTxId:
                type: "string"
              sealStatus:
                type: "string"
                enum:
                  - "pending"
                  - "succeeded"
                  - "failed"
                  - "skipped"
              evidence_hash:
                type: "string"
                minLength: 1
            required:
              - "snapshotId"
              - "projectId"
              - "pulledAt"
              - "collectorVersion"
              - "completeness"
              - "resourceCounts"
              - "envelope_hash"
              - "evidence_hash"
            additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PartnerSnapshotItemEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        item:
          type: "object"
          properties:
            snapshotId:
              type: "string"
              minLength: 1
            projectId:
              type: "string"
              minLength: 1
            pulledAt:
              type: "string"
              minLength: 1
            collectorVersion:
              type: "string"
              minLength: 1
            completeness:
              type: "string"
              enum:
                - "complete"
                - "partial"
                - "empty"
            resourceCounts:
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "integer"
                minimum: 0
                maximum: 9007199254740991
            envelope_hash:
              type: "string"
              minLength: 1
            sealTxId:
              type: "string"
            sealStatus:
              type: "string"
              enum:
                - "pending"
                - "succeeded"
                - "failed"
                - "skipped"
            evidence_hash:
              type: "string"
              minLength: 1
          required:
            - "snapshotId"
            - "projectId"
            - "pulledAt"
            - "collectorVersion"
            - "completeness"
            - "resourceCounts"
            - "envelope_hash"
            - "evidence_hash"
          additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "item"
      additionalProperties: false
    PartnerControlListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                minLength: 1
              uuid:
                type: "string"
                minLength: 1
              controlId:
                type: "string"
                minLength: 1
              title:
                type: "string"
                minLength: 1
              implementationStatus:
                type: "string"
                minLength: 1
              frameworkReferences:
                default: []
                type: "array"
                items: {}
              evidence_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              sealed_tx_id:
                type: "string"
              snapshotId:
                anyOf:
                  - type: "string"
                  - type: "null"
              updatedAt:
                type: "string"
            required:
              - "id"
              - "uuid"
              - "controlId"
              - "title"
              - "implementationStatus"
              - "frameworkReferences"
              - "evidence_hash"
              - "snapshotId"
            additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PartnerPolicyListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                minLength: 1
              uuid:
                type: "string"
                minLength: 1
              policyId:
                type: "string"
              title:
                type: "string"
                minLength: 1
              status:
                type: "string"
                minLength: 1
              version:
                type: "integer"
                exclusiveMinimum: 0
                maximum: 9007199254740991
              frameworkReferences:
                default: []
                type: "array"
                items: {}
              linkedControlUuids:
                default: []
                type: "array"
                items:
                  type: "string"
              body_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              sealed_tx_id:
                type: "string"
              evidence_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              snapshotId:
                anyOf:
                  - type: "string"
                  - type: "null"
              updatedAt:
                type: "string"
            required:
              - "id"
              - "uuid"
              - "title"
              - "status"
              - "version"
              - "frameworkReferences"
              - "linkedControlUuids"
              - "body_hash"
              - "evidence_hash"
              - "snapshotId"
            additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PartnerRiskListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              id:
                type: "string"
                minLength: 1
              uuid:
                type: "string"
                minLength: 1
              title:
                type: "string"
                minLength: 1
              status:
                type: "string"
                minLength: 1
              categoryId:
                type: "string"
              linkedControlCount:
                type: "integer"
                minimum: 0
                maximum: 9007199254740991
              sealed_tx_id:
                type: "string"
              evidence_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              snapshotId:
                anyOf:
                  - type: "string"
                  - type: "null"
              updatedAt:
                type: "string"
            required:
              - "id"
              - "uuid"
              - "title"
              - "status"
              - "linkedControlCount"
              - "evidence_hash"
              - "snapshotId"
            additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PartnerFindingListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            anyOf:
              - type: "object"
                properties:
                  source:
                    type: "string"
                    const: "estate"
                  assetId:
                    type: "string"
                    minLength: 1
                  assetUuid:
                    type: "string"
                  resourceId:
                    type: "string"
                  cisBenchmarkId:
                    type: "string"
                    minLength: 1
                  title:
                    type: "string"
                    minLength: 1
                  severity:
                    type: "string"
                    enum:
                      - "CRITICAL"
                      - "HIGH"
                      - "MEDIUM"
                      - "LOW"
                  detail:
                    type: "string"
                    minLength: 1
                  resourceName:
                    type: "string"
                    minLength: 1
                  coverageStatus:
                    type: "string"
                    enum:
                      - "covered"
                      - "uncovered"
                      - "noncompliant"
                      - "unknown"
                  evidence_hash:
                    anyOf:
                      - type: "string"
                      - type: "null"
                  snapshotId:
                    anyOf:
                      - type: "string"
                      - type: "null"
                required:
                  - "source"
                  - "assetId"
                  - "cisBenchmarkId"
                  - "title"
                  - "severity"
                  - "detail"
                  - "resourceName"
                  - "evidence_hash"
                  - "snapshotId"
                additionalProperties: false
              - type: "object"
                properties:
                  source:
                    type: "string"
                    const: "oscal"
                  id:
                    type: "string"
                    minLength: 1
                  uuid:
                    type: "string"
                    minLength: 1
                  title:
                    type: "string"
                  description:
                    type: "string"
                  relatedObservationUuids:
                    type: "array"
                    items:
                      type: "string"
                  relatedRiskUuids:
                    type: "array"
                    items:
                      type: "string"
                  evidence_hash:
                    anyOf:
                      - type: "string"
                      - type: "null"
                  snapshotId:
                    type: "null"
                  updatedAt:
                    type: "string"
                required:
                  - "source"
                  - "id"
                  - "uuid"
                  - "evidence_hash"
                  - "snapshotId"
                additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PartnerProofListEnvelope:
      type: "object"
      properties:
        contractVersion:
          type: "string"
          const: "arbiter.partner.v1"
        orgId:
          type: "string"
          minLength: 1
        generatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        snapshotId:
          anyOf:
            - type: "string"
            - type: "null"
        evidence_hash:
          type: "string"
          minLength: 1
        verified_no_npi:
          type: "boolean"
          const: true
        pagination:
          type: "object"
          properties:
            limit:
              type: "integer"
              exclusiveMinimum: 0
              maximum: 9007199254740991
            count:
              type: "integer"
              minimum: 0
              maximum: 9007199254740991
            nextCursor:
              anyOf:
                - type: "string"
                - type: "null"
          required:
            - "limit"
            - "count"
            - "nextCursor"
          additionalProperties: false
        items:
          type: "array"
          items:
            type: "object"
            properties:
              kind:
                type: "string"
                enum:
                  - "remediation_packet"
                  - "asset_snapshot"
                  - "register_seal"
              id:
                type: "string"
                minLength: 1
              registerType:
                type: "string"
                enum:
                  - "policy"
                  - "control"
                  - "risk"
              status:
                type: "string"
              packetStatus:
                type: "string"
                enum:
                  - "open"
                  - "pending_verification"
                  - "verified"
                  - "still_open"
              severity:
                type: "string"
                enum:
                  - "CRITICAL"
                  - "HIGH"
                  - "MEDIUM"
                  - "LOW"
                  - "UNSPECIFIED"
              assetDocId:
                type: "string"
              evidence_hash:
                anyOf:
                  - type: "string"
                  - type: "null"
              packetHash:
                type: "string"
              envelope_hash:
                type: "string"
              sealed_tx_id:
                type: "string"
              snapshotId:
                anyOf:
                  - type: "string"
                  - type: "null"
              sourceSnapshotId:
                type: "string"
              verifiedSnapshotId:
                type: "string"
              verified_no_npi:
                type: "boolean"
                const: true
              updatedAt:
                type: "string"
            required:
              - "kind"
              - "id"
              - "evidence_hash"
              - "snapshotId"
            additionalProperties: false
      required:
        - "contractVersion"
        - "orgId"
        - "generatedAt"
        - "snapshotId"
        - "evidence_hash"
        - "verified_no_npi"
        - "pagination"
        - "items"
      additionalProperties: false
    PolicyList:
      type: "array"
      items:
        type: "object"
        properties:
          uuid:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
          policyId:
            type: "string"
            minLength: 1
          title:
            type: "string"
            minLength: 1
          body:
            type: "string"
            minLength: 1
          status:
            type: "string"
            enum:
              - "draft"
              - "approved"
              - "superseded"
          version:
            type: "integer"
            exclusiveMinimum: 0
            maximum: 9007199254740991
          previousVersionUuid:
            default: null
            anyOf:
              - type: "string"
                format: "uuid"
                pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                  F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ff\
                  ffffff-ffff-ffff-ffff-ffffffffffff)$"
              - type: "null"
          approvedBy:
            default: null
            anyOf:
              - type: "string"
              - type: "null"
          approvedAt:
            default: null
            anyOf:
              - type: "string"
              - type: "null"
          frameworkReferences:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                frameworkId:
                  type: "string"
                  enum:
                    - "iso27001"
                    - "nist800-53"
                    - "soc2"
                    - "nist-csf"
                    - "cis-gcp"
                controlNumber:
                  type: "string"
                  minLength: 1
                controlTitle:
                  type: "string"
                  minLength: 1
              required:
                - "frameworkId"
                - "controlNumber"
                - "controlTitle"
              additionalProperties: false
          linkedControlUuids:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          externalReferences:
            default: []
            type: "array"
            items:
              type: "string"
          owner:
            type: "object"
            properties:
              email:
                type: "string"
                format: "email"
                pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                  ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              displayName:
                type: "string"
                maxLength: 200
              createdAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              updatedAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              createdBy:
                type: "string"
              updatedBy:
                type: "string"
            additionalProperties: false
          sealed_tx_id:
            type: "string"
          sealed_at:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          stratum_network_id:
            type: "string"
          createdAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          updatedAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          createdBy:
            type: "string"
            minLength: 1
          updatedBy:
            type: "string"
            minLength: 1
        required:
          - "uuid"
          - "title"
          - "body"
          - "status"
          - "version"
          - "previousVersionUuid"
          - "approvedBy"
          - "approvedAt"
          - "frameworkReferences"
          - "linkedControlUuids"
          - "externalReferences"
          - "owner"
          - "createdAt"
          - "updatedAt"
          - "createdBy"
          - "updatedBy"
        additionalProperties: false
    Policy:
      type: "object"
      properties:
        uuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        policyId:
          type: "string"
          minLength: 1
        title:
          type: "string"
          minLength: 1
        body:
          type: "string"
          minLength: 1
        status:
          type: "string"
          enum:
            - "draft"
            - "approved"
            - "superseded"
        version:
          type: "integer"
          exclusiveMinimum: 0
          maximum: 9007199254740991
        previousVersionUuid:
          default: null
          anyOf:
            - type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
            - type: "null"
        approvedBy:
          default: null
          anyOf:
            - type: "string"
            - type: "null"
        approvedAt:
          default: null
          anyOf:
            - type: "string"
            - type: "null"
        frameworkReferences:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              frameworkId:
                type: "string"
                enum:
                  - "iso27001"
                  - "nist800-53"
                  - "soc2"
                  - "nist-csf"
                  - "cis-gcp"
              controlNumber:
                type: "string"
                minLength: 1
              controlTitle:
                type: "string"
                minLength: 1
            required:
              - "frameworkId"
              - "controlNumber"
              - "controlTitle"
            additionalProperties: false
        linkedControlUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        externalReferences:
          default: []
          type: "array"
          items:
            type: "string"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        sealed_tx_id:
          type: "string"
        sealed_at:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        stratum_network_id:
          type: "string"
        createdAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        updatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        createdBy:
          type: "string"
          minLength: 1
        updatedBy:
          type: "string"
          minLength: 1
      required:
        - "uuid"
        - "title"
        - "body"
        - "status"
        - "version"
        - "previousVersionUuid"
        - "approvedBy"
        - "approvedAt"
        - "frameworkReferences"
        - "linkedControlUuids"
        - "externalReferences"
        - "owner"
        - "createdAt"
        - "updatedAt"
        - "createdBy"
        - "updatedBy"
      additionalProperties: false
    CreatePolicy:
      type: "object"
      properties:
        title:
          type: "string"
          minLength: 1
          maxLength: 500
        body:
          type: "string"
          minLength: 1
          maxLength: 500000
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        policyId:
          type: "string"
          minLength: 1
          maxLength: 50
        frameworkReferences:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              frameworkId:
                type: "string"
                enum:
                  - "iso27001"
                  - "nist800-53"
                  - "soc2"
                  - "nist-csf"
                  - "cis-gcp"
              controlNumber:
                type: "string"
                minLength: 1
              controlTitle:
                type: "string"
                minLength: 1
            required:
              - "frameworkId"
              - "controlNumber"
              - "controlTitle"
            additionalProperties: false
        linkedControlUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        externalReferences:
          default: []
          type: "array"
          items:
            type: "string"
      required:
        - "title"
        - "body"
        - "owner"
        - "frameworkReferences"
        - "linkedControlUuids"
        - "externalReferences"
      additionalProperties: false
    UpdatePolicy:
      type: "object"
      properties:
        title:
          type: "string"
          minLength: 1
          maxLength: 500
        body:
          type: "string"
          minLength: 1
          maxLength: 500000
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        policyId:
          type: "string"
          minLength: 1
          maxLength: 50
        frameworkReferences:
          type: "array"
          items:
            type: "object"
            properties:
              frameworkId:
                type: "string"
                enum:
                  - "iso27001"
                  - "nist800-53"
                  - "soc2"
                  - "nist-csf"
                  - "cis-gcp"
              controlNumber:
                type: "string"
                minLength: 1
              controlTitle:
                type: "string"
                minLength: 1
            required:
              - "frameworkId"
              - "controlNumber"
              - "controlTitle"
            additionalProperties: false
        linkedControlUuids:
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        externalReferences:
          type: "array"
          items:
            type: "string"
      additionalProperties: false
    ControlList:
      type: "array"
      items:
        type: "object"
        properties:
          uuid:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
          controlId:
            type: "string"
            minLength: 1
          title:
            type: "string"
            minLength: 1
          description:
            type: "string"
            minLength: 1
          implementationStatus:
            type: "string"
            enum:
              - "implemented"
              - "partial"
              - "planned"
              - "alternative"
              - "not-applicable"
          componentUuid:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
          componentTitle:
            type: "string"
          responsibleRoles:
            default: []
            type: "array"
            items:
              type: "string"
          frameworkReferences:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                frameworkId:
                  type: "string"
                  enum:
                    - "iso27001"
                    - "nist800-53"
                    - "soc2"
                    - "nist-csf"
                    - "cis-gcp"
                controlNumber:
                  type: "string"
                  minLength: 1
                controlTitle:
                  type: "string"
                  minLength: 1
              required:
                - "frameworkId"
                - "controlNumber"
                - "controlTitle"
              additionalProperties: false
          props:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                name:
                  type: "string"
                  minLength: 1
                value:
                  type: "string"
                class:
                  type: "string"
                ns:
                  type: "string"
                  format: "uri"
                remarks:
                  type: "string"
              required:
                - "name"
                - "value"
              additionalProperties: false
          links:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                href:
                  type: "string"
                  minLength: 1
                rel:
                  type: "string"
                mediaType:
                  type: "string"
                text:
                  type: "string"
              required:
                - "href"
              additionalProperties: false
          remarks:
            type: "string"
          owner:
            type: "object"
            properties:
              email:
                type: "string"
                format: "email"
                pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                  ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              displayName:
                type: "string"
                maxLength: 200
              createdAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              updatedAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              createdBy:
                type: "string"
              updatedBy:
                type: "string"
            additionalProperties: false
          complianceRecord:
            type: "object"
            properties:
              control_id:
                type: "string"
              regulation_map:
                default: []
                type: "array"
                items:
                  type: "string"
              evidence_source:
                type: "string"
              evidence_hash:
                type: "string"
              owner_raci:
                type: "string"
              remediation_status:
                type: "string"
                enum:
                  - "Open"
                  - "Pending"
                  - "Remediated"
              sla_deadline:
                type: "string"
              retention_clock_expiry:
                type: "string"
              verified_no_npi:
                type: "boolean"
              readily_accessible_until:
                type: "string"
              sealed_tx_id:
                type: "string"
              sealed_at:
                type: "string"
              stratum_network_id:
                type: "string"
              stratum_record_id:
                type: "string"
              last_review_date:
                type: "string"
            required:
              - "control_id"
              - "regulation_map"
            additionalProperties: false
          regulation_map:
            type: "array"
            items:
              type: "string"
          owner_raci:
            type: "string"
          cvssSeverity:
            type: "string"
            enum:
              - "Critical"
              - "High"
              - "Medium"
              - "Low"
          cloudApplicability:
            type: "object"
            properties:
              resourceTypes:
                default: []
                type: "array"
                items:
                  type: "string"
                  enum:
                    - "iam_service_account_key"
                    - "gcs_bucket"
                    - "firewall_rule"
                    - "compute_instance"
                    - "audit_config"
                    - "wif_provider"
              labelMatchers:
                default: {}
                type: "object"
                propertyNames:
                  type: "string"
                additionalProperties:
                  type: "string"
            required:
              - "resourceTypes"
              - "labelMatchers"
            additionalProperties: false
          createdAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          updatedAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          createdBy:
            type: "string"
            minLength: 1
          updatedBy:
            type: "string"
            minLength: 1
        required:
          - "uuid"
          - "controlId"
          - "title"
          - "description"
          - "implementationStatus"
          - "responsibleRoles"
          - "frameworkReferences"
          - "props"
          - "links"
          - "owner"
          - "createdAt"
          - "updatedAt"
          - "createdBy"
          - "updatedBy"
        additionalProperties: false
    Control:
      type: "object"
      properties:
        uuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        controlId:
          type: "string"
          minLength: 1
        title:
          type: "string"
          minLength: 1
        description:
          type: "string"
          minLength: 1
        implementationStatus:
          type: "string"
          enum:
            - "implemented"
            - "partial"
            - "planned"
            - "alternative"
            - "not-applicable"
        componentUuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        componentTitle:
          type: "string"
        responsibleRoles:
          default: []
          type: "array"
          items:
            type: "string"
        frameworkReferences:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              frameworkId:
                type: "string"
                enum:
                  - "iso27001"
                  - "nist800-53"
                  - "soc2"
                  - "nist-csf"
                  - "cis-gcp"
              controlNumber:
                type: "string"
                minLength: 1
              controlTitle:
                type: "string"
                minLength: 1
            required:
              - "frameworkId"
              - "controlNumber"
              - "controlTitle"
            additionalProperties: false
        props:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              name:
                type: "string"
                minLength: 1
              value:
                type: "string"
              class:
                type: "string"
              ns:
                type: "string"
                format: "uri"
              remarks:
                type: "string"
            required:
              - "name"
              - "value"
            additionalProperties: false
        links:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              href:
                type: "string"
                minLength: 1
              rel:
                type: "string"
              mediaType:
                type: "string"
              text:
                type: "string"
            required:
              - "href"
            additionalProperties: false
        remarks:
          type: "string"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        complianceRecord:
          type: "object"
          properties:
            control_id:
              type: "string"
            regulation_map:
              default: []
              type: "array"
              items:
                type: "string"
            evidence_source:
              type: "string"
            evidence_hash:
              type: "string"
            owner_raci:
              type: "string"
            remediation_status:
              type: "string"
              enum:
                - "Open"
                - "Pending"
                - "Remediated"
            sla_deadline:
              type: "string"
            retention_clock_expiry:
              type: "string"
            verified_no_npi:
              type: "boolean"
            readily_accessible_until:
              type: "string"
            sealed_tx_id:
              type: "string"
            sealed_at:
              type: "string"
            stratum_network_id:
              type: "string"
            stratum_record_id:
              type: "string"
            last_review_date:
              type: "string"
          required:
            - "control_id"
            - "regulation_map"
          additionalProperties: false
        regulation_map:
          type: "array"
          items:
            type: "string"
        owner_raci:
          type: "string"
        cvssSeverity:
          type: "string"
          enum:
            - "Critical"
            - "High"
            - "Medium"
            - "Low"
        cloudApplicability:
          type: "object"
          properties:
            resourceTypes:
              default: []
              type: "array"
              items:
                type: "string"
                enum:
                  - "iam_service_account_key"
                  - "gcs_bucket"
                  - "firewall_rule"
                  - "compute_instance"
                  - "audit_config"
                  - "wif_provider"
            labelMatchers:
              default: {}
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "string"
          required:
            - "resourceTypes"
            - "labelMatchers"
          additionalProperties: false
        createdAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        updatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        createdBy:
          type: "string"
          minLength: 1
        updatedBy:
          type: "string"
          minLength: 1
      required:
        - "uuid"
        - "controlId"
        - "title"
        - "description"
        - "implementationStatus"
        - "responsibleRoles"
        - "frameworkReferences"
        - "props"
        - "links"
        - "owner"
        - "createdAt"
        - "updatedAt"
        - "createdBy"
        - "updatedBy"
      additionalProperties: false
    CreateControl:
      type: "object"
      properties:
        controlId:
          type: "string"
          minLength: 1
        title:
          type: "string"
          minLength: 1
        description:
          type: "string"
          minLength: 1
        implementationStatus:
          type: "string"
          enum:
            - "implemented"
            - "partial"
            - "planned"
            - "alternative"
            - "not-applicable"
        componentUuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        componentTitle:
          type: "string"
        responsibleRoles:
          default: []
          type: "array"
          items:
            type: "string"
        frameworkReferences:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              frameworkId:
                type: "string"
                enum:
                  - "iso27001"
                  - "nist800-53"
                  - "soc2"
                  - "nist-csf"
                  - "cis-gcp"
              controlNumber:
                type: "string"
                minLength: 1
              controlTitle:
                type: "string"
                minLength: 1
            required:
              - "frameworkId"
              - "controlNumber"
              - "controlTitle"
            additionalProperties: false
        props:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              name:
                type: "string"
                minLength: 1
              value:
                type: "string"
              class:
                type: "string"
              ns:
                type: "string"
                format: "uri"
              remarks:
                type: "string"
            required:
              - "name"
              - "value"
            additionalProperties: false
        links:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              href:
                type: "string"
                minLength: 1
              rel:
                type: "string"
              mediaType:
                type: "string"
              text:
                type: "string"
            required:
              - "href"
            additionalProperties: false
        remarks:
          type: "string"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        complianceRecord:
          type: "object"
          properties:
            control_id:
              type: "string"
            regulation_map:
              default: []
              type: "array"
              items:
                type: "string"
            evidence_source:
              type: "string"
            evidence_hash:
              type: "string"
            owner_raci:
              type: "string"
            remediation_status:
              type: "string"
              enum:
                - "Open"
                - "Pending"
                - "Remediated"
            sla_deadline:
              type: "string"
            retention_clock_expiry:
              type: "string"
            verified_no_npi:
              type: "boolean"
            readily_accessible_until:
              type: "string"
            sealed_tx_id:
              type: "string"
            sealed_at:
              type: "string"
            stratum_network_id:
              type: "string"
            stratum_record_id:
              type: "string"
            last_review_date:
              type: "string"
          required:
            - "control_id"
            - "regulation_map"
          additionalProperties: false
        regulation_map:
          type: "array"
          items:
            type: "string"
        owner_raci:
          type: "string"
        cvssSeverity:
          type: "string"
          enum:
            - "Critical"
            - "High"
            - "Medium"
            - "Low"
        cloudApplicability:
          type: "object"
          properties:
            resourceTypes:
              default: []
              type: "array"
              items:
                type: "string"
                enum:
                  - "iam_service_account_key"
                  - "gcs_bucket"
                  - "firewall_rule"
                  - "compute_instance"
                  - "audit_config"
                  - "wif_provider"
            labelMatchers:
              default: {}
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "string"
          required:
            - "resourceTypes"
            - "labelMatchers"
          additionalProperties: false
      required:
        - "controlId"
        - "title"
        - "description"
        - "implementationStatus"
        - "responsibleRoles"
        - "frameworkReferences"
        - "props"
        - "links"
        - "owner"
      additionalProperties: false
    UpdateControl:
      type: "object"
      properties:
        controlId:
          type: "string"
          minLength: 1
        title:
          type: "string"
          minLength: 1
        description:
          type: "string"
          minLength: 1
        implementationStatus:
          type: "string"
          enum:
            - "implemented"
            - "partial"
            - "planned"
            - "alternative"
            - "not-applicable"
        componentUuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        componentTitle:
          type: "string"
        responsibleRoles:
          default: []
          type: "array"
          items:
            type: "string"
        frameworkReferences:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              frameworkId:
                type: "string"
                enum:
                  - "iso27001"
                  - "nist800-53"
                  - "soc2"
                  - "nist-csf"
                  - "cis-gcp"
              controlNumber:
                type: "string"
                minLength: 1
              controlTitle:
                type: "string"
                minLength: 1
            required:
              - "frameworkId"
              - "controlNumber"
              - "controlTitle"
            additionalProperties: false
        props:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              name:
                type: "string"
                minLength: 1
              value:
                type: "string"
              class:
                type: "string"
              ns:
                type: "string"
                format: "uri"
              remarks:
                type: "string"
            required:
              - "name"
              - "value"
            additionalProperties: false
        links:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              href:
                type: "string"
                minLength: 1
              rel:
                type: "string"
              mediaType:
                type: "string"
              text:
                type: "string"
            required:
              - "href"
            additionalProperties: false
        remarks:
          type: "string"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        complianceRecord:
          type: "object"
          properties:
            control_id:
              type: "string"
            regulation_map:
              default: []
              type: "array"
              items:
                type: "string"
            evidence_source:
              type: "string"
            evidence_hash:
              type: "string"
            owner_raci:
              type: "string"
            remediation_status:
              type: "string"
              enum:
                - "Open"
                - "Pending"
                - "Remediated"
            sla_deadline:
              type: "string"
            retention_clock_expiry:
              type: "string"
            verified_no_npi:
              type: "boolean"
            readily_accessible_until:
              type: "string"
            sealed_tx_id:
              type: "string"
            sealed_at:
              type: "string"
            stratum_network_id:
              type: "string"
            stratum_record_id:
              type: "string"
            last_review_date:
              type: "string"
          required:
            - "control_id"
            - "regulation_map"
          additionalProperties: false
        regulation_map:
          type: "array"
          items:
            type: "string"
        owner_raci:
          type: "string"
        cvssSeverity:
          type: "string"
          enum:
            - "Critical"
            - "High"
            - "Medium"
            - "Low"
        cloudApplicability:
          type: "object"
          properties:
            resourceTypes:
              default: []
              type: "array"
              items:
                type: "string"
                enum:
                  - "iam_service_account_key"
                  - "gcs_bucket"
                  - "firewall_rule"
                  - "compute_instance"
                  - "audit_config"
                  - "wif_provider"
            labelMatchers:
              default: {}
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "string"
          required:
            - "resourceTypes"
            - "labelMatchers"
          additionalProperties: false
      additionalProperties: false
    RiskList:
      type: "array"
      items:
        type: "object"
        properties:
          uuid:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
          title:
            type: "string"
            minLength: 1
          description:
            type: "string"
            minLength: 1
          statement:
            type: "string"
          status:
            type: "string"
            enum:
              - "open"
              - "investigating"
              - "remediating"
              - "deviation-requested"
              - "deviation-approved"
              - "closed"
          characterizations:
            minItems: 1
            type: "array"
            items:
              type: "object"
              properties:
                type:
                  type: "string"
                  enum:
                    - "likelihood"
                    - "impact"
                level:
                  type: "string"
                  enum:
                    - "low"
                    - "moderate"
                    - "high"
                    - "critical"
                remarks:
                  type: "string"
              required:
                - "type"
                - "level"
              additionalProperties: false
          responses:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                uuid:
                  type: "string"
                  format: "uuid"
                  pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                    F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|\
                    ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                lifecycle:
                  type: "string"
                  enum:
                    - "recommendation"
                    - "planned"
                    - "implemented"
                    - "assessed"
                title:
                  type: "string"
                  minLength: 1
                description:
                  type: "string"
                remarks:
                  type: "string"
              required:
                - "uuid"
                - "lifecycle"
                - "title"
              additionalProperties: false
          relatedObservations:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          relatedFindings:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          linkedControls:
            default: []
            maxItems: 30
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          props:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                name:
                  type: "string"
                  minLength: 1
                value:
                  type: "string"
                class:
                  type: "string"
                ns:
                  type: "string"
                  format: "uri"
                remarks:
                  type: "string"
              required:
                - "name"
                - "value"
              additionalProperties: false
          links:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                href:
                  type: "string"
                  minLength: 1
                rel:
                  type: "string"
                mediaType:
                  type: "string"
                text:
                  type: "string"
              required:
                - "href"
              additionalProperties: false
          owner:
            type: "object"
            properties:
              email:
                type: "string"
                format: "email"
                pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                  ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              displayName:
                type: "string"
                maxLength: 200
              createdAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              updatedAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              createdBy:
                type: "string"
              updatedBy:
                type: "string"
            additionalProperties: false
          categoryId:
            type: "string"
          targetDate:
            type: "string"
            pattern: "^\\d{4}-\\d{2}-\\d{2}$"
          sealed_tx_id:
            type: "string"
          sealed_at:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          stratum_network_id:
            type: "string"
          createdAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          updatedAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          createdBy:
            type: "string"
            minLength: 1
          updatedBy:
            type: "string"
            minLength: 1
        required:
          - "uuid"
          - "title"
          - "description"
          - "status"
          - "characterizations"
          - "responses"
          - "relatedObservations"
          - "relatedFindings"
          - "linkedControls"
          - "props"
          - "links"
          - "owner"
          - "createdAt"
          - "updatedAt"
          - "createdBy"
          - "updatedBy"
        additionalProperties: false
    Risk:
      type: "object"
      properties:
        uuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        title:
          type: "string"
          minLength: 1
        description:
          type: "string"
          minLength: 1
        statement:
          type: "string"
        status:
          type: "string"
          enum:
            - "open"
            - "investigating"
            - "remediating"
            - "deviation-requested"
            - "deviation-approved"
            - "closed"
        characterizations:
          minItems: 1
          type: "array"
          items:
            type: "object"
            properties:
              type:
                type: "string"
                enum:
                  - "likelihood"
                  - "impact"
              level:
                type: "string"
                enum:
                  - "low"
                  - "moderate"
                  - "high"
                  - "critical"
              remarks:
                type: "string"
            required:
              - "type"
              - "level"
            additionalProperties: false
        responses:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              uuid:
                type: "string"
                format: "uuid"
                pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                  F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ff\
                  ffffff-ffff-ffff-ffff-ffffffffffff)$"
              lifecycle:
                type: "string"
                enum:
                  - "recommendation"
                  - "planned"
                  - "implemented"
                  - "assessed"
              title:
                type: "string"
                minLength: 1
              description:
                type: "string"
              remarks:
                type: "string"
            required:
              - "uuid"
              - "lifecycle"
              - "title"
            additionalProperties: false
        relatedObservations:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        relatedFindings:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        linkedControls:
          default: []
          maxItems: 30
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        props:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              name:
                type: "string"
                minLength: 1
              value:
                type: "string"
              class:
                type: "string"
              ns:
                type: "string"
                format: "uri"
              remarks:
                type: "string"
            required:
              - "name"
              - "value"
            additionalProperties: false
        links:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              href:
                type: "string"
                minLength: 1
              rel:
                type: "string"
              mediaType:
                type: "string"
              text:
                type: "string"
            required:
              - "href"
            additionalProperties: false
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        categoryId:
          type: "string"
        targetDate:
          type: "string"
          pattern: "^\\d{4}-\\d{2}-\\d{2}$"
        sealed_tx_id:
          type: "string"
        sealed_at:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        stratum_network_id:
          type: "string"
        createdAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        updatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        createdBy:
          type: "string"
          minLength: 1
        updatedBy:
          type: "string"
          minLength: 1
      required:
        - "uuid"
        - "title"
        - "description"
        - "status"
        - "characterizations"
        - "responses"
        - "relatedObservations"
        - "relatedFindings"
        - "linkedControls"
        - "props"
        - "links"
        - "owner"
        - "createdAt"
        - "updatedAt"
        - "createdBy"
        - "updatedBy"
      additionalProperties: false
    CreateRisk:
      type: "object"
      properties:
        title:
          type: "string"
          minLength: 1
        description:
          type: "string"
          minLength: 1
        statement:
          type: "string"
        status:
          type: "string"
          enum:
            - "open"
            - "investigating"
            - "remediating"
            - "deviation-requested"
            - "deviation-approved"
            - "closed"
        characterizations:
          minItems: 1
          type: "array"
          items:
            type: "object"
            properties:
              type:
                type: "string"
                enum:
                  - "likelihood"
                  - "impact"
              level:
                type: "string"
                enum:
                  - "low"
                  - "moderate"
                  - "high"
                  - "critical"
              remarks:
                type: "string"
            required:
              - "type"
              - "level"
            additionalProperties: false
        responses:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              uuid:
                type: "string"
                format: "uuid"
                pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                  F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ff\
                  ffffff-ffff-ffff-ffff-ffffffffffff)$"
              lifecycle:
                type: "string"
                enum:
                  - "recommendation"
                  - "planned"
                  - "implemented"
                  - "assessed"
              title:
                type: "string"
                minLength: 1
              description:
                type: "string"
              remarks:
                type: "string"
            required:
              - "uuid"
              - "lifecycle"
              - "title"
            additionalProperties: false
        relatedObservations:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        relatedFindings:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        linkedControls:
          default: []
          maxItems: 30
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        props:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              name:
                type: "string"
                minLength: 1
              value:
                type: "string"
              class:
                type: "string"
              ns:
                type: "string"
                format: "uri"
              remarks:
                type: "string"
            required:
              - "name"
              - "value"
            additionalProperties: false
        links:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              href:
                type: "string"
                minLength: 1
              rel:
                type: "string"
              mediaType:
                type: "string"
              text:
                type: "string"
            required:
              - "href"
            additionalProperties: false
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        categoryId:
          type: "string"
        targetDate:
          type: "string"
          pattern: "^\\d{4}-\\d{2}-\\d{2}$"
        sealed_tx_id:
          type: "string"
        sealed_at:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        stratum_network_id:
          type: "string"
      required:
        - "title"
        - "description"
        - "status"
        - "characterizations"
        - "responses"
        - "relatedObservations"
        - "relatedFindings"
        - "linkedControls"
        - "props"
        - "links"
        - "owner"
      additionalProperties: false
    UpdateRisk:
      type: "object"
      properties:
        title:
          type: "string"
          minLength: 1
        description:
          type: "string"
          minLength: 1
        statement:
          type: "string"
        status:
          type: "string"
          enum:
            - "open"
            - "investigating"
            - "remediating"
            - "deviation-requested"
            - "deviation-approved"
            - "closed"
        characterizations:
          minItems: 1
          type: "array"
          items:
            type: "object"
            properties:
              type:
                type: "string"
                enum:
                  - "likelihood"
                  - "impact"
              level:
                type: "string"
                enum:
                  - "low"
                  - "moderate"
                  - "high"
                  - "critical"
              remarks:
                type: "string"
            required:
              - "type"
              - "level"
            additionalProperties: false
        responses:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              uuid:
                type: "string"
                format: "uuid"
                pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                  F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ff\
                  ffffff-ffff-ffff-ffff-ffffffffffff)$"
              lifecycle:
                type: "string"
                enum:
                  - "recommendation"
                  - "planned"
                  - "implemented"
                  - "assessed"
              title:
                type: "string"
                minLength: 1
              description:
                type: "string"
              remarks:
                type: "string"
            required:
              - "uuid"
              - "lifecycle"
              - "title"
            additionalProperties: false
        relatedObservations:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        relatedFindings:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        linkedControls:
          default: []
          maxItems: 30
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        props:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              name:
                type: "string"
                minLength: 1
              value:
                type: "string"
              class:
                type: "string"
              ns:
                type: "string"
                format: "uri"
              remarks:
                type: "string"
            required:
              - "name"
              - "value"
            additionalProperties: false
        links:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              href:
                type: "string"
                minLength: 1
              rel:
                type: "string"
              mediaType:
                type: "string"
              text:
                type: "string"
            required:
              - "href"
            additionalProperties: false
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        categoryId:
          type: "string"
        targetDate:
          type: "string"
          pattern: "^\\d{4}-\\d{2}-\\d{2}$"
        sealed_tx_id:
          type: "string"
        sealed_at:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        stratum_network_id:
          type: "string"
      additionalProperties: false
    AssetList:
      type: "array"
      items:
        type: "object"
        properties:
          uuid:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
          name:
            type: "string"
            minLength: 1
            maxLength: 200
          description:
            type: "string"
            minLength: 1
            maxLength: 5000
          assetType:
            type: "string"
            enum:
              - "information"
              - "software"
              - "hardware"
              - "service"
              - "people"
              - "facility"
          classification:
            type: "string"
            enum:
              - "public"
              - "internal"
              - "confidential"
              - "restricted"
          owner:
            type: "object"
            properties:
              email:
                type: "string"
                format: "email"
                pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                  ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
              displayName:
                type: "string"
                maxLength: 200
              createdAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              updatedAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              createdBy:
                type: "string"
              updatedBy:
                type: "string"
            additionalProperties: false
          linkedRisks:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          linkedControls:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          cloud:
            type: "object"
            properties:
              resourceId:
                type: "string"
                minLength: 1
                maxLength: 500
              resourceType:
                type: "string"
                enum:
                  - "iam_service_account_key"
                  - "gcs_bucket"
                  - "firewall_rule"
                  - "compute_instance"
                  - "audit_config"
                  - "wif_provider"
              projectId:
                type: "string"
                minLength: 1
                maxLength: 200
              labels:
                default: {}
                type: "object"
                propertyNames:
                  type: "string"
                additionalProperties:
                  type: "string"
              discoveredAt:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              collectorVersion:
                type: "string"
                minLength: 1
                maxLength: 100
              snapshotId:
                type: "string"
                minLength: 1
                maxLength: 100
              evidence_hash:
                type: "string"
                minLength: 1
                maxLength: 128
            required:
              - "resourceId"
              - "resourceType"
              - "projectId"
              - "labels"
              - "discoveredAt"
              - "collectorVersion"
              - "snapshotId"
              - "evidence_hash"
            additionalProperties: false
          coverageStatus:
            type: "string"
            enum:
              - "covered"
              - "uncovered"
              - "noncompliant"
              - "unknown"
          coverageRationale:
            type: "string"
            maxLength: 2000
          coverageControlUuids:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          coveragePolicyUuids:
            default: []
            type: "array"
            items:
              type: "string"
              format: "uuid"
              pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffff\
                ffff-ffff-ffff-ffff-ffffffffffff)$"
          coverageEvaluatedAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          coverageSnapshotId:
            type: "string"
            maxLength: 100
          coverageOpenFindings:
            default: []
            type: "array"
            items:
              type: "object"
              properties:
                cisBenchmarkId:
                  type: "string"
                  minLength: 1
                title:
                  type: "string"
                  minLength: 1
                severity:
                  type: "string"
                  enum:
                    - "CRITICAL"
                    - "HIGH"
                    - "MEDIUM"
                    - "LOW"
                detail:
                  type: "string"
                  minLength: 1
                resourceName:
                  type: "string"
                  minLength: 1
              required:
                - "cisBenchmarkId"
                - "title"
                - "severity"
                - "detail"
                - "resourceName"
              additionalProperties: false
          createdAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          updatedAt:
            type: "string"
            format: "date-time"
            pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
              |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\
              \\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\
              \\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d\
              +)?)?(?:Z))$"
          createdBy:
            type: "string"
            minLength: 1
          updatedBy:
            type: "string"
            minLength: 1
        required:
          - "uuid"
          - "name"
          - "description"
          - "assetType"
          - "classification"
          - "owner"
          - "linkedRisks"
          - "linkedControls"
          - "createdAt"
          - "updatedAt"
          - "createdBy"
          - "updatedBy"
        additionalProperties: false
    Asset:
      type: "object"
      properties:
        uuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        name:
          type: "string"
          minLength: 1
          maxLength: 200
        description:
          type: "string"
          minLength: 1
          maxLength: 5000
        assetType:
          type: "string"
          enum:
            - "information"
            - "software"
            - "hardware"
            - "service"
            - "people"
            - "facility"
        classification:
          type: "string"
          enum:
            - "public"
            - "internal"
            - "confidential"
            - "restricted"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        linkedRisks:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        linkedControls:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        cloud:
          type: "object"
          properties:
            resourceId:
              type: "string"
              minLength: 1
              maxLength: 500
            resourceType:
              type: "string"
              enum:
                - "iam_service_account_key"
                - "gcs_bucket"
                - "firewall_rule"
                - "compute_instance"
                - "audit_config"
                - "wif_provider"
            projectId:
              type: "string"
              minLength: 1
              maxLength: 200
            labels:
              default: {}
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "string"
            discoveredAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            collectorVersion:
              type: "string"
              minLength: 1
              maxLength: 100
            snapshotId:
              type: "string"
              minLength: 1
              maxLength: 100
            evidence_hash:
              type: "string"
              minLength: 1
              maxLength: 128
          required:
            - "resourceId"
            - "resourceType"
            - "projectId"
            - "labels"
            - "discoveredAt"
            - "collectorVersion"
            - "snapshotId"
            - "evidence_hash"
          additionalProperties: false
        coverageStatus:
          type: "string"
          enum:
            - "covered"
            - "uncovered"
            - "noncompliant"
            - "unknown"
        coverageRationale:
          type: "string"
          maxLength: 2000
        coverageControlUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        coveragePolicyUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        coverageEvaluatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        coverageSnapshotId:
          type: "string"
          maxLength: 100
        coverageOpenFindings:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              cisBenchmarkId:
                type: "string"
                minLength: 1
              title:
                type: "string"
                minLength: 1
              severity:
                type: "string"
                enum:
                  - "CRITICAL"
                  - "HIGH"
                  - "MEDIUM"
                  - "LOW"
              detail:
                type: "string"
                minLength: 1
              resourceName:
                type: "string"
                minLength: 1
            required:
              - "cisBenchmarkId"
              - "title"
              - "severity"
              - "detail"
              - "resourceName"
            additionalProperties: false
        createdAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        updatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        createdBy:
          type: "string"
          minLength: 1
        updatedBy:
          type: "string"
          minLength: 1
      required:
        - "uuid"
        - "name"
        - "description"
        - "assetType"
        - "classification"
        - "owner"
        - "linkedRisks"
        - "linkedControls"
        - "createdAt"
        - "updatedAt"
        - "createdBy"
        - "updatedBy"
      additionalProperties: false
    CreateAsset:
      type: "object"
      properties:
        name:
          type: "string"
          minLength: 1
          maxLength: 200
        description:
          type: "string"
          minLength: 1
          maxLength: 5000
        assetType:
          type: "string"
          enum:
            - "information"
            - "software"
            - "hardware"
            - "service"
            - "people"
            - "facility"
        classification:
          type: "string"
          enum:
            - "public"
            - "internal"
            - "confidential"
            - "restricted"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        linkedRisks:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        linkedControls:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        cloud:
          type: "object"
          properties:
            resourceId:
              type: "string"
              minLength: 1
              maxLength: 500
            resourceType:
              type: "string"
              enum:
                - "iam_service_account_key"
                - "gcs_bucket"
                - "firewall_rule"
                - "compute_instance"
                - "audit_config"
                - "wif_provider"
            projectId:
              type: "string"
              minLength: 1
              maxLength: 200
            labels:
              default: {}
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "string"
            discoveredAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            collectorVersion:
              type: "string"
              minLength: 1
              maxLength: 100
            snapshotId:
              type: "string"
              minLength: 1
              maxLength: 100
            evidence_hash:
              type: "string"
              minLength: 1
              maxLength: 128
          required:
            - "resourceId"
            - "resourceType"
            - "projectId"
            - "labels"
            - "discoveredAt"
            - "collectorVersion"
            - "snapshotId"
            - "evidence_hash"
          additionalProperties: false
        coverageStatus:
          type: "string"
          enum:
            - "covered"
            - "uncovered"
            - "noncompliant"
            - "unknown"
        coverageRationale:
          type: "string"
          maxLength: 2000
        coverageControlUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        coveragePolicyUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        coverageEvaluatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        coverageSnapshotId:
          type: "string"
          maxLength: 100
        coverageOpenFindings:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              cisBenchmarkId:
                type: "string"
                minLength: 1
              title:
                type: "string"
                minLength: 1
              severity:
                type: "string"
                enum:
                  - "CRITICAL"
                  - "HIGH"
                  - "MEDIUM"
                  - "LOW"
              detail:
                type: "string"
                minLength: 1
              resourceName:
                type: "string"
                minLength: 1
            required:
              - "cisBenchmarkId"
              - "title"
              - "severity"
              - "detail"
              - "resourceName"
            additionalProperties: false
      required:
        - "name"
        - "description"
        - "assetType"
        - "classification"
        - "owner"
        - "linkedRisks"
        - "linkedControls"
      additionalProperties: false
    UpdateAsset:
      type: "object"
      properties:
        name:
          type: "string"
          minLength: 1
          maxLength: 200
        description:
          type: "string"
          minLength: 1
          maxLength: 5000
        assetType:
          type: "string"
          enum:
            - "information"
            - "software"
            - "hardware"
            - "service"
            - "people"
            - "facility"
        classification:
          type: "string"
          enum:
            - "public"
            - "internal"
            - "confidential"
            - "restricted"
        owner:
          type: "object"
          properties:
            email:
              type: "string"
              format: "email"
              pattern: "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9\
                ][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
            displayName:
              type: "string"
              maxLength: 200
            createdAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            updatedAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            createdBy:
              type: "string"
            updatedBy:
              type: "string"
          additionalProperties: false
        linkedRisks:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        linkedControls:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        cloud:
          type: "object"
          properties:
            resourceId:
              type: "string"
              minLength: 1
              maxLength: 500
            resourceType:
              type: "string"
              enum:
                - "iam_service_account_key"
                - "gcs_bucket"
                - "firewall_rule"
                - "compute_instance"
                - "audit_config"
                - "wif_provider"
            projectId:
              type: "string"
              minLength: 1
              maxLength: 200
            labels:
              default: {}
              type: "object"
              propertyNames:
                type: "string"
              additionalProperties:
                type: "string"
            discoveredAt:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            collectorVersion:
              type: "string"
              minLength: 1
              maxLength: 100
            snapshotId:
              type: "string"
              minLength: 1
              maxLength: 100
            evidence_hash:
              type: "string"
              minLength: 1
              maxLength: 128
          required:
            - "resourceId"
            - "resourceType"
            - "projectId"
            - "labels"
            - "discoveredAt"
            - "collectorVersion"
            - "snapshotId"
            - "evidence_hash"
          additionalProperties: false
        coverageStatus:
          type: "string"
          enum:
            - "covered"
            - "uncovered"
            - "noncompliant"
            - "unknown"
        coverageRationale:
          type: "string"
          maxLength: 2000
        coverageControlUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        coveragePolicyUuids:
          default: []
          type: "array"
          items:
            type: "string"
            format: "uuid"
            pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
              F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffff\
              ff-ffff-ffff-ffff-ffffffffffff)$"
        coverageEvaluatedAt:
          type: "string"
          format: "date-time"
          pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
            |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\
            d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|\
            2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(\
            ?:Z))$"
        coverageSnapshotId:
          type: "string"
          maxLength: 100
        coverageOpenFindings:
          default: []
          type: "array"
          items:
            type: "object"
            properties:
              cisBenchmarkId:
                type: "string"
                minLength: 1
              title:
                type: "string"
                minLength: 1
              severity:
                type: "string"
                enum:
                  - "CRITICAL"
                  - "HIGH"
                  - "MEDIUM"
                  - "LOW"
              detail:
                type: "string"
                minLength: 1
              resourceName:
                type: "string"
                minLength: 1
            required:
              - "cisBenchmarkId"
              - "title"
              - "severity"
              - "detail"
              - "resourceName"
            additionalProperties: false
      additionalProperties: false
    AssessmentResult:
      type: "object"
      properties:
        uuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        metadata:
          type: "object"
          properties:
            title:
              type: "string"
              minLength: 1
            published:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            lastModified:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            version:
              type: "string"
              minLength: 1
            oscalVersion:
              default: "1.1.2"
              type: "string"
            remarks:
              type: "string"
          required:
            - "title"
            - "lastModified"
            - "version"
            - "oscalVersion"
          additionalProperties: false
        importAp:
          type: "object"
          properties:
            href:
              type: "string"
              minLength: 1
            remarks:
              type: "string"
          required:
            - "href"
          additionalProperties: false
        results:
          type: "array"
          items:
            type: "object"
            properties:
              uuid:
                type: "string"
                format: "uuid"
                pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                  F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ff\
                  ffffff-ffff-ffff-ffff-ffffffffffff)$"
              title:
                type: "string"
                minLength: 1
              description:
                type: "string"
              start:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              end:
                type: "string"
                format: "date-time"
                pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                  |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|\
                  [12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:\
                  0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\
                  \\d(?:\\.\\d+)?)?(?:Z))$"
              reviewedControls:
                type: "object"
                properties:
                  controlSelections:
                    default: []
                    type: "array"
                    items:
                      type: "object"
                      propertyNames:
                        type: "string"
                      additionalProperties: {}
                  remarks:
                    type: "string"
                required:
                  - "controlSelections"
                additionalProperties: false
              findings:
                default: []
                type: "array"
                items:
                  type: "object"
                  propertyNames:
                    type: "string"
                  additionalProperties: {}
              observations:
                default: []
                type: "array"
                items:
                  type: "object"
                  propertyNames:
                    type: "string"
                  additionalProperties: {}
              risks:
                default: []
                type: "array"
                items:
                  type: "object"
                  propertyNames:
                    type: "string"
                  additionalProperties: {}
              remarks:
                type: "string"
            required:
              - "uuid"
              - "title"
              - "start"
              - "reviewedControls"
              - "findings"
              - "observations"
              - "risks"
            additionalProperties: false
        backMatter:
          type: "object"
          propertyNames:
            type: "string"
          additionalProperties: {}
      required:
        - "uuid"
        - "metadata"
        - "importAp"
        - "results"
      additionalProperties: false
    ComponentDefinition:
      type: "object"
      properties:
        uuid:
          type: "string"
          format: "uuid"
          pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
            F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff\
            -ffff-ffff-ffff-ffffffffffff)$"
        metadata:
          type: "object"
          properties:
            title:
              type: "string"
              minLength: 1
            published:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            lastModified:
              type: "string"
              format: "date-time"
              pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00\
                |[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[1\
                2]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-\
                9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\
                \\.\\d+)?)?(?:Z))$"
            version:
              type: "string"
              minLength: 1
            oscalVersion:
              default: "1.1.2"
              type: "string"
            remarks:
              type: "string"
          required:
            - "title"
            - "lastModified"
            - "version"
            - "oscalVersion"
          additionalProperties: false
        components:
          type: "array"
          items:
            type: "object"
            properties:
              uuid:
                type: "string"
                format: "uuid"
                pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-\
                  F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ff\
                  ffffff-ffff-ffff-ffff-ffffffffffff)$"
              type:
                type: "string"
                enum:
                  - "defined-component"
                  - "service"
                  - "software"
                  - "hardware"
                  - "policy"
                  - "process-procedure"
                  - "plan"
                  - "guidance"
                  - "standard"
                  - "validation"
                  - "physical"
              title:
                type: "string"
                minLength: 1
              description:
                type: "string"
                minLength: 1
              status:
                type: "object"
                properties:
                  state:
                    type: "string"
                    enum:
                      - "under-development"
                      - "operational"
                      - "disposition"
                      - "other"
                  remarks:
                    type: "string"
                required:
                  - "state"
                additionalProperties: false
              props:
                default: []
                type: "array"
                items:
                  type: "object"
                  propertyNames:
                    type: "string"
                  additionalProperties: {}
              links:
                default: []
                type: "array"
                items:
                  type: "object"
                  propertyNames:
                    type: "string"
                  additionalProperties: {}
              remarks:
                type: "string"
            required:
              - "uuid"
              - "type"
              - "title"
              - "description"
              - "status"
              - "props"
              - "links"
            additionalProperties: false
        capabilities:
          default: []
          type: "array"
          items:
            type: "object"
            propertyNames:
              type: "string"
            additionalProperties: {}
        backMatter:
          type: "object"
          propertyNames:
            type: "string"
          additionalProperties: {}
      required:
        - "uuid"
        - "metadata"
        - "components"
        - "capabilities"
      additionalProperties: false
    PoamExport:
      type: "object"
      properties:
        uuid:
          type: "string"
        metadata:
          type: "object"
          propertyNames:
            type: "string"
          additionalProperties: {}
      additionalProperties: {}
security:
  - ArbiterApiKey: []
