{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://hogarmas.net/content-credentials/trust/trust-snapshot-schema.json",
  "title": "H/M C2PA Trust Snapshot",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema",
    "snapshotId",
    "snapshotVersion",
    "lockedOn",
    "source",
    "signingTrustList",
    "tsaTrustList",
    "validationPolicy",
    "boundaries"
  ],
  "properties": {
    "schema": {
      "const": "hm.c2pa-trust-snapshot.v1"
    },
    "snapshotId": {
      "const": "c2pa-official-trust-2026-07-29-09ecc937"
    },
    "snapshotVersion": {
      "const": "2026-07-29-09ecc937"
    },
    "lockedOn": {
      "const": "2026-07-30"
    },
    "source": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "repository",
        "commit",
        "commitDate",
        "license",
        "licenseUrl",
        "officialConformancePage",
        "officialExplorer"
      ],
      "properties": {
        "repository": {
          "const": "https://github.com/c2pa-org/conformance-public"
        },
        "commit": {
          "const": "09ecc937f1a0a246205b0eeae9ef38563454126d"
        },
        "commitDate": {
          "const": "2026-07-29T00:04:57Z"
        },
        "license": {
          "const": "CC-BY-4.0"
        },
        "licenseUrl": {
          "const": "https://creativecommons.org/licenses/by/4.0/"
        },
        "officialConformancePage": {
          "const": "https://c2pa.org/conformance/"
        },
        "officialExplorer": {
          "const": "https://spec.c2pa.org/conformance-explorer/"
        }
      }
    },
    "signingTrustList": {
      "allOf": [
        {
          "$ref": "#/$defs/trustList"
        },
        {
          "properties": {
            "role": {
              "const": "claim-signing-trust-anchors"
            },
            "assetPath": {
              "const": "/content-credentials/trust/v2026-07-29-09ecc937/C2PA-TRUST-LIST.pem"
            },
            "bytes": {
              "const": 36772
            },
            "certificateCount": {
              "const": 29
            },
            "sha256": {
              "const": "sha256:5fc0f1571f9eb4dff7a242291e1b198d347a768709bd6915022e9b59d6d7769c"
            },
            "usedByBrowserVerifier": {
              "const": true
            }
          }
        }
      ]
    },
    "tsaTrustList": {
      "allOf": [
        {
          "$ref": "#/$defs/trustList"
        },
        {
          "properties": {
            "role": {
              "const": "timestamp-authority-trust-anchors"
            },
            "assetPath": {
              "const": "/content-credentials/trust/v2026-07-29-09ecc937/C2PA-TSA-TRUST-LIST.pem"
            },
            "bytes": {
              "const": 27725
            },
            "certificateCount": {
              "const": 21
            },
            "sha256": {
              "const": "sha256:76788c4c36644ee24674f6d63e9ee6f0186c3e25e39ea80da67d1b6f35dbea62"
            },
            "usedByBrowserVerifier": {
              "const": false
            }
          }
        }
      ]
    },
    "validationPolicy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "signerTrustMode",
        "signerTrustListUsed",
        "legacyInterimTrustListUsed",
        "tsaTrustListMixedIntoSignerAnchors",
        "tsaTrustListUsedByBrowserVerifier",
        "remoteManifestFetch",
        "ocspFetch",
        "sameOriginTrustListFetch",
        "sourceFileUploaded"
      ],
      "properties": {
        "signerTrustMode": {
          "const": "official-c2pa-tl-pinned-snapshot"
        },
        "signerTrustListUsed": {
          "const": true
        },
        "legacyInterimTrustListUsed": {
          "const": false
        },
        "tsaTrustListMixedIntoSignerAnchors": {
          "const": false
        },
        "tsaTrustListUsedByBrowserVerifier": {
          "const": false
        },
        "remoteManifestFetch": {
          "const": false
        },
        "ocspFetch": {
          "const": false
        },
        "sameOriginTrustListFetch": {
          "const": false
        },
        "sourceFileUploaded": {
          "const": false
        }
      }
    },
    "boundaries": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "snapshotAutomaticallyUpdates",
        "currentTrustAfterSnapshotProven",
        "completeCertificateChainExposed",
        "tsaTrustEvaluatedAgainstOfficialTsaList",
        "browserVerifierConformanceCertified",
        "signerIdentityGuaranteed",
        "semanticTruthProven"
      ],
      "properties": {
        "snapshotAutomaticallyUpdates": {
          "const": false
        },
        "currentTrustAfterSnapshotProven": {
          "const": false
        },
        "completeCertificateChainExposed": {
          "const": false
        },
        "tsaTrustEvaluatedAgainstOfficialTsaList": {
          "const": false
        },
        "browserVerifierConformanceCertified": {
          "const": false
        },
        "signerIdentityGuaranteed": {
          "const": false
        },
        "semanticTruthProven": {
          "const": false
        }
      }
    }
  },
  "$defs": {
    "trustList": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "role",
        "assetPath",
        "sourceUrl",
        "bytes",
        "certificateCount",
        "sha256",
        "usedByBrowserVerifier"
      ],
      "properties": {
        "role": {
          "type": "string",
          "minLength": 1
        },
        "assetPath": {
          "type": "string",
          "minLength": 1
        },
        "sourceUrl": {
          "type": "string",
          "format": "uri"
        },
        "bytes": {
          "type": "integer",
          "minimum": 1
        },
        "certificateCount": {
          "type": "integer",
          "minimum": 1
        },
        "sha256": {
          "type": "string",
          "pattern": "^sha256:[a-f0-9]{64}$"
        },
        "usedByBrowserVerifier": {
          "type": "boolean"
        }
      }
    }
  }
}
