{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://civicdataforge.pages.dev/schemas/change-event-v1.schema.json",
  "title": "CivicDataForge change event v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "product_id", "subject_key", "scope_hash", "change_type", "before_fingerprint", "after_fingerprint", "observed_from", "observed_to", "receipt_hash"],
  "properties": {
    "schema_version": {"const": "civicdataforge.change-event.v1"},
    "product_id": {"type": "string", "minLength": 1},
    "subject_key": {"type": "string", "minLength": 1},
    "scope_hash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
    "change_type": {"enum": ["appeared", "changed", "disappeared", "reinstated", "corrected"]},
    "before_fingerprint": {"type": ["string", "null"], "pattern": "^sha256:[a-f0-9]{64}$"},
    "after_fingerprint": {"type": ["string", "null"], "pattern": "^sha256:[a-f0-9]{64}$"},
    "observed_from": {"type": "string", "format": "date-time"},
    "observed_to": {"type": "string", "format": "date-time"},
    "receipt_hash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"}
  }
}
