{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://platoskallipolis.com/schemas/verified-reuse-rollup.v1.json",
  "title": "Plato's Kallipolis Verified Reuse Rollup",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "state", "window", "history", "uniqueVerifiedReuseCount", "uniqueCitationCount", "eligibleReuseSetHash", "byCitation", "deduplication", "privacy", "northStarKpi"],
  "properties": {
    "schema": {"const": "kallipolis.verified-reuse-rollup.v1"},
    "state": {"const": "non-production"},
    "window": {
      "type": "object",
      "additionalProperties": false,
      "required": ["startAt", "endAt", "startInclusive", "endExclusive", "durationSeconds"],
      "properties": {
        "startAt": {"type": "string", "format": "date-time"},
        "endAt": {"type": "string", "format": "date-time"},
        "startInclusive": {"const": true},
        "endExclusive": {"const": true},
        "durationSeconds": {"const": 604800}
      }
    },
    "history": {
      "type": "object",
      "additionalProperties": false,
      "required": ["completeSince", "completeForWindow"],
      "properties": {
        "completeSince": {"type": "string", "format": "date-time"},
        "completeForWindow": {"const": true}
      }
    },
    "uniqueVerifiedReuseCount": {"type": "integer", "minimum": 0},
    "uniqueCitationCount": {"type": "integer", "minimum": 0},
    "eligibleReuseSetHash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
    "byCitation": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["citationId", "uniqueVerifiedReuseCount"],
        "properties": {
          "citationId": {"type": "string"},
          "uniqueVerifiedReuseCount": {"type": "integer", "minimum": 1}
        }
      }
    },
    "deduplication": {
      "type": "object",
      "additionalProperties": false,
      "required": ["key", "time", "terminalInvalidOrWithdrawnOverridesVerified"],
      "properties": {
        "key": {"const": "reuseId"},
        "time": {"const": "earliest verifiedAt in complete history"},
        "terminalInvalidOrWithdrawnOverridesVerified": {"const": true}
      }
    },
    "privacy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["consumerIdentityStored", "agentIdentityStored", "organizationIdentityStored", "walletDataStored", "networkIdentityStored", "sessionDataStored", "requestDataStored"],
      "properties": {
        "consumerIdentityStored": {"const": false},
        "agentIdentityStored": {"const": false},
        "organizationIdentityStored": {"const": false},
        "walletDataStored": {"const": false},
        "networkIdentityStored": {"const": false},
        "sessionDataStored": {"const": false},
        "requestDataStored": {"const": false}
      }
    },
    "northStarKpi": {
      "type": "object",
      "additionalProperties": false,
      "required": ["enabledByThisRollup", "reason"],
      "properties": {
        "enabledByThisRollup": {"const": false},
        "reason": {"type": "string", "minLength": 1}
      }
    }
  }
}
