{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://cheeleong.dev/wwn-system-json/systems/class.schema.json",
  "title": "WWN Class",
  "type": "object",
  "allOf": [{ "$ref": "https://cheeleong.dev/wwn-system-json/systems/common.schema.json#/$defs/Entity" }],
  "properties": {
    "@type": { "const": "Class" },
    "classKind": { "enum": ["full", "partial", "adventurer", "base", "tradition"] },
    "availableClassKinds": { "type": "array", "items": { "enum": ["full", "partial"] }, "uniqueItems": true, "minItems": 1 },
    "hitDie": { "type": "string" },
    "attackProgression": { "type": "array", "items": { "type": "object" } },
    "focusProgression": { "type": "array", "items": { "type": "object" } },
    "progressions": { "type": "array", "items": { "type": "object" } },
    "effort": { "type": "object" },
    "benefits": { "type": "array", "items": { "type": ["string", "object"] } },
    "arts": { "type": "array", "items": { "$ref": "https://cheeleong.dev/wwn-system-json/systems/common.schema.json#/$defs/NodeReference" } },
    "spells": { "type": "array", "items": { "$ref": "https://cheeleong.dev/wwn-system-json/systems/common.schema.json#/$defs/NodeReference" } },
    "spellProgression": { "type": "array", "items": { "type": "object" } },
    "compatiblePartials": { "type": "array", "items": { "$ref": "https://cheeleong.dev/wwn-system-json/systems/common.schema.json#/$defs/NodeReference" } }
  },
  "required": ["source", "classKind"],
  "unevaluatedProperties": false
}
