{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://occlusia.app/docs/occc/occc.schema.json",
  "title": "Occlusia configuration (.occc)",
  "description": "The settings of an Occlusia project without its model: one UTF-8 JSON object. Settings are keyed by NAME — the names of the model's objects, views, notes and spot elevations as the application shows them. Pools (`project_layers`, `hatch_presets`, `line_weights`, `line_types`) define ids the rest of the file references; their rules are strict and a file that breaks one is refused whole, with a code (OC001–OC508, https://occlusia.app/docs/occc-format#errors). Every other value is free: absent, it takes the default given here; of the wrong type, it reads as its default; unknown keys are kept as they are. Uniqueness rules (ids, and layer and line type names compared without case) cannot be written in JSON Schema: they are in the descriptions.",
  "type": "object",
  "additionalProperties": true,
  "properties": {
    "author": {
      "type": "string",
      "description": "Written by the application: \"Occlusia\". Informational, never read."
    },
    "app_version": {
      "type": "string",
      "description": "Version of the application that wrote the file. Informational."
    },
    "app_build": {
      "type": "string",
      "description": "Build of the application that wrote the file. Informational."
    },
    "snapshot_plugin_version": {
      "type": "string",
      "description": "Version of what captured the model the settings were made on. Informational."
    },
    "created_at": {
      "type": "string",
      "description": "When the document was created, \"YYYY-MM-DD HH:MM:SS\", local time. Kept through every save."
    },
    "saved_at": {
      "type": "string",
      "description": "When the file was written, \"YYYY-MM-DD HH:MM:SS\", local time."
    },
    "project_layers": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "$ref": "#/$defs/layer"
          },
          {
            "$ref": "#/$defs/legacyDefaultLayer"
          }
        ]
      },
      "description": "The project's own DXF layers. The default layer \"0\" (id \"layer_0\") belongs to the application: it is never written and no entry may claim it (OC107). Ids unique (OC103); names unique ignoring case (OC105)."
    },
    "hatch_presets": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/preset"
      },
      "description": "The project's pattern presets. Ids unique (OC303). Absent: a file older than project presets, which takes the browser's legacy library."
    },
    "line_weights": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/lineWeight"
      },
      "description": "The project's own line weights, beside the built-in ones. Ids unique (OC403)."
    },
    "line_types": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/lineType"
      },
      "description": "The project's own line types, beside the built-in ones. Ids unique (OC503); names unique ignoring case (OC505)."
    },
    "objects_settings": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/object"
      },
      "description": "By object name, as the model browser shows it: one entry styles every object of that name, in every view."
    },
    "sections_settings": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/view"
      },
      "description": "By view name: the view's marker, its own visibility choices, its shadows and its PDF page."
    },
    "annotations_settings": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/note"
      },
      "description": "By note name (OCCTAG#name): the note's typography and layer."
    },
    "spot_elevations_settings": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/spotElevation"
      },
      "description": "By spot elevation name (OCCLEVEL#name). The retired spelling `levels_settings` is still read."
    },
    "spot_elevation_datum": {
      "$ref": "#/$defs/datum"
    }
  },
  "$defs": {
    "layer": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "additionalProperties": true,
      "properties": {
        "id": {
          "type": "string",
          "pattern": "\\S",
          "not": {
            "const": "layer_0"
          },
          "description": "Unique in the file; what every *_layer_id points at. The app mints \"layer_<timestamp>\"."
        },
        "name": {
          "type": "string",
          "pattern": "^[^\\s](.*[^\\s])?$",
          "not": {
            "pattern": "^0$"
          },
          "description": "The layer's name in the DXF: not blank, no surrounding spaces, unique ignoring case, never \"0\"."
        },
        "description": {
          "type": "string",
          "description": "Free text.",
          "default": ""
        },
        "color": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$",
          "description": "Layer colour.",
          "default": "#FFFFFF"
        },
        "line_weight": {
          "description": "\"default\", or a lineweight in hundredths of a millimetre (\"25\" is 0.25 mm), as a string or a number.",
          "default": "default",
          "anyOf": [
            {
              "const": "default"
            },
            {
              "type": "string",
              "pattern": "^[0-9]+$"
            },
            {
              "type": "integer",
              "minimum": 0
            }
          ]
        },
        "line_type": {
          "description": "The layer's line type.",
          "default": "solid",
          "anyOf": [
            {
              "enum": [
                "solid",
                "dashed",
                "dotted",
                "dash-dot",
                "long_dash"
              ]
            },
            {
              "type": "string",
              "pattern": "^custom-[A-Za-z0-9_-]+$"
            }
          ]
        },
        "transparency": {
          "type": "number",
          "description": "0 to 100 (the DXF stops at 90).",
          "minimum": 0,
          "maximum": 100,
          "default": 0
        },
        "active": {
          "type": "boolean",
          "description": "On.",
          "default": true
        },
        "frozen": {
          "type": "boolean",
          "description": "Frozen.",
          "default": false
        },
        "locked": {
          "type": "boolean",
          "description": "Locked.",
          "default": false
        },
        "plot": {
          "type": "boolean",
          "description": "Plotted.",
          "default": true
        }
      }
    },
    "preset": {
      "type": "object",
      "required": [
        "id"
      ],
      "additionalProperties": true,
      "properties": {
        "id": {
          "type": "string",
          "pattern": "\\S",
          "not": {
            "enum": [
              "none",
              "custom"
            ]
          },
          "description": "Unique in the file; what `template`, `surface_template` and a shadow's `pattern` point at. The app mints the label's slug: \"concrete_block\"."
        },
        "label": {
          "type": "string",
          "description": "The name the lists show.",
          "default": ""
        },
        "fill_pattern": {
          "description": "A fill: \"none\", \"hatch_solid\" or a catalog pattern. A pattern's id is its name in the Fill Type list, lower case, \"-\" written \"_\", after \"hatch_\": ANSI31 is \"hatch_ansi31\", AR-CONC \"hatch_ar_conc\".",
          "default": "none",
          "enum": [
            "none",
            "hatch_solid",
            "hatch_angle",
            "hatch_ansi31",
            "hatch_ansi32",
            "hatch_ansi33",
            "hatch_ansi34",
            "hatch_ansi35",
            "hatch_ansi36",
            "hatch_ansi37",
            "hatch_ansi38",
            "hatch_ar_b816",
            "hatch_ar_b816c",
            "hatch_ar_b88",
            "hatch_ar_brelm",
            "hatch_ar_brstd",
            "hatch_ar_conc",
            "hatch_ar_hbone",
            "hatch_ar_parq1",
            "hatch_ar_rroof",
            "hatch_ar_rshke",
            "hatch_ar_sand",
            "hatch_box",
            "hatch_brass",
            "hatch_brick",
            "hatch_brstone",
            "hatch_clay",
            "hatch_cork",
            "hatch_cross",
            "hatch_dash",
            "hatch_dolmit",
            "hatch_dots",
            "hatch_earth",
            "hatch_escher",
            "hatch_flex",
            "hatch_gost_glass",
            "hatch_gost_ground",
            "hatch_gost_wood",
            "hatch_grass",
            "hatch_grate",
            "hatch_gravel",
            "hatch_hex",
            "hatch_honey",
            "hatch_hound",
            "hatch_insul",
            "hatch_acad_iso02w100",
            "hatch_acad_iso03w100",
            "hatch_acad_iso04w100",
            "hatch_acad_iso05w100",
            "hatch_acad_iso06w100",
            "hatch_acad_iso07w100",
            "hatch_acad_iso08w100",
            "hatch_acad_iso09w100",
            "hatch_acad_iso10w100",
            "hatch_acad_iso11w100",
            "hatch_acad_iso12w100",
            "hatch_acad_iso13w100",
            "hatch_acad_iso14w100",
            "hatch_acad_iso15w100",
            "hatch_jis_lc_20",
            "hatch_jis_lc_20a",
            "hatch_jis_lc_8",
            "hatch_jis_lc_8a",
            "hatch_jis_rc_10",
            "hatch_jis_rc_15",
            "hatch_jis_rc_18",
            "hatch_jis_rc_30",
            "hatch_jis_stn_1e",
            "hatch_jis_stn_2.5",
            "hatch_jis_wood",
            "hatch_line",
            "hatch_mudst",
            "hatch_net",
            "hatch_net3",
            "hatch_plast",
            "hatch_plasti",
            "hatch_sacncr",
            "hatch_square",
            "hatch_stars",
            "hatch_steel",
            "hatch_swamp",
            "hatch_trans",
            "hatch_triang",
            "hatch_zigzag"
          ]
        },
        "color": {
          "type": "string",
          "pattern": "^#[0-9A-Fa-f]{6}$",
          "description": "Colour of the hatch lines, or of the solid fill.",
          "default": "#000000"
        },
        "color_bylayer": {
          "type": "boolean",
          "description": "DXF only: the hatch colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true
        },
        "bg": {
          "description": "A solid colour behind the hatch.",
          "default": "none",
          "anyOf": [
            {
              "const": "none"
            },
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            }
          ]
        },
        "line_weight": {
          "description": "Weight of the hatch lines.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "enum": [
                "stroke-hairline",
                "stroke-thin",
                "stroke-medium",
                "stroke-bold",
                "stroke-heavy",
                "stroke-ultra"
              ]
            },
            {
              "type": "string",
              "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
            }
          ]
        },
        "scale": {
          "type": "number",
          "description": "Size factor.",
          "exclusiveMinimum": 0,
          "default": 1
        },
        "angle": {
          "type": "number",
          "description": "Rotation, degrees counter-clockwise.",
          "default": 0
        },
        "transparency": {
          "type": "number",
          "description": "0 to 100.",
          "minimum": 0,
          "maximum": 100,
          "default": 0
        }
      }
    },
    "lineWeight": {
      "type": "object",
      "required": [
        "id"
      ],
      "additionalProperties": true,
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^stroke-custom-[A-Za-z0-9_-]+$",
          "description": "\"stroke-custom-\" and letters, digits, \"_\" or \"-\"; unique. It is the CSS class the SVG's lines carry."
        },
        "name": {
          "type": "string",
          "description": "The name the lists show.",
          "default": ""
        },
        "width": {
          "type": "number",
          "description": "Millimetres, 0.05 to 2.11 (AutoCAD's range); the DXF writes the nearest AutoCAD lineweight.",
          "minimum": 0.05,
          "maximum": 2.11,
          "default": 0.25
        }
      }
    },
    "lineType": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "additionalProperties": true,
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^custom-[A-Za-z0-9_-]+$",
          "description": "\"custom-\" and letters, digits, \"_\" or \"-\"; unique."
        },
        "name": {
          "type": "string",
          "pattern": "^[^\\s](.*[^\\s])?$",
          "maxLength": 255,
          "not": {
            "pattern": "(?i)^(continuous|bylayer|byblock|dashed|dot|dashdot|long_dash|solid|dotted|dash-dot|long dash|none)$"
          },
          "description": "The LTYPE name in the DXF: unique ignoring case, no surrounding spaces, none of < > / \\ \" : ; ? * | , = ` ' or control characters, at most 255 bytes, not a name the DXF or the application keeps."
        },
        "pattern": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "maxItems": 12,
          "description": "AutoCAD's .lin convention in millimetres on the printed sheet: a positive length is a dash, a negative one a gap, 0 a dot. Read in canonical form (a mark first, a gap last, 0.05 to 1000 each); a pattern without both a mark and a gap is a continuous line."
        }
      }
    },
    "legacyDefaultLayer": {
      "description": "The default layer as files written before the application owned it carry it: dropped at load when every key it holds has exactly these values. Never write it.",
      "type": "object",
      "required": [
        "id"
      ],
      "additionalProperties": false,
      "properties": {
        "id": {
          "const": "layer_0"
        },
        "name": {
          "const": "0"
        },
        "description": {
          "const": ""
        },
        "color": {
          "const": "#FFFFFF"
        },
        "line_weight": {
          "const": "default"
        },
        "line_type": {
          "const": "solid"
        },
        "transparency": {
          "const": 0
        },
        "active": {
          "const": true
        },
        "frozen": {
          "const": false
        },
        "locked": {
          "const": false
        },
        "plot": {
          "const": true
        }
      }
    },
    "object": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "hidden": {
          "description": "All views: true hides the object, false shows it; absent, the object is as the model shows it.",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "template": {
          "description": "The cut fill's preset: \"none\", \"custom\" (the values below, bound to no preset) or the id of a preset of `hatch_presets`. The object keeps its own copy of the preset's values.",
          "default": "none",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "fill_pattern": {
          "description": "A fill: \"none\", \"hatch_solid\" or a catalog pattern. A pattern's id is its name in the Fill Type list, lower case, \"-\" written \"_\", after \"hatch_\": ANSI31 is \"hatch_ansi31\", AR-CONC \"hatch_ar_conc\".",
          "default": "none",
          "anyOf": [
            {
              "enum": [
                "none",
                "hatch_solid",
                "hatch_angle",
                "hatch_ansi31",
                "hatch_ansi32",
                "hatch_ansi33",
                "hatch_ansi34",
                "hatch_ansi35",
                "hatch_ansi36",
                "hatch_ansi37",
                "hatch_ansi38",
                "hatch_ar_b816",
                "hatch_ar_b816c",
                "hatch_ar_b88",
                "hatch_ar_brelm",
                "hatch_ar_brstd",
                "hatch_ar_conc",
                "hatch_ar_hbone",
                "hatch_ar_parq1",
                "hatch_ar_rroof",
                "hatch_ar_rshke",
                "hatch_ar_sand",
                "hatch_box",
                "hatch_brass",
                "hatch_brick",
                "hatch_brstone",
                "hatch_clay",
                "hatch_cork",
                "hatch_cross",
                "hatch_dash",
                "hatch_dolmit",
                "hatch_dots",
                "hatch_earth",
                "hatch_escher",
                "hatch_flex",
                "hatch_gost_glass",
                "hatch_gost_ground",
                "hatch_gost_wood",
                "hatch_grass",
                "hatch_grate",
                "hatch_gravel",
                "hatch_hex",
                "hatch_honey",
                "hatch_hound",
                "hatch_insul",
                "hatch_acad_iso02w100",
                "hatch_acad_iso03w100",
                "hatch_acad_iso04w100",
                "hatch_acad_iso05w100",
                "hatch_acad_iso06w100",
                "hatch_acad_iso07w100",
                "hatch_acad_iso08w100",
                "hatch_acad_iso09w100",
                "hatch_acad_iso10w100",
                "hatch_acad_iso11w100",
                "hatch_acad_iso12w100",
                "hatch_acad_iso13w100",
                "hatch_acad_iso14w100",
                "hatch_acad_iso15w100",
                "hatch_jis_lc_20",
                "hatch_jis_lc_20a",
                "hatch_jis_lc_8",
                "hatch_jis_lc_8a",
                "hatch_jis_rc_10",
                "hatch_jis_rc_15",
                "hatch_jis_rc_18",
                "hatch_jis_rc_30",
                "hatch_jis_stn_1e",
                "hatch_jis_stn_2.5",
                "hatch_jis_wood",
                "hatch_line",
                "hatch_mudst",
                "hatch_net",
                "hatch_net3",
                "hatch_plast",
                "hatch_plasti",
                "hatch_sacncr",
                "hatch_square",
                "hatch_stars",
                "hatch_steel",
                "hatch_swamp",
                "hatch_trans",
                "hatch_triang",
                "hatch_zigzag"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_color": {
          "description": "Colour of the cut hatch lines, or of the solid fill.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_color_bylayer": {
          "description": "DXF only: the cut hatch colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_bg_color": {
          "description": "A solid colour behind the cut hatch, or \"none\".",
          "default": "none",
          "anyOf": [
            {
              "anyOf": [
                {
                  "const": "none"
                },
                {
                  "type": "string",
                  "pattern": "^#[0-9A-Fa-f]{6}$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_line_weight": {
          "description": "Weight of every line of the cut hatch.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_scale": {
          "description": "Size factor of the cut hatch: 2 twice as large, 0.5 half as large.",
          "default": 1,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_angle": {
          "description": "Rotation of the cut hatch, degrees counter-clockwise.",
          "default": 0,
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_pattern_transparency": {
          "description": "Transparency of the cut hatch, 0 to 100.",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "surface_template": {
          "description": "The surface fill's preset, as `template` is the cut fill's.",
          "default": "none",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "surface_hatch": {
          "description": "The fill of the object's visible faces beyond the plane (a brick bond in an elevation, a floor's tiling in a plan). Same ids as `fill_pattern`.",
          "default": "none",
          "anyOf": [
            {
              "enum": [
                "none",
                "hatch_solid",
                "hatch_angle",
                "hatch_ansi31",
                "hatch_ansi32",
                "hatch_ansi33",
                "hatch_ansi34",
                "hatch_ansi35",
                "hatch_ansi36",
                "hatch_ansi37",
                "hatch_ansi38",
                "hatch_ar_b816",
                "hatch_ar_b816c",
                "hatch_ar_b88",
                "hatch_ar_brelm",
                "hatch_ar_brstd",
                "hatch_ar_conc",
                "hatch_ar_hbone",
                "hatch_ar_parq1",
                "hatch_ar_rroof",
                "hatch_ar_rshke",
                "hatch_ar_sand",
                "hatch_box",
                "hatch_brass",
                "hatch_brick",
                "hatch_brstone",
                "hatch_clay",
                "hatch_cork",
                "hatch_cross",
                "hatch_dash",
                "hatch_dolmit",
                "hatch_dots",
                "hatch_earth",
                "hatch_escher",
                "hatch_flex",
                "hatch_gost_glass",
                "hatch_gost_ground",
                "hatch_gost_wood",
                "hatch_grass",
                "hatch_grate",
                "hatch_gravel",
                "hatch_hex",
                "hatch_honey",
                "hatch_hound",
                "hatch_insul",
                "hatch_acad_iso02w100",
                "hatch_acad_iso03w100",
                "hatch_acad_iso04w100",
                "hatch_acad_iso05w100",
                "hatch_acad_iso06w100",
                "hatch_acad_iso07w100",
                "hatch_acad_iso08w100",
                "hatch_acad_iso09w100",
                "hatch_acad_iso10w100",
                "hatch_acad_iso11w100",
                "hatch_acad_iso12w100",
                "hatch_acad_iso13w100",
                "hatch_acad_iso14w100",
                "hatch_acad_iso15w100",
                "hatch_jis_lc_20",
                "hatch_jis_lc_20a",
                "hatch_jis_lc_8",
                "hatch_jis_lc_8a",
                "hatch_jis_rc_10",
                "hatch_jis_rc_15",
                "hatch_jis_rc_18",
                "hatch_jis_rc_30",
                "hatch_jis_stn_1e",
                "hatch_jis_stn_2.5",
                "hatch_jis_wood",
                "hatch_line",
                "hatch_mudst",
                "hatch_net",
                "hatch_net3",
                "hatch_plast",
                "hatch_plasti",
                "hatch_sacncr",
                "hatch_square",
                "hatch_stars",
                "hatch_steel",
                "hatch_swamp",
                "hatch_trans",
                "hatch_triang",
                "hatch_zigzag"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_color": {
          "description": "Colour of the surface hatch lines, or of the solid fill.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_color_bylayer": {
          "description": "DXF only: the surface hatch colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_bg_color": {
          "description": "A solid colour behind the surface hatch, or \"none\".",
          "default": "none",
          "anyOf": [
            {
              "anyOf": [
                {
                  "const": "none"
                },
                {
                  "type": "string",
                  "pattern": "^#[0-9A-Fa-f]{6}$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_line_weight": {
          "description": "Weight of every line of the surface hatch.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_scale": {
          "description": "Size factor of the surface hatch: 2 twice as large, 0.5 half as large.",
          "default": 1,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_angle": {
          "description": "Rotation of the surface hatch, degrees counter-clockwise.",
          "default": 0,
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_pattern_transparency": {
          "description": "Transparency of the surface hatch, 0 to 100.",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_weight": {
          "description": "Cut line weight: a built-in class (HAIRLINE 0.13 mm … ULTRA 1.00 mm) or the id of a project line weight.",
          "default": "stroke-thin",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_weight_bylayer": {
          "description": "DXF only: the cut line weight is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_type": {
          "description": "Cut line type: a built-in type, \"none\" (no line at all), or the id of a project line type.",
          "default": "solid",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "solid",
                    "dashed",
                    "dotted",
                    "dash-dot",
                    "long_dash",
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_type_bylayer": {
          "description": "DXF only: the cut line type is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_type_scale": {
          "description": "A factor on the dash lengths of the cut line type (AutoCAD's object linetype scale).",
          "default": 1,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_color": {
          "description": "Cut line colour.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_color_bylayer": {
          "description": "DXF only: the cut line colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_line_transparency": {
          "description": "Cut line transparency, 0 (opaque) to 100 (invisible).",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_weight": {
          "description": "Surface line weight: a built-in class (HAIRLINE 0.13 mm … ULTRA 1.00 mm) or the id of a project line weight.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_weight_bylayer": {
          "description": "DXF only: the surface line weight is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_type": {
          "description": "Surface line type: a built-in type, \"none\" (no line at all), or the id of a project line type.",
          "default": "solid",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "solid",
                    "dashed",
                    "dotted",
                    "dash-dot",
                    "long_dash",
                    "none"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_type_bylayer": {
          "description": "DXF only: the surface line type is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_type_scale": {
          "description": "A factor on the dash lengths of the surface line type (AutoCAD's object linetype scale).",
          "default": 1,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_color": {
          "description": "Surface line colour.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_color_bylayer": {
          "description": "DXF only: the surface line colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_line_transparency": {
          "description": "Surface line transparency, 0 (opaque) to 100 (invisible).",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol": {
          "description": "Cut symbol drawn inside every cut face. The one closed vocabulary of the objects: any other word refuses the file (OC200).",
          "enum": [
            "none",
            "cross",
            "insulation"
          ],
          "default": "none"
        },
        "symbol_line_weight": {
          "description": "Weight of the symbol's lines.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol_line_weight_bylayer": {
          "description": "DXF only: the symbol's weight is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol_line_type": {
          "description": "Type of the symbol's lines.",
          "default": "solid",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "solid",
                    "dashed",
                    "dotted",
                    "dash-dot",
                    "long_dash"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol_line_type_bylayer": {
          "description": "DXF only: the symbol's line type is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol_line_color": {
          "description": "Colour of the symbol's lines.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol_line_color_bylayer": {
          "description": "DXF only: the symbol's colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "symbol_line_transparency": {
          "description": "Transparency of the symbol's lines, 0 to 100.",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "draw_order": {
          "description": "Stacking order of the object's fills and lines: higher is drawn above. Written as a number or a numeric string.",
          "default": 0,
          "anyOf": [
            {
              "type": [
                "integer",
                "string"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_layer_id": {
          "description": "DXF layer of the cut lines. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "surf_layer_id": {
          "description": "DXF layer of the surface lines. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "hatch_layer_id": {
          "description": "DXF layer of the hatches. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "cut_symbol_layer_id": {
          "description": "DXF layer of the cut symbol. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "export_block": {
          "description": "Exports the object and everything it contains as one block (DXF BLOCK and INSERT, SVG group).",
          "default": false,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "block_name": {
          "description": "The block's name; empty: the object's name.",
          "default": "",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "block_layer_id": {
          "description": "Layer of the block's INSERT. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "exclude_from_shadows": {
          "description": "No Shadows: the object casts none and receives none, and is still drawn.",
          "default": false,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "wireframe": {
          "description": "Drawn by its lines only: its faces are not drawn, hide nothing and take no part in the shadows.",
          "default": false,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "view": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "hidden": {
          "description": "Hides the view's marker in every other view.",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_style": {
          "description": "The marker's heads. \"hidden\" draws no marker; the retired \"minimal\" reads as \"closed_arrow\".",
          "default": "default",
          "anyOf": [
            {
              "enum": [
                "default",
                "closed_arrow",
                "open_arrow",
                "hidden",
                "minimal"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_color": {
          "description": "Colour of the heads.",
          "default": "#0000FF",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_number_color": {
          "description": "Colour of the symbol in the heads.",
          "default": "#0000FF",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_name_color": {
          "description": "Colour of the view's name (DEFAULT style).",
          "default": "#0000FF",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "section_line_type": {
          "description": "Type of the cut line.",
          "default": "dash-dot",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "solid",
                    "dashed",
                    "dotted",
                    "dash-dot",
                    "long_dash"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "section_line_color": {
          "description": "Colour of the cut line.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_endpoints": {
          "description": "Which ends of the cut line carry a head.",
          "default": "both",
          "anyOf": [
            {
              "enum": [
                "both",
                "start",
                "end",
                "none"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_show_number": {
          "description": "Draws the symbol.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_show_name": {
          "description": "Draws the name.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_size_mode": {
          "description": "auto fits the marker to the drawing; manual keeps `marker_scale`.",
          "default": "auto",
          "anyOf": [
            {
              "enum": [
                "auto",
                "manual"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_scale": {
          "description": "Marker size factor in manual mode (0.25 to 4 in the interface).",
          "default": 1,
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_number_font_family": {
          "description": "Font of the symbol.",
          "default": "Arial",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_number_font_size": {
          "description": "Size factor of the symbol (0.5 to 2 of the automatic size).",
          "default": 1,
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_name_font_family": {
          "description": "Font of the name.",
          "default": "Arial",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_name_font_size": {
          "description": "Size factor of the name.",
          "default": 1,
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_layer_id": {
          "description": "DXF layer of the marker. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "object_visibility": {
          "description": "This view's own choices, by object name: true shown here, false hidden here. They win over the objects' `hidden`.",
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": {
                "type": "boolean"
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "spot_elevations": {
          "description": "This view's own choices, by spot elevation name: true shown here, false hidden here.",
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": {
                "type": "boolean"
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "shadow": {
          "description": "The view's sun and cast shadows.",
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "description": "Draws the shadows.",
                  "default": false
                },
                "sun_mode": {
                  "const": "manual",
                  "default": "manual",
                  "description": "The sun is set by azimuth and altitude."
                },
                "azimuth": {
                  "type": "number",
                  "description": "Degrees clockwise from the model's north: 90 east, 180 south, 270 west.",
                  "minimum": 0,
                  "maximum": 360,
                  "default": 135
                },
                "altitude": {
                  "type": "number",
                  "description": "Height of the sun above the horizon, degrees.",
                  "minimum": 0,
                  "maximum": 90,
                  "default": 45
                },
                "interiors": {
                  "type": "boolean",
                  "description": "Also shades the interior surfaces the cut reveals.",
                  "default": true
                },
                "pattern": {
                  "type": "string",
                  "description": "\"default\" (ANSI31 at 0.5, turned 90°) or the id of a preset of `hatch_presets`.",
                  "default": "default"
                },
                "layer_id": {
                  "type": "string",
                  "description": "DXF layer of the shadow hatch. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
                  "default": "layer_0"
                }
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "pdf": {
          "description": "The view's PDF page.",
          "anyOf": [
            {
              "type": "object",
              "additionalProperties": true,
              "properties": {
                "format": {
                  "enum": [
                    "A4",
                    "A3",
                    "A2",
                    "A1",
                    "A0"
                  ],
                  "default": "A4"
                },
                "orientation": {
                  "enum": [
                    "auto",
                    "portrait",
                    "landscape"
                  ],
                  "default": "auto"
                },
                "scale_mode": {
                  "enum": [
                    "fit",
                    "custom"
                  ],
                  "default": "fit",
                  "description": "fit: the whole drawing on the sheet; custom: at 1:`scale_denominator`."
                },
                "scale_denominator": {
                  "type": "integer",
                  "default": 50,
                  "minimum": 1
                },
                "margins_mm": {
                  "type": "number",
                  "description": "Sheet margins, millimetres.",
                  "minimum": 0,
                  "default": 10
                },
                "center": {
                  "type": "array",
                  "items": {
                    "type": "number"
                  },
                  "minItems": 3,
                  "maxItems": 3,
                  "description": "The model point at the centre of the sheet, in world inches (written when the drawing was moved on the sheet)."
                }
              }
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "note": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "hidden": {
          "description": "Hides the note in every view.",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "font_family": {
          "description": "A font family. The interface offers Arial, Helvetica, Times New Roman, Courier New, Verdana and Tahoma.",
          "default": "Arial",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "font_size": {
          "description": "Height of a capital letter, in drawing units (the DXF text height).",
          "default": 12,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "font_style": {
          "default": "regular",
          "anyOf": [
            {
              "enum": [
                "regular",
                "bold",
                "italic",
                "bold-italic"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "color": {
          "description": "Colour of the text.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "color_bylayer": {
          "description": "DXF only: the text colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "transparency": {
          "description": "0 to 100.",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0,
              "maximum": 100
            },
            {
              "type": "null"
            }
          ]
        },
        "multiline": {
          "description": "Wraps the text at `max_width`.",
          "default": false,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "max_width": {
          "description": "Wrapping width, drawing units; 0: no wrapping.",
          "default": 0,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "show_leader": {
          "description": "Draws the note's leader when the model gives it one.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "background": {
          "description": "solid: a box of `background_color`; drawing: the drawing's own background.",
          "default": "none",
          "anyOf": [
            {
              "enum": [
                "none",
                "solid",
                "drawing"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "background_color": {
          "description": "Colour of a solid background.",
          "default": "#FFFFFF",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "layer_id": {
          "description": "DXF layer of the note. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "spotElevation": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "hidden": {
          "description": "Hides the spot elevation in every view (a view's `spot_elevations` choice wins).",
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_style": {
          "default": "triangle",
          "anyOf": [
            {
              "enum": [
                "triangle",
                "triangle_half",
                "triangle_open",
                "target"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_side": {
          "description": "Side of the marker the texts stand on.",
          "default": "right",
          "anyOf": [
            {
              "enum": [
                "right",
                "left"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_color": {
          "description": "Fill of the marker (its outline in triangle_open).",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_color_bylayer": {
          "description": "DXF only: the marker's colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "marker_line_weight": {
          "description": "One pen for every line of the marker.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "size_mode": {
          "default": "auto",
          "anyOf": [
            {
              "enum": [
                "auto",
                "manual"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "scale": {
          "description": "Marker size factor in manual mode, 0.05 to 50.",
          "default": 1,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0.05,
              "maximum": 50
            },
            {
              "type": "null"
            }
          ]
        },
        "show_line": {
          "description": "Draws the elevation line.",
          "default": false,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "line_type": {
          "description": "Type of the elevation line.",
          "default": "dashed",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "solid",
                    "dashed",
                    "dotted",
                    "dash-dot",
                    "long_dash"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "line_weight": {
          "description": "Weight of the elevation line.",
          "default": "stroke-hairline",
          "anyOf": [
            {
              "anyOf": [
                {
                  "enum": [
                    "stroke-hairline",
                    "stroke-thin",
                    "stroke-medium",
                    "stroke-bold",
                    "stroke-heavy",
                    "stroke-ultra"
                  ]
                },
                {
                  "type": "string",
                  "pattern": "^stroke-custom-[A-Za-z0-9_-]+$"
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "line_color": {
          "description": "Colour of the elevation line and of the head's line work.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "line_color_bylayer": {
          "description": "DXF only: the line colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "line_length": {
          "description": "Length of the elevation line, drawing units; 0 draws no line.",
          "default": 20,
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "show_value": {
          "description": "Writes the altitude.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "show_name": {
          "description": "Writes the label.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "value_display": {
          "description": "relative: the model's own height (+2.90); absolute: plus `spot_elevation_datum.offset_m`, followed by its label.",
          "default": "relative",
          "anyOf": [
            {
              "enum": [
                "relative",
                "absolute"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "value_color": {
          "description": "Colour of the altitude.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "value_color_bylayer": {
          "description": "DXF only: the altitude's colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "value_font_family": {
          "description": "Font of the altitude.",
          "default": "Arial",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "value_font_size": {
          "description": "Size of the altitude, drawing units.",
          "default": 12,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "value_font_style": {
          "default": "bold",
          "anyOf": [
            {
              "enum": [
                "regular",
                "bold",
                "italic",
                "bold-italic"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "name_color": {
          "description": "Colour of the label.",
          "default": "#000000",
          "anyOf": [
            {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "name_color_bylayer": {
          "description": "DXF only: the label's colour is the layer's (ByLayer) instead of the object's own. SVG and PDF always draw the object's.",
          "default": true,
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "name_font_family": {
          "description": "Font of the label.",
          "default": "Arial",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "name_font_size": {
          "description": "Size of the label, drawing units.",
          "default": 12,
          "anyOf": [
            {
              "type": "number",
              "exclusiveMinimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "name_font_style": {
          "default": "regular",
          "anyOf": [
            {
              "enum": [
                "regular",
                "bold",
                "italic",
                "bold-italic"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "layer_id": {
          "description": "DXF layer of the spot elevation. A layer id of `project_layers`, or \"layer_0\" (the default layer \"0\"). An id the project does not define draws on layer \"0\".",
          "default": "layer_0",
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      }
    },
    "datum": {
      "type": "object",
      "additionalProperties": true,
      "description": "The altitude of the model's origin (its ±0.00) in the project's reference: what an absolute spot elevation adds. The retired spelling `level_datum` is still read.",
      "properties": {
        "offset_m": {
          "type": "number",
          "description": "Metres.",
          "default": 0
        },
        "label": {
          "type": "string",
          "description": "Written after an absolute value: \"NGF\", \"TAW\".",
          "default": ""
        }
      }
    }
  }
}
