{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://platoskallipolis.com/schemas/resource-north-star-attribution.v1.json",
  "title": "Plato's Kallipolis Resource North Star Attribution",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema", "state", "window", "candidateWeeklyVerifiedReusedResourceCount", "eligibleCitationSetHash", "thresholds", "privacy", "northStarKpi"],
  "properties": {
    "schema": {"const": "kallipolis.resource-north-star-attribution.v1"},
    "state": {"const": "non-production"},
    "window": {
      "type": "object",
      "additionalProperties": false,
      "required": ["startAt", "endAt", "durationSeconds"],
      "properties": {
        "startAt": {"type": "string", "format": "date-time"},
        "endAt": {"type": "string", "format": "date-time"},
        "durationSeconds": {"const": 604800}
      }
    },
    "candidateWeeklyVerifiedReusedResourceCount": {"type": "integer", "minimum": 0},
    "eligibleCitationSetHash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
    "thresholds": {
      "type": "object",
      "additionalProperties": false,
      "required": ["minimumSuccessfulOrganicCallsPerCitation", "minimumUniqueVerifiedReusePerCitation"],
      "properties": {
        "minimumSuccessfulOrganicCallsPerCitation": {"const": 2},
        "minimumUniqueVerifiedReusePerCitation": {"const": 1}
      }
    },
    "privacy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["clientIdentityStored", "agentIdentityStored", "organizationIdentityStored", "fullPathStored", "requestDataStored", "citationIdsExposed"],
      "properties": {
        "clientIdentityStored": {"const": false},
        "agentIdentityStored": {"const": false},
        "organizationIdentityStored": {"const": false},
        "fullPathStored": {"const": false},
        "requestDataStored": {"const": false},
        "citationIdsExposed": {"const": false}
      }
    },
    "northStarKpi": {
      "type": "object",
      "additionalProperties": false,
      "required": ["enabled", "value", "candidateValueIsAchievedMetric", "missingActivationGates"],
      "properties": {
        "enabled": {"const": false},
        "value": {"type": "null"},
        "candidateValueIsAchievedMetric": {"const": false},
        "missingActivationGates": {"type": "array", "minItems": 1, "items": {"type": "string"}}
      }
    }
  }
}
