← Files VeraARCHIVED FILE

privacy/service-boundary.schema.json

5.14 KB · Oct 2, 2026 · 00:29 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://mparanza.com/schemas/vera-service-boundary-v2.json",
  "title": "Vera shared-service external-boundary review",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "service_id",
    "display_name",
    "governed_paths",
    "runtime_profiles",
    "external_boundaries",
    "security_controls",
    "review"
  ],
  "properties": {
    "schema_version": {"const": 2},
    "service_id": {"type": "string", "minLength": 1},
    "display_name": {"type": "string", "minLength": 1},
    "governed_paths": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {"type": "string", "minLength": 1}
    },
    "governed_repository_paths": {
      "type": "array",
      "uniqueItems": true,
      "items": {"type": "string", "minLength": 1}
    },
    "runtime_profiles": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": {
        "enum": [
          "openai-codex",
          "anthropic-cowork"
        ]
      }
    },
    "external_boundaries": {
      "type": "array",
      "minItems": 0,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "allOf": [
          {
            "if": {
              "properties": {"requires_confirmation": {"const": true}},
              "required": ["requires_confirmation"]
            },
            "then": {"properties": {"optional": {"const": true}}}
          },
          {
            "if": {
              "properties": {"activation": {"const": "explicit_user_choice"}},
              "required": ["activation"]
            },
            "then": {
              "properties": {
                "optional": {"const": true},
                "requires_confirmation": {"const": true}
              }
            }
          },
          {
            "if": {
              "properties": {
                "activation": {
                  "enum": [
                    "automatic_session_start",
                    "automatic_on_first_use",
                    "automatic_after_prior_submission",
                    "automatic_after_prior_connection",
                    "automatic_per_durable_run"
                  ]
                }
              },
              "required": ["activation"]
            },
            "then": {
              "properties": {
                "optional": {"const": false},
                "requires_confirmation": {"const": false}
              }
            }
          }
        ],
        "required": [
          "id",
          "kind",
          "destination",
          "purpose",
          "content",
          "retention",
          "activation",
          "optional",
          "requires_confirmation",
          "controls",
          "runtime_profiles"
        ],
        "properties": {
          "id": {"type": "string", "minLength": 1},
          "kind": {"enum": ["hosted_service", "send_or_publish"]},
          "destination": {"type": "string", "minLength": 1},
          "purpose": {"type": "string", "minLength": 1},
          "content": {"type": "string", "minLength": 1},
          "retention": {"type": "string", "minLength": 1},
          "activation": {
            "enum": [
              "automatic_session_start",
              "automatic_on_first_use",
              "automatic_after_prior_submission",
              "automatic_after_prior_connection",
              "automatic_per_durable_run",
              "explicit_user_choice"
            ]
          },
          "optional": {"type": "boolean"},
          "requires_confirmation": {"type": "boolean"},
          "controls": {
            "type": "array",
            "minItems": 1,
            "items": {"type": "string", "minLength": 1}
          },
          "runtime_profiles": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "enum": [
                "openai-codex",
                "anthropic-cowork"
              ]
            }
          }
        }
      }
    },
    "security_controls": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id", "control", "implemented_by", "on_violation"],
        "properties": {
          "id": {"type": "string", "minLength": 1},
          "control": {"type": "string", "minLength": 1},
          "implemented_by": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {"type": "string", "minLength": 1}
          },
          "on_violation": {"type": "string", "minLength": 1}
        }
      }
    },
    "review": {
      "type": "object",
      "additionalProperties": false,
      "required": ["reviewed_at", "reviewed_by", "basis", "source_fingerprint"],
      "properties": {
        "reviewed_at": {"type": "string", "format": "date"},
        "reviewed_by": {"const": "privacy-surface-review"},
        "basis": {"const": "external_boundary_review_of_shared_service_source"},
        "source_fingerprint": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        }
      }
    }
  }
}

SHA-256: b7306b7e0ffcf10b54757c02ee35837f79d60d0e3134ba3ba4da08f2d01e6c78