{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://xcim.org/schemas/0.2/identity-evidence.schema.json",
  "title": "XCIM EVP-01 Experimental Public Identity Evidence",
  "description": "Experimental Consent Issuer attestation. Schema validation does not validate EVT, browser binding, DNS discovery or the issuer commitment.",
  "type": "object",
  "additionalProperties": false,
  "required": ["profile", "evidence_type", "identity_issuer", "identity_issuer_commitment", "verification_origin", "evidence_fingerprint", "external_protocol_revision", "adapter_version", "claims", "authenticated_at", "nonce_commitment"],
  "properties": {
    "profile": { "const": "evp-01" },
    "evidence_type": { "const": "email_verification_token" },
    "identity_issuer": { "$ref": "#/$defs/httpsUri" },
    "identity_issuer_commitment": { "$ref": "#/$defs/hash" },
    "verification_origin": { "$ref": "#/$defs/httpsUri" },
    "evidence_fingerprint": { "$ref": "#/$defs/hash" },
    "external_protocol_revision": { "type": "string", "minLength": 1, "maxLength": 128 },
    "adapter_version": { "type": "string", "minLength": 1, "maxLength": 128 },
    "claims": {
      "type": "object", "additionalProperties": false,
      "required": ["email_verified", "audience_verified", "nonce_verified", "freshness_verified", "identity_signature_verified", "browser_key_binding_verified", "issuer_dns_binding_verified"],
      "properties": {
        "email_verified": { "const": true },
        "audience_verified": { "const": true },
        "nonce_verified": { "const": true },
        "freshness_verified": { "const": true },
        "identity_signature_verified": { "const": true },
        "browser_key_binding_verified": { "const": true },
        "issuer_dns_binding_verified": { "const": true }
      }
    },
    "authenticated_at": { "$ref": "#/$defs/utc" },
    "nonce_commitment": { "$ref": "#/$defs/hash" }
  },
  "$defs": {
    "hash": { "type": "string", "pattern": "^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$" },
    "utc": { "type": "string", "format": "date-time", "pattern": "Z$" },
    "httpsUri": { "type": "string", "format": "uri", "pattern": "^https://[^/?#@]+(?:/[^?#]*)?$" }
  }
}
