{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://syngraphe.org/schemas/internal/receipt-profile-v1/bundle",
  "title": "Syngraphe AI Interaction Receipt profile v1 verification bundle structural schema",
  "$comment": "Structural envelope only. Runtime parsing and verification are mandatory; cross-field, temporal, ordering, uniqueness, serialized-size, and statistical invariants are runtime-only.",
  "type": "object",
  "additionalProperties": false,
  "required": ["profile", "proofs", "receipt", "retention_evidence", "verification_keys"],
  "properties": {
    "profile": { "const": "syngraphe.ai-interaction-receipt.profile-v1" },
    "proofs": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "disclosure_stance",
        "key_transparency",
        "lineage",
        "multi_operator_inclusion",
        "notary_quorum",
        "ots",
        "provider_signature",
        "tee_quote"
      ],
      "properties": {
        "disclosure_stance": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/disclosureStance" }]
        },
        "key_transparency": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/keyTransparency" }]
        },
        "lineage": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/lineage" }]
        },
        "multi_operator_inclusion": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/multiOperatorInclusion" }]
        },
        "notary_quorum": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/notaryQuorum" }]
        },
        "ots": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/ots" }]
        },
        "provider_signature": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/providerSignature" }]
        },
        "tee_quote": {
          "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/teeQuote" }]
        }
      }
    },
    "receipt": {
      "$ref": "https://syngraphe.org/schemas/internal/receipt-profile-v1/receipt"
    },
    "retention_evidence": { "$ref": "#/$defs/retentionEvidence" },
    "verification_keys": {
      "type": "array",
      "minItems": 1,
      "maxItems": 32,
      "items": { "$ref": "#/$defs/verificationKey" }
    }
  },
  "$defs": {
    "count": {
      "type": "integer",
      "minimum": 0,
      "maximum": 65535
    },
    "digest": {
      "type": "string",
      "pattern": "^sha256:[a-f0-9]{64}$"
    },
    "identifier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]*$"
    },
    "keyReference": {
      "type": "string",
      "pattern": "^ed25519:sha256:[a-f0-9]{64}$"
    },
    "signature": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{86}$"
    },
    "timestamp": {
      "type": "string",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
    },
    "verificationKey": {
      "type": "object",
      "additionalProperties": false,
      "required": ["algorithm", "key_ref", "operator", "public_key", "role"],
      "properties": {
        "algorithm": { "const": "ed25519" },
        "key_ref": { "$ref": "#/$defs/keyReference" },
        "operator": { "$ref": "#/$defs/identifier" },
        "public_key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{43}$"
        },
        "role": { "enum": ["log-operator", "notary", "provider", "tee-verifier"] }
      }
    },
    "retentionEvidence": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "declared_class",
        "provider",
        "retrieved_on",
        "service_features",
        "source_sha256",
        "source_url"
      ],
      "properties": {
        "declared_class": {
          "enum": [
            "anthropic-covered-model-30d",
            "anthropic-feature-specific",
            "anthropic-zero-data-retention",
            "google-approved-zero-data-retention",
            "google-feature-specific",
            "google-paid-service-limited-abuse-monitoring",
            "openai-abuse-monitoring-30d",
            "openai-application-state-30d",
            "openai-modified-abuse-monitoring",
            "openai-zero-data-retention",
            "undeclared"
          ]
        },
        "provider": { "enum": ["anthropic", "google", "openai"] },
        "retrieved_on": {
          "type": "string",
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
        },
        "service_features": {
          "type": "array",
          "maxItems": 16,
          "uniqueItems": true,
          "items": {
            "enum": [
              "anthropic-code-execution",
              "anthropic-covered-model-30d",
              "anthropic-managed-agents",
              "google-explicit-caching",
              "google-file-api-storage",
              "google-grounding-maps",
              "google-grounding-search",
              "google-interactions-store",
              "google-live-session-resumption",
              "openai-conversations-state",
              "openai-file-storage",
              "openai-responses-store",
              "openai-video"
            ]
          }
        },
        "source_sha256": { "$ref": "#/$defs/digest" },
        "source_url": { "type": "string" }
      },
      "allOf": [
        {
          "if": { "properties": { "provider": { "const": "anthropic" } }, "required": ["provider"] },
          "then": {
            "properties": {
              "declared_class": {
                "enum": [
                  "anthropic-covered-model-30d",
                  "anthropic-feature-specific",
                  "anthropic-zero-data-retention",
                  "undeclared"
                ]
              },
              "source_url": {
                "const": "https://platform.claude.com/docs/en/manage-claude/api-and-data-retention"
              }
            }
          }
        },
        {
          "if": { "properties": { "provider": { "const": "google" } }, "required": ["provider"] },
          "then": {
            "properties": {
              "declared_class": {
                "enum": [
                  "google-approved-zero-data-retention",
                  "google-feature-specific",
                  "google-paid-service-limited-abuse-monitoring",
                  "undeclared"
                ]
              },
              "source_url": { "const": "https://ai.google.dev/gemini-api/docs/zdr" }
            }
          }
        },
        {
          "if": { "properties": { "provider": { "const": "openai" } }, "required": ["provider"] },
          "then": {
            "properties": {
              "declared_class": {
                "enum": [
                  "openai-abuse-monitoring-30d",
                  "openai-application-state-30d",
                  "openai-modified-abuse-monitoring",
                  "openai-zero-data-retention",
                  "undeclared"
                ]
              },
              "source_url": { "const": "https://developers.openai.com/api/docs/guides/your-data" }
            }
          }
        }
      ]
    },
    "providerSignature": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "algorithm",
        "covered_components",
        "created",
        "key_ref",
        "receipt_digest",
        "signature"
      ],
      "properties": {
        "algorithm": { "const": "ed25519" },
        "covered_components": {
          "type": "array",
          "prefixItems": [
            { "const": "syngraphe-request-digest" },
            { "const": "syngraphe-response-digest" },
            { "const": "syngraphe-model-id" },
            { "const": "syngraphe-retention-class" },
            { "const": "syngraphe-timestamp" },
            { "const": "syngraphe-receipt-digest" }
          ],
          "items": false,
          "minItems": 6,
          "maxItems": 6
        },
        "created": { "type": "integer", "minimum": 0 },
        "key_ref": { "$ref": "#/$defs/keyReference" },
        "receipt_digest": { "$ref": "#/$defs/digest" },
        "signature": { "$ref": "#/$defs/signature" }
      }
    },
    "notaryQuorum": {
      "type": "object",
      "additionalProperties": false,
      "required": ["receipt_digest", "signatures"],
      "properties": {
        "receipt_digest": { "$ref": "#/$defs/digest" },
        "signatures": {
          "type": "array",
          "maxItems": 16,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": ["algorithm", "key_ref", "notary_id", "signature"],
            "properties": {
              "algorithm": { "const": "ed25519" },
              "key_ref": { "$ref": "#/$defs/keyReference" },
              "notary_id": { "$ref": "#/$defs/identifier" },
              "signature": { "$ref": "#/$defs/signature" }
            }
          }
        }
      }
    },
    "teeQuote": {
      "type": "object",
      "additionalProperties": false,
      "required": ["appraisal", "quote_digest", "quote_format", "receipt_digest"],
      "properties": {
        "appraisal": {
          "type": "object",
          "additionalProperties": false,
          "required": ["appraised_at", "key_ref", "result", "signature", "verifier_id"],
          "properties": {
            "appraised_at": { "$ref": "#/$defs/timestamp" },
            "key_ref": { "$ref": "#/$defs/keyReference" },
            "result": { "const": "pass" },
            "signature": { "$ref": "#/$defs/signature" },
            "verifier_id": { "$ref": "#/$defs/identifier" }
          }
        },
        "quote_digest": { "$ref": "#/$defs/digest" },
        "quote_format": { "enum": ["aws-nitro", "sev-snp", "tdx-v4"] },
        "receipt_digest": { "$ref": "#/$defs/digest" }
      }
    },
    "ots": {
      "type": "object",
      "additionalProperties": false,
      "required": ["calendar_url", "proof_digest", "receipt_digest"],
      "properties": {
        "calendar_url": { "type": "string", "pattern": "^https://[^?#]+$" },
        "proof_digest": { "$ref": "#/$defs/digest" },
        "receipt_digest": { "$ref": "#/$defs/digest" }
      }
    },
    "keyTransparency": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "checkpoint_digest",
        "inclusion_proof_digest",
        "key_ref",
        "log_id",
        "receipt_digest"
      ],
      "properties": {
        "checkpoint_digest": { "$ref": "#/$defs/digest" },
        "inclusion_proof_digest": { "$ref": "#/$defs/digest" },
        "key_ref": { "$ref": "#/$defs/keyReference" },
        "log_id": { "$ref": "#/$defs/identifier" },
        "receipt_digest": { "$ref": "#/$defs/digest" }
      }
    },
    "lineage": {
      "type": "object",
      "additionalProperties": false,
      "required": ["parent_receipt_digest", "receipt_digest", "relation"],
      "properties": {
        "parent_receipt_digest": { "$ref": "#/$defs/digest" },
        "receipt_digest": { "$ref": "#/$defs/digest" },
        "relation": { "const": "response-derived-from" }
      }
    },
    "disclosureStance": {
      "type": "object",
      "additionalProperties": false,
      "required": ["receipt_digest", "stance", "statement_digest"],
      "properties": {
        "receipt_digest": { "$ref": "#/$defs/digest" },
        "stance": { "const": "digest-only" },
        "statement_digest": { "$ref": "#/$defs/digest" }
      }
    },
    "multiOperatorInclusion": {
      "type": "object",
      "additionalProperties": false,
      "required": ["entries", "receipt_digest"],
      "properties": {
        "entries": {
          "type": "array",
          "minItems": 2,
          "maxItems": 16,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "checkpoint_digest",
              "inclusion_proof_digest",
              "leaf_index",
              "log_id",
              "operator"
            ],
            "properties": {
              "checkpoint_digest": { "$ref": "#/$defs/digest" },
              "inclusion_proof_digest": { "$ref": "#/$defs/digest" },
              "leaf_index": { "$ref": "#/$defs/count" },
              "log_id": { "$ref": "#/$defs/identifier" },
              "operator": { "$ref": "#/$defs/identifier" }
            }
          }
        },
        "receipt_digest": { "$ref": "#/$defs/digest" }
      }
    }
  }
}
