{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://lottiefiles.github.io/lottie-docs/schema/lottie.schema.json", "type": "object", "allOf": [ { "$ref": "#/$defs/animation" } ], "$defs": { "animated-property": { "type": "object", "title": "Animated Property", "description": "An animatable property that holds an array of numbers", "allOf": [ { "properties": { "ix": { "title": "Property Index", "type": "integer" }, "a": { "title": "Animated", "description": "Whether the property is animated", "$ref": "#/$defs/int-boolean", "default": 0 }, "x": { "title": "Expression", "type": "string" }, "sid": { "title": "Slot ID", "description": "One of the ID in the file's slots", "type": "string" } } }, { "if": { "properties": { "a": { "const": 1 } } }, "then": { "properties": { "k": { "type": "array", "title": "Animated Value", "description": "Array of keyframes", "items": { "$ref": "#/$defs/keyframe" } } } } } ], "required": [ "k" ] }, "color-value": { "type": "object", "title": "Color Value", "description": "An animatable property that holds a Color", "allOf": [ { "$ref": "#/$defs/animated-property" }, { "if": { "properties": { "a": { "const": 0 } } }, "then": { "properties": { "k": { "title": "Static value", "$ref": "#/$defs/color" } } } } ] }, "shape-keyframe": { "type": "object", "title": "Shape Keyframe", "description": "Keyframe holding Bezier objects", "allOf": [ { "$ref": "#/$defs/keyframe-base" }, { "type": "object", "properties": { "s": { "title": "Start", "type": "array", "items": { "$ref": "#/$defs/bezier" } } } } ] }, "multi-dimensional": { "type": "object", "title": "Multi Dimensional", "description": "An animatable property that holds an array of numbers", "allOf": [ { "$ref": "#/$defs/animated-property" }, { "if": { "properties": { "a": { "const": 0 } } }, "then": { "properties": { "k": { "title": "Static value", "type": "array", "items": { "type": "number" } } } }, "properties": { "l": { "title": "Length", "description": "Number of components in the value arrays.\nIf present values will be truncated or expanded to match this length when accessed from expressions.", "type": "integer" } } } ] }, "keyframe-base": { "type": "object", "title": "Base Keyframe", "description": "A Keyframes specifies the value at a specific time and the interpolation function to reach the next keyframe.", "allOf": [ { "properties": { "t": { "title": "Time", "type": "number", "default": 0 }, "h": { "title": "Hold", "$ref": "#/$defs/int-boolean", "default": 0 } } }, { "if": { "oneOf": [ { "properties": { "h": { "const": 0 } } }, { "not": { "required": [ "h" ] } } ] }, "then": { "properties": { "i": { "title": "In Tangent", "description": "Easing tangent going into the next keyframe", "$ref": "#/$defs/keyframe-bezier-handle" }, "o": { "title": "Out Tangent", "description": "Easing tangent leaving the current keyframe", "$ref": "#/$defs/keyframe-bezier-handle" } } } } ], "required": [ "t", "s" ] }, "shape-property": { "type": "object", "title": "Shape Property", "description": "An animatable property that holds a Bezier", "allOf": [ { "properties": { "ix": { "title": "Property Index", "type": "integer" }, "a": { "title": "Animated", "description": "Whether the property is animated", "$ref": "#/$defs/int-boolean", "default": 0 }, "x": { "title": "Expression", "type": "string" } } }, { "if": { "properties": { "a": { "const": 1 } } }, "then": { "properties": { "k": { "type": "array", "title": "Animated Value", "description": "Array of keyframes", "items": { "$ref": "#/$defs/shape-keyframe" } } } }, "else": { "properties": { "k": { "$ref": "#/$defs/bezier", "title": "Static Value" } } } } ], "required": [ "k" ] }, "keyframe": { "type": "object", "title": "Keyframe", "description": "A Keyframes specifies the value at a specific time and the interpolation function to reach the next keyframe.", "allOf": [ { "$ref": "#/$defs/keyframe-base" }, { "properties": { "s": { "title": "Value", "description": "Value at this keyframe. Note the if the property is a scalar, keyframe values are still represented as arrays", "type": "array", "items": { "type": "number" } }, "e": { "title": "End value", "description": "Value at the end of the keyframe, note that this is deprecated and you should use `s` from the next keyframe to get this value", "deprecated": true, "type": "array", "items": { "type": "number" } } } }, { "if": { "oneOf": [ { "properties": { "h": { "const": 0 } } }, { "not": { "required": [ "h" ] } } ] }, "then": { "properties": { "i": { "title": "In Tangent", "description": "Easing tangent going into the next keyframe", "$ref": "#/$defs/keyframe-bezier-handle" }, "o": { "title": "Out Tangent", "description": "Easing tangent leaving the current keyframe", "$ref": "#/$defs/keyframe-bezier-handle" } } } } ], "required": [ "t", "s" ] }, "position": { "type": "object", "title": "Position Property", "description": "An animatable property to represent a position in space", "allOf": [ { "properties": { "ix": { "title": "Property Index", "type": "integer" }, "a": { "title": "Animated", "description": "Whether the property is animated", "$ref": "#/$defs/int-boolean", "default": 0 }, "x": { "title": "Expression", "type": "string" }, "l": { "title": "Length", "description": "Number of components in the value arrays.\nIf present values will be truncated or expanded to match this length when accessed from expressions.", "type": "integer" } } }, { "if": { "properties": { "a": { "const": 1 } } }, "then": { "properties": { "k": { "type": "array", "title": "Animated Value", "description": "Array of keyframes", "items": { "$ref": "#/$defs/position-keyframe" } } } }, "else": { "properties": { "k": { "title": "Static Value", "type": "array", "items": { "type": "number" } } } } } ], "required": [ "k" ] }, "keyframe-bezier-handle": { "type": "object", "title": "Keyframe Bezier Handle", "description": "Bezier handle for keyframe interpolation", "properties": { "x": { "title": "X", "description": "Time component:\n0 means start time of the keyframe,\n1 means time of the next keyframe.", "oneOf": [ { "type": "array", "items": { "type": "number", "default": 0, "minimum": 0, "maximum": 1 }, "minItems": 1 }, { "type": "number", "default": 0, "minimum": 0, "maximum": 1 } ] }, "y": { "title": "Y", "description": "Value interpolation component:\n0 means start value of the keyframe,\n1 means value at the next keyframe.", "oneOf": [ { "type": "array", "items": { "type": "number", "default": 0, "minimum": 0, "maximum": 1 }, "minItems": 1 }, { "type": "number", "default": 0, "minimum": 0, "maximum": 1 } ] } }, "required": [ "x", "y" ] }, "gradient-colors": { "type": "object", "title": "Gradient Colors", "description": "Represents colors and offsets in a gradient\n\nColors are represented as a flat list interleaving offsets and color components in weird ways\nThere are two possible layouts:\n\nWithout alpha, the colors are a sequence of offset, r, g, b\n\nWith alpha, same as above but at the end of the list there is a sequence of offset, alpha", "properties": { "k": { "title": "Colors", "$ref": "#/$defs/multi-dimensional" }, "p": { "title": "Count", "description": "Number of colors in `k`", "type": "integer", "default": 0 } }, "required": [ "p", "k" ] }, "split-vector": { "type": "object", "title": "Split Vector", "description": "An animatable property that is split into individually anaimated components", "properties": { "s": { "title": "Split", "type": "boolean", "const": true }, "x": { "title": "X", "$ref": "#/$defs/value" }, "y": { "title": "Y", "$ref": "#/$defs/value" }, "z": { "title": "Z", "$ref": "#/$defs/value" } }, "required": [ "s", "x", "y" ] }, "value": { "type": "object", "title": "Value", "description": "An animatable property that holds a float", "allOf": [ { "$ref": "#/$defs/animated-property" }, { "if": { "properties": { "a": { "const": 0 } } }, "then": { "properties": { "k": { "title": "Static value", "type": "number" } } } } ] }, "position-keyframe": { "type": "object", "title": "Position Keyframe", "allOf": [ { "$ref": "#/$defs/keyframe" }, { "properties": { "ti": { "title": "Value In Tangent", "description": "Tangent for values (eg: moving position around a curved path)", "type": "array", "items": { "type": "number" } }, "to": { "title": "Value Out Tangent", "description": "Tangent for values (eg: moving position around a curved path)", "type": "array", "items": { "type": "number" } } } } ] } , "motion-blur": { "type": "object", "title": "Motion Blur", "description": "Motion blur settings", "properties": { "sa": { "title": "Shutter Angle", "description": "Angle in degrees", "type": "number" }, "sp": { "title": "Shutter Phase", "description": "Angle in degrees", "type": "number" }, "spf": { "title": "Samples per Frame", "type": "number" }, "asl": { "title": "Adaptive Sample Limit", "type": "number" } } }, "animation": { "type": "object", "title": "Animation", "description": "Top level object, describing the animation", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "v": { "title": "Version", "type": "string", "default": "5.5.2" }, "fr": { "title": "Framerate", "description": "Framerate in frames per second", "type": "number", "default": 60 }, "ip": { "title": "In Point", "description": "\"In Point\", which frame the animation starts at (usually 0)", "type": "number", "default": 0 }, "op": { "title": "Out Point", "description": "\"Out Point\", which frame the animation stops/loops at, which makes this the duration in frames when `ip` is 0", "type": "number", "default": 60 }, "w": { "title": "Width", "description": "Width of the animation", "type": "integer", "default": 512 }, "h": { "title": "Height", "description": "Height of the animation", "type": "integer", "default": 512 }, "ddd": { "title": "Threedimensional", "$ref": "#/$defs/int-boolean", "default": 0, "description": "Whether the animation has 3D layers" }, "assets": { "title": "Assets", "type": "array", "description": "List of assets that can be referenced by layers", "items": { "oneOf": [ { "$ref": "#/$defs/image" }, { "$ref": "#/$defs/precomposition" }, { "$ref": "#/$defs/sound" }, { "$ref": "#/$defs/data-source" } ] } }, "comps": { "title": "Extra Compositions", "type": "array", "description": "List of Extra compositions not referenced by anything", "items": { "$ref": "#/$defs/precomposition" } }, "fonts": { "title": "Fonts", "$ref": "#/$defs/font-list" }, "chars": { "title": "Characters", "description": "Data defining text characters as lottie shapes. If present a player might only render characters defined here and nothing else.", "type": "array", "items": { "$ref": "#/$defs/character-data" } }, "meta": { "title": "Metadata", "description": "Document metadata", "$ref": "#/$defs/metadata" }, "metadata": { "title": "User Metadata", "$ref": "#/$defs/user-metadata" }, "markers": { "title": "Markers", "description": "Markers defining named sections of the composition.", "type": "array", "items": { "$ref": "#/$defs/marker" } }, "mb": { "title": "Motion Blur", "$ref": "#/$defs/motion-blur" }, "slots": { "title": "Slots", "description": "Available property overrides", "type": "object", "patternProperties": { ".*": { "anyOf": [ { "$ref": "#/$defs/multi-dimensional" }, { "$ref": "#/$defs/color-value" }, { "$ref": "#/$defs/position" }, { "$ref": "#/$defs/shape-property" }, { "$ref": "#/$defs/value" } ] } } } }, "required": [ "w", "h", "fr", "layers", "op", "ip" ] }, { "$ref": "#/$defs/composition" } ] }, "user-metadata": { "type": "object", "title": "User Metadata", "description": "User-defined metadata", "properties": { "filename": { "title": "Filename", "type": "string" }, "customProps": { "title": "Custom Properties", "type": "object" } } }, "composition": { "type": "object", "title": "Composition", "description": "Base class for layer holders", "properties": { "layers": { "title": "Layers", "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/precomposition-layer" }, { "$ref": "#/$defs/solid-color-layer" }, { "$ref": "#/$defs/image-layer" }, { "$ref": "#/$defs/null-layer" }, { "$ref": "#/$defs/shape-layer" }, { "$ref": "#/$defs/text-layer" }, { "$ref": "#/$defs/audio-layer" }, { "$ref": "#/$defs/camera-layer" }, { "$ref": "#/$defs/data-layer" } ] } } }, "required": [ "layers" ] }, "metadata": { "type": "object", "title": "Metadata", "description": "Document metadata", "properties": { "a": { "title": "Author", "type": "string" }, "d": { "title": "Description", "type": "string" }, "tc": { "title": "Theme Color", "type": "string" }, "g": { "title": "Generator", "description": "Software used to generate the file", "type": "string" } }, "anyOf": [ { "properties": { "k": { "title": "Keywords", "type": "array", "items": { "type": "string" } } } }, { "properties": { "k": { "title": "Keywords", "type": "string" } } } ] } , "sound": { "type": "object", "title": "Sound", "description": "External sound", "allOf": [ { "$ref": "#/$defs/file-asset" } ] }, "data-source": { "type": "object", "title": "Data source", "description": "External data source, usually a JSON file", "allOf": [ { "$ref": "#/$defs/file-asset" }, { "type": "object", "properties": { "t": { "title": "Type", "type": "integer", "const": 3 } }, "required": [ "t" ] } ] }, "asset": { "type": "object", "title": "Asset", "description": "", "allOf": [ { "type": "object", "properties": { "id": { "title": "ID", "description": "Unique identifier used by layers when referencing this asset", "type": "string", "default": "" }, "nm": { "title": "Name", "description": "Human readable name", "type": "string" } }, "required": [ "id" ] } ] }, "file-asset": { "type": "object", "title": "File Asset", "description": "Asset referencing a file", "allOf": [ { "$ref": "#/$defs/asset" }, { "type": "object", "properties": { "u": { "title": "Path", "description": "Path to the directory containing a file", "type": "string", "default": "" }, "p": { "title": "File name", "description": "Filename or data url", "type": "string", "default": "" }, "e": { "title": "Embedded", "description": "Whether the file is embedded", "$ref": "#/$defs/int-boolean", "default": 0 } }, "required": [ "p" ] } ] }, "image": { "type": "object", "title": "Image", "description": "External image", "allOf": [ { "$ref": "#/$defs/file-asset" }, { "type": "object", "properties": { "w": { "title": "Width", "description": "Width of the image", "type": "number", "default": 0 }, "h": { "title": "Height", "description": "Height of the image", "type": "number", "default": 0 }, "t": { "title": "Type", "description": "Marks as part of an image sequence if present", "type": "string", "const": "seq" }, "sid": { "title": "Slot ID", "description": "One of the ID in the file's slots", "type": "string" } }, "required": [ "p" ] } ] }, "precomposition": { "type": "object", "title": "Precomposition", "description": "Asset containing an animation that can be referenced by layers.", "allOf": [ { "$ref": "#/$defs/asset" }, { "$ref": "#/$defs/composition" }, { "type": "object", "properties": { "fr": { "title": "Framerate", "description": "Framerate in frames per second", "type": "number" }, "xt": { "title": "Extra", "description": "Extra composition", "$ref": "#/$defs/int-boolean", "default": 0 } } } ] } , "mask-mode": { "type": "string", "title": "Mask Mode", "description": "How masks interact with each other. See https://helpx.adobe.com/after-effects/using/alpha-channels-masks-mattes.html", "oneOf": [ { "title": "None", "const": "n" }, { "title": "Add", "const": "a" }, { "title": "Subtract", "const": "s" }, { "title": "Intersect", "const": "i" }, { "title": "Lighten", "const": "l" }, { "title": "Darken", "const": "d" }, { "title": "Difference", "const": "f" } ] }, "stroke-dash-type": { "type": "string", "title": "Stroke Dash Type", "description": "Type of a dash item in a stroked line", "oneOf": [ { "title": "Dash", "const": "d" }, { "title": "Gap", "const": "g" }, { "title": "Offset", "const": "o" } ] }, "line-join": { "type": "integer", "title": "Line Join", "description": "Style at a sharp corner of a stoked line", "oneOf": [ { "title": "Miter", "const": 1 }, { "title": "Round", "const": 2 }, { "title": "Bevel", "const": 3 } ] }, "fill-rule": { "type": "integer", "title": "Fill Rule", "description": "Rule used to handle multiple shapes rendered with the same fill object", "oneOf": [ { "title": "Non Zero", "description": "Everything is colored (You can think of this as an OR)", "const": 1 }, { "title": "Even Odd", "description": "Colored based on intersections and path direction, can be used to create \"holes\"", "const": 2 } ] }, "line-cap": { "type": "integer", "title": "Line Cap", "description": "Style at the end of a stoked line", "oneOf": [ { "title": "Butt", "const": 1 }, { "title": "Round", "const": 2 }, { "title": "Square", "const": 3 } ] }, "trim-multiple-shapes": { "type": "integer", "title": "Trim Multiple Shapes", "description": "How to handle multiple shapes in trim path", "oneOf": [ { "title": "Individually", "const": 1 }, { "title": "Simultaneously", "const": 2 } ] }, "font-path-origin": { "type": "integer", "title": "Font Path Origin", "description": "", "oneOf": [ { "title": "Local", "const": 0 }, { "title": "Css Url", "const": 1 }, { "title": "Script Url", "const": 2 }, { "title": "Font Url", "const": 3 } ] }, "text-justify": { "type": "integer", "title": "Text Justify", "description": "Text alignment / justification", "oneOf": [ { "title": "Left", "const": 0 }, { "title": "Right", "const": 1 }, { "title": "Center", "const": 2 }, { "title": "Justify with Last Line Left", "const": 3 }, { "title": "Justify with Last Line Right", "const": 4 }, { "title": "Justify with Last Line Center", "const": 5 }, { "title": "Justify with Last Line Full", "const": 6 } ] }, "text-shape": { "type": "integer", "title": "Text Shape", "description": "Defines the function used to determine the interpolating factor on a text range selector.", "oneOf": [ { "title": "Square", "const": 1 }, { "title": "Ramp Up", "const": 2 }, { "title": "Ramp Down", "const": 3 }, { "title": "Triangle", "const": 4 }, { "title": "Round", "const": 5 }, { "title": "Smooth", "const": 6 } ] }, "shape-direction": { "type": "integer", "title": "Shape Direction", "description": "Drawing direction of the shape curve, useful for trim path", "oneOf": [ { "title": "Normal", "description": "Usually clockwise", "const": 1 }, { "title": "Reversed", "description": "Usually counter clockwise", "const": 3 } ] }, "text-based": { "type": "integer", "title": "Text Based", "description": "", "oneOf": [ { "title": "Characters", "const": 1 }, { "title": "Character Excluding Spaces", "const": 2 }, { "title": "Words", "const": 3 }, { "title": "Lines", "const": 4 } ] }, "gradient-type": { "type": "integer", "title": "Gradient Type", "description": "Type of a gradient", "oneOf": [ { "title": "Linear", "type": "integer", "const": 1 }, { "title": "Radial", "type": "integer", "const": 2 } ] }, "matte-mode": { "type": "integer", "title": "Matte Mode", "description": "How a layer should mask another layer", "oneOf": [ { "title": "Normal", "const": 0 }, { "title": "Alpha", "const": 1 }, { "title": "Inverted Alpha", "const": 2 }, { "title": "Luma", "const": 3 }, { "title": "Inverted Luma", "const": 4 } ] }, "blend-mode": { "type": "integer", "title": "Blend Mode", "description": "Layer and shape blend mode", "caniuse": "blend-mode", "oneOf": [ { "title": "Normal", "const": 0 }, { "title": "Multiply", "const": 1 }, { "title": "Screen", "const": 2 }, { "title": "Overlay", "const": 3 }, { "title": "Darken", "const": 4 }, { "title": "Lighten", "const": 5 }, { "title": "Color Dodge", "const": 6 }, { "title": "Color Burn", "const": 7 }, { "title": "Hard Light", "const": 8 }, { "title": "Soft Light", "const": 9 }, { "title": "Difference", "const": 10 }, { "title": "Exclusion", "const": 11 }, { "title": "Hue", "const": 12 }, { "title": "Saturation", "const": 13 }, { "title": "Color", "const": 14 }, { "title": "Luminosity", "const": 15 }, { "title": "Add", "const": 16 }, { "title": "Hard Mix", "const": 17 } ] }, "text-caps": { "type": "integer", "title": "Text Caps", "oneOf": [ { "title": "Regular", "const": 0 }, { "title": "All Caps", "const": 1 }, { "title": "Small Caps", "const": 2 } ], "default": 0 }, "star-type": { "type": "integer", "title": "Star Type", "description": "Star or Polygon", "oneOf": [ { "title": "Star", "const": 1 }, { "title": "Polygon", "const": 2 } ] }, "text-range-units": { "type": "integer", "title": "Text Range Units", "description": "Unit type for a text selector", "oneOf": [ { "title": "Percent", "const": 1 }, { "title": "Index", "const": 2 } ] }, "text-grouping": { "type": "integer", "title": "Text Grouping", "description": "", "oneOf": [ { "title": "Characters", "const": 1 }, { "title": "Word", "const": 2 }, { "title": "Line", "const": 3 }, { "title": "All", "const": 4 } ] }, "merge-mode": { "type": "integer", "title": "Merge Mode", "description": "Boolean operation on shapes", "oneOf": [ { "title": "Normal", "const": 1 }, { "title": "Add", "const": 2 }, { "title": "Subtract", "const": 3 }, { "title": "Intersect", "const": 4 }, { "title": "Exclude Intersections", "const": 5 } ] }, "composite": { "type": "integer", "title": "Composite", "description": "How to stack copies in a repeater", "oneOf": [ { "title": "Above", "const": 1 }, { "title": "Below", "const": 2 } ] } , "point": { "type": "object", "title": "Effect Value Point", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 3 }, "v": { "title": "Value", "$ref": "#/$defs/multi-dimensional" } }, "required": [ "ty" ] } ] }, "angle": { "type": "object", "title": "Effect Value Angle", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 1 }, "v": { "title": "Value", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "effect-color": { "type": "object", "title": "Effect Value Color", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 2 }, "v": { "title": "Value", "$ref": "#/$defs/color-value" } }, "required": [ "ty" ] } ] }, "ignored": { "type": "object", "title": "Ignored Value", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 6 }, "v": { "title": "Value", "type": "number", "default": 0 } }, "required": [ "ty" ] } ] }, "effect-value": { "type": "object", "title": "Effect Value", "description": "Value for an effect", "caniuse": "effects", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "ix": { "title": "Effect Index", "type": "integer" }, "mn": { "title": "Match Name", "type": "string" }, "nm": { "title": "Name", "type": "string" }, "ty": { "title": "Type", "type": "integer" } }, "required": [] } ] }, "no-value": { "type": "object", "title": "Effect No Value", "description": "" }, "effect-layer": { "type": "object", "title": "Effect Value Layer", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 10 }, "v": { "title": "Value", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "drop-down": { "type": "object", "title": "Effect Value Drop Down", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 7 }, "v": { "title": "Value", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "slider": { "type": "object", "title": "Effect Value Slider", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 0 }, "v": { "title": "Value", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "checkbox": { "type": "object", "title": "Effect Value Checkbox", "description": "", "allOf": [ { "$ref": "#/$defs/effect-value" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 4 }, "v": { "title": "Value", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] } , "matte3-effect": { "type": "object", "title": "Set Matte Effect", "description": "Uses a layer as a mask", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 28 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Layer", "description": "Use this layer as a mask", "$ref": "#/$defs/effect-layer" }, { "title": "Channel", "description": "Channel to use as a mask:\n1 - Red\n2 - Green\n3 - Blue\n4 - Alpha\n5 - Luminance\n6 - Hue\n7 - Lightness\n8 - Saturation\n9 - Full\n10 - Off", "$ref": "#/$defs/drop-down" }, { "title": "Invert", "description": "Use 0 as opaque value when true", "$ref": "#/$defs/drop-down" }, { "title": "Stretch To Fit", "$ref": "#/$defs/drop-down" }, { "title": "Show Mask", "description": "If false, the mask layer won't be shown", "$ref": "#/$defs/drop-down" }, { "title": "Premultiply Mask", "$ref": "#/$defs/drop-down" } ] } }, "required": [ "ty" ] } ] }, "tint-effect": { "type": "object", "title": "Tint Effect", "description": "Colorizes the layer", "caniuse": "effect-tint", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 20 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Black Color", "description": "Tint of the darker parts of the layer", "$ref": "#/$defs/effect-color" }, { "title": "White Color", "description": "Tint of the lighter parts of the layer", "$ref": "#/$defs/effect-color" }, { "title": "Intensity", "description": "Intensity of the effect, 0 means the layer is unchanged. 100 means full effect", "$ref": "#/$defs/slider" } ] } }, "required": [ "ty" ] } ] }, "custom-effect": { "type": "object", "title": "Custom Effect", "description": "Some lottie files use `ty` = 5 for many different effects", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 5 } }, "required": [ "ty" ] } ] }, "stroke-effect": { "type": "object", "title": "Stroke Effect", "description": "", "caniuse": "effect-stroke", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 22 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "00", "$ref": "#/$defs/effect-color" }, { "title": "01", "$ref": "#/$defs/checkbox" }, { "title": "02", "$ref": "#/$defs/checkbox" }, { "title": "color", "$ref": "#/$defs/effect-color" }, { "title": "04", "$ref": "#/$defs/slider" }, { "title": "05", "$ref": "#/$defs/slider" }, { "title": "06", "$ref": "#/$defs/slider" }, { "title": "07", "$ref": "#/$defs/slider" }, { "title": "08", "$ref": "#/$defs/slider" }, { "title": "09", "$ref": "#/$defs/drop-down" }, { "title": "type", "$ref": "#/$defs/drop-down" } ] } }, "required": [ "ty" ] } ] }, "displacement-map-effect": { "type": "object", "title": "Displacement Map Effect", "description": "", "caniuse": "effect-displacement-map", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 27 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Displacement Map Layer", "$ref": "#/$defs/effect-layer" }, { "title": "Use For Horizontal Displacement", "$ref": "#/$defs/drop-down" }, { "title": "Max Horizontal Displacement", "$ref": "#/$defs/slider" }, { "title": "Use For Vertical Displacement", "$ref": "#/$defs/drop-down" }, { "title": "Max Vertical Displacement", "$ref": "#/$defs/slider" }, { "title": "Displacement Map Behavior", "$ref": "#/$defs/drop-down" }, { "title": "Edge Behavior", "$ref": "#/$defs/drop-down" }, { "title": "Expand Output", "$ref": "#/$defs/drop-down" } ] } }, "required": [ "ty", "ef" ] } ] }, "pro-levels-effect": { "type": "object", "title": "Pro Levels Effect", "description": "", "caniuse": "effect-color-levels-individual-controls", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 24 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "00", "$ref": "#/$defs/drop-down" }, { "title": "01", "$ref": "#/$defs/no-value" }, { "title": "02", "$ref": "#/$defs/no-value" }, { "title": "comp_inblack", "$ref": "#/$defs/slider" }, { "title": "comp_inwhite", "$ref": "#/$defs/slider" }, { "title": "comp_gamma", "$ref": "#/$defs/slider" }, { "title": "comp_outblack", "$ref": "#/$defs/slider" }, { "title": "comp_outwhite", "$ref": "#/$defs/no-value" }, { "title": "08", "$ref": "#/$defs/no-value" }, { "title": "09", "$ref": "#/$defs/slider" }, { "title": "r_inblack", "$ref": "#/$defs/slider" }, { "title": "r_inwhite", "$ref": "#/$defs/slider" }, { "title": "r_gamma", "$ref": "#/$defs/slider" }, { "title": "r_outblack", "$ref": "#/$defs/slider" }, { "title": "r_outwhite", "$ref": "#/$defs/slider" }, { "title": "15", "$ref": "#/$defs/slider" }, { "title": "16", "$ref": "#/$defs/slider" }, { "title": "g_inblack", "$ref": "#/$defs/slider" }, { "title": "g_inwhite", "$ref": "#/$defs/slider" }, { "title": "g_gamma", "$ref": "#/$defs/slider" }, { "title": "g_outblack", "$ref": "#/$defs/slider" }, { "title": "g_outwhite", "$ref": "#/$defs/slider" }, { "title": "22", "$ref": "#/$defs/slider" }, { "title": "23", "$ref": "#/$defs/slider" }, { "title": "b_inblack", "$ref": "#/$defs/slider" }, { "title": "b_inwhite", "$ref": "#/$defs/slider" }, { "title": "b_gamma", "$ref": "#/$defs/slider" }, { "title": "b_outblack", "$ref": "#/$defs/slider" }, { "title": "b_outwhite", "$ref": "#/$defs/slider" }, { "title": "29", "$ref": "#/$defs/slider" }, { "title": "a_inblack", "$ref": "#/$defs/slider" }, { "title": "a_inwhite", "$ref": "#/$defs/slider" }, { "title": "a_gamma", "$ref": "#/$defs/slider" }, { "title": "a_outblack", "$ref": "#/$defs/slider" }, { "title": "a_outwhite", "$ref": "#/$defs/no-value" } ] } }, "required": [ "ty" ] } ] }, "twirl-effect": { "type": "object", "title": "Twirl Effect", "description": "", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 30 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Angle", "$ref": "#/$defs/angle" }, { "title": "Radius", "$ref": "#/$defs/slider" }, { "title": "Center", "$ref": "#/$defs/point" } ] } }, "required": [ "ty", "ef" ] } ] }, "effect": { "type": "object", "title": "Effect", "description": "Layer effect", "caniuse": "effects", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "ef": { "title": "Effect Values", "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/no-value" }, { "$ref": "#/$defs/angle" }, { "$ref": "#/$defs/checkbox" }, { "$ref": "#/$defs/effect-color" }, { "$ref": "#/$defs/drop-down" }, { "$ref": "#/$defs/ignored" }, { "$ref": "#/$defs/effect-layer" }, { "$ref": "#/$defs/point" }, { "$ref": "#/$defs/slider" } ] } }, "np": { "title": "Property Count", "description": "Number of values in `ef`", "type": "integer" }, "ix": { "title": "Effect Index", "type": "integer" }, "ty": { "title": "Type", "description": "Effect type", "type": "integer" }, "en": { "title": "Enabled", "$ref": "#/$defs/int-boolean", "default": 1 } }, "required": [ "ty", "ef" ] } ] }, "mesh-warp-effect": { "type": "object", "title": "Mesh Warp Effect", "description": "", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 31 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Rows", "$ref": "#/$defs/slider" }, { "title": "Columns", "$ref": "#/$defs/slider" }, { "title": "Quality", "$ref": "#/$defs/slider" }, { "title": "03", "$ref": "#/$defs/no-value" } ] } }, "required": [ "ty", "ef" ] } ] }, "spherize-effect": { "type": "object", "title": "Spherize Effect", "description": "", "caniuse": "effect-cc-sphere", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 33 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "radius", "$ref": "#/$defs/slider" }, { "title": "center", "$ref": "#/$defs/point" } ] } }, "required": [ "ty" ] } ] }, "fill-effect": { "type": "object", "title": "Fill Effect", "description": "Replaces the whole layer with the given color", "caniuse": "effect-fill", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 21 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "00", "$ref": "#/$defs/point" }, { "title": "01", "$ref": "#/$defs/drop-down" }, { "title": "color", "$ref": "#/$defs/effect-color" }, { "title": "03", "$ref": "#/$defs/drop-down" }, { "title": "04", "$ref": "#/$defs/slider" }, { "title": "05", "$ref": "#/$defs/slider" }, { "title": "opacity", "description": "Opacity in [0, 1]", "$ref": "#/$defs/slider" } ] } }, "required": [ "ty" ] } ] }, "gaussian-blur-effect": { "type": "object", "title": "Gaussian Blur Effect", "description": "Gaussian blur", "caniuse": "effect-gaussian-blur", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 29 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "sigma", "$ref": "#/$defs/slider" }, { "title": "direction", "$ref": "#/$defs/slider" }, { "title": "wrap", "$ref": "#/$defs/checkbox" } ] } }, "required": [ "ty" ] } ] }, "tritone-effect": { "type": "object", "title": "Tritone Effect", "description": "Maps layers colors based on bright/mid/dark colors", "caniuse": "effect-tritone", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 23 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "bright", "$ref": "#/$defs/effect-color" }, { "title": "mid", "$ref": "#/$defs/effect-color" }, { "title": "dark", "$ref": "#/$defs/effect-color" } ] } }, "required": [ "ty" ] } ] }, "wavy-effect": { "type": "object", "title": "Wavy Effect", "description": "", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 32 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Radius", "$ref": "#/$defs/slider" }, { "title": "Center", "$ref": "#/$defs/point" }, { "title": "Conversion type", "$ref": "#/$defs/drop-down" }, { "title": "Speed", "$ref": "#/$defs/drop-down" }, { "title": "Width", "$ref": "#/$defs/slider" }, { "title": "Height", "$ref": "#/$defs/slider" }, { "title": "Phase", "$ref": "#/$defs/slider" } ] } }, "required": [ "ty", "ef" ] } ] }, "drop-shadow-effect": { "type": "object", "title": "Drop Shadow Effect", "description": "Adds a shadow to the layer", "caniuse": "effect-drop-shadow", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 25 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "color", "$ref": "#/$defs/effect-color" }, { "title": "opacity", "description": "Opacity between 0 and 255", "$ref": "#/$defs/slider" }, { "title": "angle", "$ref": "#/$defs/angle" }, { "title": "distance", "$ref": "#/$defs/slider" }, { "title": "blur", "$ref": "#/$defs/slider" } ] } }, "required": [ "ty" ] } ] }, "radial-wipe-effect": { "type": "object", "title": "Radial Wipe", "caniuse": "effect-radial-wipe", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 26 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Completion", "description": "Between 0 and 100", "$ref": "#/$defs/slider" }, { "title": "Start Angle", "$ref": "#/$defs/angle" }, { "title": "Wipe Center", "$ref": "#/$defs/point" }, { "title": "Wipe", "$ref": "#/$defs/slider" }, { "title": "Feather", "$ref": "#/$defs/slider" } ] } }, "required": [ "ty" ] } ] }, "puppet-effect": { "type": "object", "title": "Puppet Effect", "description": "", "allOf": [ { "$ref": "#/$defs/effect" }, { "type": "object", "properties": { "ty": { "title": "Type", "type": "integer", "const": 34 }, "ef": { "title": "Effect values", "type": "array", "prefixItems": [ { "title": "Puppet Engine", "$ref": "#/$defs/drop-down" }, { "title": "Mesh Rotation Refinement", "$ref": "#/$defs/slider" }, { "title": "On Transparent", "$ref": "#/$defs/drop-down" }, { "title": "03", "$ref": "#/$defs/no-value" } ] } }, "required": [ "ty", "ef" ] } ] } , "transform": { "type": "object", "title": "Transform", "description": "Layer transform", "allOf": [ { "properties": { "a": { "title": "Anchor Point", "caniuse": "transform-anchor-point", "description": "Anchor point: a position (relative to its parent) around which transformations are applied (ie: center for rotation / scale)", "$ref": "#/$defs/position" }, "s": { "title": "Scale", "caniuse": "transform-scale", "description": "Scale factor, `[100, 100]` for no scaling", "$ref": "#/$defs/multi-dimensional" }, "o": { "title": "Opacity", "caniuse": "transform-opacity", "$ref": "#/$defs/value" }, "sk": { "title": "Skew", "caniuse": "transform-skew", "description": "Skew amount as an angle in degrees", "$ref": "#/$defs/value" }, "sa": { "title": "Skew Axis", "caniuse": "transform-skew", "description": "Direction along which skew is applied, in degrees (`0` skews along the X axis, `90` along the Y axis)", "$ref": "#/$defs/value" } } }, { "anyOf": [ { "oneOf": [ { "properties": { "p": { "title": "Position", "caniuse": "transform-position", "description": "Position / Translation", "$ref": "#/$defs/position" } } }, { "properties": { "p": { "title": "Position", "description": "Position / Translation with split components", "$ref": "#/$defs/split-vector" } } } ] }, { "oneOf": [ { "properties": { "r": { "title": "Rotation", "caniuse": "transform-rotation", "description": "Rotation in degrees, clockwise", "$ref": "#/$defs/value" } } }, { "properties": { "rx": { "title": "X Rotation", "description": "Split rotation component", "$ref": "#/$defs/value" }, "ry": { "title": "Y Rotation", "description": "Split rotation component", "$ref": "#/$defs/value" }, "rz": { "title": "Z Rotation", "description": "Split rotation component, equivalent to `r` when not split", "$ref": "#/$defs/value" }, "or": { "title": "Orientation", "$ref": "#/$defs/multi-dimensional" } } } ] } ] } ] }, "color": { "type": "array", "title": "Color", "description": "Color as a [r, g, b] array with values in [0, 1]", "items": { "type": "number", "minimum": 0, "maximum": 1 }, "minItems": 3, "maxItems": 4 }, "mask": { "type": "object", "title": "Mask", "caniuse": "mask", "description": "Bezier shape used to mask/clip a layer", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "inv": { "title": "Inverted", "caniuse": "mask-inverted", "type": "boolean", "default": false }, "pt": { "title": "Shape", "$ref": "#/$defs/shape-property" }, "o": { "title": "Opacity", "caniuse": "mask-opacity", "$ref": "#/$defs/value" }, "mode": { "title": "Mode", "caniuse": "mask-modes", "$ref": "#/$defs/mask-mode", "default": "i" }, "x": { "title": "Expand", "caniuse": "mask-expansion", "$ref": "#/$defs/value" } }, "required": [] } ] }, "int-boolean": { "type": "integer", "title": "Integer Boolean", "description": "Represents boolean values as an integer. 0 is false, 1 is true.", "default": 0, "examples": [ 0 ], "enum": [ 0, 1 ], "oneOf": [ { "title": "True", "const": 1 }, { "title": "False", "const": 0 } ] }, "visual-object": { "type": "object", "title": "Visual Object", "description": "", "allOf": [ { "type": "object", "properties": { "nm": { "title": "Name", "description": "Name, as seen from editors and the like", "type": "string" }, "mn": { "title": "Match Name", "description": "Match name, used in expressions", "type": "string" } }, "required": [] } ] }, "bezier": { "type": "object", "title": "Bezier", "description": "Single bezier curve", "properties": { "c": { "title": "Closed", "type": "boolean", "default": false }, "i": { "title": "In Tangents", "type": "array", "description": "Array of points, each point is an array of coordinates.\nThese points are along the `in` tangents relative to the corresponding `v`.", "items": { "type": "array", "items": { "type": "number", "default": [] } } }, "o": { "title": "Out Tangents", "type": "array", "description": "Array of points, each point is an array of coordinates.\nThese points are along the `out` tangents relative to the corresponding `v`.", "items": { "type": "array", "items": { "type": "number", "default": [] } } }, "v": { "title": "Vertices", "description": "Array of points, each point is an array of coordinates.\nThese points are along the bezier path", "type": "array", "items": { "type": "array", "items": { "type": "number", "default": [] } } } }, "required": [ "i", "v", "o" ] }, "marker": { "type": "object", "title": "Marker", "description": "Defines named portions of the composition.", "properties": { "cm": { "title": "Comment", "type": "string" }, "tm": { "title": "Time", "type": "number" }, "dr": { "title": "Duration", "type": "number" } } } , "data-layer": { "type": "object", "title": "Data Layer", "allOf": [ { "$ref": "#/$defs/layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 15 }, "refId": { "title": "Data source Id", "description": "ID of the data source in assets", "type": "string" } }, "required": [ "ty" ] } ] }, "solid-color-layer": { "type": "object", "title": "Solid Color Layer", "description": "Layer with a solid color rectangle", "caniuse": "layer-solid", "allOf": [ { "$ref": "#/$defs/visual-layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 1 }, "sc": { "title": "Color", "description": "Color of the layer, unlike most other places, the color is a `#rrggbb` hex string", "type": "string", "default": "" }, "sh": { "title": "Height", "type": "number" }, "sw": { "title": "Width", "type": "number" } }, "required": [ "ty", "sc", "sw", "sh" ] } ] }, "layer": { "type": "object", "title": "Layer", "description": "", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "ddd": { "title": "Threedimensional", "description": "Whether the layer is threedimensional", "$ref": "#/$defs/int-boolean", "default": 0 }, "hd": { "title": "Hidden", "description": "Whether the layer is hidden", "type": "boolean" }, "ty": { "title": "Type", "description": "Layer type", "type": "integer", "oneOf": [ { "const": 0, "title": "Precomposition layer" }, { "const": 1, "title": "Solid color layer" }, { "const": 2, "title": "Image layer" }, { "const": 3, "title": "Null layer" }, { "const": 4, "title": "Shape layer" }, { "const": 5, "title": "Text layer" }, { "const": 6, "title": "Audio layer" }, { "const": 7, "title": "Video placeholder" }, { "const": 8, "title": "Image sequence" }, { "const": 9, "title": "Video layer" }, { "const": 10, "title": "Image placeholder" }, { "const": 11, "title": "Guide layer" }, { "const": 12, "title": "Adjustment layer" }, { "const": 13, "title": "Camera" }, { "const": 14, "title": "Light layer" }, { "const": 15, "title": "Data layer" } ] }, "ind": { "title": "Index", "type": "integer", "description": "Index that can be used for parenting and referenced in expressions" }, "parent": { "title": "Parent Index", "description": "Must be the `ind` property of another layer", "type": "integer" }, "sr": { "title": "Time Stretch", "caniuse": "property-time-stretch", "type": "number", "default": 1 }, "ip": { "title": "In Point", "description": "Frame when the layer becomes visible", "type": "number" }, "op": { "title": "Out Point", "description": "Frame when the layer becomes invisible", "type": "number" }, "st": { "title": "Start Time", "type": "number", "default": 0 } }, "required": [ "ty", "st", "ip", "op" ] } ] }, "visual-layer": { "type": "object", "title": "Visual Layer", "description": "Layer used to affect visual elements", "allOf": [ { "$ref": "#/$defs/layer" }, { "type": "object", "properties": { "ks": { "title": "Transform", "caniuse": "transform", "description": "Layer transform", "$ref": "#/$defs/transform" }, "ao": { "title": "Auto Orient", "$ref": "#/$defs/int-boolean", "default": 0, "description": "If 1, The layer will rotate itself to match its animated position path" }, "tt": { "title": "Matte Mode", "caniuse": "property-matte-mask", "$ref": "#/$defs/matte-mode", "description": "Defines the track matte mode for the layer" }, "tp": { "title": "Matte Parent", "type": "integer", "description": "Index of the layer used as matte, if omitted assume the layer above the current one" }, "td": { "title": "Matte Target", "caniuse": "property-matte-mask", "$ref": "#/$defs/int-boolean", "description": "If set to 1, it means a layer is using this layer as a track matte" }, "hasMask": { "title": "Has Masks", "caniuse": "mask", "description": "Whether the layer has masks applied", "type": "boolean" }, "masksProperties": { "title": "Masks", "caniuse": "mask", "type": "array", "items": { "$ref": "#/$defs/mask" } }, "ef": { "title": "Effects", "description": "List of layer effects", "caniuse": "effects", "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/custom-effect" }, { "$ref": "#/$defs/drop-shadow-effect" }, { "$ref": "#/$defs/fill-effect" }, { "$ref": "#/$defs/gaussian-blur-effect" }, { "$ref": "#/$defs/matte3-effect" }, { "$ref": "#/$defs/pro-levels-effect" }, { "$ref": "#/$defs/stroke-effect" }, { "$ref": "#/$defs/tint-effect" }, { "$ref": "#/$defs/tritone-effect" }, { "$ref": "#/$defs/radial-wipe-effect" }, { "$ref": "#/$defs/wavy-effect" }, { "$ref": "#/$defs/puppet-effect" }, { "$ref": "#/$defs/spherize-effect" }, { "$ref": "#/$defs/mesh-warp-effect" }, { "$ref": "#/$defs/displacement-map-effect" }, { "$ref": "#/$defs/twirl-effect" } ] } }, "mb": { "title": "Motion Blur", "description": "Whether motion blur is enabled for the layer", "type": "boolean" }, "sy": { "title": "Layer style", "caniuse": "styles", "description": "Styling effects for this layer", "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/stroke-style" }, { "$ref": "#/$defs/drop-shadow-style" }, { "$ref": "#/$defs/inner-shadow-style" }, { "$ref": "#/$defs/outer-glow-style" }, { "$ref": "#/$defs/inner-glow-style" }, { "$ref": "#/$defs/bevel-emboss-style" }, { "$ref": "#/$defs/satin-style" }, { "$ref": "#/$defs/color-overlay-style" }, { "$ref": "#/$defs/gradient-overlay-style" } ] } }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/blend-mode", "default": 0 }, "cl": { "title": "CSS Class", "description": "CSS class used by the SVG renderer", "type": "string" }, "ln": { "title": "Layer XML ID", "description": "`id` attribute used by the SVG renderer", "type": "string" }, "tg": { "title": "Layer XML tag name", "description": "tag name used by the SVG renderer", "type": "string" }, "cp": { "deprecated": true, "title": "Collapse Transform", "description": "This is deprecated in favour of `ct`", "type": "boolean" }, "ct": { "title": "Collapse Transform", "description": "Marks that transforms should be applied before masks", "$ref": "#/$defs/int-boolean", "default": 0 } }, "required": [ "ks" ] } ] }, "audio-layer": { "type": "object", "title": "Audio Layer", "description": "A layer playing sounds", "allOf": [ { "$ref": "#/$defs/layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 6 }, "au": { "title": "Audio Settings", "$ref": "#/$defs/audio-settings" }, "refId": { "title": "Sound Id", "description": "ID of the sound as specified in the assets", "type": "string" } }, "required": [ "ty", "au" ] } ] }, "precomposition-layer": { "type": "object", "title": "Precomposition Layer", "description": "Layer that renders a Precomposition asset", "caniuse": "layer-precomp", "allOf": [ { "$ref": "#/$defs/visual-layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 0 }, "refId": { "title": "Reference Id", "description": "ID of the precomp as specified in the assets", "type": "string" }, "w": { "title": "Width", "description": "Width of the clipping rect", "type": "integer" }, "h": { "title": "Height", "description": "Height of the clipping rect", "type": "integer" }, "tm": { "title": "Time Remapping", "caniuse": "property-timeremap", "$ref": "#/$defs/value" } }, "required": [ "ty", "refId", "w", "h" ] } ] }, "camera-layer": { "type": "object", "title": "Camera Layer", "description": "3D Camera", "allOf": [ { "$ref": "#/$defs/layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 13 }, "ks": { "title": "Transform", "description": "Layer transform", "$ref": "#/$defs/transform" }, "pe": { "title": "Perspective", "description": "Distance from the Z=0 plane.\nSmall values yield a higher perspective effect.", "$ref": "#/$defs/value" } }, "required": [ "ty", "ks", "pe" ] } ] }, "shape-layer": { "type": "object", "title": "Shape Layer", "description": "Layer containing Shapes", "caniuse": "layer-shape", "allOf": [ { "$ref": "#/$defs/visual-layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 4 }, "shapes": { "title": "Shapes", "$ref": "#/$defs/shape-list" } }, "required": [ "ty", "shapes" ] } ] }, "null-layer": { "type": "object", "title": "Null Layer", "description": "Layer with no data, useful to group layers together", "allOf": [ { "$ref": "#/$defs/visual-layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 3 } }, "required": [ "ty" ] } ] }, "text-layer": { "type": "object", "title": "Text Layer", "description": "Layer with some text", "caniuse": "layer-text", "allOf": [ { "$ref": "#/$defs/visual-layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 5 }, "t": { "title": "Data", "$ref": "#/$defs/text-data" } }, "required": [ "ty", "t" ] } ] }, "image-layer": { "type": "object", "title": "Image Layer", "description": "Layer that shows an image asset", "caniuse": "layer-image", "allOf": [ { "$ref": "#/$defs/visual-layer" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Layer type", "type": "integer", "const": 2 }, "refId": { "title": "Image Id", "description": "ID of the image as specified in the assets", "type": "string", "default": "" } }, "required": [ "ty", "refId" ] } ] }, "audio-settings": { "type": "object", "title": "Audio Settings", "description": "", "allOf": [ { "type": "object", "properties": { "lv": { "title": "Level", "$ref": "#/$defs/multi-dimensional" } }, "required": [ "lv" ] } ] } , "pucker-bloat": { "type": "object", "title": "Pucker Bloat", "description": "Interpolates the shape with its center point and bezier tangents with the opposite direction", "caniuse": "shape-pucker-and-bloat", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "pb" }, "a": { "title": "Amount", "description": "Amount as a percentage", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "rectangle": { "type": "object", "title": "Rectangle", "description": "A simple rectangle shape", "caniuse": "shape-rectangle", "allOf": [ { "$ref": "#/$defs/shape" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "rc" }, "p": { "title": "Position", "description": "Center of the rectangle", "$ref": "#/$defs/position" }, "s": { "title": "Size", "$ref": "#/$defs/multi-dimensional" }, "r": { "title": "Rounded", "description": "Rounded corners radius", "$ref": "#/$defs/value" } }, "required": [ "ty", "s", "p", "r" ] } ] }, "shape-transform": { "type": "object", "title": "Transform Shape", "description": "Group transform", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "$ref": "#/$defs/transform" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "tr" } }, "required": [ "ty" ] } ] }, "merge": { "type": "object", "title": "Merge", "caniuse": "shape-merge-path", "description": "Boolean operator on shapes", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "mm" }, "mm": { "title": "Merge Mode", "$ref": "#/$defs/merge-mode", "default": 1 } }, "required": [ "ty" ] } ] }, "repeater": { "type": "object", "title": "Repeater", "description": "Duplicates previous shapes in a group", "caniuse": "shape-repeater", "allOf": [ { "$ref": "#/$defs/modifier" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "rp" }, "c": { "title": "Copies", "description": "Number of copies", "$ref": "#/$defs/value" }, "o": { "title": "Offset", "$ref": "#/$defs/value" }, "m": { "title": "Composite", "description": "Stacking order", "$ref": "#/$defs/composite", "default": 1 }, "tr": { "title": "Transform", "description": "Transform applied to each copy", "$ref": "#/$defs/repeater-transform" } }, "required": [ "ty", "c", "tr" ] } ] }, "offset-path": { "type": "object", "title": "Offset Path", "caniuse": "shape-offset-path", "description": "Interpolates the shape with its center point and bezier tangents with the opposite direction", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "op" }, "a": { "title": "Amount", "$ref": "#/$defs/value" }, "lj": { "title": "Line Join", "$ref": "#/$defs/line-join", "default": 2 }, "ml": { "title": "Miter Limit", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "fill": { "type": "object", "title": "Fill", "description": "Solid fill color", "caniuse": "shape-fill", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "fl" }, "o": { "title": "Opacity", "description": "Opacity, 100 means fully opaque", "$ref": "#/$defs/value" }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "r": { "title": "Fill Rule", "$ref": "#/$defs/fill-rule" } }, "required": [ "ty", "c", "o" ] } ] }, "repeater-transform": { "type": "object", "title": "Repeater Transform", "description": "Transform used by a repeater, the transform is applied to each subsequent repeated object.", "allOf": [ { "$ref": "#/$defs/transform" }, { "type": "object", "properties": { "so": { "title": "Start Opacity", "description": "Opacity of the first repeated object.", "$ref": "#/$defs/value" }, "eo": { "title": "End Opacity", "description": "Opacity of the last repeated object.", "$ref": "#/$defs/value" } }, "required": [] } ] }, "polystar": { "type": "object", "title": "PolyStar", "description": "Star or regular polygon", "caniuse": "shape-polystar", "allOf": [ { "$ref": "#/$defs/shape" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "sr" }, "p": { "title": "Position", "$ref": "#/$defs/position" }, "or": { "title": "Outer Radius", "$ref": "#/$defs/value" }, "os": { "title": "Outer Roundness", "description": "Outer Roundness as a percentage", "$ref": "#/$defs/value" }, "r": { "title": "Rotation", "description": "Rotation, clockwise in degrees", "$ref": "#/$defs/value" }, "pt": { "title": "Points", "$ref": "#/$defs/value" }, "sy": { "title": "Star Type", "description": "Star type, `1` for Star, `2` for Polygon", "$ref": "#/$defs/star-type", "default": 1 } }, "required": [ "ty", "or", "os", "pt", "p", "r" ] }, { "if": { "properties": { "sy": { "const": 1 } } }, "then": { "properties": { "ir": { "title": "Inner Radius", "$ref": "#/$defs/value" }, "is": { "title": "Inner Roundness", "description": "Inner Roundness as a percentage", "$ref": "#/$defs/value" } }, "required": [ "ir", "is" ] } } ] }, "shape-element": { "type": "object", "title": "Shape Element", "description": "Base class for all elements of ShapeLayer and Group", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "hd": { "title": "Hidden", "description": "Whether the shape is hidden", "type": "boolean" }, "ty": { "title": "Shape Type", "type": "string", "oneOf": [ { "const": "rc", "title": "Rectangle" }, { "const": "el", "title": "Ellipse" }, { "const": "sr", "title": "Polygon / Star" }, { "const": "sh", "title": "Path" }, { "const": "fl", "title": "Fill" }, { "const": "st", "title": "Stroke" }, { "const": "gf", "title": "Gradient fill" }, { "const": "gs", "title": "Gradient stroke" }, { "const": "no", "title": "No Style" }, { "const": "gr", "title": "Group" }, { "const": "tr", "title": "Transform" }, { "const": "rd", "title": "Rounded corners" }, { "const": "pb", "title": "Pucker / bloat" }, { "const": "mm", "title": "Merge" }, { "const": "tw", "title": "Twist" }, { "const": "op", "title": "Offset path" }, { "const": "zz", "title": "Zig zag" }, { "const": "rp", "title": "Repeater" }, { "const": "tm", "title": "Trim" } ] }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/blend-mode" }, "ix": { "title": "Property index", "description": "Index used in expressions", "type": "integer" }, "cl": { "title": "CSS Class", "description": "CSS class used by the SVG renderer", "type": "string" }, "ln": { "title": "Layer XML ID", "description": "`id` attribute used by the SVG renderer", "type": "string" } }, "required": [ "ty" ] } ] }, "shape": { "type": "object", "title": "Shape", "description": "Drawable shape", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "d": { "title": "Direction", "description": "Direction the shape is drawn as, mostly relevant when using trim path", "$ref": "#/$defs/shape-direction" } } } ] }, "trim": { "type": "object", "title": "Trim", "description": "Trims shapes into a segment", "caniuse": "shape-trim-path", "allOf": [ { "$ref": "#/$defs/modifier" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "tm" }, "s": { "title": "Start", "description": "Segment start", "$ref": "#/$defs/value" }, "e": { "title": "End", "description": "Segment end", "$ref": "#/$defs/value" }, "o": { "title": "Offset", "$ref": "#/$defs/value" }, "m": { "title": "Multiple", "description": "How to treat multiple copies", "$ref": "#/$defs/trim-multiple-shapes" } }, "required": [ "ty", "o", "s", "e" ] } ] }, "stroke": { "type": "object", "title": "Stroke", "description": "Solid stroke", "caniuse": "shape-stroke", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "$ref": "#/$defs/base-stroke" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "st" }, "c": { "title": "Color", "description": "Stroke color", "$ref": "#/$defs/color-value" } }, "required": [ "ty", "c" ] } ] }, "path": { "type": "object", "title": "Path", "description": "Animatable Bezier curve", "caniuse": "shape-path", "allOf": [ { "$ref": "#/$defs/shape" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "sh" }, "ks": { "title": "Shape", "description": "Bezier path", "$ref": "#/$defs/shape-property" } }, "required": [ "ty", "ks" ] } ] }, "gradient-stroke": { "type": "object", "title": "Gradient Stroke", "description": "Gradient stroke", "caniuse": "shape-stroke-gradient", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "$ref": "#/$defs/base-stroke" }, { "$ref": "#/$defs/gradient" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "gs" } }, "required": [ "ty" ] } ] }, "ellipse": { "type": "object", "title": "Ellipse", "description": "Ellipse shape", "caniuse": "shape-ellipse", "allOf": [ { "$ref": "#/$defs/shape" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "el" }, "p": { "title": "Position", "$ref": "#/$defs/position" }, "s": { "title": "Size", "$ref": "#/$defs/multi-dimensional" } }, "required": [ "ty", "s", "p" ] } ] }, "group": { "type": "object", "title": "Group", "description": "Shape Element that can contain other shapes", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "gr" }, "np": { "title": "Number Of Properties", "type": "number" }, "it": { "title": "Shapes", "$ref": "#/$defs/shape-list" }, "cix": { "title": "Property index", "description": "Index used in expressions", "type": "integer" } }, "required": [ "ty" ] } ] }, "stroke-dash": { "type": "object", "title": "Stroke Dash", "description": "An item used to described the dashe pattern in a stroked path", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "n": { "title": "Dash Type", "$ref": "#/$defs/stroke-dash-type", "default": "d" }, "v": { "title": "Length", "description": "Length of the dash", "$ref": "#/$defs/value" } }, "required": [] } ] }, "shape-list": { "title": "Shape List", "description": "List of valid shapes", "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/ellipse" }, { "$ref": "#/$defs/fill" }, { "$ref": "#/$defs/gradient-fill" }, { "$ref": "#/$defs/gradient-stroke" }, { "$ref": "#/$defs/group" }, { "$ref": "#/$defs/path" }, { "$ref": "#/$defs/polystar" }, { "$ref": "#/$defs/pucker-bloat" }, { "$ref": "#/$defs/rectangle" }, { "$ref": "#/$defs/repeater" }, { "$ref": "#/$defs/rounded-corners" }, { "$ref": "#/$defs/stroke" }, { "$ref": "#/$defs/shape-transform" }, { "$ref": "#/$defs/trim" }, { "$ref": "#/$defs/twist" }, { "$ref": "#/$defs/merge" }, { "$ref": "#/$defs/offset-path" }, { "$ref": "#/$defs/zig-zag" }, { "$ref": "#/$defs/no-style" } ] } }, "zig-zag": { "type": "object", "title": "Zig Zag", "description": "Changes the edges of affected shapes into a series of peaks and valleys of uniform size", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "zz" }, "r": { "title": "Frequency", "description": "Number of ridges per segment", "$ref": "#/$defs/value" }, "s": { "title": "Amplitude", "description": "Distance between peaks and troughs", "$ref": "#/$defs/value" }, "pt": { "title": "Point Type", "description": "Point type (1 = corner, 2 = smooth)", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "no-style": { "type": "object", "title": "No Style", "description": "Represents a style for shapes without fill or stroke", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "no" } }, "required": [ "ty" ] } ] }, "base-stroke": { "type": "object", "title": "Base Stroke", "description": "", "allOf": [ { "type": "object", "properties": { "lc": { "title": "Line Cap", "$ref": "#/$defs/line-cap", "default": 2 }, "lj": { "title": "Line Join", "$ref": "#/$defs/line-join", "default": 2 }, "ml": { "title": "Miter Limit", "type": "number", "default": 0 }, "ml2": { "title": "Miter Limit", "description": "Animatable alternative to ml", "$ref": "#/$defs/value" }, "o": { "title": "Opacity", "description": "Opacity, 100 means fully opaque", "$ref": "#/$defs/value" }, "w": { "title": "Width", "description": "Stroke width", "$ref": "#/$defs/value" }, "d": { "title": "Dashes", "description": "Dashed line definition", "type": "array", "items": { "$ref": "#/$defs/stroke-dash" } } }, "required": [ "o", "w" ] } ] }, "twist": { "type": "object", "title": "Twist", "description": "", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "tw" }, "a": { "title": "Angle", "$ref": "#/$defs/value" }, "c": { "title": "Center", "$ref": "#/$defs/multi-dimensional" } }, "required": [ "ty" ] } ] }, "rounded-corners": { "type": "object", "title": "Rounded Corners", "description": "Rounds corners of other shapes", "allOf": [ { "$ref": "#/$defs/modifier" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "rd" }, "r": { "title": "Radius", "$ref": "#/$defs/value" } }, "required": [ "ty", "r" ] } ] }, "gradient-fill": { "type": "object", "title": "Gradient Fill", "description": "Gradient fill", "caniuse": "shape-fill-gradient", "allOf": [ { "$ref": "#/$defs/shape-element" }, { "$ref": "#/$defs/gradient" }, { "type": "object", "properties": { "ty": { "title": "Shape Type", "type": "string", "const": "gf" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "r": { "title": "Fill Rule", "$ref": "#/$defs/fill-rule" } }, "required": [ "ty", "o" ] } ] }, "gradient": { "type": "object", "title": "Gradient", "description": "", "allOf": [ { "type": "object", "properties": { "s": { "title": "Start Point", "description": "Starting point for the gradient", "$ref": "#/$defs/multi-dimensional" }, "e": { "title": "End Point", "description": "End point for the gradient", "$ref": "#/$defs/multi-dimensional" }, "t": { "title": "Gradient Type", "description": "Type of the gradient", "$ref": "#/$defs/gradient-type", "default": 1 }, "h": { "title": "Highlight Length", "description": "Highlight Length, as a percentage between `s` and `e`", "$ref": "#/$defs/value" }, "a": { "title": "Highlight Angle", "description": "Highlight Angle, relative to the direction from `s` to `e`", "$ref": "#/$defs/value" }, "g": { "title": "Colors", "description": "Gradient colors", "$ref": "#/$defs/gradient-colors" } }, "required": [ "s", "e", "g" ] } ] }, "modifier": { "type": "object", "title": "Modifier", "description": "", "allOf": [ { "$ref": "#/$defs/shape-element" } ] } , "satin-style": { "type": "object", "title": "Satin", "caniuse": "style-satin", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 6 }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "a": { "title": "Angle", "$ref": "#/$defs/value" }, "d": { "title": "Distance", "$ref": "#/$defs/value" }, "s": { "title": "Size", "$ref": "#/$defs/value" }, "in": { "title": "Invert", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "gradient-overlay-style": { "type": "object", "title": "Gradient Overlay", "caniuse": "style-gradient-overlay", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 8 }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "gf": { "title": "Gradient", "$ref": "#/$defs/gradient-colors" }, "gs": { "title": "Smoothness", "$ref": "#/$defs/value" }, "a": { "title": "Angle", "$ref": "#/$defs/value" }, "gt": { "title": "Gradient Type", "$ref": "#/$defs/gradient-type" }, "re": { "title": "Reverse", "$ref": "#/$defs/value" }, "al": { "title": "Align", "description": "Align with layer", "$ref": "#/$defs/value" }, "s": { "title": "Scale", "$ref": "#/$defs/value" }, "of": { "title": "Offset", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "color-overlay-style": { "type": "object", "title": "Color Overlay", "caniuse": "style-color-overlay", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 7 }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "so": { "title": "Opacity", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "outer-glow-style": { "type": "object", "title": "Outer Glow", "caniuse": "style-outer-glow", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 3 }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "r": { "title": "Range", "$ref": "#/$defs/value" }, "ch": { "title": "Choke Spread", "$ref": "#/$defs/value" }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "no": { "title": "Noise", "$ref": "#/$defs/value" }, "j": { "title": "Jitter", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "bevel-emboss-style": { "type": "object", "title": "Bevel Emboss", "caniuse": "style-bevel-and-emboss", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 5 }, "bs": { "title": "Bevel Style", "$ref": "#/$defs/value" }, "bt": { "title": "Technique", "$ref": "#/$defs/value" }, "sr": { "title": "Strength", "$ref": "#/$defs/value" }, "s": { "title": "Size", "$ref": "#/$defs/value" }, "sf": { "title": "Soften", "$ref": "#/$defs/value" }, "ga": { "title": "Global Angle", "description": "Use global light", "$ref": "#/$defs/value" }, "a": { "title": "Angle", "description": "Local lighting angle", "$ref": "#/$defs/value" }, "ll": { "title": "Altitude", "description": "Local lighting altitude", "$ref": "#/$defs/value" }, "hm": { "title": "Highlight Mode", "$ref": "#/$defs/value" }, "hc": { "title": "Highlight Color", "$ref": "#/$defs/color-value" }, "ho": { "title": "Highlight Opacity", "$ref": "#/$defs/value" }, "sm": { "title": "Shadow Mode", "$ref": "#/$defs/value" }, "sc": { "title": "Shadow Color", "$ref": "#/$defs/color-value" }, "so": { "title": "Shadow Opacity", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "inner-glow-style": { "type": "object", "title": "Inner Glow", "caniuse": "style-inner-glow", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 4 }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "r": { "title": "Range", "$ref": "#/$defs/value" }, "sr": { "title": "Source", "$ref": "#/$defs/value" }, "ch": { "title": "Choke Spread", "$ref": "#/$defs/value" }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "no": { "title": "Noise", "$ref": "#/$defs/value" }, "j": { "title": "Jitter", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "stroke-style": { "type": "object", "title": "Layer Stroke", "caniuse": "style-stroke", "description": "Stroke / frame", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 0 }, "s": { "title": "Size", "$ref": "#/$defs/value" }, "c": { "title": "Color", "$ref": "#/$defs/color-value" } }, "required": [ "ty" ] } ] }, "drop-shadow-style": { "type": "object", "title": "Drop Shadow", "caniuse": "style-drop-shadow", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 1 }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "a": { "title": "Angle", "description": "Local light angle", "$ref": "#/$defs/value" }, "s": { "title": "Size", "description": "Blur size", "$ref": "#/$defs/value" }, "d": { "title": "Distance", "$ref": "#/$defs/value" }, "ch": { "title": "Choke Spread", "$ref": "#/$defs/value" }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "no": { "title": "Noise", "$ref": "#/$defs/value" }, "lc": { "title": "Layer Conceal", "description": "Layer knowck out drop shadow", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "inner-shadow-style": { "type": "object", "title": "Inner Shadow", "caniuse": "style-inner-shadow", "allOf": [ { "$ref": "#/$defs/layer-style" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style type", "type": "integer", "const": 2 }, "c": { "title": "Color", "$ref": "#/$defs/color-value" }, "o": { "title": "Opacity", "$ref": "#/$defs/value" }, "a": { "title": "Angle", "description": "Local light angle", "$ref": "#/$defs/value" }, "s": { "title": "Size", "description": "Blur size", "$ref": "#/$defs/value" }, "d": { "title": "Distance", "$ref": "#/$defs/value" }, "ch": { "title": "Choke Spread", "$ref": "#/$defs/value" }, "bm": { "title": "Blend Mode", "$ref": "#/$defs/value" }, "no": { "title": "Noise", "$ref": "#/$defs/value" } }, "required": [ "ty" ] } ] }, "layer-style": { "type": "object", "title": "Layer Style", "description": "Style applied to a layer", "allOf": [ { "$ref": "#/$defs/visual-object" }, { "type": "object", "properties": { "ty": { "title": "Type", "description": "Style Type", "type": "integer" } }, "required": [ "ty" ] } ] } , "text-range-selector": { "type": "object", "title": "Text Range Selector", "caniuse": "animators-range-selectors", "properties": { "t": { "title": "Expressible", "$ref": "#/$defs/int-boolean" }, "xe": { "title": "Max Ease", "$ref": "#/$defs/value" }, "ne": { "title": "Min Ease", "$ref": "#/$defs/value" }, "a": { "title": "Max Amount", "$ref": "#/$defs/value" }, "b": { "title": "Based On", "$ref": "#/$defs/text-based" }, "rn": { "title": "Randomize", "$ref": "#/$defs/int-boolean" }, "sh": { "title": "Shape", "$ref": "#/$defs/text-shape" }, "o": { "title": "Offset", "$ref": "#/$defs/value" }, "r": { "title": "Range Units", "caniuse": "range-selectors-units", "$ref": "#/$defs/text-range-units" }, "sm": { "title": "Selector Smoothness", "$ref": "#/$defs/value" }, "s": { "title": "Start", "$ref": "#/$defs/value" }, "e": { "title": "End", "$ref": "#/$defs/value" } }, "required": [ "t", "a", "b", "sh" ] }, "text-alignment-options": { "type": "object", "title": "Text Alignment Options", "description": "", "allOf": [ { "type": "object", "properties": { "a": { "title": "Alignment", "description": "Group alignment", "caniuse": "animators-grouping-alignment", "$ref": "#/$defs/multi-dimensional" }, "g": { "title": "Grouping", "description": "Anchor point grouping", "caniuse": "animators-anchor-point-grouping", "$ref": "#/$defs/text-grouping" } }, "required": [] } ] }, "character-precomp": { "type": "object", "title": "Character Precomp", "description": "Defines a character as a precomp layer", "properties": { "refId": { "title": "Reference Id", "description": "ID of the precomp as specified in the assets", "type": "string" }, "ks": { "title": "Transform", "description": "Layer transform", "$ref": "#/$defs/transform" }, "ip": { "title": "In Point", "description": "Frame when the layer becomes visible", "type": "number", "default": 0 }, "op": { "title": "Out Point", "description": "Frame when the layer becomes invisible", "type": "number", "default": 99999 }, "sr": { "title": "Time Stretch", "type": "number", "default": 1 }, "st": { "title": "Start Time", "type": "number", "default": 0 } }, "required": [ "refId" ] }, "character-data": { "type": "object", "title": "Character Data", "description": "Defines character shapes", "properties": { "ch": { "title": "Character", "type": "string", "default": "" }, "fFamily": { "title": "Font Family", "type": "string", "default": "" }, "size": { "title": "Font Size", "type": "number", "default": 0 }, "style": { "title": "Font Style", "type": "string", "default": "" }, "w": { "title": "Width", "type": "number", "default": 0 }, "data": { "title": "Data", "oneOf": [ { "$ref": "#/$defs/character-shapes" }, { "$ref": "#/$defs/character-precomp" } ] } }, "required": [ "data", "ch", "fFamily", "size", "style", "w" ] }, "text-document": { "type": "object", "title": "Text Document", "description": "", "properties": { "f": { "title": "Font Family", "type": "string", "default": "" }, "fc": { "title": "Fill Color", "$ref": "#/$defs/color", "default": [ 0, 0, 0 ] }, "sc": { "title": "Stroke Color", "$ref": "#/$defs/color" }, "sw": { "title": "Stroke Width", "type": "number", "default": 0 }, "of": { "title": "Stroke Over Fill", "description": "Render stroke above the fill", "type": "boolean" }, "s": { "title": "Font Size", "type": "number", "default": 10 }, "lh": { "title": "Line Height", "description": "Distance between lines on multiline or wrapped text", "type": "number" }, "sz": { "title": "Wrap Size", "description": "Size of the box containing the text", "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "number" } }, "ps": { "title": "Wrap Position", "description": "Position of the box containing the text", "type": "array", "minItems": 2, "maxItems": 2, "items": { "type": "number" } }, "t": { "title": "Text", "type": "string", "description": "Text, note that newlines are encoded with \\r", "default": "" }, "j": { "title": "Justify", "$ref": "#/$defs/text-justify", "default": 0 }, "ca": { "title": "Text Caps", "$ref": "#/$defs/text-caps" }, "tr": { "title": "Tracking", "description": "Text Tracking", "type": "number" }, "ls": { "title": "Baseline Shift", "type": "number" } }, "required": [ "f", "fc", "s", "t" ] }, "text-data": { "type": "object", "title": "Text Data", "description": "Contains all the text data and animation", "allOf": [ { "type": "object", "properties": { "a": { "title": "Ranges", "caniuse": "text-animators", "type": "array", "items": { "$ref": "#/$defs/text-range" } }, "d": { "title": "Document", "$ref": "#/$defs/animated-text-document" }, "m": { "title": "Alignment", "$ref": "#/$defs/text-alignment-options" }, "p": { "title": "Follow Path", "$ref": "#/$defs/text-follow-path" } }, "required": [ "a", "d", "m", "p" ] } ] }, "character-shapes": { "type": "object", "title": "Character Shape", "description": "Defines a character as shapes", "properties": { "shapes": { "title": "Shapes", "description": "Shapes forming the character", "$ref": "#/$defs/shape-list" } }, "required": [ "shapes" ] }, "text-range": { "type": "object", "title": "Text Range", "description": "Range of text with custom animations and style", "caniuse": "animators-range-selectors", "properties": { "nm": { "title": "Name", "type": "string" }, "s": { "title": "Selector", "$ref": "#/$defs/text-range-selector" }, "a": { "title": "Style", "$ref": "#/$defs/text-style" } } }, "font-list": { "type": "object", "title": "Font List", "description": "List of fonts", "allOf": [ { "type": "object", "properties": { "list": { "title": "List", "type": "array", "items": { "$ref": "#/$defs/font" } } }, "required": [] } ] }, "text-follow-path": { "type": "object", "title": "Text Follow Path", "caniuse": "text-path", "description": "Uses the path described by a layer mask to put the text on said path.", "allOf": [ { "type": "object", "properties": { "m": { "title": "Mask", "type": "integer", "description": "Index of the mask to use" }, "f": { "title": "First Margin", "$ref": "#/$defs/value" }, "l": { "title": "Last Margin", "$ref": "#/$defs/value" }, "r": { "title": "Reverse Path", "$ref": "#/$defs/value" }, "a": { "title": "Force Alignment", "$ref": "#/$defs/value" }, "p": { "title": "Perpendicular To Path", "$ref": "#/$defs/value" } }, "required": [] } ] }, "animated-text-document": { "type": "object", "title": "Animated Text Document", "description": "Animated property representing the text contents", "properties": { "k": { "title": "Keyframes", "type": "array", "items": { "$ref": "#/$defs/text-document-keyframe" } }, "x": { "title": "Expression", "type": "string" }, "sid": { "title": "Slot ID", "description": "One of the ID in the file's slots", "type": "string" } }, "required": [ "k" ] }, "text-style": { "type": "object", "title": "Text Style", "description": "", "allOf": [ { "$ref": "#/$defs/transform" }, { "type": "object", "properties": { "sw": { "title": "Stroke Width", "$ref": "#/$defs/value" }, "sc": { "title": "Stroke Color", "$ref": "#/$defs/color-value" }, "sh": { "title": "Stroke Hue", "$ref": "#/$defs/value" }, "ss": { "title": "Stroke Saturation", "$ref": "#/$defs/value" }, "sb": { "title": "Stroke Brightness", "$ref": "#/$defs/value" }, "so": { "title": "Stroke Opacity", "$ref": "#/$defs/value" }, "fc": { "title": "Fill Color", "$ref": "#/$defs/color-value" }, "fh": { "title": "Fill Hue", "$ref": "#/$defs/value" }, "fs": { "title": "Fill Saturation", "$ref": "#/$defs/value" }, "fb": { "title": "Fill Brightness", "$ref": "#/$defs/value" }, "fo": { "title": "Fill Opacity", "$ref": "#/$defs/value" }, "t": { "title": "Letter Spacing", "$ref": "#/$defs/value" }, "bl": { "title": "Blur", "caniuse": "text-animators-blur", "$ref": "#/$defs/value" }, "ls": { "title": "Line Spacing", "$ref": "#/$defs/value" } }, "required": [] } ] }, "text-document-keyframe": { "type": "object", "title": "Text Document Keyframe", "description": "A keyframe containing a text document", "properties": { "s": { "title": "Start", "$ref": "#/$defs/text-document" }, "t": { "title": "Time", "type": "number", "default": 0 } }, "required": [ "s", "t" ] }, "font": { "type": "object", "title": "Font", "description": "Describes how a font with given settings should be loaded", "allOf": [ { "type": "object", "properties": { "ascent": { "title": "Ascent", "type": "number", "description": "Text will be moved down based on this value" }, "fFamily": { "title": "Font Family", "type": "string", "default": "sans" }, "fName": { "title": "Name", "description": "Name used by text documents to reference this font, usually it's `fFamily` followed by `fStyle`", "type": "string", "default": "sans-Regular" }, "fStyle": { "title": "Font Style", "examples": [ "Regular", "Bold", "Bold Italic" ], "type": "string", "default": "Regular" }, "fPath": { "title": "Path", "type": "string" }, "fWeight": { "title": "Weight", "type": "string" }, "origin": { "title": "Origin", "$ref": "#/$defs/font-path-origin" }, "fClass": { "type": "string", "title": "CSS Class", "description": "CSS Class applied to text objects using this font" } }, "required": [ "fFamily", "fName", "fStyle" ] } ] } } }