{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "LPR detection v1",
  "type": "object",
  "required": ["event", "event_id", "occurred_at", "received_at", "site_id", "camera_id", "plate", "confidence", "decision", "reason", "outcome"],
  "properties": {
    "event": {"const": "lpr.detection.v1"},
    "event_id": {"type": "string", "pattern": "^[a-f0-9]{32}$"},
    "occurred_at": {"type": "string", "format": "date-time", "pattern": "Z$"},
    "received_at": {"type": "string", "format": "date-time", "pattern": "Z$"},
    "site_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},
    "camera_id": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},
    "plate": {"type": "string", "pattern": "^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$"},
    "confidence": {"type": ["number", "null"], "minimum": 0, "maximum": 1},
    "decision": {"enum": ["allowed", "denied"]},
    "reason": {"enum": ["whitelist", "blacklist", "not_whitelisted"]},
    "outcome": {"enum": ["allow", "deny", "unknown"]}
  },
  "oneOf": [
    {"properties": {"decision": {"const": "allowed"}, "reason": {"const": "whitelist"}, "outcome": {"const": "allow"}}},
    {"properties": {"decision": {"const": "denied"}, "reason": {"const": "blacklist"}, "outcome": {"const": "deny"}}},
    {"properties": {"decision": {"const": "denied"}, "reason": {"const": "not_whitelisted"}, "outcome": {"const": "unknown"}}}
  ]
}
