addedInput schema / $schema
Added value: +"http://json-schema.org/draft-07/schema#"
addedInput schema / additionalProperties
Added value: +{}
addedInput schema / properties / actions
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "_item": {
+ "description": "Optional back-reference to the Vault Item this action was built from.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "_rule": {
+ "description": "Optional back-reference to the Vault Rule this action was built from.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "_spell": {
+ "description": "Optional back-reference to the Vault Spell this action was built from.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "actions": {
+ "description": "PF Playtest action-economy marker (F/1/2/3/R).",
+ "type": "string"
+ },
+ "attack": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "description": "Ability driving the to-hit roll (e.g. 'strength', 'charisma' for spell attacks).",
+ "type": "string"
+ },
+ "magic": {
+ "type": "number"
+ },
+ "misc": {
+ "type": "number"
+ },
+ "proficiency": {
+ "type": "number"
+ },
+ "skill": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "damage": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "description": "Ability whose modifier is added to damage.",
+ "type": "string"
+ },
+ "critical": {
+ "type": "string"
+ },
+ "dice": {
+ "description": "Base damage dice expression (e.g. '2d8'). Additional damage types live in `description` per Rule 11.",
+ "type": "string"
+ },
+ "magic": {
+ "type": "number"
+ },
+ "misc": {
+ "type": "number"
+ },
+ "type": {
+ "description": "Damage type ('piercing', 'fire', etc.). Source-exact, capitalize if the source does.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "description": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "proficient": {
+ "type": "boolean"
+ },
+ "range": {
+ "type": "string"
+ },
+ "rof": {
+ "description": "Savage Worlds Rate of Fire.",
+ "type": "number"
+ },
+ "summary": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Action type. 5e24 uses 'Melee' / 'Range' / 'Special' / 'Reaction' / 'Legendary' / 'Bonus'.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / active
Added value: +{
+ "type": "boolean"
+}
addedInput schema / properties / aspects
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "kind": {
+ "description": "One of 'high concept', 'trouble', 'character', 'consequence'.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The aspect's phrase. A consequence slot carries its cost while blank.",
+ "type": "string"
+ },
+ "shifts": {
+ "description": "Consequence/condition slots only: harm absorbed. Fate: 2 Mild, 4 Moderate, 6 Severe, 8 Extreme (Fate Accelerated omits Extreme). Demon Hunters conditions: 5 Mild, 10 Moderate, 15 Severe.",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / attributes
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "misc": {
+ "description": "Misc bonus on the save (5e/5e24). Used for high-PB monster compensation.",
+ "type": "number"
+ },
+ "name": {
+ "description": "Ability name: strength / dexterity / constitution / intelligence / wisdom / charisma. Lowercase.",
+ "type": "string"
+ },
+ "proficient": {
+ "description": "Save proficiency flag (5e/5e24). When true, PB is added to the save.",
+ "type": "boolean"
+ },
+ "score": {
+ "description": "Raw ability score (e.g. 17). Modifier is derived by the sheet.",
+ "type": "number"
+ },
+ "temp": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / core
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "age": {
+ "type": "string"
+ },
+ "alignment": {
+ "type": "string"
+ },
+ "ancestry": {
+ "type": "string"
+ },
+ "background": {
+ "type": "string"
+ },
+ "baseAttackBonus": {
+ "type": "number"
+ },
+ "charisma": {
+ "type": "string"
+ },
+ "class": {
+ "description": "Character class as free-form text. PCs use a Class rule via rules[]; this field is the display string.",
+ "type": "string"
+ },
+ "cr": {
+ "type": "string"
+ },
+ "deity": {
+ "type": "string"
+ },
+ "experience": {
+ "description": "Character-level XP (no commas). For monsters, the value from the CR→level XP table.",
+ "type": "string"
+ },
+ "eyes": {
+ "type": "string"
+ },
+ "gender": {
+ "type": "string"
+ },
+ "hair": {
+ "type": "string"
+ },
+ "height": {
+ "type": "string"
+ },
+ "homeland": {
+ "type": "string"
+ },
+ "languages": {
+ "type": "string"
+ },
+ "proficiencies": {
+ "type": "string"
+ },
+ "pronouns": {
+ "description": "The character's pronouns as free-form text (e.g. 'she/her', 'they/them').",
+ "type": "string"
+ },
+ "race": {
+ "description": "Creature type for monsters (e.g. 'Elemental', 'Humanoid', 'Dragon (Chromatic)'); race for PCs.",
+ "type": "string"
+ },
+ "refresh": {
+ "description": "Session-start resource: fate points (Fate — Refresh) or faith dice (Demon Hunters — Devotion). The total the character resets to at the start of a session.",
+ "type": "number"
+ },
+ "size": {
+ "description": "Creature size. Exact source text including 'or' for variable sizes ('Medium or Small').",
+ "type": "string"
+ },
+ "skin": {
+ "type": "string"
+ },
+ "spellCastingAttribute": {
+ "type": "string"
+ },
+ "weight": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / dead
Added value: +{
+ "type": "boolean"
+}
addedInput schema / properties / defense
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "armorClass": {
+ "additionalProperties": {},
+ "description": "Layered AC rows the sheet sums. IMPORTANT (5e24): when the character's `settings.autoPassiveBonuses` is true — the default for new 5e24 characters — the `armor` and `shield` rows are DERIVED from equipped items and recomputed on every sheet load, so writing them here gets overwritten. Change AC by setting `equipped: true/false` on the character's armor/shield items instead. When the toggle is false (and on all other rulesets), these rows are manually authored and writing them here is correct. `magic` and `misc` are manual in both modes. Check the toggle with vault_get_character before writing.",
+ "properties": {
+ "armor": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "description": "Base AC value the sheet adds DEX to. See the 5e24 monster guide Rule 1 for the math.",
+ "type": "number"
+ },
+ "checkPenalty": {
+ "type": "number"
+ },
+ "description": {
+ "description": "Armor name ('Natural Armor', 'Chain Shirt') or null when AC derives from DEX only.",
+ "type": "string"
+ },
+ "heavy": {
+ "description": "True suppresses DEX contribution entirely (heavy armor).",
+ "type": "boolean"
+ },
+ "maxDex": {
+ "type": "number"
+ },
+ "medium": {
+ "description": "True caps DEX contribution to +2 (medium armor).",
+ "type": "boolean"
+ },
+ "proficiency": {
+ "type": "number"
+ },
+ "speed": {
+ "type": "string"
+ },
+ "speedPenalty": {
+ "type": "string"
+ },
+ "spellFail": {
+ "type": "string"
+ },
+ "touchBonus": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "arms": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "deflection": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "dodge": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "head": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "legs": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "magic": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "misc": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "natural": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "shield": {
+ "additionalProperties": {},
+ "properties": {
+ "bonus": {
+ "type": "number"
+ },
+ "checkPenalty": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ },
+ "maxDex": {
+ "type": "number"
+ },
+ "proficiency": {
+ "type": "number"
+ },
+ "raised": {
+ "type": "boolean"
+ },
+ "spellFail": {
+ "type": "number"
+ },
+ "touchBonus": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "damageReduction": {
+ "type": "string"
+ },
+ "deathSaves": {
+ "additionalProperties": {},
+ "properties": {
+ "failures": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "successes": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "dying": {
+ "additionalProperties": {},
+ "properties": {
+ "current": {
+ "type": "number"
+ },
+ "wounds": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "exhaustion": {
+ "description": "5e24 Exhaustion level (0-6). Absent = 0 (not exhausted). Each level is -2 to d20 Tests and -5 ft Speed; level 6 = death. A Long Rest via the vault rest control reduces it by 1.",
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "health": {
+ "additionalProperties": {},
+ "properties": {
+ "fatigue": {
+ "type": "number"
+ },
+ "incapacitated": {
+ "type": "boolean"
+ },
+ "wounds": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "hitDice": {
+ "additionalProperties": {},
+ "properties": {
+ "current": {
+ "description": "Unspent hit dice count. When `pools` is present (5e24 class characters), this is the derived sum of pool currents — keep it consistent with pools on write.",
+ "type": "number"
+ },
+ "dice": {
+ "description": "Without `pools` (monsters, non-5e24): per-die expression, NOT the multiplied total — size-mapped Tiny d4 / Small d6 / Medium d8 / Large d10 / Huge d12 / Gargantuan d20, see monster guide Rule 20. When `pools` is present (5e24 class characters): the derived compound string ('5d10 + 5d6') — keep it consistent with pools on write.",
+ "type": "string"
+ },
+ "pools": {
+ "description": "5e24 per-die-size Hit Dice pools — the AUTHORITATIVE representation (one entry per die size a multiclass character has). Maintained by creation, level-up, and a one-shot backfill; player edits win. The server does NOT re-derive the legacy fields on write, so when writing hit dice for a character with pools, write pools AND the legacy current/dice consistently (current = sum of pool currents; dice = compound string).",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "current": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "dice": {
+ "description": "Die size of this pool, e.g. 'd10'.",
+ "type": "string"
+ },
+ "maximum": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "hitPoints": {
+ "additionalProperties": {},
+ "properties": {
+ "current": {
+ "type": "number"
+ },
+ "maximum": {
+ "type": "number"
+ },
+ "temp": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "parryBonus": {
+ "type": "number"
+ },
+ "savingThrows": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "type": "string"
+ },
+ "base": {
+ "type": "number"
+ },
+ "magic": {
+ "type": "number"
+ },
+ "misc": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "proficiency": {
+ "type": "number"
+ },
+ "temp": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "spellResistance": {
+ "type": "string"
+ },
+ "toughnessBonus": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / description
Added value: +{
+ "type": "string"
+}
addedInput schema / properties / image
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "url": {
+ "description": "Image URL hosted on Embers Images (or any addressable HTTPS URL).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / items
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "_ref": {
+ "description": "Mongo `_id` reference (24-character hex string).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "armorCategory": {
+ "type": "string"
+ },
+ "armorClass": {
+ "type": "number"
+ },
+ "carried": {
+ "type": "boolean"
+ },
+ "cost": {
+ "type": "number"
+ },
+ "damageDice": {
+ "type": "string"
+ },
+ "damageType": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "detail": {
+ "type": "string"
+ },
+ "equipSlot": {
+ "type": "string"
+ },
+ "equipSlots": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "equipped": {
+ "description": "Monsters: ALWAYS false. Never set equipped/equipSlot on a monster's items.",
+ "type": "boolean"
+ },
+ "image": {
+ "additionalProperties": {},
+ "properties": {
+ "url": {
+ "description": "Image URL hosted on Embers Images (or any addressable HTTPS URL).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "mastery": {
+ "type": "string"
+ },
+ "maxDexModifier": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "properties": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "ammoType": {
+ "type": "string"
+ },
+ "damage": {
+ "type": "string"
+ },
+ "display": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "range": {
+ "additionalProperties": {},
+ "properties": {
+ "long": {
+ "type": "number"
+ },
+ "normal": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "quantity": {
+ "type": "number"
+ },
+ "sourceSpell": {
+ "description": "Auto-managed. Link to the spell that manufactured this companion armor item (e.g. Mage Armor, which the vault sheet offers as an equippable Light armor). The sheet sets and maintains it; if it's present on an item you're editing, preserve it verbatim, and never set, change, or invent it. Dropping it on a round-trip de-links the companion and leaves a duplicate item on the sheet.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "stealthDisadvantage": {
+ "type": "boolean"
+ },
+ "stock": {
+ "type": "boolean"
+ },
+ "strengthRequirement": {
+ "type": "number"
+ },
+ "summary": {
+ "type": "string"
+ },
+ "twoHandedGrip": {
+ "type": "boolean"
+ },
+ "type": {
+ "type": "string"
+ },
+ "weaponType": {
+ "type": "string"
+ },
+ "weight": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / name
Added value: +{
+ "description": "Character name. Required.",
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / notes
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "description": {
+ "description": "Note body. Free-form markdown.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Note title. Used as the visible heading on the character sheet.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / offense
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "initiative": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "description": "Ability whose modifier drives initiative. Typically 'dexterity'.",
+ "type": "string"
+ },
+ "misc": {
+ "description": "Misc bonus added to initiative beyond the attribute modifier.",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "perception": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "type": "string"
+ },
+ "misc": {
+ "type": "number"
+ },
+ "proficiency": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "spellCasting": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "type": "string"
+ },
+ "misc": {
+ "type": "number"
+ },
+ "proficiency": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / personality
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "bonds": {
+ "type": "string"
+ },
+ "flaws": {
+ "type": "string"
+ },
+ "ideals": {
+ "type": "string"
+ },
+ "traits": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / rules
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "_ref": {
+ "description": "Master Rule ObjectId. Present when the snapshot points at a Vault Rule (PC catalog content); null on stock-monster-style inline rules.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "actions": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "detail": {
+ "type": "string"
+ },
+ "level": {
+ "description": "Per-instance class level (this character's level in this class) — only meaningful on a Class snapshot. Stored and read directly, never derived; total character level stays XP-derived. Absent on non-Class snapshots.",
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "statBonuses": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "description": "For valueType: 'attribute' — which ability's modifier to use.",
+ "type": "string"
+ },
+ "audience": {
+ "description": "Who the bonus contributes to. Absent = self.",
+ "enum": [
+ "self",
+ "ally",
+ "any",
+ "target",
+ "enemy"
+ ],
+ "type": "string"
+ },
+ "dice": {
+ "description": "For valueType: 'dice' — dice expression (e.g. '1d4').",
+ "type": "string"
+ },
+ "durationCount": {
+ "description": "Numeric count paired with durationUnit (e.g. count: 3, unit: 'round').",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "durationUnit": {
+ "description": "How long the bonus persists once fired. Only meaningful for event-driven bonuses.",
+ "enum": [
+ "instantaneous",
+ "untilStartOfNextTurn",
+ "untilEndOfNextTurn",
+ "round",
+ "minute",
+ "hour",
+ "untilShortRest",
+ "untilLongRest"
+ ],
+ "type": "string"
+ },
+ "fixed": {
+ "description": "For valueType: 'fixed' — the literal numeric contribution.",
+ "type": "number"
+ },
+ "progression": {
+ "description": "For valueType: 'byLevel' — per-level rows; walker picks the row with level <= current level.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "dice": {
+ "type": "string"
+ },
+ "flat": {
+ "type": "number"
+ },
+ "level": {
+ "maximum": 20,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "range": {
+ "description": "Aura radius in feet for ally/any-audience bonuses (Aura of Protection's 10 ft.). Absent = no range filter.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "requires": {
+ "description": "Optional predicate list that gates this bonus. Absent / empty = always-on.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "armorCategories": {
+ "description": "For 'equipped' + slot:armor: armor category list (Light / Medium / Heavy). OR semantics — match any.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "condition": {
+ "description": "For 'condition' predicates: the character-state condition to gate on (5e24 named conditions and ongoing-action states).",
+ "enum": [
+ "blinded",
+ "charmed",
+ "dazed",
+ "deafened",
+ "exhaustion",
+ "frightened",
+ "grappled",
+ "incapacitated",
+ "invisible",
+ "paralyzed",
+ "petrified",
+ "poisoned",
+ "prone",
+ "restrained",
+ "stunned",
+ "unconscious",
+ "concentrating",
+ "grappling",
+ "dodging",
+ "hiding",
+ "raging"
+ ],
+ "type": "string"
+ },
+ "equipSlot": {
+ "description": "Body slot the matched weapon must occupy. mainHand / offHand. Resolved via getRequiredSlots so two-handed grips occupy both.",
+ "enum": [
+ "mainHand",
+ "offHand"
+ ],
+ "type": "string"
+ },
+ "negate": {
+ "description": "true inverts the predicate — 'while NOT matching' instead of 'while matching'.",
+ "type": "boolean"
+ },
+ "slot": {
+ "description": "For 'equipped' predicates: the body category to match (armor / shield / weapon).",
+ "enum": [
+ "armor",
+ "shield",
+ "weapon"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "Predicate type. 'equipped' = character-scoped (gates on what's equipped). 'attackingWeapon' = attack-scoped (gates on the current action's source weapon). 'condition' = gates on a character-state condition.",
+ "enum": [
+ "equipped",
+ "attackingWeapon",
+ "condition"
+ ],
+ "type": "string"
+ },
+ "weaponProperties": {
+ "description": "For 'equipped' + slot:weapon OR 'attackingWeapon': weapon-property list. AND semantics — match all.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "requiresLogic": {
+ "description": "How `requires` predicates compose. 'and' (default) = ALL must hold. 'or' = ANY one is sufficient.",
+ "enum": [
+ "and",
+ "or"
+ ],
+ "type": "string"
+ },
+ "target": {
+ "description": "Stat the bonus contributes to (e.g. 'skills.Acrobatics.misc', 'attributes.strength.misc').",
+ "type": "string"
+ },
+ "trigger": {
+ "description": "Action-economy / cost shape of the bonus. passive / toggled / reaction / perRoll / resource / targetBound.",
+ "enum": [
+ "passive",
+ "toggled",
+ "reaction",
+ "perRoll",
+ "resource",
+ "targetBound"
+ ],
+ "type": "string"
+ },
+ "triggerEvent": {
+ "description": "Game-time event that fires the bonus (onHit / onDamage / startOfYourTurn / etc.). Absent = not event-driven (passive walker contributes whenever `requires` holds).",
+ "enum": [
+ "onHit",
+ "onMiss",
+ "onDamage",
+ "startOfYourTurn",
+ "endOfYourTurn",
+ "startOfTargetTurn",
+ "endOfTargetTurn"
+ ],
+ "type": "string"
+ },
+ "types": {
+ "description": "Damage type tags for damage.* targets. No-op for non-damage targets.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "valueType": {
+ "description": "How the contribution is computed. 'fixed' uses `fixed`; 'attribute' uses the mod of `attribute`; 'attackAttribute' uses the action's attack-roll ability (per-attack only); others scale by level/PB/dice.",
+ "enum": [
+ "fixed",
+ "attribute",
+ "proficiency",
+ "level",
+ "halfLevel",
+ "dice",
+ "byLevel",
+ "attackAttribute"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "stock": {
+ "type": "boolean"
+ },
+ "summary": {
+ "type": "string"
+ },
+ "type": {
+ "description": "Rule type (Ability / Feat / Class / Background / etc.). Vault validates against its rulestype enum on save.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / ruleset
Added value: +{
+ "description": "Ruleset code (e.g. '5th Edition', '5e24', 'PFRPG', 'Savage Worlds'). Required. Restricted rulesets require an entitlement grant on the account — vault answers 403 for ungranted or unknown codes. Check list_rulesets for the codes this account can use.",
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / settings
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "autoPassiveBonuses": {
+ "description": "When true, the per-character rules engine layer contributes statBonuses from rules / items / feats. On 5e24 it ALSO derives the armor/shield rows of defense.armorClass from equipped items, recomputed on every sheet load — manual writes to those rows do not stick while this is true. Monsters should set this to false.",
+ "type": "boolean"
+ },
+ "hiddenSections": {
+ "description": "Sheet-section keys the player chose to hide while the section is empty ('spells', 'abilities', 'feats', 'origin', 'actionCards', 'hindrances', 'edges', 'stunts', 'extras'). A section with content always renders regardless of this list — the preference means 'hide when empty', never 'hide my data'.",
+ "items": {
+ "maxLength": 64,
+ "type": "string"
+ },
+ "maxItems": 20,
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / skills
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "attribute": {
+ "type": "string"
+ },
+ "classSkill": {
+ "type": "boolean"
+ },
+ "description": {
+ "type": "string"
+ },
+ "expertise": {
+ "type": "boolean"
+ },
+ "misc": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "passiveMisc": {
+ "type": "number"
+ },
+ "proficiency": {
+ "type": "number"
+ },
+ "proficient": {
+ "type": "boolean"
+ },
+ "ranks": {
+ "type": "number"
+ },
+ "rating": {
+ "description": "Fate: ladder position, -2 (Terrible) to +8 (Legendary); also an FAE approach's rating. Demon Hunters: the trait's die size (4, 6, 8, 10, or 12), or 0 for an unrated Fringe discipline.",
+ "type": "number"
+ },
+ "score": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / speed
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "base": {
+ "description": "Walking speed in feet.",
+ "type": "number"
+ },
+ "burrow": {
+ "type": "number"
+ },
+ "climb": {
+ "type": "number"
+ },
+ "fly": {
+ "type": "number"
+ },
+ "swim": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / spells
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "_ref": {
+ "description": "Mongo `_id` reference (24-character hex string).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "actions": {
+ "type": "string"
+ },
+ "atWill": {
+ "description": "Free-cast budget. true = the spell casts without a slot an unlimited number of times (rendered as an 'at will' badge, no use counter); a finite free cast uses maximum/current instead. Absent = an ordinary spell.",
+ "type": "boolean"
+ },
+ "castingAbility": {
+ "description": "Per-spell spellcasting-ability override (lowercase), stamped at build from the granting block's castingAbility / the player's pick. The sheet computes THIS spell's save DC / attack bonus from it. Absent = the spell uses the character-wide casting ability.",
+ "enum": [
+ "strength",
+ "dexterity",
+ "constitution",
+ "intelligence",
+ "wisdom",
+ "charisma"
+ ],
+ "type": "string"
+ },
+ "current": {
+ "type": "number"
+ },
+ "description": {
+ "type": "string"
+ },
+ "detail": {
+ "type": "string"
+ },
+ "level": {
+ "type": "number"
+ },
+ "maximum": {
+ "type": "number"
+ },
+ "name": {
+ "type": "string"
+ },
+ "prepared": {
+ "type": "boolean"
+ },
+ "rank": {
+ "type": "string"
+ },
+ "recovery": {
+ "description": "Per-rest recovery rows for a finite free-cast counter, stamped from the granting rule's freeCast.recovery whenever the counter is created or grown (creation build and level-up). The vault rest control refills the counter from these when the player declares a Short/Long rest. Absent = the counter doesn't refresh on rest.",
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "on": {
+ "enum": [
+ "Short",
+ "Long"
+ ],
+ "type": "string"
+ },
+ "restoreAll": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "school": {
+ "type": "string"
+ },
+ "stock": {
+ "type": "boolean"
+ },
+ "summary": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / stress
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "boxes": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "marked": {
+ "type": "boolean"
+ },
+ "value": {
+ "description": "Shifts this box absorbs. Stated per box, not implied by its position.",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Track name — 'Physical Stress' / 'Mental Stress' in Fate Core, 'Stress' in Fate Accelerated.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / trackables
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "_rule": {
+ "description": "Mongo `_id` reference (24-character hex string).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "_spell": {
+ "description": "The Spell this trackable is a free-cast budget for (a spell grant's `freeCast`). Present means 'N casts of this spell without a slot'; the sheet surfaces it on that spell. Absent on every other trackable.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "current": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "description": {
+ "type": "string"
+ },
+ "maximum": {
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "name": {
+ "type": "string"
+ },
+ "recovery": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "count": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "on": {
+ "enum": [
+ "Short",
+ "Long"
+ ],
+ "type": "string"
+ },
+ "restoreAll": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "slotLevel": {
+ "description": "Spell-slot level of this pool (Pact Magic: one pool whose level rises with character level), stamped at build from the granting rule's uses[].slotLevel. The sheet shows it on the trackable row ('Level N'). Absent = an ordinary counter.",
+ "maximum": 9,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "type": {
+ "description": "'number' (counter) or 'checkboxes' (filled boxes). Defaults to 'number'.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / type
Added value: +{
+ "description": "Character type. Free-form per ruleset. Set to 'monster' (lowercase) to mark an authored monster; vault's character list endpoint filters that value out of the default catalog view.",
+ "type": "string"
+}
addedInput schema / required
Added value: +[
+ "name",
+ "ruleset"
+]