{
    "title": "Document",
    "description": "The document entry in a Sketch file.",
    "$id": "https://unpkg.com/@sketch-hq/sketch-file-format@6.5.0/dist/document.schema.json",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "definitions": {
        "Uuid": {
            "title": "UUID",
            "description": "UUID string.",
            "type": "string",
            "pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$",
            "$id": "#Uuid"
        },
        "AssetCollection": {
            "title": "Asset Collection",
            "description": "Collection of global document objects",
            "type": "object",
            "$id": "#AssetCollection",
            "required": [
                "_class",
                "do_objectID",
                "colorAssets",
                "gradientAssets",
                "images",
                "colors",
                "gradients",
                "exportPresets"
            ],
            "properties": {
                "_class": {
                    "const": "assetCollection"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "imageCollection": {
                    "$ref": "#/definitions/ImageCollection"
                },
                "colorAssets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ColorAsset"
                    }
                },
                "gradientAssets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/GradientAsset"
                    }
                },
                "images": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/FileRef"
                            },
                            {
                                "$ref": "#/definitions/DataRef"
                            }
                        ]
                    }
                },
                "colors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Color"
                    }
                },
                "gradients": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Gradient"
                    }
                },
                "exportPresets": {
                    "type": "array"
                }
            },
            "additionalProperties": false
        },
        "ImageCollection": {
            "title": "Image Collection",
            "deprecated": true,
            "description": "Legacy object only retained for migrating older documents.",
            "type": "object",
            "$id": "#ImageCollection",
            "required": ["_class", "images"],
            "properties": {
                "_class": {
                    "const": "imageCollection"
                },
                "images": {
                    "type": "object",
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "ColorAsset": {
            "title": "Color Asset",
            "description": "Defines a reusable color asset",
            "type": "object",
            "$id": "#ColorAsset",
            "required": ["_class", "do_objectID", "name", "color"],
            "properties": {
                "_class": {
                    "const": "MSImmutableColorAsset"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "name": {
                    "type": "string"
                },
                "color": {
                    "$ref": "#/definitions/Color"
                }
            },
            "additionalProperties": false
        },
        "Color": {
            "title": "Color",
            "description": "Defines a RGBA color value",
            "type": "object",
            "$id": "#Color",
            "required": ["_class", "alpha", "red", "green", "blue"],
            "properties": {
                "_class": {
                    "const": "color"
                },
                "alpha": {
                    "$ref": "#/definitions/UnitInterval"
                },
                "red": {
                    "$ref": "#/definitions/UnitInterval"
                },
                "green": {
                    "$ref": "#/definitions/UnitInterval"
                },
                "blue": {
                    "$ref": "#/definitions/UnitInterval"
                },
                "swatchID": {
                    "$ref": "#/definitions/Uuid"
                }
            },
            "additionalProperties": false
        },
        "UnitInterval": {
            "title": "Unit Interval",
            "description": "The set of all real numbers that are greater than or equal to 0 and less than or equal to 1. Used within Sketch documents to encode normalised scalar values, for example RGB color components.",
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "$id": "#UnitInterval"
        },
        "GradientAsset": {
            "title": "Gradient Asset",
            "description": "Defines a reusable gradient asset",
            "type": "object",
            "$id": "#GradientAsset",
            "required": ["_class", "do_objectID", "name", "gradient"],
            "properties": {
                "_class": {
                    "const": "MSImmutableGradientAsset"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "name": {
                    "type": "string"
                },
                "gradient": {
                    "$ref": "#/definitions/Gradient"
                }
            },
            "additionalProperties": false
        },
        "Gradient": {
            "title": "Gradient",
            "description": "Defines a gradient",
            "type": "object",
            "$id": "#Gradient",
            "required": [
                "_class",
                "gradientType",
                "elipseLength",
                "from",
                "to",
                "stops"
            ],
            "properties": {
                "_class": {
                    "const": "gradient"
                },
                "gradientType": {
                    "$ref": "#/definitions/GradientType"
                },
                "elipseLength": {
                    "type": "number"
                },
                "from": {
                    "$ref": "#/definitions/PointString"
                },
                "to": {
                    "$ref": "#/definitions/PointString"
                },
                "stops": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/GradientStop"
                    }
                }
            },
            "additionalProperties": false
        },
        "GradientType": {
            "title": "Gradient Type",
            "description": "Enumeration of the gradient types",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Linear", "Radial", "Angular"],
            "$id": "#GradientType"
        },
        "PointString": {
            "title": "Point String",
            "description": "A formatted string representation of a 2D point, e.g. {1, 1}.\n",
            "type": "string",
            "pattern": "^{-?\\d+(.\\d+)?(e-\\d+)?, -?\\d+(.\\d+)?(e-\\d+)?}$",
            "$id": "#PointString"
        },
        "GradientStop": {
            "title": "Gradient Stop",
            "description": "Defines a position on a gradient that marks the end of a transition to a new color",
            "type": "object",
            "$id": "#GradientStop",
            "required": ["_class", "color", "position"],
            "properties": {
                "_class": {
                    "const": "gradientStop"
                },
                "color": {
                    "$ref": "#/definitions/Color"
                },
                "position": {
                    "$ref": "#/definitions/UnitInterval"
                }
            },
            "additionalProperties": false
        },
        "FileRef": {
            "title": "File Reference",
            "description": "Defines a reference to a file within the document bundle",
            "type": "object",
            "$id": "#FileRef",
            "required": ["_class", "_ref_class", "_ref"],
            "properties": {
                "_class": {
                    "const": "MSJSONFileReference"
                },
                "_ref_class": {
                    "type": "string",
                    "enum": ["MSImageData", "MSImmutablePage", "MSPatch"],
                    "enumDescriptions": ["MSImageData", "MSImmutablePage", "MSPatch"]
                },
                "_ref": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "DataRef": {
            "title": "Data Reference",
            "description": "Defines inline base64 data",
            "type": "object",
            "$id": "#DataRef",
            "required": ["_class", "_ref_class", "_ref", "data", "sha1"],
            "properties": {
                "_class": {
                    "const": "MSJSONOriginalDataReference"
                },
                "_ref_class": {
                    "type": "string",
                    "enum": ["MSImageData", "MSFontData"],
                    "enumDescriptions": ["MSImageData", "MSFontData"]
                },
                "_ref": {
                    "type": "string"
                },
                "data": {
                    "type": "object",
                    "required": ["_data"],
                    "properties": {
                        "_data": {
                            "type": "string"
                        }
                    },
                    "additionalProperties": false
                },
                "sha1": {
                    "type": "object",
                    "required": ["_data"],
                    "properties": {
                        "_data": {
                            "type": "string"
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "ColorSpace": {
            "title": "Color Space",
            "description": "Enumeration of the color profiles Sketch can use to render a document",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Unmanaged", "sRGB", "P3"],
            "$id": "#ColorSpace"
        },
        "ForeignLayerStyle": {
            "title": "Foreign Layer Style",
            "description": "Defines a layer style that has been imported from a library",
            "type": "object",
            "$id": "#ForeignLayerStyle",
            "required": [
                "_class",
                "do_objectID",
                "libraryID",
                "sourceLibraryName",
                "symbolPrivate",
                "remoteStyleID",
                "localSharedStyle"
            ],
            "properties": {
                "_class": {
                    "const": "MSImmutableForeignLayerStyle"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "libraryID": {
                    "$ref": "#/definitions/Uuid"
                },
                "sourceLibraryName": {
                    "type": "string"
                },
                "symbolPrivate": {
                    "type": "boolean"
                },
                "remoteStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "localSharedStyle": {
                    "$ref": "#/definitions/SharedStyle"
                }
            },
            "additionalProperties": false
        },
        "SharedStyle": {
            "title": "Shared Style",
            "description": "Defines a reusable style",
            "type": "object",
            "$id": "#SharedStyle",
            "required": ["_class", "do_objectID", "name", "value"],
            "properties": {
                "_class": {
                    "const": "sharedStyle"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "name": {
                    "type": "string"
                },
                "value": {
                    "$ref": "#/definitions/Style"
                }
            },
            "additionalProperties": false
        },
        "Style": {
            "title": "Style",
            "description": "Defines a layer style",
            "type": "object",
            "$id": "#Style",
            "required": [
                "_class",
                "do_objectID",
                "borderOptions",
                "startMarkerType",
                "endMarkerType",
                "miterLimit",
                "windingRule",
                "innerShadows",
                "colorControls"
            ],
            "properties": {
                "_class": {
                    "const": "style"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "borders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Border"
                    }
                },
                "borderOptions": {
                    "$ref": "#/definitions/BorderOptions"
                },
                "blur": {
                    "$ref": "#/definitions/Blur"
                },
                "fills": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Fill"
                    }
                },
                "startMarkerType": {
                    "$ref": "#/definitions/MarkerType"
                },
                "endMarkerType": {
                    "$ref": "#/definitions/MarkerType"
                },
                "miterLimit": {
                    "type": "integer"
                },
                "windingRule": {
                    "$ref": "#/definitions/WindingRule"
                },
                "textStyle": {
                    "$ref": "#/definitions/TextStyle"
                },
                "shadows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Shadow"
                    }
                },
                "innerShadows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/InnerShadow"
                    }
                },
                "contextSettings": {
                    "$ref": "#/definitions/GraphicsContextSettings"
                },
                "colorControls": {
                    "$ref": "#/definitions/ColorControls"
                }
            },
            "additionalProperties": false
        },
        "Border": {
            "title": "Border",
            "description": "Defines a border style",
            "type": "object",
            "$id": "#Border",
            "required": [
                "_class",
                "isEnabled",
                "color",
                "fillType",
                "position",
                "thickness",
                "contextSettings",
                "gradient"
            ],
            "properties": {
                "_class": {
                    "const": "border"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "color": {
                    "$ref": "#/definitions/Color"
                },
                "fillType": {
                    "$ref": "#/definitions/FillType"
                },
                "position": {
                    "$ref": "#/definitions/BorderPosition"
                },
                "thickness": {
                    "type": "number",
                    "exclusiveMinimum": 0
                },
                "contextSettings": {
                    "$ref": "#/definitions/GraphicsContextSettings"
                },
                "gradient": {
                    "$ref": "#/definitions/Gradient"
                }
            },
            "additionalProperties": false
        },
        "FillType": {
            "title": "Fill Type",
            "description": "Enumeration of the fill types",
            "type": "integer",
            "enum": [0, 1, 4],
            "enumDescriptions": ["Color", "Gradient", "Pattern"],
            "$id": "#FillType"
        },
        "BorderPosition": {
            "title": "Border Position",
            "description": "Enumeration of border positions",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Center", "Inside", "Outside"],
            "$id": "#BorderPosition"
        },
        "GraphicsContextSettings": {
            "title": "Graphics Context Settings",
            "description": "Defines the opacity and blend mode of a style or shadow",
            "type": "object",
            "$id": "#GraphicsContextSettings",
            "required": ["_class", "blendMode", "opacity"],
            "properties": {
                "_class": {
                    "const": "graphicsContextSettings"
                },
                "blendMode": {
                    "$ref": "#/definitions/BlendMode"
                },
                "opacity": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "BlendMode": {
            "title": "Blend Mode",
            "description": "Enumeration of the blend modes that can be applied to fills",
            "type": "integer",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17],
            "enumDescriptions": [
                "Normal",
                "Darken",
                "Multiply",
                "Color burn",
                "Lighten",
                "Screen",
                "Color dodge",
                "Overlay",
                "Soft light",
                "Hard light",
                "Difference",
                "Exclusion",
                "Hue",
                "Saturation",
                "Color",
                "Luminosity",
                "Plus darker",
                "Plus lighter"
            ],
            "$id": "#BlendMode"
        },
        "BorderOptions": {
            "title": "Border Options",
            "description": "Defines border options",
            "type": "object",
            "$id": "#BorderOptions",
            "required": [
                "_class",
                "isEnabled",
                "dashPattern",
                "lineCapStyle",
                "lineJoinStyle"
            ],
            "properties": {
                "_class": {
                    "const": "borderOptions"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "dashPattern": {
                    "type": "array",
                    "items": {
                        "type": "number"
                    }
                },
                "lineCapStyle": {
                    "$ref": "#/definitions/LineCapStyle"
                },
                "lineJoinStyle": {
                    "$ref": "#/definitions/LineJoinStyle"
                }
            },
            "additionalProperties": false
        },
        "LineCapStyle": {
            "title": "Line Cap Style",
            "description": "Enumeration of the line cap styles",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Butt", "Round", "Projecting"],
            "$id": "#LineCapStyle"
        },
        "LineJoinStyle": {
            "title": "Line Join Style",
            "description": "Enumeration of the line join styles",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Miter", "Round", "Bevel"],
            "$id": "#LineJoinStyle"
        },
        "Blur": {
            "title": "Blur",
            "description": "Defines a blur style",
            "type": "object",
            "$id": "#Blur",
            "required": ["_class", "isEnabled", "center", "saturation", "type"],
            "properties": {
                "_class": {
                    "const": "blur"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "center": {
                    "$ref": "#/definitions/PointString"
                },
                "motionAngle": {
                    "type": "number"
                },
                "radius": {
                    "type": "number"
                },
                "saturation": {
                    "type": "number"
                },
                "type": {
                    "$ref": "#/definitions/BlurType"
                }
            },
            "additionalProperties": false
        },
        "BlurType": {
            "title": "Blur Type",
            "description": "Enumeration of the various blur types",
            "type": "integer",
            "enum": [0, 1, 2, 3],
            "enumDescriptions": ["Gaussian", "Motion", "Zoom", "Background"],
            "$id": "#BlurType"
        },
        "Fill": {
            "title": "Fill",
            "description": "Defines a fill style",
            "type": "object",
            "$id": "#Fill",
            "required": [
                "_class",
                "isEnabled",
                "color",
                "fillType",
                "noiseIndex",
                "noiseIntensity",
                "patternFillType",
                "patternTileScale",
                "contextSettings",
                "gradient"
            ],
            "properties": {
                "_class": {
                    "const": "fill"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "color": {
                    "$ref": "#/definitions/Color"
                },
                "fillType": {
                    "$ref": "#/definitions/FillType"
                },
                "noiseIndex": {
                    "type": "number"
                },
                "noiseIntensity": {
                    "type": "number"
                },
                "patternFillType": {
                    "$ref": "#/definitions/PatternFillType"
                },
                "patternTileScale": {
                    "type": "number"
                },
                "contextSettings": {
                    "$ref": "#/definitions/GraphicsContextSettings"
                },
                "gradient": {
                    "$ref": "#/definitions/Gradient"
                },
                "image": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/FileRef"
                        },
                        {
                            "$ref": "#/definitions/DataRef"
                        }
                    ]
                }
            },
            "additionalProperties": false
        },
        "PatternFillType": {
            "title": "Pattern Fill Type",
            "description": "Enumeration of pattern fill types",
            "type": "integer",
            "enum": [0, 1, 2, 3],
            "enumDescriptions": ["Tile", "Fill", "Stretch", "Fit"],
            "$id": "#PatternFillType"
        },
        "MarkerType": {
            "title": "Marker Type",
            "description": "Enumeration of the possible types of vector line endings",
            "type": "integer",
            "enum": [0, 1, 2, 3, 4, 5, 6],
            "enumDescriptions": [
                "Open arrow",
                "Filled arrow",
                "Line",
                "Open circle",
                "Filled circle",
                "Open square",
                "Filled square"
            ],
            "$id": "#MarkerType"
        },
        "WindingRule": {
            "title": "Winding Rule",
            "description": "Enumeration of the winding rule that controls how fills behave in shapes with complex paths",
            "type": "integer",
            "enum": [0, 1],
            "enumDescriptions": ["Non zero", "Even odd"],
            "$id": "#WindingRule"
        },
        "TextStyle": {
            "title": "Text Style",
            "description": "Defines text style",
            "type": "object",
            "$id": "#TextStyle",
            "required": ["_class", "verticalAlignment", "encodedAttributes"],
            "properties": {
                "_class": {
                    "const": "textStyle"
                },
                "verticalAlignment": {
                    "$ref": "#/definitions/TextVerticalAlignment"
                },
                "encodedAttributes": {
                    "type": "object",
                    "required": ["MSAttributedStringFontAttribute"],
                    "properties": {
                        "paragraphStyle": {
                            "$ref": "#/definitions/ParagraphStyle"
                        },
                        "MSAttributedStringTextTransformAttribute": {
                            "$ref": "#/definitions/TextTransform"
                        },
                        "underlineStyle": {
                            "$ref": "#/definitions/UnderlineStyle"
                        },
                        "strikethroughStyle": {
                            "$ref": "#/definitions/StrikethroughStyle"
                        },
                        "kerning": {
                            "type": "number"
                        },
                        "MSAttributedStringFontAttribute": {
                            "$ref": "#/definitions/FontDescriptor"
                        },
                        "textStyleVerticalAlignmentKey": {
                            "$ref": "#/definitions/TextVerticalAlignment"
                        },
                        "MSAttributedStringColorAttribute": {
                            "$ref": "#/definitions/Color"
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "TextVerticalAlignment": {
            "title": "Text Vertical Alignment",
            "description": "Enumeration of the text style vertical alighment options",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Top", "Middle", "Bottom"],
            "$id": "#TextVerticalAlignment"
        },
        "ParagraphStyle": {
            "title": "Paragraph Style",
            "description": "Defines the paragraph style within a text style",
            "type": "object",
            "$id": "#ParagraphStyle",
            "required": ["_class"],
            "properties": {
                "_class": {
                    "const": "paragraphStyle"
                },
                "alignment": {
                    "$ref": "#/definitions/TextHorizontalAlignment"
                },
                "maximumLineHeight": {
                    "type": "number"
                },
                "minimumLineHeight": {
                    "type": "number"
                },
                "paragraphSpacing": {
                    "type": "number"
                },
                "allowsDefaultTighteningForTruncation": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "TextHorizontalAlignment": {
            "title": "Text Horizontal Alignment",
            "description": "Enumeration of the horizontal alignment options for paragraphs",
            "type": "integer",
            "enum": [0, 1, 2, 3, 4],
            "enumDescriptions": ["Left", "Right", "Centered", "Justified", "Natural"],
            "$id": "#TextHorizontalAlignment"
        },
        "TextTransform": {
            "title": "Text Transform",
            "description": "Enumeration of the text style transformations options",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["None", "Uppercase", "Lowercase"],
            "$id": "#TextTransform"
        },
        "UnderlineStyle": {
            "title": "Underline Style",
            "description": "Enumeration of the text style underline options",
            "type": "integer",
            "enum": [0, 1],
            "enumDescriptions": ["None", "Underlined"],
            "$id": "#UnderlineStyle"
        },
        "StrikethroughStyle": {
            "title": "Strikethrough Style",
            "description": "Enumeration of the text style strikethrough options",
            "type": "integer",
            "enum": [0, 1],
            "enumDescriptions": ["None", "Strikethrough"],
            "$id": "#StrikethroughStyle"
        },
        "FontDescriptor": {
            "title": "Font Descriptor",
            "description": "Defines a font selection",
            "type": "object",
            "$id": "#FontDescriptor",
            "required": ["_class", "attributes"],
            "properties": {
                "_class": {
                    "const": "fontDescriptor"
                },
                "attributes": {
                    "type": "object",
                    "required": ["name", "size"],
                    "properties": {
                        "name": {
                            "type": "string"
                        },
                        "size": {
                            "type": "number"
                        },
                        "variation": {
                            "type": "object",
                            "additionalProperties": true,
                            "patternProperties": {
                                "^\\d*$:": {
                                    "type": "number"
                                }
                            }
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "Shadow": {
            "title": "Shadow",
            "description": "Defines a shadow style",
            "type": "object",
            "$id": "#Shadow",
            "required": [
                "_class",
                "isEnabled",
                "blurRadius",
                "color",
                "contextSettings",
                "offsetX",
                "offsetY",
                "spread"
            ],
            "properties": {
                "_class": {
                    "const": "shadow"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "blurRadius": {
                    "type": "number"
                },
                "color": {
                    "$ref": "#/definitions/Color"
                },
                "contextSettings": {
                    "$ref": "#/definitions/GraphicsContextSettings"
                },
                "offsetX": {
                    "type": "number"
                },
                "offsetY": {
                    "type": "number"
                },
                "spread": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "InnerShadow": {
            "title": "Inner Shadow",
            "description": "Defines an inner shadow style",
            "type": "object",
            "$id": "#InnerShadow",
            "required": [
                "_class",
                "isEnabled",
                "blurRadius",
                "color",
                "contextSettings",
                "offsetX",
                "offsetY",
                "spread"
            ],
            "properties": {
                "_class": {
                    "const": "innerShadow"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "blurRadius": {
                    "type": "number"
                },
                "color": {
                    "$ref": "#/definitions/Color"
                },
                "contextSettings": {
                    "$ref": "#/definitions/GraphicsContextSettings"
                },
                "offsetX": {
                    "type": "number"
                },
                "offsetY": {
                    "type": "number"
                },
                "spread": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "ColorControls": {
            "title": "Color Controls",
            "description": "Defines color adjust styles on images",
            "type": "object",
            "$id": "#ColorControls",
            "required": [
                "_class",
                "isEnabled",
                "brightness",
                "contrast",
                "hue",
                "saturation"
            ],
            "properties": {
                "_class": {
                    "const": "colorControls"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "brightness": {
                    "type": "number",
                    "minimum": -100,
                    "maximum": 100
                },
                "contrast": {
                    "type": "number",
                    "minimum": -100,
                    "maximum": 100
                },
                "hue": {
                    "type": "number",
                    "minimum": -100,
                    "maximum": 100
                },
                "saturation": {
                    "type": "number",
                    "minimum": -100,
                    "maximum": 100
                }
            },
            "additionalProperties": false
        },
        "ForeignSymbol": {
            "title": "Foreign Symbol",
            "description": "Defines a symbol that has been imported from a library",
            "type": "object",
            "$id": "#ForeignSymbol",
            "required": [
                "_class",
                "do_objectID",
                "libraryID",
                "sourceLibraryName",
                "symbolPrivate",
                "originalMaster",
                "symbolMaster"
            ],
            "properties": {
                "_class": {
                    "const": "MSImmutableForeignSymbol"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "libraryID": {
                    "$ref": "#/definitions/Uuid"
                },
                "sourceLibraryName": {
                    "type": "string"
                },
                "symbolPrivate": {
                    "type": "boolean"
                },
                "originalMaster": {
                    "$ref": "#/definitions/SymbolMaster"
                },
                "symbolMaster": {
                    "$ref": "#/definitions/SymbolMaster"
                },
                "missingLibraryFontAcknowledged": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "SymbolMaster": {
            "title": "Symbol Source Layer",
            "description": "A symbol source layer represents a reusable group of layers",
            "type": "object",
            "$id": "#SymbolMaster",
            "required": [
                "_class",
                "allowsOverrides",
                "backgroundColor",
                "booleanOperation",
                "do_objectID",
                "exportOptions",
                "frame",
                "hasBackgroundColor",
                "hasClickThrough",
                "horizontalRulerData",
                "includeBackgroundColorInExport",
                "includeBackgroundColorInInstance",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isFlowHome",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "layers",
                "name",
                "nameIsFixed",
                "overrideProperties",
                "resizesContent",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain",
                "symbolID",
                "verticalRulerData"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "hasClickThrough": {
                    "type": "boolean"
                },
                "horizontalRulerData": {
                    "$ref": "#/definitions/RulerData"
                },
                "verticalRulerData": {
                    "$ref": "#/definitions/RulerData"
                },
                "layout": {
                    "$ref": "#/definitions/LayoutGrid"
                },
                "grid": {
                    "$ref": "#/definitions/SimpleGrid"
                },
                "groupLayout": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/FreeformGroupLayout"
                        },
                        {
                            "$ref": "#/definitions/InferredGroupLayout"
                        }
                    ]
                },
                "_class": {
                    "const": "symbolMaster"
                },
                "backgroundColor": {
                    "$ref": "#/definitions/Color"
                },
                "hasBackgroundColor": {
                    "type": "boolean"
                },
                "includeBackgroundColorInInstance": {
                    "type": "boolean"
                },
                "includeBackgroundColorInExport": {
                    "type": "boolean"
                },
                "isFlowHome": {
                    "type": "boolean"
                },
                "resizesContent": {
                    "type": "boolean"
                },
                "presetDictionary": {
                    "type": "object",
                    "additionalProperties": false
                },
                "symbolID": {
                    "$ref": "#/definitions/Uuid"
                },
                "allowsOverrides": {
                    "type": "boolean"
                },
                "overrideProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/OverrideProperty"
                    }
                },
                "layers": {
                    "type": "array",
                    "description": "Symbol sources can contain any layer or layer group except root layers such as artboards and other symbol sources",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Group"
                            },
                            {
                                "$ref": "#/definitions/Oval"
                            },
                            {
                                "$ref": "#/definitions/Polygon"
                            },
                            {
                                "$ref": "#/definitions/Rectangle"
                            },
                            {
                                "$ref": "#/definitions/ShapePath"
                            },
                            {
                                "$ref": "#/definitions/Star"
                            },
                            {
                                "$ref": "#/definitions/Triangle"
                            },
                            {
                                "$ref": "#/definitions/ShapeGroup"
                            },
                            {
                                "$ref": "#/definitions/Text"
                            },
                            {
                                "$ref": "#/definitions/SymbolInstance"
                            },
                            {
                                "$ref": "#/definitions/Slice"
                            },
                            {
                                "$ref": "#/definitions/Hotspot"
                            },
                            {
                                "$ref": "#/definitions/Bitmap"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false
        },
        "BooleanOperation": {
            "title": "Boolean Operation",
            "description": "Enumeration of the boolean operations that can be applied to combine shapes",
            "type": "integer",
            "enum": [-1, 0, 1, 2, 3],
            "enumDescriptions": [
                "None",
                "Union",
                "Subtract",
                "Intersection",
                "Difference"
            ],
            "$id": "#BooleanOperation"
        },
        "ExportOptions": {
            "title": "Export Options",
            "description": "Defines a layer's export options",
            "type": "object",
            "$id": "#ExportOptions",
            "required": [
                "_class",
                "exportFormats",
                "includedLayerIds",
                "layerOptions",
                "shouldTrim"
            ],
            "properties": {
                "_class": {
                    "const": "exportOptions"
                },
                "exportFormats": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ExportFormat"
                    }
                },
                "includedLayerIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Uuid"
                    }
                },
                "layerOptions": {
                    "type": "integer"
                },
                "shouldTrim": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "ExportFormat": {
            "title": "Export Format",
            "description": "Defines an export format, as listed in a layer's export options",
            "type": "object",
            "$id": "#ExportFormat",
            "required": [
                "_class",
                "absoluteSize",
                "fileFormat",
                "name",
                "scale",
                "visibleScaleType"
            ],
            "properties": {
                "_class": {
                    "const": "exportFormat"
                },
                "absoluteSize": {
                    "type": "integer"
                },
                "fileFormat": {
                    "$ref": "#/definitions/ExportFileFormat"
                },
                "name": {
                    "type": "string"
                },
                "namingScheme": {
                    "$ref": "#/definitions/ExportFormatNamingScheme"
                },
                "scale": {
                    "type": "number"
                },
                "visibleScaleType": {
                    "$ref": "#/definitions/VisibleScaleType"
                }
            },
            "additionalProperties": false
        },
        "ExportFileFormat": {
            "title": "Export File Format",
            "description": "Enumeration of the file formats that can be selected in the layer export options",
            "type": "string",
            "enum": ["png", "jpg", "tiff", "eps", "pdf", "webp", "svg"],
            "enumDescriptions": ["PNG", "JPG", "TIFF", "EPS", "PDF", "WEBP", "SVG"],
            "$id": "#ExportFileFormat"
        },
        "ExportFormatNamingScheme": {
            "title": "Export Format Naming Scheme",
            "description": "Enumeration of the possible types of export format naming schemes",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Suffix", "Secondary Prefix", "Primary Prefix"],
            "$id": "#ExportFormatNamingScheme"
        },
        "VisibleScaleType": {
            "title": "Visible Scale Type",
            "description": "Enumeration of the possible values to control how an exported layer will be scaled",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Scale", "Width", "Height"],
            "$id": "#VisibleScaleType"
        },
        "Rect": {
            "title": "Rect",
            "description": "Defines an abstract rectangle",
            "type": "object",
            "$id": "#Rect",
            "required": [
                "_class",
                "constrainProportions",
                "height",
                "width",
                "x",
                "y"
            ],
            "properties": {
                "_class": {
                    "const": "rect"
                },
                "constrainProportions": {
                    "type": "boolean"
                },
                "height": {
                    "type": "number"
                },
                "width": {
                    "type": "number"
                },
                "x": {
                    "type": "number"
                },
                "y": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "FlowConnection": {
            "title": "Flow Connection",
            "description": "Defines a connection between elements in a prototype",
            "type": "object",
            "$id": "#FlowConnection",
            "required": ["_class", "destinationArtboardID", "animationType"],
            "properties": {
                "_class": {
                    "const": "MSImmutableFlowConnection"
                },
                "destinationArtboardID": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/Uuid"
                        },
                        {
                            "const": "back"
                        },
                        {
                            "const": "automatic"
                        }
                    ]
                },
                "animationType": {
                    "$ref": "#/definitions/AnimationType"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "AnimationType": {
            "title": "Animation Type",
            "description": "Enumeration of the animation transition types between prototype screens",
            "type": "integer",
            "enum": [0, 1, 2, 3, 4],
            "enumDescriptions": [
                "None",
                "Slide from left",
                "Slide from right",
                "Slide from bottom",
                "Slide from top"
            ],
            "$id": "#AnimationType"
        },
        "LayerListExpanded": {
            "title": "Layer List Expanded",
            "description": "Enumeration of the expansion states in the layer list UI",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Undecided", "Collapsed", "Expanded"],
            "$id": "#LayerListExpanded"
        },
        "ResizeType": {
            "title": "Resize Type",
            "description": "Enumeration of the possible resize types",
            "type": "integer",
            "enum": [0, 1, 2, 3],
            "enumDescriptions": ["Stretch", "Pin to edge", "Resize", "Float"],
            "$id": "#ResizeType"
        },
        "RulerData": {
            "title": "Ruler Data",
            "description": "Defines persisted ruler positions on artboards, pages and symbols",
            "type": "object",
            "$id": "#RulerData",
            "required": ["_class", "base", "guides"],
            "properties": {
                "_class": {
                    "const": "rulerData"
                },
                "base": {
                    "type": "integer"
                },
                "guides": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                }
            },
            "additionalProperties": false
        },
        "LayoutGrid": {
            "title": "Layout Grid",
            "description": "Defines the layout settings for an artboard or page",
            "type": "object",
            "$id": "#LayoutGrid",
            "required": [
                "_class",
                "isEnabled",
                "columnWidth",
                "gutterHeight",
                "gutterWidth",
                "horizontalOffset",
                "numberOfColumns",
                "rowHeightMultiplication",
                "totalWidth",
                "guttersOutside",
                "drawHorizontal",
                "drawHorizontalLines",
                "drawVertical"
            ],
            "properties": {
                "_class": {
                    "const": "layoutGrid"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "columnWidth": {
                    "type": "integer"
                },
                "gutterHeight": {
                    "type": "integer"
                },
                "gutterWidth": {
                    "type": "integer"
                },
                "horizontalOffset": {
                    "type": "integer"
                },
                "numberOfColumns": {
                    "type": "integer"
                },
                "rowHeightMultiplication": {
                    "type": "integer"
                },
                "totalWidth": {
                    "type": "integer"
                },
                "guttersOutside": {
                    "type": "boolean"
                },
                "drawHorizontal": {
                    "type": "boolean"
                },
                "drawHorizontalLines": {
                    "type": "boolean"
                },
                "drawVertical": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "SimpleGrid": {
            "title": "Simple Grid",
            "description": "Defines the grid settings for an artboard or page",
            "type": "object",
            "$id": "#SimpleGrid",
            "required": ["_class", "isEnabled", "gridSize", "thickGridTimes"],
            "properties": {
                "_class": {
                    "const": "simpleGrid"
                },
                "isEnabled": {
                    "type": "boolean"
                },
                "gridSize": {
                    "type": "integer"
                },
                "thickGridTimes": {
                    "type": "integer"
                }
            },
            "additionalProperties": false
        },
        "FreeformGroupLayout": {
            "title": "Freeform Group Layout",
            "description": "Normal group layout",
            "type": "object",
            "$id": "#FreeformGroupLayout",
            "required": ["_class"],
            "properties": {
                "_class": {
                    "const": "MSImmutableFreeformGroupLayout"
                }
            },
            "additionalProperties": false
        },
        "InferredGroupLayout": {
            "title": "Inferred Group Layout",
            "description": "Inferred group layout defines smart layout options",
            "type": "object",
            "$id": "#InferredGroupLayout",
            "required": ["_class", "axis", "layoutAnchor"],
            "properties": {
                "_class": {
                    "const": "MSImmutableInferredGroupLayout"
                },
                "axis": {
                    "$ref": "#/definitions/InferredLayoutAxis"
                },
                "layoutAnchor": {
                    "$ref": "#/definitions/InferredLayoutAnchor"
                },
                "maxSize": {
                    "type": "number"
                },
                "minSize": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "InferredLayoutAxis": {
            "title": "Inferred Layout Axis",
            "description": "Enumeration of the axis types for inferred (aka smart) layout",
            "type": "integer",
            "enum": [0, 1],
            "enumDescriptions": ["Horizontal", "Vertical"],
            "$id": "#InferredLayoutAxis"
        },
        "InferredLayoutAnchor": {
            "title": "Inferred Layout Anchor",
            "description": "Enumeration of the anchor types for inferred (aka smart) layout",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Min", "Middle", "Max"],
            "$id": "#InferredLayoutAnchor"
        },
        "OverrideProperty": {
            "title": "Override Property",
            "description": "Defines override properties on symbol sources",
            "type": "object",
            "$id": "#OverrideProperty",
            "required": ["_class", "overrideName", "canOverride"],
            "properties": {
                "_class": {
                    "const": "MSImmutableOverrideProperty"
                },
                "overrideName": {
                    "$ref": "#/definitions/OverrideName"
                },
                "canOverride": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "OverrideName": {
            "title": "Override Name",
            "description": "Defines the valid string patterns for an override name",
            "oneOf": [
                {
                    "type": "string",
                    "pattern": "[0-9A-F]{8}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{12}((_stringValue$)|\\/)"
                },
                {
                    "type": "string",
                    "pattern": "[0-9A-F]{8}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{12}((_symbolID$)|\\/)"
                },
                {
                    "type": "string",
                    "pattern": "[0-9A-F]{8}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{12}((_image$)|\\/)"
                },
                {
                    "type": "string",
                    "pattern": "[0-9A-F]{8}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{4}\\-[0-9A-F]{12}((_layerStyle$)|\\/)"
                }
            ],
            "$id": "#OverrideName"
        },
        "Group": {
            "title": "Group Layer",
            "description": "Group layers are a document organisation aid",
            "$id": "#Group",
            "type": "object",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "exportOptions",
                "frame",
                "hasClickThrough",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "layers",
                "name",
                "nameIsFixed",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "hasClickThrough": {
                    "type": "boolean"
                },
                "groupLayout": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/FreeformGroupLayout"
                        },
                        {
                            "$ref": "#/definitions/InferredGroupLayout"
                        }
                    ]
                },
                "layers": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Group"
                            },
                            {
                                "$ref": "#/definitions/Oval"
                            },
                            {
                                "$ref": "#/definitions/Polygon"
                            },
                            {
                                "$ref": "#/definitions/Rectangle"
                            },
                            {
                                "$ref": "#/definitions/ShapePath"
                            },
                            {
                                "$ref": "#/definitions/Star"
                            },
                            {
                                "$ref": "#/definitions/Triangle"
                            },
                            {
                                "$ref": "#/definitions/ShapeGroup"
                            },
                            {
                                "$ref": "#/definitions/Text"
                            },
                            {
                                "$ref": "#/definitions/SymbolInstance"
                            },
                            {
                                "$ref": "#/definitions/Slice"
                            },
                            {
                                "$ref": "#/definitions/Hotspot"
                            },
                            {
                                "$ref": "#/definitions/Bitmap"
                            }
                        ]
                    }
                },
                "_class": {
                    "const": "group"
                }
            },
            "additionalProperties": false
        },
        "Oval": {
            "title": "Oval Layer",
            "description": "Oval layers are the result of adding an oval shape to the canvas",
            "type": "object",
            "$id": "#Oval",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "edited",
                "exportOptions",
                "frame",
                "isClosed",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "pointRadiusBehaviour",
                "points",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "edited": {
                    "type": "boolean"
                },
                "isClosed": {
                    "type": "boolean"
                },
                "pointRadiusBehaviour": {
                    "$ref": "#/definitions/PointsRadiusBehaviour"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CurvePoint"
                    }
                },
                "_class": {
                    "const": "oval"
                }
            },
            "additionalProperties": false
        },
        "PointsRadiusBehaviour": {
            "title": "Points Radius Behaviour",
            "description": "Enumeration of the possible values for corner rounding on shape points.",
            "type": "integer",
            "enum": [-1, 0, 1, 2],
            "enumDescriptions": ["Disabled", "Legacy", "Rounded", "Smooth"],
            "$id": "#PointsRadiusBehaviour"
        },
        "CurvePoint": {
            "title": "Curve Point",
            "description": "Defines a shape layer curve point",
            "type": "object",
            "$id": "#CurvePoint",
            "required": [
                "_class",
                "cornerRadius",
                "cornerStyle",
                "curveFrom",
                "curveTo",
                "hasCurveFrom",
                "hasCurveTo",
                "curveMode",
                "point"
            ],
            "properties": {
                "_class": {
                    "const": "curvePoint"
                },
                "cornerRadius": {
                    "type": "number"
                },
                "cornerStyle": {
                    "$ref": "#/definitions/CornerStyle"
                },
                "curveFrom": {
                    "$ref": "#/definitions/PointString"
                },
                "curveTo": {
                    "$ref": "#/definitions/PointString"
                },
                "hasCurveFrom": {
                    "type": "boolean"
                },
                "hasCurveTo": {
                    "type": "boolean"
                },
                "curveMode": {
                    "$ref": "#/definitions/CurveMode"
                },
                "point": {
                    "$ref": "#/definitions/PointString"
                }
            },
            "additionalProperties": false
        },
        "CornerStyle": {
            "title": "Corner Style",
            "description": "Enumeration of the corner styles that can be applied to vector points",
            "type": "integer",
            "enum": [0, 1, 2, 3],
            "enumDescriptions": ["Rounded", "RoundedInverted", "Angled", "Squared"],
            "$id": "#CornerStyle"
        },
        "CurveMode": {
            "title": "Curve Mode",
            "description": "Enumeration of the curve modes that can be applied to vector points",
            "type": "integer",
            "enum": [0, 1, 2, 3, 4],
            "enumDescriptions": [
                "None",
                "Straight",
                "Mirrored",
                "Asymmetric",
                "Disconnected"
            ],
            "$id": "#CurveMode"
        },
        "Polygon": {
            "title": "Polygon Layer",
            "description": "Polygon layers are the result of adding a polygon shape to the canvas",
            "type": "object",
            "$id": "#Polygon",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "edited",
                "exportOptions",
                "frame",
                "isClosed",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "numberOfPoints",
                "pointRadiusBehaviour",
                "points",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "edited": {
                    "type": "boolean"
                },
                "isClosed": {
                    "type": "boolean"
                },
                "pointRadiusBehaviour": {
                    "$ref": "#/definitions/PointsRadiusBehaviour"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CurvePoint"
                    }
                },
                "_class": {
                    "const": "polygon"
                },
                "numberOfPoints": {
                    "type": "integer"
                }
            },
            "additionalProperties": false
        },
        "Rectangle": {
            "title": "Rectangle Layer",
            "description": "Rectangle layers are the result of adding a rectangle shape to the canvas",
            "type": "object",
            "$id": "#Rectangle",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "edited",
                "exportOptions",
                "fixedRadius",
                "frame",
                "hasConvertedToNewRoundCorners",
                "isClosed",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "needsConvertionToNewRoundCorners",
                "pointRadiusBehaviour",
                "points",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "edited": {
                    "type": "boolean"
                },
                "isClosed": {
                    "type": "boolean"
                },
                "pointRadiusBehaviour": {
                    "$ref": "#/definitions/PointsRadiusBehaviour"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CurvePoint"
                    }
                },
                "_class": {
                    "const": "rectangle"
                },
                "fixedRadius": {
                    "type": "number"
                },
                "hasConvertedToNewRoundCorners": {
                    "type": "boolean"
                },
                "needsConvertionToNewRoundCorners": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "ShapePath": {
            "title": "Shape Path Layer",
            "description": "Shape path layers are the result of adding a vector layer",
            "type": "object",
            "$id": "#ShapePath",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "edited",
                "exportOptions",
                "frame",
                "isClosed",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "pointRadiusBehaviour",
                "points",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "edited": {
                    "type": "boolean"
                },
                "isClosed": {
                    "type": "boolean"
                },
                "pointRadiusBehaviour": {
                    "$ref": "#/definitions/PointsRadiusBehaviour"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CurvePoint"
                    }
                },
                "_class": {
                    "const": "shapePath"
                }
            },
            "additionalProperties": false
        },
        "Star": {
            "title": "Star Layer",
            "description": "Star layers are the result of adding a star shape to the canvas",
            "type": "object",
            "$id": "#Star",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "edited",
                "exportOptions",
                "frame",
                "isClosed",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "numberOfPoints",
                "pointRadiusBehaviour",
                "points",
                "radius",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "edited": {
                    "type": "boolean"
                },
                "isClosed": {
                    "type": "boolean"
                },
                "pointRadiusBehaviour": {
                    "$ref": "#/definitions/PointsRadiusBehaviour"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CurvePoint"
                    }
                },
                "_class": {
                    "const": "star"
                },
                "numberOfPoints": {
                    "type": "integer"
                },
                "radius": {
                    "type": "number"
                }
            },
            "additionalProperties": false
        },
        "Triangle": {
            "title": "Triangle Layer",
            "description": "Triangle layers are the result of adding a triangle shape to the canvas",
            "type": "object",
            "$id": "#Triangle",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "edited",
                "exportOptions",
                "frame",
                "isClosed",
                "isEquilateral",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "pointRadiusBehaviour",
                "points",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "edited": {
                    "type": "boolean"
                },
                "isClosed": {
                    "type": "boolean"
                },
                "pointRadiusBehaviour": {
                    "$ref": "#/definitions/PointsRadiusBehaviour"
                },
                "points": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CurvePoint"
                    }
                },
                "_class": {
                    "const": "triangle"
                },
                "isEquilateral": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "ShapeGroup": {
            "title": "Shape Group Layer",
            "description": "Shape groups layers group together multiple shape layers",
            "$id": "#ShapeGroup",
            "type": "object",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "exportOptions",
                "frame",
                "hasClickThrough",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "layers",
                "name",
                "nameIsFixed",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain",
                "windingRule"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "hasClickThrough": {
                    "type": "boolean"
                },
                "groupLayout": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/FreeformGroupLayout"
                        },
                        {
                            "$ref": "#/definitions/InferredGroupLayout"
                        }
                    ]
                },
                "layers": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/Group"
                            },
                            {
                                "$ref": "#/definitions/Oval"
                            },
                            {
                                "$ref": "#/definitions/Polygon"
                            },
                            {
                                "$ref": "#/definitions/Rectangle"
                            },
                            {
                                "$ref": "#/definitions/ShapePath"
                            },
                            {
                                "$ref": "#/definitions/Star"
                            },
                            {
                                "$ref": "#/definitions/Triangle"
                            },
                            {
                                "$ref": "#/definitions/ShapeGroup"
                            },
                            {
                                "$ref": "#/definitions/Text"
                            },
                            {
                                "$ref": "#/definitions/SymbolInstance"
                            },
                            {
                                "$ref": "#/definitions/Slice"
                            },
                            {
                                "$ref": "#/definitions/Hotspot"
                            },
                            {
                                "$ref": "#/definitions/Bitmap"
                            }
                        ]
                    }
                },
                "_class": {
                    "const": "shapeGroup"
                },
                "windingRule": {
                    "$ref": "#/definitions/WindingRule"
                }
            },
            "additionalProperties": false
        },
        "Text": {
            "title": "Text Layer",
            "description": "A text layer represents a discrete block or line of text",
            "type": "object",
            "$id": "#Text",
            "required": [
                "_class",
                "attributedString",
                "automaticallyDrawOnUnderlyingPath",
                "booleanOperation",
                "do_objectID",
                "dontSynchroniseWithSymbol",
                "exportOptions",
                "frame",
                "glyphBounds",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "lineSpacingBehaviour",
                "name",
                "nameIsFixed",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain",
                "textBehaviour"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "_class": {
                    "const": "text"
                },
                "attributedString": {
                    "$ref": "#/definitions/AttributedString"
                },
                "automaticallyDrawOnUnderlyingPath": {
                    "type": "boolean"
                },
                "dontSynchroniseWithSymbol": {
                    "type": "boolean"
                },
                "lineSpacingBehaviour": {
                    "$ref": "#/definitions/LineSpacingBehaviour"
                },
                "textBehaviour": {
                    "$ref": "#/definitions/TextBehaviour"
                },
                "glyphBounds": {
                    "$ref": "#/definitions/PointListString"
                }
            },
            "additionalProperties": false
        },
        "AttributedString": {
            "title": "Attributed String",
            "description": "Defines character strings and associated styling applied to character ranges",
            "type": "object",
            "$id": "#AttributedString",
            "required": ["_class", "string", "attributes"],
            "properties": {
                "_class": {
                    "const": "attributedString"
                },
                "string": {
                    "type": "string"
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/StringAttribute"
                    }
                }
            },
            "additionalProperties": false
        },
        "StringAttribute": {
            "title": "String Attribute",
            "description": "Defines an attribute assigned to a range of characters in an attributed string",
            "type": "object",
            "$id": "#StringAttribute",
            "required": ["_class", "location", "length", "attributes"],
            "properties": {
                "_class": {
                    "const": "stringAttribute"
                },
                "location": {
                    "type": "integer"
                },
                "length": {
                    "type": "integer"
                },
                "attributes": {
                    "type": "object",
                    "required": ["MSAttributedStringFontAttribute"],
                    "properties": {
                        "kerning": {
                            "type": "number"
                        },
                        "textStyleVerticalAlignmentKey": {
                            "$ref": "#/definitions/TextVerticalAlignment"
                        },
                        "MSAttributedStringFontAttribute": {
                            "$ref": "#/definitions/FontDescriptor"
                        },
                        "MSAttributedStringColorAttribute": {
                            "$ref": "#/definitions/Color"
                        },
                        "paragraphStyle": {
                            "$ref": "#/definitions/ParagraphStyle"
                        }
                    },
                    "additionalProperties": false
                }
            },
            "additionalProperties": false
        },
        "LineSpacingBehaviour": {
            "title": "Line Spacing Behaviour",
            "description": "Enumeration of line spacing behaviour for fixed line height text",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["None", "Legacy", "Consistent baseline"],
            "$id": "#LineSpacingBehaviour"
        },
        "TextBehaviour": {
            "title": "Text Behaviour",
            "description": "Enumeration of the behaviours for text layers",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Flexible", "Fixed", "FixedWidthAndHeight"],
            "$id": "#TextBehaviour"
        },
        "PointListString": {
            "title": "Point List String",
            "description": "A string representation of a series of 2D points, in the format {{x, y}, {x,y}}.",
            "type": "string",
            "pattern": "^{(({-?\\d+(.\\d+)?, -?\\d+(.\\d+)?}, )+)?{-?\\d+(.\\d+)?, -?\\d+(.\\d+)?}}$",
            "$id": "#PointListString"
        },
        "SymbolInstance": {
            "title": "Symbol Instance Layer",
            "description": "Symbol instance layers represent an instance of a symbol source",
            "type": "object",
            "$id": "#SymbolInstance",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "exportOptions",
                "frame",
                "horizontalSpacing",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "overrideValues",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "scale",
                "shouldBreakMaskChain",
                "symbolID",
                "verticalSpacing"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "_class": {
                    "const": "symbolInstance"
                },
                "overrideValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/OverrideValue"
                    }
                },
                "scale": {
                    "type": "number"
                },
                "symbolID": {
                    "$ref": "#/definitions/Uuid"
                },
                "verticalSpacing": {
                    "type": "number"
                },
                "horizontalSpacing": {
                    "type": "number"
                },
                "preservesSpaceWhenHidden": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "OverrideValue": {
            "title": "Override Value",
            "description": "Defines an individual symbol override",
            "type": "object",
            "$id": "#OverrideValue",
            "required": ["_class", "overrideName", "value"],
            "properties": {
                "_class": {
                    "const": "overrideValue"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "overrideName": {
                    "$ref": "#/definitions/OverrideName"
                },
                "value": {
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "$ref": "#/definitions/Uuid"
                        },
                        {
                            "$ref": "#/definitions/FileRef"
                        },
                        {
                            "$ref": "#/definitions/DataRef"
                        }
                    ]
                }
            },
            "additionalProperties": false
        },
        "Slice": {
            "title": "Slice Layer",
            "description": "Slice layers allow the content beneath their frame to be exported",
            "type": "object",
            "$id": "#Slice",
            "required": [
                "_class",
                "backgroundColor",
                "booleanOperation",
                "do_objectID",
                "exportOptions",
                "frame",
                "hasBackgroundColor",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "_class": {
                    "const": "slice"
                },
                "hasBackgroundColor": {
                    "type": "boolean"
                },
                "backgroundColor": {
                    "$ref": "#/definitions/Color"
                }
            },
            "additionalProperties": false
        },
        "Hotspot": {
            "title": "Hotspot Layer",
            "description": "Hotspot layers define clickable hotspots for use with prototypes",
            "type": "object",
            "$id": "#Hotspot",
            "required": [
                "_class",
                "booleanOperation",
                "do_objectID",
                "exportOptions",
                "frame",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "_class": {
                    "const": "MSImmutableHotspotLayer"
                }
            },
            "additionalProperties": false
        },
        "Bitmap": {
            "title": "Bitmap Layer",
            "description": "Bitmap layers house a single image",
            "type": "object",
            "$id": "#Bitmap",
            "required": [
                "_class",
                "booleanOperation",
                "clippingMask",
                "do_objectID",
                "exportOptions",
                "fillReplacesImage",
                "frame",
                "image",
                "intendedDPI",
                "isFixedToViewport",
                "isFlippedHorizontal",
                "isFlippedVertical",
                "isLocked",
                "isTemplate",
                "isVisible",
                "layerListExpandedType",
                "name",
                "nameIsFixed",
                "resizingConstraint",
                "resizingType",
                "rotation",
                "shouldBreakMaskChain"
            ],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "booleanOperation": {
                    "$ref": "#/definitions/BooleanOperation"
                },
                "exportOptions": {
                    "$ref": "#/definitions/ExportOptions"
                },
                "frame": {
                    "$ref": "#/definitions/Rect"
                },
                "flow": {
                    "$ref": "#/definitions/FlowConnection"
                },
                "isFixedToViewport": {
                    "type": "boolean"
                },
                "isFlippedHorizontal": {
                    "type": "boolean"
                },
                "isFlippedVertical": {
                    "type": "boolean"
                },
                "isLocked": {
                    "type": "boolean"
                },
                "isTemplate": {
                    "type": "boolean"
                },
                "isVisible": {
                    "type": "boolean"
                },
                "layerListExpandedType": {
                    "$ref": "#/definitions/LayerListExpanded"
                },
                "name": {
                    "type": "string"
                },
                "nameIsFixed": {
                    "type": "boolean"
                },
                "resizingConstraint": {
                    "description": "Bitfield representing the resizing constraint",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 127
                },
                "resizingType": {
                    "$ref": "#/definitions/ResizeType"
                },
                "rotation": {
                    "type": "number"
                },
                "sharedStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shouldBreakMaskChain": {
                    "type": "boolean"
                },
                "hasClippingMask": {
                    "type": "boolean"
                },
                "clippingMaskMode": {
                    "type": "integer"
                },
                "userInfo": {
                    "type": "object",
                    "additionalProperties": true
                },
                "style": {
                    "$ref": "#/definitions/Style"
                },
                "maintainScrollPosition": {
                    "type": "boolean"
                },
                "_class": {
                    "const": "bitmap"
                },
                "fillReplacesImage": {
                    "type": "boolean"
                },
                "image": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/FileRef"
                        },
                        {
                            "$ref": "#/definitions/DataRef"
                        }
                    ]
                },
                "intendedDPI": {
                    "type": "integer"
                },
                "clippingMask": {
                    "$ref": "#/definitions/PointListString"
                }
            },
            "additionalProperties": false
        },
        "ForeignTextStyle": {
            "title": "Foreign Text Style",
            "description": "Defines a text style that has been imported from a library",
            "type": "object",
            "$id": "#ForeignTextStyle",
            "required": [
                "_class",
                "libraryID",
                "sourceLibraryName",
                "symbolPrivate",
                "remoteStyleID",
                "localSharedStyle"
            ],
            "properties": {
                "_class": {
                    "const": "MSImmutableForeignTextStyle"
                },
                "libraryID": {
                    "$ref": "#/definitions/Uuid"
                },
                "sourceLibraryName": {
                    "type": "string"
                },
                "symbolPrivate": {
                    "type": "boolean"
                },
                "remoteStyleID": {
                    "$ref": "#/definitions/Uuid"
                },
                "localSharedStyle": {
                    "$ref": "#/definitions/SharedStyle"
                },
                "missingLibraryFontAcknowledged": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "ForeignSwatch": {
            "title": "Foreign Swatch",
            "description": "Defines a swatch that has been imported from a library",
            "type": "object",
            "$id": "#ForeignSwatch",
            "required": [
                "_class",
                "do_objectID",
                "libraryID",
                "sourceLibraryName",
                "symbolPrivate",
                "remoteSwatchID",
                "localSwatch"
            ],
            "properties": {
                "_class": {
                    "const": "MSImmutableForeignSwatch"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "libraryID": {
                    "$ref": "#/definitions/Uuid"
                },
                "sourceLibraryName": {
                    "type": "string"
                },
                "symbolPrivate": {
                    "type": "boolean"
                },
                "remoteSwatchID": {
                    "$ref": "#/definitions/Uuid"
                },
                "localSwatch": {
                    "$ref": "#/definitions/Swatch"
                }
            },
            "additionalProperties": false
        },
        "Swatch": {
            "title": "Swatch",
            "description": "Defines a swatch color variable.",
            "type": "object",
            "$id": "#Swatch",
            "required": ["_class", "do_objectID", "name", "value"],
            "properties": {
                "_class": {
                    "const": "swatch"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "name": {
                    "type": "string"
                },
                "value": {
                    "$ref": "#/definitions/Color"
                }
            },
            "additionalProperties": false
        },
        "SharedStyleContainer": {
            "title": "Shared Style Container",
            "description": "Defines a document's list of reusable styles",
            "type": "object",
            "$id": "#SharedStyleContainer",
            "required": ["_class", "objects"],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "_class": {
                    "const": "sharedStyleContainer"
                },
                "objects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/SharedStyle"
                    }
                }
            },
            "additionalProperties": false
        },
        "SharedTextStyleContainer": {
            "title": "Shared Text Style Container",
            "description": "Defines a document's list of reusable text styles",
            "type": "object",
            "$id": "#SharedTextStyleContainer",
            "required": ["_class", "objects"],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "_class": {
                    "const": "sharedTextStyleContainer"
                },
                "objects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/SharedStyle"
                    }
                }
            },
            "additionalProperties": false
        },
        "SymbolContainer": {
            "title": "Symbol container",
            "description": "Legacy object only retained for migrating older documents.",
            "deprecated": true,
            "type": "object",
            "$id": "#SymbolContainer",
            "required": ["_class", "objects"],
            "properties": {
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "_class": {
                    "const": "symbolContainer"
                },
                "objects": {
                    "type": "array"
                }
            },
            "additionalProperties": false
        },
        "SwatchContainer": {
            "title": "Swatch Container",
            "description": "Defines a document's list of swatches",
            "type": "object",
            "$id": "#SwatchContainer",
            "required": ["_class", "objects"],
            "properties": {
                "_class": {
                    "const": "swatchContainer"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "objects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Swatch"
                    }
                }
            },
            "additionalProperties": false
        },
        "FontRef": {
            "title": "Font Reference",
            "description": "Defines a reference to font data embedded in the document",
            "type": "object",
            "$id": "#FontRef",
            "required": [
                "_class",
                "fontData",
                "fontFamilyName",
                "fontFileName",
                "options",
                "postscriptNames"
            ],
            "properties": {
                "_class": {
                    "const": "fontReference"
                },
                "fontData": {
                    "$ref": "#/definitions/DataRef"
                },
                "fontFamilyName": {
                    "type": "string"
                },
                "fontFileName": {
                    "type": "string"
                },
                "options": {
                    "type": "integer"
                },
                "postscriptNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "additionalProperties": false
        },
        "DocumentState": {
            "title": "Document State",
            "description": "Container for ephemeral document state. For now this is just a placeholder, and will see additions in future document versions.",
            "type": "object",
            "$id": "#DocumentState",
            "additionalProperties": true
        },
        "PatchInfo": {
            "title": "Patch Info",
            "description": "Defines ephemeral patch information related to the Cloud collaborative editing feature. This information will only be found behind-the-scenes in Cloud documents and won't be relevant or visible to users parsing or generating their own Sketch documents.",
            "type": "object",
            "$id": "#PatchInfo",
            "required": [
                "_class",
                "baseVersionID",
                "lastIntegratedPatchID",
                "localPatches",
                "receivedPatches"
            ],
            "properties": {
                "_class": {
                    "const": "MSImmutablePatchInfo"
                },
                "baseVersionID": {
                    "$ref": "#/definitions/Uuid"
                },
                "lastIntegratedPatchID": {
                    "$ref": "#/definitions/Uuid"
                },
                "localPatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FileRef"
                    }
                },
                "receivedPatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FileRef"
                    }
                }
            },
            "additionalProperties": false
        },
        "DocumentLibraryInfo": {
            "title": "Document Library Info",
            "description": "Represents a \"reference\" to the asset library, that is used in the document",
            "type": "object",
            "$id": "#DocumentLibraryInfo",
            "required": ["_class", "libraryType"],
            "properties": {
                "_class": {
                    "const": "MSImmutableDocumentLibraryInfo"
                },
                "do_objectID": {
                    "$ref": "#/definitions/Uuid"
                },
                "libraryType": {
                    "$ref": "#/definitions/DocumentLibraryType"
                },
                "name": {
                    "type": "string"
                },
                "appcastURL": {
                    "type": "string"
                },
                "documentID": {
                    "$ref": "#/definitions/Uuid"
                },
                "shareID": {
                    "$ref": "#/definitions/Uuid"
                },
                "workspaceName": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "DocumentLibraryType": {
            "title": "Document Library Type",
            "description": "Enumeration of the asset library type. Roughly represents all library types from Preferences... > Libraries tab",
            "type": "integer",
            "enum": [0, 1, 2],
            "enumDescriptions": ["Local", "Workspace", "Third-Party"],
            "$id": "#DocumentLibraryType"
        }
    },
    "type": "object",
    "required": [
        "_class",
        "assets",
        "colorSpace",
        "currentPageIndex",
        "do_objectID",
        "foreignLayerStyles",
        "foreignSymbols",
        "foreignTextStyles",
        "layerStyles",
        "layerTextStyles",
        "pages",
        "perDocumentLibraries"
    ],
    "properties": {
        "_class": {
            "const": "document"
        },
        "do_objectID": {
            "$ref": "#/definitions/Uuid"
        },
        "assets": {
            "$ref": "#/definitions/AssetCollection"
        },
        "colorSpace": {
            "$ref": "#/definitions/ColorSpace"
        },
        "currentPageIndex": {
            "type": "integer",
            "minimum": 0
        },
        "foreignLayerStyles": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/ForeignLayerStyle"
            }
        },
        "foreignSymbols": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/ForeignSymbol"
            }
        },
        "foreignTextStyles": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/ForeignTextStyle"
            }
        },
        "foreignSwatches": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/ForeignSwatch"
            }
        },
        "layerStyles": {
            "$ref": "#/definitions/SharedStyleContainer"
        },
        "layerTextStyles": {
            "$ref": "#/definitions/SharedTextStyleContainer"
        },
        "layerSymbols": {
            "$ref": "#/definitions/SymbolContainer"
        },
        "sharedSwatches": {
            "$ref": "#/definitions/SwatchContainer"
        },
        "fontReferences": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/FontRef"
            }
        },
        "documentState": {
            "$ref": "#/definitions/DocumentState"
        },
        "patchInfo": {
            "$ref": "#/definitions/PatchInfo"
        },
        "perDocumentLibraries": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/DocumentLibraryInfo"
            }
        },
        "pages": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/FileRef"
            }
        }
    },
    "additionalProperties": false
}
