spells — en — SRD 5.2.1

JSON Schema
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Spell",
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "name_en": {
      "type": [
        "string",
        "null"
      ]
    },
    "level": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9
    },
    "school": {
      "type": "string",
      "enum": [
        "Abjuration",
        "Conjuration",
        "Divination",
        "Enchantment",
        "Evocation",
        "Illusion",
        "Necromancy",
        "Transmutation",
        "Ограждения",
        "Вызова",
        "Прорицания",
        "Очарования",
        "Воплощения",
        "Иллюзии",
        "Некромантии",
        "Преобразования"
      ]
    },
    "classes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "casting_time": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "action",
            "bonus_action",
            "reaction",
            "minute",
            "hour",
            "special"
          ]
        },
        "ritual": {
          "type": "boolean"
        },
        "condition": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "value",
        "type",
        "ritual",
        "condition"
      ],
      "additionalProperties": false
    },
    "range": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "self",
            "touch",
            "sight",
            "unlimited",
            "distance",
            "special"
          ]
        },
        "distance_ft": {
          "type": [
            "integer",
            "null"
          ]
        },
        "shape": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "cone",
                    "line",
                    "cube",
                    "sphere",
                    "hemisphere"
                  ]
                },
                "size_ft": {
                  "type": "integer"
                }
              },
              "required": [
                "type",
                "size_ft"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "value",
        "type",
        "distance_ft",
        "shape"
      ],
      "additionalProperties": false
    },
    "components": {
      "type": "object",
      "properties": {
        "verbal": {
          "type": "boolean"
        },
        "somatic": {
          "type": "boolean"
        },
        "material": {
          "type": "boolean"
        },
        "material_desc": {
          "type": [
            "string",
            "null"
          ]
        },
        "material_cost_gp": {
          "type": [
            "number",
            "null"
          ]
        },
        "material_consumed": {
          "type": "boolean"
        }
      },
      "required": [
        "verbal",
        "somatic",
        "material",
        "material_desc",
        "material_cost_gp",
        "material_consumed"
      ],
      "additionalProperties": false
    },
    "duration": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "instantaneous",
            "timed",
            "until_dispelled",
            "special"
          ]
        },
        "concentration": {
          "type": "boolean"
        }
      },
      "required": [
        "value",
        "type",
        "concentration"
      ],
      "additionalProperties": false
    },
    "description_md": {
      "type": [
        "string",
        "null"
      ]
    },
    "higher_levels_md": {
      "type": [
        "string",
        "null"
      ]
    },
    "cantrip_upgrade_md": {
      "type": [
        "string",
        "null"
      ]
    },
    "has_stat_block": {
      "type": "boolean"
    }
  },
  "required": [
    "slug",
    "name",
    "name_en",
    "level",
    "school",
    "classes",
    "casting_time",
    "range",
    "components",
    "duration",
    "description_md",
    "higher_levels_md",
    "cantrip_upgrade_md",
    "has_stat_block"
  ],
  "additionalProperties": false
}