{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://nandarona.com/characters/v2/catalog.schema.json",
  "title": "Nandarona IP and world asset catalog",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "$schema",
    "schemaVersion",
    "ontologyVersion",
    "generatedAt",
    "summary",
    "ontology",
    "license",
    "designLayers",
    "commonDNA",
    "families",
    "characters"
  ],
  "properties": {
    "$schema": {
      "const": "/characters/v2/catalog.schema.json"
    },
    "schemaVersion": {
      "const": "2.0.0"
    },
    "ontologyVersion": {
      "const": "1.0.0"
    },
    "generatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "totalAssets",
        "characters",
        "artifacts"
      ],
      "properties": {
        "totalAssets": {
          "const": 100
        },
        "characters": {
          "const": 20
        },
        "artifacts": {
          "const": 80
        }
      }
    },
    "ontology": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "taxonomy",
        "livingCharacterRubric",
        "eyeGrammar",
        "artifactEyeAudit",
        "catalogSchema",
        "compatibility"
      ],
      "properties": {
        "taxonomy": {
          "const": "/characters/v2/entity-taxonomy.json"
        },
        "livingCharacterRubric": {
          "const": "/characters/v2/living-character-rubric.json"
        },
        "eyeGrammar": {
          "const": "/characters/v2/entity-eye-grammar.json"
        },
        "artifactEyeAudit": {
          "const": "/characters/v2/artifact-eye-audit.json"
        },
        "catalogSchema": {
          "const": "/characters/v2/catalog.schema.json"
        },
        "compatibility": {
          "type": "string",
          "minLength": 20
        }
      }
    },
    "license": {
      "type": "object"
    },
    "designLayers": {
      "type": "array",
      "minItems": 4,
      "uniqueItems": true
    },
    "commonDNA": {
      "type": "object"
    },
    "families": {
      "type": "array",
      "minItems": 10,
      "maxItems": 10,
      "items": {
        "type": "object",
        "required": [
          "id",
          "entityKind",
          "classificationReason",
          "name",
          "nameEn",
          "description",
          "designDna"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "entityKind": {
            "enum": [
              "character",
              "artifact"
            ]
          },
          "classificationReason": {
            "type": "string",
            "minLength": 10
          }
        }
      }
    },
    "characters": {
      "type": "array",
      "minItems": 100,
      "maxItems": 100,
      "items": {
        "type": "object",
        "required": [
          "id",
          "familyId",
          "entityKind",
          "name",
          "nameJa",
          "version",
          "release",
          "aiIndex",
          "fullKnowledge"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9-]+$"
          },
          "familyId": {
            "enum": [
              "observers",
              "kakera",
              "tools",
              "weather",
              "garden",
              "tactile",
              "locomotion",
              "encounter",
              "scene",
              "input"
            ]
          },
          "entityKind": {
            "enum": [
              "character",
              "artifact"
            ]
          },
          "version": {
            "type": "string",
            "pattern": "^\\d+\\.\\d+\\.\\d+$"
          }
        }
      }
    }
  }
}
