{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://aiwg.io/schemas/dataset/dataset-deprecations.v1.schema.json",
  "title": "Dataset deprecation inventory v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "updatedAt", "entries"],
  "properties": {
    "$schema": { "const": "https://aiwg.io/schemas/dataset/dataset-deprecations.v1.schema.json" },
    "schemaVersion": { "const": "aiwg.dataset-deprecations/v1" },
    "updatedAt": { "type": "string", "format": "date" },
    "entries": {
      "type": "array",
      "items": { "$ref": "#/$defs/entry" }
    }
  },
  "$defs": {
    "nonEmpty": { "type": "string", "minLength": 1 },
    "entry": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "legacySurface", "replacement", "status", "deprecationRelease", "deprecationDate", "supportWindow", "detector", "rollback", "removalCriteria"],
      "properties": {
        "id": { "$ref": "#/$defs/nonEmpty" },
        "legacySurface": { "$ref": "#/$defs/nonEmpty" },
        "replacement": { "$ref": "#/$defs/nonEmpty" },
        "status": { "enum": ["announced", "deprecated", "removal-eligible", "retired"] },
        "deprecationRelease": { "$ref": "#/$defs/nonEmpty" },
        "deprecationDate": { "type": "string", "format": "date" },
        "supportWindow": { "$ref": "#/$defs/nonEmpty" },
        "detector": { "$ref": "#/$defs/nonEmpty" },
        "rollback": { "$ref": "#/$defs/nonEmpty" },
        "removalCriteria": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/nonEmpty" } }
      }
    }
  }
}
