{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.michaeldariuseastwood.com/schemas/concept-authority-reconciliation.schema.json",
  "title": "Concept authority reconciliation",
  "type": "object",
  "additionalProperties": false,
  "required": ["schemaVersion", "reconciliationId", "dateModified", "canonicalCount", "description", "aliases", "overrides"],
  "properties": {
    "schemaVersion": {"const": 1},
    "reconciliationId": {"type": "string", "minLength": 1},
    "dateModified": {"type": "string", "format": "date"},
    "canonicalCount": {"type": "integer", "minimum": 1},
    "description": {"type": "string", "minLength": 1},
    "aliases": {
      "type": "object",
      "propertyNames": {"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
      "additionalProperties": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"}
    },
    "overrides": {
      "type": "object",
      "propertyNames": {"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
      "additionalProperties": {"$ref": "#/$defs/override"}
    }
  },
  "$defs": {
    "override": {
      "type": "object",
      "additionalProperties": false,
      "required": ["reason"],
      "properties": {
        "label": {"type": "string", "minLength": 1},
        "alternateNames": {
          "type": "array",
          "uniqueItems": true,
          "items": {"type": "string", "minLength": 1}
        },
        "url": {
          "type": "string",
          "format": "uri",
          "pattern": "^https://www\\.michaeldariuseastwood\\.com/"
        },
        "reason": {"type": "string", "minLength": 1}
      }
    }
  }
}
