{ "$comment": "TODO: Subdivide the schema to have a common definition for each data (spells, books, creatures)", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://example.com/object1678401116.json", "title": "Root", "type": "object", "required": ["spell"], "properties": { "spell": { "$id": "#root/spell", "title": "Spell", "type": "array", "default": [], "items": { "$id": "#root/spell/items", "title": "Items", "type": "object", "required": [ "recid", "name", "source", "page", "srd", "level", "school", "time", "range", "components", "duration", "desc" ], "properties": { "recid": { "$id": "#root/spell/items/recid", "title": "Recid", "type": "integer", "examples": [0], "default": 0, "description": "unique id for the spell, for localization purpose", "uniqueItems": true, "autoIncrement": true }, "name": { "$id": "#root/spell/items/name", "title": "Name", "type": "string", "default": "", "examples": ["Acid Arrow"], "pattern": "^.*$" }, "source": { "$id": "#root/spell/items/source", "title": "Source", "description": "what's the source. Each enum is a book code", "type": "string", "default": "GRI01", "enum": ["GRI01", "ENC01", "CRE01", "GRI02", "ENC02", "CRE02"], "examples": ["GRI01"], "pattern": "^.*$" }, "page": { "$id": "#root/spell/items/page", "description": "in the book, page source", "title": "Page", "type": "integer", "examples": [110], "default": 0 }, "srd": { "$id": "#root/spell/items/srd", "description": "is srd or a creation", "title": "Srd", "type": "boolean", "examples": [true], "default": true }, "level": { "$id": "#root/spell/items/level", "title": "Level", "type": "integer", "examples": [2], "default": 0 }, "school": { "$id": "#root/spell/items/school", "description": " 'A' : Abjuration,'C' : Conjuration, 'D': Divination, 'E': Enchantment, 'N': Necromancy, 'T' : Transmutation, 'I' : Illusion, 'V' : Evocation", "enum": ["A", "C", "D", "E", "I", "N", "T", "V"], "title": "School", "type": "string", "examples": ["E"], "pattern": "^.*$" }, "time": { "$id": "#root/spell/items/time", "title": "Time", "type": "array", "default": [], "items": { "$id": "#root/spell/items/time/items", "title": "Items", "type": "object", "required": ["number", "unit"], "properties": { "number": { "$id": "#root/spell/items/time/items/number", "title": "Number", "type": "integer", "examples": [1], "default": 0 }, "unit": { "$id": "#root/spell/items/time/items/unit", "title": "Unit", "type": "string", "default": "", "examples": ["action"], "pattern": "^.*$" } }, "dependentRequired": { "number": ["unit"] } } }, "range": { "$id": "#root/spell/items/range", "title": "Range", "type": "object", "required": ["type", "distance"], "properties": { "type": { "$id": "#root/spell/items/range/type", "title": "Type", "type": "string", "default": "point", "examples": ["point"], "pattern": "^.*$", "enum": ["point", "cone", "sphere", "cylinder", "special"], "description": "point by default, but can be cone, sphere, cylinder, special " }, "distance": { "$id": "#root/spell/items/range/distance", "title": "Distance", "type": "object", "required": ["type", "amount"], "properties": { "type": { "$id": "#root/spell/items/range/distance/type", "title": "Type", "type": "string", "default": "", "examples": ["feet"], "pattern": "^.*$" }, "amount": { "$id": "#root/spell/items/range/distance/amount", "title": "Amount", "type": "integer", "examples": [90], "default": 0 } } } } }, "components": { "$id": "#root/spell/items/components", "title": "Components", "type": "object", "properties": { "v": { "$id": "#root/spell/items/components/v", "title": "V", "type": "boolean", "examples": [true], "default": true }, "s": { "$id": "#root/spell/items/components/s", "title": "S", "type": "boolean", "examples": [true], "default": true }, "m": { "$id": "#root/spell/items/components/m", "title": "M", "type": "string", "default": "", "examples": ["powdered rhubarb leaf and an adder’s stomach"], "pattern": "^.*$" } } }, "duration": { "$id": "#root/spell/items/duration", "title": "Duration", "type": "array", "default": [], "items": { "$id": "#root/spell/items/duration/items", "title": "Items", "type": "object", "required": ["type"], "properties": { "type": { "$id": "#root/spell/items/duration/items/type", "title": "Type", "type": "string", "enum": ["timed", "permanent", "special", "instant"], "default": "", "examples": ["instant"], "pattern": "^.*$" } } } }, "concentration": { "$id": "#root/spell/items/concentration", "title": "Concentration", "type": "boolean", "default": false }, "desc": { "$id": "#root/spell/items/desc", "title": "Desc", "type": "array", "default": [], "items": { "$id": "#root/spell/items/desc/items", "title": "Items", "type": "string", "description": "A description for the entry. Do not copy-paste gameplay infos to prevent copyright", "default": "", "examples": [ "A shimmering green arrow streaks toward a target within range and bursts in a spray of acid." ], "pattern": "^.*$" } }, "damageInflict": { "$id": "#root/spell/items/damageInflict", "title": "Damageinflict", "type": "array", "default": [], "items": { "$id": "#root/spell/items/damageInflict/items", "title": "Items", "type": "string", "default": "", "examples": ["acid"], "pattern": "^.*$" } }, "savingThrow": { "$id": "#root/spell/items/savingThrow", "title": "Savingthrow", "description": "array of saving Throw available", "type": "array", "default": [], "items": { "$id": "#root/spell/items/savingThrow/items", "title": "Items", "type": "string", "default": "", "enum": ["Dex", "Str", "Sag", "Cha", "Int", "Con"], "examples": [""], "pattern": "^.*$", "minItems": 1, "uniqueItems": true } }, "miscTags": { "$id": "#root/spell/items/miscTags", "title": "Misctags", "type": "array", "default": [], "items": { "$id": "#root/spell/items/miscTags/items", "title": "Items", "type": "string", "default": "", "examples": [""], "pattern": "^.*$" } }, "areaTags": { "$id": "#root/spell/items/areaTags", "title": "Areatags", "type": "array", "default": [], "items": { "$id": "#root/spell/items/areaTags/items", "title": "Items", "type": "string", "default": "", "examples": [""], "pattern": "^.*$" } } } } } } }