{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://hogarmas.net/content-credentials/collection-hash-receipt-schema.json",
  "title": "H/M Privacy-Minimized C2PA Collection Data Hash Receipt",
  "type": "object",
  "additionalProperties": false,
  "required": ["receipt", "checksum"],
  "properties": {
    "receipt": {
      "type": "object",
      "additionalProperties": false,
      "required": ["schema", "ruleset", "generatedAt", "auditId", "assertion", "result", "summary", "syntheticSample", "privacy", "boundaries"],
      "properties": {
        "schema": { "const": "hm.c2pa-collection-data-hash-receipt.v1" },
        "ruleset": { "const": "2026-07-31.1" },
        "generatedAt": { "type": "string", "format": "date-time" },
        "auditId": { "type": "string", "pattern": "^urn:sha256:[a-f0-9]{64}$" },
        "assertion": {
          "type": "object",
          "additionalProperties": false,
          "required": ["label", "algorithm", "entryCount", "digest"],
          "properties": {
            "label": { "const": "c2pa.hash.collection.data" },
            "algorithm": { "enum": ["sha256", "sha384", "sha512"] },
            "entryCount": { "type": "integer", "minimum": 1, "maximum": 2000 },
            "digest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
          }
        },
        "result": {
          "type": "object",
          "additionalProperties": false,
          "required": ["state", "codes"],
          "properties": {
            "state": { "enum": ["match", "failure", "incomplete"] },
            "codes": { "type": "array", "minItems": 1, "maxItems": 3, "uniqueItems": true, "items": { "type": "string", "maxLength": 100 } }
          }
        },
        "summary": {
          "type": "object",
          "additionalProperties": false,
          "required": ["listedCount", "matchCount", "mismatchCount", "missingCount", "errorCount", "warningCount", "notCoveredSelectedCount"],
          "properties": {
            "listedCount": { "type": "integer", "minimum": 1, "maximum": 2000 },
            "matchCount": { "type": "integer", "minimum": 0, "maximum": 2000 },
            "mismatchCount": { "type": "integer", "minimum": 0, "maximum": 2000 },
            "missingCount": { "type": "integer", "minimum": 0, "maximum": 2000 },
            "errorCount": { "type": "integer", "minimum": 0, "maximum": 2000 },
            "warningCount": { "type": "integer", "minimum": 0, "maximum": 4000 },
            "notCoveredSelectedCount": { "type": "integer", "minimum": 0, "maximum": 4000 }
          }
        },
        "syntheticSample": { "type": "boolean" },
        "privacy": {
          "type": "object",
          "additionalProperties": false,
          "required": ["fileNamesIncluded", "relativeUrisIncluded", "expectedHashesIncluded", "observedHashesIncluded", "sourceBytesIncluded"],
          "properties": {
            "fileNamesIncluded": { "const": false },
            "relativeUrisIncluded": { "const": false },
            "expectedHashesIncluded": { "const": false },
            "observedHashesIncluded": { "const": false },
            "sourceBytesIncluded": { "const": false }
          }
        },
        "boundaries": { "$ref": "collection-hash-audit-schema.json#/$defs/boundaries" }
      }
    },
    "checksum": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
  }
}
