{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.xaere.io/schemas/audience-event-v1.schema.json",
  "title": "Xaere XR Audience event v1",
  "type": "object",
  "required": ["event_id", "xr_id", "occurred_at", "receiver_class", "measurement_token", "integration_id", "resolution_proof"],
  "additionalProperties": false,
  "properties": {
    "event_id": { "type": "string", "pattern": "^evt_[A-Za-z0-9_-]{16,}$" },
    "xr_id": { "type": "string", "pattern": "^xr_[A-Za-z0-9_-]{16,}$" },
    "occurred_at": { "type": "string", "format": "date-time" },
    "receiver_class": { "enum": ["mobile", "tv", "iot", "web"] },
    "measurement_token": { "type": "string", "minLength": 16, "maxLength": 256 },
    "integration_id": { "type": "string", "pattern": "^int_[A-Za-z0-9_-]{8,}$" },
    "country_code": { "type": "string", "pattern": "^[A-Z]{2}$" },
    "resolution_proof": {
      "type": "object",
      "required": ["xr_id", "integration_id", "campaign_id", "issued_at", "expires_at", "key_id", "signature"],
      "additionalProperties": false,
      "properties": {
        "proof_id": { "type": "string", "pattern": "^prf_[A-Za-z0-9_-]{16,}$" },
        "xr_id": { "type": "string", "pattern": "^xr_[A-Za-z0-9_-]{16,}$" },
        "integration_id": { "type": "string", "pattern": "^int_[A-Za-z0-9_-]{8,}$" },
        "campaign_id": { "type": ["string", "null"], "pattern": "^cmp_[A-Za-z0-9_-]{16,}$" },
        "issued_at": { "type": "string", "format": "date-time" },
        "expires_at": { "type": "string", "format": "date-time" },
        "key_id": { "type": "string", "minLength": 1, "maxLength": 160 },
        "signature": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43,}$" }
      }
    }
  }
}
