{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://openeik.org/schemas/0.3/types/type.schema.json",
  "title": "Type",
  "description": "A type record. The category-specific schemas in this folder add the rules of each category.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "ifcSource": {
      "type": "object",
      "properties": {
        "globalId": {
          "type": "string",
          "pattern": "^[0-3][0-9A-Za-z_$]{21}$"
        },
        "entity": {
          "type": "string",
          "pattern": "^Ifc[A-Za-z0-9]+$"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            }
          }
        },
        "units": {
          "type": "string",
          "const": "specification"
        },
        "predefinedType": {
          "$ref": "../ifc-read/predefined-type.schema.json"
        },
        "objectType": {
          "$ref": "../ifc-read/object-type.schema.json"
        }
      },
      "required": [
        "globalId",
        "entity"
      ],
      "x-eik-closed": true
    },
    "category": {
      "type": "string",
      "maxLength": 32,
      "pattern": "^[a-z][A-Za-z0-9]*$",
      "not": {
        "anyOf": [
          {
            "pattern": "[^A-Za-z0-9]"
          },
          {
            "pattern": "^([Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Mm][0-9]|[Ll][Pp][Tt][0-9])$"
          }
        ]
      }
    },
    "name": {
      "type": "string"
    },
    "material": {
      "type": "string"
    },
    "color": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$"
    },
    "height": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "width": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "layers": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "function": {
            "type": "string",
            "enum": [
              "structure",
              "substrate",
              "insulation",
              "finish",
              "membrane"
            ]
          },
          "material": {
            "type": "string",
            "minLength": 1
          },
          "pattern": {
            "type": "string",
            "enum": [
              "none",
              "solid",
              "concrete",
              "gravel",
              "soil",
              "rigid",
              "soft",
              "timber",
              "diagonal",
              "cross",
              "clt"
            ]
          },
          "thickness": {
            "type": "number",
            "minimum": 0
          },
          "inset": {
            "type": "number",
            "minimum": 0,
            "maximum": 3000
          },
          "extent": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "toEave",
                  "toWallCore"
                ]
              },
              {
                "type": "object",
                "properties": {
                  "offset": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 6000
                  }
                },
                "required": [
                  "offset"
                ],
                "x-eik-closed": true
              }
            ]
          },
          "definition": {
            "type": "object",
            "additionalProperties": {}
          },
          "framing": {
            "type": "object",
            "properties": {
              "member": {
                "type": "object",
                "properties": {
                  "width": {
                    "type": "number",
                    "minimum": 10,
                    "maximum": 600
                  },
                  "depth": {
                    "type": "number",
                    "minimum": 10,
                    "maximum": 600
                  }
                },
                "required": [
                  "width"
                ],
                "x-eik-closed": true
              },
              "material": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60,
                "default": "C24"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "vertical",
                  "horizontal"
                ],
                "default": "vertical"
              },
              "spacing": {
                "type": "number",
                "minimum": 100,
                "maximum": 2400
              },
              "start": {
                "type": "string",
                "enum": [
                  "left",
                  "right",
                  "centre",
                  "bothEnds"
                ],
                "default": "left"
              },
              "restartAtOpenings": {
                "type": "boolean",
                "default": false
              },
              "restartMinWidth": {
                "type": "number",
                "minimum": 0,
                "maximum": 20000
              },
              "restartFrom": {
                "type": "string",
                "enum": [
                  "king",
                  "opening"
                ]
              },
              "alignToTrusses": {
                "type": "boolean",
                "default": false
              },
              "bottomPlates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "width": {
                      "type": "number",
                      "minimum": 10,
                      "maximum": 600
                    },
                    "depth": {
                      "type": "number",
                      "minimum": 10,
                      "maximum": 600
                    },
                    "side": {
                      "type": "string",
                      "enum": [
                        "exterior",
                        "interior"
                      ]
                    }
                  },
                  "required": [
                    "width"
                  ],
                  "x-eik-closed": true
                },
                "maxItems": 2,
                "default": []
              },
              "topPlates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "width": {
                      "type": "number",
                      "minimum": 10,
                      "maximum": 600
                    },
                    "depth": {
                      "type": "number",
                      "minimum": 10,
                      "maximum": 600
                    },
                    "side": {
                      "type": "string",
                      "enum": [
                        "exterior",
                        "interior"
                      ]
                    }
                  },
                  "required": [
                    "width"
                  ],
                  "x-eik-closed": true
                },
                "maxItems": 2,
                "default": []
              },
              "plateOverhangAtEnds": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000,
                "default": 0
              },
              "top": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "underFloor",
                      "levelPlate",
                      "raking"
                    ],
                    "default": "auto"
                  },
                  "height": {
                    "type": "number",
                    "minimum": 100,
                    "maximum": 20000
                  }
                },
                "x-eik-closed": true,
                "default": {
                  "mode": "auto"
                }
              },
              "rakingTopPlate": {
                "type": "boolean",
                "default": true
              },
              "roughOpeningGap": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "default": 0
              },
              "bottomPlateAtOpenings": {
                "type": "object",
                "properties": {
                  "doors": {
                    "type": "string",
                    "enum": [
                      "cut",
                      "keep"
                    ],
                    "default": "cut"
                  },
                  "windows": {
                    "type": "string",
                    "enum": [
                      "cut",
                      "keep"
                    ],
                    "default": "keep"
                  },
                  "clearance": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 0
                  }
                },
                "x-eik-closed": true,
                "default": {
                  "doors": "cut",
                  "windows": "keep",
                  "clearance": 0
                }
              },
              "openings": {
                "type": "object",
                "properties": {
                  "structural": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "maxWidth": {
                          "type": "number",
                          "minimum": 1,
                          "maximum": 20000
                        },
                        "header": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                },
                                "depth": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                }
                              },
                              "required": [
                                "width"
                              ],
                              "x-eik-closed": true
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "headerPlies": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 4,
                          "default": 1
                        },
                        "kingStuds": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 3,
                          "default": 1
                        },
                        "jackStuds": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 3,
                          "default": 1
                        },
                        "sill": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                },
                                "depth": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                }
                              },
                              "required": [
                                "width"
                              ],
                              "x-eik-closed": true
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "cripplesAbove": {
                          "type": "boolean",
                          "default": true
                        },
                        "cripplesBelow": {
                          "type": "boolean",
                          "default": true
                        },
                        "studsAtKings": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "maxWidth",
                        "header",
                        "sill"
                      ],
                      "x-eik-closed": true
                    },
                    "minItems": 1,
                    "maxItems": 6
                  },
                  "nonStructural": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "maxWidth": {
                          "type": "number",
                          "minimum": 1,
                          "maximum": 20000
                        },
                        "header": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                },
                                "depth": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                }
                              },
                              "required": [
                                "width"
                              ],
                              "x-eik-closed": true
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "headerPlies": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 4,
                          "default": 1
                        },
                        "kingStuds": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 3,
                          "default": 1
                        },
                        "jackStuds": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 3,
                          "default": 1
                        },
                        "sill": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "width": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                },
                                "depth": {
                                  "type": "number",
                                  "minimum": 10,
                                  "maximum": 600
                                }
                              },
                              "required": [
                                "width"
                              ],
                              "x-eik-closed": true
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "cripplesAbove": {
                          "type": "boolean",
                          "default": true
                        },
                        "cripplesBelow": {
                          "type": "boolean",
                          "default": true
                        },
                        "studsAtKings": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "maxWidth",
                        "header",
                        "sill"
                      ],
                      "x-eik-closed": true
                    },
                    "minItems": 1,
                    "maxItems": 6
                  }
                },
                "required": [
                  "structural"
                ],
                "x-eik-closed": true
              },
              "noggings": {
                "type": "object",
                "properties": {
                  "spacing": {
                    "anyOf": [
                      {
                        "type": "number",
                        "minimum": 200,
                        "maximum": 5000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "rows": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10,
                    "default": 0
                  },
                  "staggered": {
                    "type": "boolean",
                    "default": false
                  }
                },
                "required": [
                  "spacing"
                ],
                "x-eik-closed": true
              },
              "junctions": {
                "type": "object",
                "properties": {
                  "L": {
                    "type": "string",
                    "enum": [
                      "wrap",
                      "butt"
                    ],
                    "default": "butt"
                  },
                  "T": {
                    "type": "string",
                    "enum": [
                      "backer",
                      "ladder",
                      "flat"
                    ],
                    "default": "backer"
                  },
                  "teeFlatWidth": {
                    "type": "number",
                    "minimum": 45,
                    "maximum": 400
                  },
                  "end": {
                    "type": "string",
                    "enum": [
                      "single",
                      "double"
                    ],
                    "default": "single"
                  },
                  "cornerStudWidth": {
                    "type": "number",
                    "minimum": 45,
                    "maximum": 600
                  },
                  "endFlat": {
                    "type": "boolean"
                  }
                },
                "x-eik-closed": true
              },
              "moveBlockedStuds": {
                "type": "boolean"
              },
              "minGap": {
                "type": "number",
                "minimum": 0,
                "maximum": 300
              },
              "middleBay": {
                "type": "number",
                "minimum": 0,
                "maximum": 1200
              },
              "studsAtPosts": {
                "type": "boolean"
              },
              "relyOn": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "member",
              "spacing",
              "openings"
            ],
            "x-eik-closed": true
          },
          "joists": {
            "type": "object",
            "properties": {
              "member": {
                "type": "object",
                "properties": {
                  "width": {
                    "type": "number",
                    "minimum": 20,
                    "maximum": 400
                  },
                  "depth": {
                    "type": "number",
                    "minimum": 45,
                    "maximum": 1000
                  }
                },
                "required": [
                  "width"
                ],
                "x-eik-closed": true
              },
              "material": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60,
                "default": "C24"
              },
              "spacing": {
                "type": "number",
                "minimum": 200,
                "maximum": 1200,
                "default": 600
              },
              "direction": {
                "anyOf": [
                  {
                    "type": "string",
                    "const": "auto"
                  },
                  {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  }
                ],
                "default": "auto"
              },
              "rim": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "width": {
                        "type": "number",
                        "minimum": 20,
                        "maximum": 400
                      }
                    },
                    "required": [
                      "width"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": {
                  "width": 45
                }
              },
              "trimmerPlies": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3,
                "default": 2
              },
              "headerPlies": {
                "type": "integer",
                "minimum": 1,
                "maximum": 3,
                "default": 2
              },
              "blocking": {
                "type": "object",
                "properties": {
                  "endBays": {
                    "type": "boolean",
                    "default": true
                  },
                  "spacing": {
                    "type": "number",
                    "minimum": 200,
                    "maximum": 3000,
                    "default": 600
                  }
                },
                "x-eik-closed": true,
                "default": {}
              }
            },
            "required": [
              "member"
            ],
            "x-eik-closed": true
          },
          "precast": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "hollowCore",
                  "plate"
                ]
              },
              "product": {
                "type": "string",
                "minLength": 1,
                "maxLength": 40
              },
              "width": {
                "type": "number",
                "minimum": 300,
                "maximum": 3000,
                "default": 1200
              },
              "weight": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 2000
              },
              "cores": {
                "type": "integer",
                "minimum": 1,
                "maximum": 12
              },
              "coreWidth": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000
              },
              "coreHeight": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000
              },
              "girders": {
                "type": "object",
                "properties": {
                  "spacing": {
                    "type": "number",
                    "minimum": 100,
                    "maximum": 1500,
                    "default": 600
                  },
                  "height": {
                    "type": "number",
                    "minimum": 40,
                    "maximum": 600
                  }
                },
                "required": [
                  "height"
                ],
                "x-eik-closed": true
              },
              "bearing": {
                "type": "number",
                "minimum": 0,
                "maximum": 500
              }
            },
            "required": [
              "kind",
              "product",
              "weight"
            ],
            "x-eik-closed": true
          },
          "thermal": {
            "type": "object",
            "properties": {
              "lambda": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000
              },
              "air": {
                "type": "string",
                "enum": [
                  "closed",
                  "slightly-ventilated",
                  "ventilated"
                ]
              },
              "sd": {
                "type": "number",
                "minimum": 0,
                "maximum": 100000
              }
            },
            "x-eik-closed": true
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "core": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "function",
          "material",
          "thickness",
          "color",
          "core"
        ],
        "x-eik-closed": true
      },
      "minItems": 1
    },
    "edgeProfile": {
      "type": "object",
      "properties": {
        "shape": {
          "type": "string",
          "enum": [
            "rectangle",
            "L",
            "U"
          ]
        },
        "width": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "web": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "flange": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "anchor": {
          "type": "string",
          "enum": [
            "slabTop",
            "structureBottom"
          ]
        },
        "facing": {
          "type": "object",
          "properties": {
            "material": {
              "type": "string",
              "minLength": 1,
              "maxLength": 60
            },
            "thickness": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "depth": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            }
          },
          "required": [
            "material",
            "thickness"
          ],
          "x-eik-closed": true
        },
        "beam": {
          "type": "object",
          "properties": {
            "width": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 5000
            },
            "depth": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 5000
            }
          },
          "required": [
            "width",
            "depth"
          ],
          "x-eik-closed": true
        },
        "chamfer": {
          "type": "object",
          "properties": {
            "width": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 1000
            },
            "height": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 1000
            }
          },
          "required": [
            "width",
            "height"
          ],
          "x-eik-closed": true
        }
      },
      "required": [
        "shape",
        "width",
        "depth",
        "web",
        "flange",
        "anchor"
      ],
      "x-eik-closed": true
    },
    "gutterProfile": {
      "type": "object",
      "properties": {
        "shape": {
          "type": "string",
          "enum": [
            "halfRound",
            "box"
          ]
        },
        "diameter": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1000
        },
        "width": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1000
        },
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1000
        },
        "thickness": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 50
        },
        "horizontalOffset": {
          "type": "number",
          "default": 0
        },
        "verticalOffset": {
          "type": "number",
          "default": 0
        }
      },
      "required": [
        "shape",
        "thickness"
      ],
      "x-eik-closed": true
    },
    "room": {
      "type": "object",
      "properties": {
        "ssClass": {
          "type": "string",
          "minLength": 1,
          "x-eik-values": "national"
        },
        "code": {
          "type": "string",
          "maxLength": 40
        },
        "finishes": {
          "type": "object",
          "properties": {
            "floor": {
              "type": "object",
              "properties": {
                "material": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "code": {
                  "type": "string",
                  "maxLength": 40
                },
                "color": {
                  "type": "string",
                  "maxLength": 60
                },
                "gloss": {
                  "type": "string",
                  "maxLength": 40
                },
                "note": {
                  "type": "string",
                  "maxLength": 200
                },
                "classifications": {
                  "$ref": "../classifications/classifications.schema.json"
                }
              },
              "required": [
                "material"
              ],
              "x-eik-closed": true
            },
            "skirting": {
              "type": "object",
              "properties": {
                "material": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "code": {
                  "type": "string",
                  "maxLength": 40
                },
                "color": {
                  "type": "string",
                  "maxLength": 60
                },
                "gloss": {
                  "type": "string",
                  "maxLength": 40
                },
                "note": {
                  "type": "string",
                  "maxLength": 200
                },
                "classifications": {
                  "$ref": "../classifications/classifications.schema.json"
                }
              },
              "required": [
                "material"
              ],
              "x-eik-closed": true
            },
            "wall": {
              "type": "object",
              "properties": {
                "material": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "code": {
                  "type": "string",
                  "maxLength": 40
                },
                "color": {
                  "type": "string",
                  "maxLength": 60
                },
                "gloss": {
                  "type": "string",
                  "maxLength": 40
                },
                "note": {
                  "type": "string",
                  "maxLength": 200
                },
                "classifications": {
                  "$ref": "../classifications/classifications.schema.json"
                }
              },
              "required": [
                "material"
              ],
              "x-eik-closed": true
            },
            "ceiling": {
              "type": "object",
              "properties": {
                "material": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "code": {
                  "type": "string",
                  "maxLength": 40
                },
                "color": {
                  "type": "string",
                  "maxLength": 60
                },
                "gloss": {
                  "type": "string",
                  "maxLength": 40
                },
                "note": {
                  "type": "string",
                  "maxLength": 200
                },
                "classifications": {
                  "$ref": "../classifications/classifications.schema.json"
                }
              },
              "required": [
                "material"
              ],
              "x-eik-closed": true
            },
            "other": {
              "type": "object",
              "properties": {
                "material": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "code": {
                  "type": "string",
                  "maxLength": 40
                },
                "color": {
                  "type": "string",
                  "maxLength": 60
                },
                "gloss": {
                  "type": "string",
                  "maxLength": 40
                },
                "note": {
                  "type": "string",
                  "maxLength": 200
                },
                "classifications": {
                  "$ref": "../classifications/classifications.schema.json"
                }
              },
              "required": [
                "material"
              ],
              "x-eik-closed": true
            }
          },
          "x-eik-closed": true
        },
        "heated": {
          "type": "boolean"
        },
        "temperature": {
          "type": "number",
          "minimum": -50,
          "maximum": 60
        },
        "use": {
          "type": "string",
          "minLength": 1,
          "x-eik-values": "national",
          "maxLength": 80
        }
      },
      "required": [
        "ssClass"
      ],
      "x-eik-closed": true
    },
    "voidForm": {
      "type": "object",
      "properties": {
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        }
      },
      "required": [
        "depth"
      ],
      "x-eik-closed": true
    },
    "edgeDetail": {
      "type": "object",
      "properties": {
        "situation": {
          "type": "string",
          "enum": [
            "joint",
            "outer corner",
            "inner corner",
            "T",
            "free end",
            "top",
            "bottom",
            "opening side",
            "opening head",
            "opening sill",
            "lift"
          ]
        },
        "length": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 20000
        },
        "regions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "points": {
                "type": "array",
                "items": {
                  "type": "array",
                  "minItems": 2,
                  "maxItems": 2,
                  "prefixItems": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "minItems": 3,
                "maxItems": 64
              },
              "layer": {
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "outer",
                      "inner",
                      "insulation"
                    ]
                  },
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 31
                  }
                ]
              },
              "cut": {
                "type": "boolean",
                "const": true
              }
            },
            "required": [
              "points"
            ],
            "x-eik-closed": true
          },
          "minItems": 1,
          "maxItems": 32
        }
      },
      "required": [
        "regions"
      ],
      "x-eik-closed": true
    },
    "insert": {
      "type": "object",
      "properties": {
        "shape": {
          "type": "string",
          "enum": [
            "block",
            "bar",
            "lattice",
            "conduit"
          ]
        },
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "diameter": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 500
        },
        "bend": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 5000
        },
        "diagonal": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "pitch": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 2000
        },
        "layer": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "outer",
                "inner",
                "insulation"
              ]
            },
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 31
            }
          ]
        },
        "supplier": {
          "type": "string",
          "maxLength": 80
        },
        "article": {
          "type": "string",
          "maxLength": 80
        },
        "load": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100000
        },
        "edgeDetail": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80
        },
        "bar": {
          "type": "object",
          "properties": {
            "shape": {
              "type": "string",
              "minLength": 1,
              "x-eik-values": "national"
            },
            "dims": {
              "type": "object",
              "properties": {
                "a": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "b": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "c": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "d": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "e": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "f": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "g": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "x": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "y": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "v": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "u": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "s": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                },
                "t": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 30000
                }
              },
              "x-eik-closed": true
            },
            "diameter": {
              "type": "integer",
              "minimum": 5,
              "maximum": 40
            },
            "grade": {
              "type": "string",
              "minLength": 1,
              "x-eik-values": "national"
            },
            "plane": {
              "type": "string",
              "enum": [
                "wall",
                "across"
              ]
            },
            "inset": {
              "type": "number",
              "minimum": 0,
              "maximum": 5000
            },
            "up": {
              "type": "number",
              "minimum": -5000,
              "maximum": 5000
            },
            "flip": {
              "type": "boolean"
            },
            "note": {
              "type": "string",
              "maxLength": 40
            }
          },
          "required": [
            "shape",
            "dims",
            "diameter"
          ],
          "x-eik-closed": true
        },
        "recess": {
          "type": "object",
          "properties": {
            "width": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 5000
            },
            "height": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 5000
            },
            "depth": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 1000
            }
          },
          "required": [
            "width",
            "height",
            "depth"
          ],
          "x-eik-closed": true
        }
      },
      "required": [
        "shape",
        "depth"
      ],
      "x-eik-closed": true
    },
    "section": {
      "type": "object",
      "properties": {
        "shape": {
          "type": "string",
          "enum": [
            "rectangle",
            "I",
            "T",
            "RHS",
            "CHS",
            "round",
            "L",
            "2L",
            "U",
            "sheet",
            "custom"
          ]
        },
        "radius": {
          "type": "number",
          "minimum": 0,
          "maximum": 500
        },
        "designation": {
          "type": "string"
        },
        "profileFamily": {
          "type": "string",
          "maxLength": 40
        },
        "width": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "web": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "flange": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "grade": {
          "type": "string"
        },
        "angleCorner": {
          "type": "string",
          "enum": [
            "bottomLeft",
            "bottomRight",
            "topLeft",
            "topRight"
          ]
        },
        "gap": {
          "type": "number",
          "minimum": 0,
          "maximum": 10000
        },
        "sheet": {
          "type": "object",
          "properties": {
            "kind": {
              "type": "string",
              "enum": [
                "trapezoid",
                "sinus"
              ]
            },
            "height": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            },
            "pitch": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            },
            "cover": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            },
            "thickness": {
              "type": "number",
              "minimum": 0.3,
              "maximum": 5
            },
            "topFlange": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            },
            "bottomFlange": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            },
            "facing": {
              "type": "string",
              "enum": [
                "up",
                "down"
              ]
            },
            "use": {
              "type": "string",
              "enum": [
                "roof",
                "wall",
                "deck",
                "formwork"
              ]
            },
            "embossed": {
              "type": "boolean"
            },
            "sideLap": {
              "type": "number",
              "minimum": 0,
              "maximum": 1000
            }
          },
          "required": [
            "kind",
            "height",
            "pitch",
            "cover",
            "thickness",
            "topFlange",
            "bottomFlange",
            "facing",
            "use",
            "embossed"
          ],
          "x-eik-closed": true
        },
        "outline": {
          "type": "object",
          "properties": {
            "points": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "prefixItems": [
                      {
                        "type": "number",
                        "minimum": -100000,
                        "maximum": 100000
                      },
                      {
                        "type": "number",
                        "minimum": -100000,
                        "maximum": 100000
                      }
                    ]
                  },
                  {
                    "type": "array",
                    "minItems": 3,
                    "maxItems": 3,
                    "prefixItems": [
                      {
                        "type": "number",
                        "minimum": -100000,
                        "maximum": 100000
                      },
                      {
                        "type": "number",
                        "minimum": -100000,
                        "maximum": 100000
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100000
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "through": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "prefixItems": [
                          {
                            "type": "number",
                            "minimum": -100000,
                            "maximum": 100000
                          },
                          {
                            "type": "number",
                            "minimum": -100000,
                            "maximum": 100000
                          }
                        ]
                      }
                    },
                    "required": [
                      "through"
                    ],
                    "x-eik-closed": true
                  }
                ]
              },
              "minItems": 3,
              "maxItems": 10000
            },
            "voids": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "points": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -100000,
                              "maximum": 100000
                            },
                            {
                              "type": "number",
                              "minimum": -100000,
                              "maximum": 100000
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "minItems": 3,
                          "maxItems": 3,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -100000,
                              "maximum": 100000
                            },
                            {
                              "type": "number",
                              "minimum": -100000,
                              "maximum": 100000
                            },
                            {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 100000
                            }
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "through": {
                              "type": "array",
                              "minItems": 2,
                              "maxItems": 2,
                              "prefixItems": [
                                {
                                  "type": "number",
                                  "minimum": -100000,
                                  "maximum": 100000
                                },
                                {
                                  "type": "number",
                                  "minimum": -100000,
                                  "maximum": 100000
                                }
                              ]
                            }
                          },
                          "required": [
                            "through"
                          ],
                          "x-eik-closed": true
                        }
                      ]
                    },
                    "minItems": 3,
                    "maxItems": 10000
                  }
                },
                "required": [
                  "points"
                ],
                "x-eik-closed": true
              },
              "maxItems": 1000
            }
          },
          "required": [
            "points"
          ],
          "x-eik-closed": true
        }
      },
      "required": [
        "shape",
        "designation",
        "width",
        "depth",
        "web",
        "flange",
        "grade"
      ],
      "x-eik-closed": true,
      "allOf": [
        {
          "if": {
            "required": [
              "shape"
            ],
            "properties": {
              "shape": {
                "const": "2L"
              }
            }
          },
          "else": {
            "properties": {
              "gap": false
            }
          }
        },
        {
          "if": {
            "required": [
              "shape"
            ],
            "properties": {
              "shape": {
                "const": "custom"
              }
            }
          },
          "then": {
            "required": [
              "outline"
            ]
          },
          "else": {
            "properties": {
              "outline": false
            }
          }
        }
      ]
    },
    "framing": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 1
        },
        "previewLength": {
          "type": "number",
          "minimum": 100,
          "maximum": 100000
        },
        "trussStyle": {
          "type": "string",
          "enum": [
            "rafters",
            "collar",
            "fink",
            "ww",
            "howe",
            "kingPost",
            "scissor",
            "mono",
            "attic",
            "atticRaisedWall"
          ]
        },
        "edgeAnchor": {
          "type": "string",
          "enum": [
            "slabTop",
            "structureBottom"
          ]
        },
        "tail": {
          "type": "object",
          "properties": {
            "cuts": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "line"
                      },
                      "origin": {
                        "type": "string",
                        "enum": [
                          "tip",
                          "bearing"
                        ],
                        "default": "tip"
                      },
                      "a": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "prefixItems": [
                          {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 240
                          },
                          {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 240
                          }
                        ]
                      },
                      "b": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "prefixItems": [
                          {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 240
                          },
                          {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 240
                          }
                        ]
                      },
                      "label": {
                        "type": "string",
                        "maxLength": 60
                      }
                    },
                    "required": [
                      "kind",
                      "a",
                      "b"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "notch"
                      },
                      "origin": {
                        "type": "string",
                        "enum": [
                          "tip",
                          "bearing"
                        ],
                        "default": "bearing"
                      },
                      "outline": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            },
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            }
                          ]
                        },
                        "minItems": 3,
                        "maxItems": 12
                      },
                      "label": {
                        "type": "string",
                        "maxLength": 60
                      }
                    },
                    "required": [
                      "kind",
                      "outline"
                    ],
                    "x-eik-closed": true
                  }
                ]
              },
              "maxItems": 12
            }
          },
          "required": [
            "cuts"
          ],
          "x-eik-closed": true
        },
        "parameters": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "pattern": "^[A-Za-z][A-Za-z0-9_]*$"
              },
              "value": {
                "type": "number"
              },
              "scope": {
                "type": "string",
                "enum": [
                  "type",
                  "instance"
                ]
              },
              "min": {
                "type": "number"
              },
              "max": {
                "type": "number"
              }
            },
            "required": [
              "name",
              "value",
              "scope",
              "min",
              "max"
            ],
            "x-eik-closed": true
          },
          "maxItems": 32
        },
        "parts": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "kind": {
                    "type": "string",
                    "const": "member"
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "topChord",
                      "bottomChord",
                      "web",
                      "rafter",
                      "purlin",
                      "heelPost",
                      "strut",
                      "collar",
                      "header",
                      "ridgeBeam",
                      "post",
                      "plate"
                    ]
                  },
                  "a": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "prefixItems": [
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 240
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 240
                      }
                    ]
                  },
                  "b": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "prefixItems": [
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 240
                      },
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 240
                      }
                    ]
                  },
                  "width": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  },
                  "depth": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  },
                  "when": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  },
                  "cuts": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "prefixItems": [
                        {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            },
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            },
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            }
                          ]
                        }
                      ]
                    },
                    "maxItems": 8
                  },
                  "cutBy": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "maxItems": 8
                  }
                },
                "required": [
                  "id",
                  "kind",
                  "role",
                  "a",
                  "b",
                  "width",
                  "depth"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "kind": {
                    "type": "string",
                    "const": "profile"
                  },
                  "outline": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "prefixItems": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 240
                        },
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 240
                        }
                      ]
                    },
                    "minItems": 3,
                    "maxItems": 64
                  },
                  "width": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  },
                  "when": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  },
                  "cuts": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "prefixItems": [
                        {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            },
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            }
                          ]
                        },
                        {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            },
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            }
                          ]
                        }
                      ]
                    },
                    "maxItems": 8
                  },
                  "cutBy": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "maxItems": 8
                  }
                },
                "required": [
                  "id",
                  "kind",
                  "outline",
                  "width"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "kind": {
                    "type": "string",
                    "const": "plate"
                  },
                  "outline": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "prefixItems": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 240
                        },
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 240
                        }
                      ]
                    },
                    "minItems": 3,
                    "maxItems": 12
                  },
                  "thickness": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  },
                  "on": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1,
                    "maxItems": 4
                  },
                  "when": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 240
                  }
                },
                "required": [
                  "id",
                  "kind",
                  "outline",
                  "thickness",
                  "on"
                ],
                "x-eik-closed": true
              }
            ]
          },
          "minItems": 1,
          "maxItems": 100
        }
      },
      "required": [
        "name",
        "previewLength",
        "parameters",
        "parts"
      ],
      "x-eik-closed": true
    },
    "windowFamily": {
      "type": "object",
      "properties": {
        "family": {
          "type": "string",
          "enum": [
            "fixed",
            "casement",
            "double-casement"
          ]
        },
        "frame": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "mullion": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "panes": {
          "type": "integer",
          "minimum": 1,
          "maximum": 6
        },
        "transoms": {
          "type": "integer",
          "minimum": 0,
          "maximum": 4
        },
        "glassThickness": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        }
      },
      "required": [
        "family",
        "frame",
        "depth",
        "mullion",
        "panes",
        "transoms",
        "glassThickness"
      ],
      "x-eik-closed": true
    },
    "openingFamily": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "window",
            "door",
            "garageSectional",
            "garageFolding",
            "garageSideHinged",
            "garageRoller"
          ]
        },
        "material": {
          "type": "string",
          "enum": [
            "wood",
            "aluminium",
            "aluClad",
            "steel"
          ]
        },
        "frameWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "frameDepth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "sashWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "sashDepth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "lightsX": {
          "type": "integer",
          "minimum": 1,
          "maximum": 8
        },
        "lightsY": {
          "type": "integer",
          "minimum": 1,
          "maximum": 6
        },
        "mullionWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "glassThickness": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "operable": {
          "type": "boolean"
        },
        "hinge": {
          "type": "string",
          "enum": [
            "left",
            "right",
            "top",
            "bottom"
          ]
        },
        "swing": {
          "type": "string",
          "enum": [
            "inward",
            "outward"
          ]
        },
        "operation": {
          "type": "string",
          "enum": [
            "swing",
            "pocket",
            "slide"
          ]
        },
        "maxOpenAngle": {
          "type": "number",
          "minimum": 5,
          "maximum": 180
        },
        "wallOffset": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000
        },
        "sillFlashing": {
          "type": "boolean"
        },
        "headFlashing": {
          "type": "boolean"
        },
        "interiorSill": {
          "type": "string",
          "enum": [
            "none",
            "board"
          ]
        },
        "interiorSillDepth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "casing": {
          "type": "string",
          "enum": [
            "none",
            "exterior",
            "interior",
            "both"
          ]
        },
        "casingWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "gapInsulation": {
          "type": "number",
          "minimum": 0,
          "maximum": 50
        },
        "leafThickness": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "threshold": {
          "type": "boolean"
        },
        "glazing": {
          "type": "string",
          "enum": [
            "none",
            "upper",
            "full"
          ]
        },
        "panels": {
          "type": "integer",
          "minimum": 1,
          "maximum": 12
        },
        "frameFollowsWall": {
          "type": "boolean"
        },
        "mullions": {
          "type": "object",
          "properties": {
            "x": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "at": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 10000
                  },
                  "width": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 10000
                  }
                },
                "required": [
                  "at"
                ],
                "x-eik-closed": true
              },
              "maxItems": 7
            },
            "z": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "at": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 10000
                  },
                  "width": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 10000
                  }
                },
                "required": [
                  "at"
                ],
                "x-eik-closed": true
              },
              "maxItems": 5
            }
          },
          "x-eik-closed": true
        },
        "bars": {
          "type": "object",
          "properties": {
            "across": {
              "type": "integer",
              "minimum": 0,
              "maximum": 8
            },
            "down": {
              "type": "integer",
              "minimum": 0,
              "maximum": 8
            },
            "width": {
              "type": "number",
              "minimum": 18,
              "maximum": 60
            },
            "kind": {
              "type": "string",
              "enum": [
                "through",
                "glued"
              ]
            }
          },
          "required": [
            "across",
            "down",
            "width",
            "kind"
          ],
          "x-eik-closed": true
        }
      },
      "required": [
        "kind",
        "material",
        "frameWidth",
        "frameDepth",
        "sashWidth",
        "sashDepth",
        "lightsX",
        "lightsY",
        "mullionWidth",
        "glassThickness",
        "operable",
        "hinge",
        "swing",
        "maxOpenAngle",
        "wallOffset",
        "sillFlashing",
        "headFlashing",
        "interiorSill",
        "interiorSillDepth",
        "casing",
        "casingWidth",
        "gapInsulation",
        "leafThickness",
        "threshold",
        "glazing",
        "panels"
      ],
      "x-eik-closed": true
    },
    "outline": {
      "type": "array",
      "items": {
        "type": "array",
        "minItems": 2,
        "maxItems": 2,
        "prefixItems": [
          {
            "type": "number"
          },
          {
            "type": "number"
          }
        ]
      },
      "minItems": 3,
      "maxItems": 200
    },
    "component": {
      "type": "object",
      "properties": {
        "family": {
          "type": "string",
          "enum": [
            "toilet",
            "basin",
            "angleBracket",
            "joistHanger",
            "timberSection",
            "bolt",
            "plate",
            "weld"
          ]
        },
        "depth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        },
        "thickness": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "holes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number"
              },
              "y": {
                "type": "number"
              },
              "diameter": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000
              },
              "length": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 2000
              },
              "angle": {
                "type": "number",
                "minimum": -360,
                "maximum": 360
              }
            },
            "required": [
              "x",
              "y",
              "diameter"
            ],
            "x-eik-closed": true
          },
          "maxItems": 50
        },
        "flange": {
          "type": "number",
          "minimum": -200,
          "maximum": 200
        },
        "nails": {
          "type": "object",
          "properties": {
            "diameter": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 20
            },
            "cols": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 20
            },
            "spacing": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 300
            },
            "rows": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 20
            },
            "rowSpacing": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 300
            },
            "margin": {
              "type": "number",
              "minimum": 0,
              "maximum": 300
            }
          },
          "required": [
            "diameter",
            "cols",
            "spacing",
            "rows",
            "rowSpacing",
            "margin"
          ],
          "x-eik-closed": true
        },
        "bolt": {
          "type": "object",
          "properties": {
            "diameter": {
              "type": "number"
            },
            "grade": {
              "type": "string",
              "enum": [
                "4.6",
                "5.6",
                "8.8",
                "10.9"
              ],
              "default": "8.8"
            },
            "kind": {
              "type": "string",
              "enum": [
                "bolt",
                "anchor",
                "rod"
              ],
              "default": "bolt"
            },
            "washers": {
              "type": "integer",
              "minimum": 0,
              "maximum": 2,
              "default": 1
            },
            "nuts": {
              "type": "integer",
              "minimum": 0,
              "maximum": 2
            },
            "finish": {
              "type": "string",
              "enum": [
                "hdg",
                "black"
              ]
            }
          },
          "required": [
            "diameter"
          ],
          "x-eik-closed": true
        }
      },
      "required": [
        "family",
        "depth"
      ],
      "x-eik-closed": true
    },
    "catalogSource": {
      "type": "object",
      "x-eik-application": true
    },
    "assembly": {
      "type": "object",
      "x-eik-application": true
    },
    "thermal": {
      "type": "object",
      "properties": {
        "u": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 20
        },
        "g": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "frameFraction": {
          "type": "number",
          "minimum": 0,
          "exclusiveMaximum": 1
        },
        "lightTransmittance": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        }
      },
      "x-eik-closed": true
    },
    "acoustic": {
      "type": "object",
      "properties": {
        "rw": {
          "type": "number",
          "minimum": 0,
          "maximum": 120
        },
        "lnw": {
          "type": "number",
          "minimum": 0,
          "maximum": 120
        }
      },
      "x-eik-closed": true
    },
    "wallAttach": {
      "type": "object",
      "properties": {
        "extendExteriorLayers": {
          "type": "boolean"
        },
        "cutToAttachedRoof": {
          "type": "boolean"
        }
      },
      "x-eik-closed": true
    },
    "footing": {
      "type": "object",
      "properties": {
        "shape": {
          "type": "string",
          "const": "circle"
        },
        "diameter": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 10000
        }
      },
      "required": [
        "shape",
        "diameter"
      ],
      "x-eik-closed": true
    },
    "shaft": {
      "type": "object",
      "properties": {
        "purpose": {
          "type": "string",
          "enum": [
            "stair",
            "lift",
            "installation",
            "other"
          ]
        },
        "cross": {
          "type": "boolean"
        }
      },
      "required": [
        "purpose",
        "cross"
      ],
      "x-eik-closed": true
    },
    "stair": {
      "type": "object",
      "properties": {
        "construction": {
          "type": "string",
          "enum": [
            "timberStringers",
            "concreteCast",
            "spiralColumn",
            "helical",
            "timberCutStringers",
            "concretePrecast",
            "clt"
          ]
        },
        "maxRiser": {
          "type": "number",
          "minimum": 100,
          "maximum": 250
        },
        "minGoing": {
          "type": "number",
          "minimum": 100,
          "maximum": 450
        },
        "comfortMin": {
          "type": "number",
          "minimum": 400,
          "maximum": 800
        },
        "comfortMax": {
          "type": "number",
          "minimum": 400,
          "maximum": 800
        },
        "minWidth": {
          "type": "number",
          "minimum": 300,
          "maximum": 3000
        },
        "headroom": {
          "type": "number",
          "minimum": 1800,
          "maximum": 4000
        },
        "going": {
          "type": "number",
          "minimum": 100,
          "maximum": 450
        },
        "treadThickness": {
          "type": "number",
          "minimum": 10,
          "maximum": 120
        },
        "nosing": {
          "type": "number",
          "minimum": 0,
          "maximum": 80
        },
        "riserThickness": {
          "type": "number",
          "minimum": 0,
          "maximum": 80
        },
        "stringerWidth": {
          "type": "number",
          "minimum": 5,
          "maximum": 200
        },
        "stringerDepth": {
          "type": "number",
          "minimum": 100,
          "maximum": 600
        },
        "waist": {
          "type": "number",
          "minimum": 60,
          "maximum": 400
        },
        "cltTreadStock": {
          "type": "number",
          "minimum": 100,
          "maximum": 200
        },
        "landingThickness": {
          "type": "number",
          "minimum": 40,
          "maximum": 400
        },
        "columnDiameter": {
          "type": "number",
          "minimum": 40,
          "maximum": 500
        },
        "material": {
          "type": "string",
          "maxLength": 60
        }
      },
      "required": [
        "construction",
        "maxRiser",
        "minGoing",
        "comfortMin",
        "comfortMax",
        "minWidth",
        "headroom",
        "going",
        "treadThickness",
        "nosing",
        "riserThickness",
        "stringerWidth",
        "stringerDepth",
        "waist",
        "landingThickness",
        "columnDiameter",
        "material"
      ],
      "x-eik-closed": true
    },
    "railing": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "balusters",
            "glass",
            "panel",
            "handrail"
          ]
        },
        "height": {
          "type": "number",
          "minimum": 500,
          "maximum": 1600
        },
        "postSpacing": {
          "type": "number",
          "minimum": 300,
          "maximum": 3000
        },
        "post": {
          "type": "number",
          "minimum": 10,
          "maximum": 200
        },
        "railWidth": {
          "type": "number",
          "minimum": 10,
          "maximum": 200
        },
        "railDepth": {
          "type": "number",
          "minimum": 10,
          "maximum": 200
        },
        "baluster": {
          "type": "number",
          "minimum": 8,
          "maximum": 80
        },
        "gap": {
          "type": "number",
          "minimum": 20,
          "maximum": 300
        },
        "clearance": {
          "type": "number",
          "minimum": 0,
          "maximum": 300
        },
        "panel": {
          "type": "number",
          "minimum": 4,
          "maximum": 60
        },
        "handrail": {
          "type": "number",
          "minimum": 0,
          "maximum": 1200
        },
        "handrailDiameter": {
          "type": "number",
          "minimum": 20,
          "maximum": 80
        },
        "material": {
          "type": "string",
          "maxLength": 60
        },
        "mount": {
          "type": "string",
          "enum": [
            "top",
            "side"
          ]
        },
        "postWidth": {
          "type": "number",
          "minimum": 10,
          "maximum": 300
        },
        "postDepth": {
          "type": "number",
          "minimum": 10,
          "maximum": 300
        },
        "postEndDistance": {
          "type": "number",
          "minimum": 0,
          "maximum": 1500
        },
        "belowBase": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000
        },
        "topRail": {
          "type": "string",
          "enum": [
            "rectangular",
            "round",
            "halfRound",
            "flat"
          ]
        },
        "panelPattern": {
          "type": "string",
          "enum": [
            "solid",
            "perforated",
            "corrugated"
          ]
        },
        "corner": {
          "type": "string",
          "enum": [
            "mitre",
            "square"
          ]
        }
      },
      "required": [
        "kind",
        "height",
        "postSpacing",
        "railWidth",
        "railDepth",
        "material"
      ],
      "x-eik-closed": true,
      "allOf": [
        {
          "anyOf": [
            {
              "required": [
                "post"
              ]
            },
            {
              "required": [
                "postWidth",
                "postDepth"
              ]
            }
          ]
        },
        {
          "if": {
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "const": "balusters"
              }
            }
          },
          "then": {
            "required": [
              "baluster",
              "gap"
            ]
          }
        },
        {
          "if": {
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "enum": [
                  "balusters",
                  "glass",
                  "panel"
                ]
              }
            }
          },
          "then": {
            "required": [
              "clearance"
            ]
          }
        },
        {
          "if": {
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "enum": [
                  "glass",
                  "panel"
                ]
              }
            }
          },
          "then": {
            "required": [
              "panel"
            ]
          }
        },
        {
          "if": {
            "required": [
              "handrail"
            ],
            "properties": {
              "handrail": {
                "exclusiveMinimum": 0
              }
            }
          },
          "then": {
            "required": [
              "handrailDiameter"
            ]
          }
        }
      ]
    },
    "declaredGeometry": {
      "type": "object",
      "properties": {
        "level": {
          "type": "string",
          "enum": [
            "interface",
            "assembly",
            "fabrication"
          ]
        },
        "authoritativeFor": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "envelope",
              "fixings",
              "clearances",
              "positions",
              "loads",
              "parts",
              "fabrication"
            ]
          },
          "minItems": 1,
          "maxItems": 7,
          "uniqueItems": true,
          "contains": {
            "const": "envelope"
          }
        },
        "tolerances": {
          "type": "object",
          "additionalProperties": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000
          },
          "propertyNames": {
            "enum": [
              "default",
              "envelope",
              "fixings",
              "clearances",
              "positions",
              "loads",
              "parts",
              "fabrication"
            ]
          }
        },
        "frame": {
          "type": "string",
          "enum": [
            "world",
            "line"
          ]
        },
        "envelope": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "prism"
                  },
                  "profile": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "prefixItems": [
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        }
                      ]
                    },
                    "minItems": 3,
                    "maxItems": 512
                  },
                  "bottom": {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  "top": {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                },
                "required": [
                  "kind",
                  "profile",
                  "bottom",
                  "top"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "polyhedron"
                  },
                  "vertices": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 3,
                      "maxItems": 3,
                      "prefixItems": [
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        }
                      ]
                    },
                    "minItems": 4,
                    "maxItems": 4096
                  },
                  "faces": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "minItems": 3,
                      "maxItems": 64
                    },
                    "minItems": 4,
                    "maxItems": 8192
                  }
                },
                "required": [
                  "kind",
                  "vertices",
                  "faces"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "mesh"
                  },
                  "vertices": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 3,
                      "maxItems": 3,
                      "prefixItems": [
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        }
                      ]
                    },
                    "minItems": 4,
                    "maxItems": 65536
                  },
                  "faces": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "minItems": 3,
                      "maxItems": 64
                    },
                    "minItems": 4,
                    "maxItems": 131072
                  }
                },
                "required": [
                  "kind",
                  "vertices",
                  "faces"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "cylinder"
                  },
                  "centre": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "prefixItems": [
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      }
                    ]
                  },
                  "radius": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 100000
                  },
                  "bottom": {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  "top": {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                },
                "required": [
                  "kind",
                  "centre",
                  "radius",
                  "bottom",
                  "top"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "rod"
                  },
                  "from": {
                    "type": "array",
                    "minItems": 3,
                    "maxItems": 3,
                    "prefixItems": [
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      }
                    ]
                  },
                  "to": {
                    "type": "array",
                    "minItems": 3,
                    "maxItems": 3,
                    "prefixItems": [
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      }
                    ]
                  },
                  "diameter": {
                    "type": "number",
                    "exclusiveMinimum": 0,
                    "maximum": 100000
                  }
                },
                "required": [
                  "kind",
                  "from",
                  "to",
                  "diameter"
                ],
                "x-eik-closed": true
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "swept"
                  },
                  "section": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "prefixItems": [
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        }
                      ]
                    },
                    "minItems": 3,
                    "maxItems": 512
                  }
                },
                "required": [
                  "kind",
                  "section"
                ],
                "x-eik-closed": true
              }
            ]
          },
          "minItems": 1,
          "maxItems": 256
        },
        "fixings": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "at": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                ]
              },
              "direction": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                ]
              },
              "bearsOn": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "kind": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "size": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 10000
              }
            },
            "required": [
              "id",
              "at",
              "direction"
            ],
            "x-eik-closed": true
          },
          "minItems": 1,
          "maxItems": 2000
        },
        "clearances": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "purpose": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "body": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "prism"
                      },
                      "profile": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "minItems": 3,
                        "maxItems": 512
                      },
                      "bottom": {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      "top": {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      }
                    },
                    "required": [
                      "kind",
                      "profile",
                      "bottom",
                      "top"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "polyhedron"
                      },
                      "vertices": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 3,
                          "maxItems": 3,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "minItems": 4,
                        "maxItems": 4096
                      },
                      "faces": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "minItems": 3,
                          "maxItems": 64
                        },
                        "minItems": 4,
                        "maxItems": 8192
                      }
                    },
                    "required": [
                      "kind",
                      "vertices",
                      "faces"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "mesh"
                      },
                      "vertices": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 3,
                          "maxItems": 3,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "minItems": 4,
                        "maxItems": 65536
                      },
                      "faces": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "minItems": 3,
                          "maxItems": 64
                        },
                        "minItems": 4,
                        "maxItems": 131072
                      }
                    },
                    "required": [
                      "kind",
                      "vertices",
                      "faces"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "cylinder"
                      },
                      "centre": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "prefixItems": [
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          },
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          }
                        ]
                      },
                      "radius": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "maximum": 100000
                      },
                      "bottom": {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      },
                      "top": {
                        "type": "number",
                        "minimum": -10000000,
                        "maximum": 10000000
                      }
                    },
                    "required": [
                      "kind",
                      "centre",
                      "radius",
                      "bottom",
                      "top"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "rod"
                      },
                      "from": {
                        "type": "array",
                        "minItems": 3,
                        "maxItems": 3,
                        "prefixItems": [
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          },
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          },
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          }
                        ]
                      },
                      "to": {
                        "type": "array",
                        "minItems": 3,
                        "maxItems": 3,
                        "prefixItems": [
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          },
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          },
                          {
                            "type": "number",
                            "minimum": -10000000,
                            "maximum": 10000000
                          }
                        ]
                      },
                      "diameter": {
                        "type": "number",
                        "exclusiveMinimum": 0,
                        "maximum": 100000
                      }
                    },
                    "required": [
                      "kind",
                      "from",
                      "to",
                      "diameter"
                    ],
                    "x-eik-closed": true
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "const": "swept"
                      },
                      "section": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "minItems": 3,
                        "maxItems": 512
                      }
                    },
                    "required": [
                      "kind",
                      "section"
                    ],
                    "x-eik-closed": true
                  }
                ]
              }
            },
            "required": [
              "id",
              "purpose",
              "body"
            ],
            "x-eik-closed": true
          },
          "minItems": 1,
          "maxItems": 256
        },
        "positions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "member": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "at": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                ]
              },
              "to": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                ]
              }
            },
            "required": [
              "id",
              "at"
            ],
            "x-eik-closed": true
          },
          "minItems": 1,
          "maxItems": 2000
        },
        "loads": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "fixing": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "case": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "force": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                ]
              },
              "moment": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  },
                  {
                    "type": "number",
                    "minimum": -10000000,
                    "maximum": 10000000
                  }
                ]
              }
            },
            "required": [
              "fixing",
              "case",
              "force"
            ],
            "x-eik-closed": true
          },
          "minItems": 1,
          "maxItems": 4000
        },
        "parts": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 120
              },
              "bodies": {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "prism"
                        },
                        "profile": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "minItems": 2,
                            "maxItems": 2,
                            "prefixItems": [
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              },
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              }
                            ]
                          },
                          "minItems": 3,
                          "maxItems": 512
                        },
                        "bottom": {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        "top": {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        }
                      },
                      "required": [
                        "kind",
                        "profile",
                        "bottom",
                        "top"
                      ],
                      "x-eik-closed": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "polyhedron"
                        },
                        "vertices": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "minItems": 3,
                            "maxItems": 3,
                            "prefixItems": [
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              },
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              },
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              }
                            ]
                          },
                          "minItems": 4,
                          "maxItems": 4096
                        },
                        "faces": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "minItems": 3,
                            "maxItems": 64
                          },
                          "minItems": 4,
                          "maxItems": 8192
                        }
                      },
                      "required": [
                        "kind",
                        "vertices",
                        "faces"
                      ],
                      "x-eik-closed": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "mesh"
                        },
                        "vertices": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "minItems": 3,
                            "maxItems": 3,
                            "prefixItems": [
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              },
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              },
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              }
                            ]
                          },
                          "minItems": 4,
                          "maxItems": 65536
                        },
                        "faces": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "minItems": 3,
                            "maxItems": 64
                          },
                          "minItems": 4,
                          "maxItems": 131072
                        }
                      },
                      "required": [
                        "kind",
                        "vertices",
                        "faces"
                      ],
                      "x-eik-closed": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "cylinder"
                        },
                        "centre": {
                          "type": "array",
                          "minItems": 2,
                          "maxItems": 2,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "radius": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 100000
                        },
                        "bottom": {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        },
                        "top": {
                          "type": "number",
                          "minimum": -10000000,
                          "maximum": 10000000
                        }
                      },
                      "required": [
                        "kind",
                        "centre",
                        "radius",
                        "bottom",
                        "top"
                      ],
                      "x-eik-closed": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "rod"
                        },
                        "from": {
                          "type": "array",
                          "minItems": 3,
                          "maxItems": 3,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "to": {
                          "type": "array",
                          "minItems": 3,
                          "maxItems": 3,
                          "prefixItems": [
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            },
                            {
                              "type": "number",
                              "minimum": -10000000,
                              "maximum": 10000000
                            }
                          ]
                        },
                        "diameter": {
                          "type": "number",
                          "exclusiveMinimum": 0,
                          "maximum": 100000
                        }
                      },
                      "required": [
                        "kind",
                        "from",
                        "to",
                        "diameter"
                      ],
                      "x-eik-closed": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "swept"
                        },
                        "section": {
                          "type": "array",
                          "items": {
                            "type": "array",
                            "minItems": 2,
                            "maxItems": 2,
                            "prefixItems": [
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              },
                              {
                                "type": "number",
                                "minimum": -10000000,
                                "maximum": 10000000
                              }
                            ]
                          },
                          "minItems": 3,
                          "maxItems": 512
                        }
                      },
                      "required": [
                        "kind",
                        "section"
                      ],
                      "x-eik-closed": true
                    }
                  ]
                },
                "minItems": 1,
                "maxItems": 64
              }
            },
            "required": [
              "id",
              "name",
              "bodies"
            ],
            "x-eik-closed": true
          },
          "minItems": 1,
          "maxItems": 2000
        },
        "fabrication": {
          "x-eik-application": true
        },
        "basis": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1
              },
              "hash": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              }
            },
            "required": [
              "id",
              "hash"
            ],
            "x-eik-closed": true
          },
          "maxItems": 64
        },
        "source": {
          "type": "object",
          "properties": {
            "by": {
              "type": "string",
              "maxLength": 120
            },
            "tool": {
              "type": "string",
              "maxLength": 120
            },
            "version": {
              "type": "string",
              "maxLength": 60
            }
          },
          "x-eik-closed": true
        }
      },
      "required": [
        "level",
        "authoritativeFor",
        "tolerances"
      ],
      "x-eik-closed": true,
      "allOf": [
        {
          "if": {
            "required": [
              "level"
            ],
            "properties": {
              "level": {
                "const": "interface"
              }
            }
          },
          "then": {
            "properties": {
              "authoritativeFor": {
                "items": {
                  "enum": [
                    "envelope",
                    "fixings",
                    "clearances",
                    "positions",
                    "loads"
                  ]
                }
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "level"
            ],
            "properties": {
              "level": {
                "const": "assembly"
              }
            }
          },
          "then": {
            "properties": {
              "authoritativeFor": {
                "items": {
                  "enum": [
                    "envelope",
                    "fixings",
                    "clearances",
                    "positions",
                    "loads",
                    "parts"
                  ]
                }
              }
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "envelope"
                }
              }
            }
          },
          "then": {
            "required": [
              "envelope"
            ]
          },
          "else": {
            "properties": {
              "envelope": false
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "fixings"
                }
              }
            }
          },
          "then": {
            "required": [
              "fixings"
            ]
          },
          "else": {
            "properties": {
              "fixings": false
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "clearances"
                }
              }
            }
          },
          "then": {
            "required": [
              "clearances"
            ]
          },
          "else": {
            "properties": {
              "clearances": false
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "positions"
                }
              }
            }
          },
          "then": {
            "required": [
              "positions"
            ]
          },
          "else": {
            "properties": {
              "positions": false
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "loads"
                }
              }
            }
          },
          "then": {
            "required": [
              "loads"
            ]
          },
          "else": {
            "properties": {
              "loads": false
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "parts"
                }
              }
            }
          },
          "then": {
            "required": [
              "parts"
            ]
          },
          "else": {
            "properties": {
              "parts": false
            }
          }
        },
        {
          "if": {
            "required": [
              "authoritativeFor"
            ],
            "properties": {
              "authoritativeFor": {
                "contains": {
                  "const": "fabrication"
                }
              }
            }
          },
          "then": {
            "required": [
              "fabrication"
            ]
          },
          "else": {
            "properties": {
              "fabrication": false
            }
          }
        },
        {
          "anyOf": [
            {
              "properties": {
                "tolerances": {
                  "required": [
                    "default"
                  ]
                }
              }
            },
            {
              "allOf": [
                {
                  "if": {
                    "required": [
                      "authoritativeFor"
                    ],
                    "properties": {
                      "authoritativeFor": {
                        "contains": {
                          "const": "envelope"
                        }
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "tolerances": {
                        "required": [
                          "envelope"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "authoritativeFor"
                    ],
                    "properties": {
                      "authoritativeFor": {
                        "contains": {
                          "const": "fixings"
                        }
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "tolerances": {
                        "required": [
                          "fixings"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "authoritativeFor"
                    ],
                    "properties": {
                      "authoritativeFor": {
                        "contains": {
                          "const": "clearances"
                        }
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "tolerances": {
                        "required": [
                          "clearances"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "authoritativeFor"
                    ],
                    "properties": {
                      "authoritativeFor": {
                        "contains": {
                          "const": "positions"
                        }
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "tolerances": {
                        "required": [
                          "positions"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "required": [
                      "authoritativeFor"
                    ],
                    "properties": {
                      "authoritativeFor": {
                        "contains": {
                          "const": "parts"
                        }
                      }
                    }
                  },
                  "then": {
                    "properties": {
                      "tolerances": {
                        "required": [
                          "parts"
                        ]
                      }
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "pipe": {
      "type": "object",
      "properties": {
        "system": {
          "type": "string",
          "enum": [
            "sewage",
            "storm",
            "coldWater",
            "hotWater",
            "hotWaterCirculation",
            "heating",
            "brine",
            "compressedAir",
            "districtHeating",
            "greaseWaste",
            "oilWaste",
            "gas",
            "supplyAir",
            "extractAir",
            "outdoorAir",
            "exhaustAir",
            "kitchenExhaust"
          ]
        },
        "material": {
          "type": "string",
          "minLength": 1,
          "maxLength": 60
        },
        "code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 8
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 6,
            "maximum": 1000
          },
          "minItems": 1,
          "maxItems": 40
        },
        "bends": {
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 1,
            "maximum": 180
          },
          "maxItems": 12
        },
        "fall": {
          "type": "number",
          "minimum": 0,
          "maximum": 200
        },
        "minFall": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "size": {
                "type": "number",
                "minimum": 6,
                "maximum": 1000
              },
              "fall": {
                "type": "number",
                "minimum": 0,
                "maximum": 200
              }
            },
            "required": [
              "size",
              "fall"
            ],
            "x-eik-closed": true
          },
          "maxItems": 40
        },
        "insulation": {
          "type": "number",
          "minimum": 0,
          "maximum": 200
        },
        "insulationCode": {
          "type": "string",
          "minLength": 1,
          "maxLength": 12,
          "x-eik-values": "national"
        },
        "bti": {
          "type": "object",
          "properties": {
            "class": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8,
              "x-eik-values": "national"
            },
            "hanging": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8,
              "x-eik-values": "national"
            },
            "material": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8,
              "x-eik-values": "national"
            },
            "thickness": {
              "type": "number",
              "minimum": 1,
              "maximum": 200
            },
            "surface": {
              "type": "string",
              "minLength": 1,
              "maxLength": 8,
              "x-eik-values": "national"
            }
          },
          "required": [
            "class",
            "hanging",
            "material",
            "thickness"
          ],
          "x-eik-closed": true,
          "deprecated": true
        }
      },
      "required": [
        "system",
        "material",
        "sizes"
      ],
      "x-eik-closed": true
    },
    "duct": {
      "type": "object",
      "properties": {
        "system": {
          "type": "string",
          "enum": [
            "sewage",
            "storm",
            "coldWater",
            "hotWater",
            "hotWaterCirculation",
            "heating",
            "brine",
            "compressedAir",
            "districtHeating",
            "greaseWaste",
            "oilWaste",
            "gas",
            "supplyAir",
            "extractAir",
            "outdoorAir",
            "exhaustAir",
            "kitchenExhaust"
          ]
        },
        "shape": {
          "type": "string",
          "enum": [
            "round",
            "rectangular"
          ]
        },
        "material": {
          "type": "string",
          "minLength": 1,
          "maxLength": 60
        },
        "code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 8
        },
        "sizes": {
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 20,
            "maximum": 3000
          },
          "minItems": 1,
          "maxItems": 40
        },
        "bends": {
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 1,
            "maximum": 180
          },
          "maxItems": 12
        },
        "insulation": {
          "type": "number",
          "minimum": 0,
          "maximum": 200
        },
        "insulationCode": {
          "type": "string",
          "minLength": 1,
          "maxLength": 12,
          "x-eik-values": "national"
        }
      },
      "required": [
        "system",
        "shape",
        "material",
        "sizes"
      ],
      "x-eik-closed": true
    },
    "terminal": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "supplyAir",
            "extractAir",
            "transferAir",
            "slotVent",
            "freshAirValve",
            "outdoorGrille",
            "exhaustGrille",
            "roofHood",
            "kitchenHood",
            "ftxUnit",
            "heatPump",
            "outdoorUnit",
            "indoorUnit",
            "chilledBeam",
            "silencer",
            "ductFan",
            "fireDamper",
            "damper",
            "smokeDamper",
            "flowRegulator",
            "wc",
            "washbasin",
            "sink",
            "shower",
            "bathtub",
            "washingMachine",
            "utilitySink",
            "floorDrain",
            "cleanout",
            "gully",
            "ventCap",
            "airAdmittanceValve",
            "servicePoint",
            "borehole",
            "dishwasher",
            "fridgeFreezer",
            "tumbleDryer",
            "hob",
            "oven",
            "dryingCabinet",
            "faucet",
            "tap",
            "waterMeter",
            "manifold",
            "waterHeater",
            "radiator",
            "towelRail",
            "heatingManifold",
            "unitHeater",
            "isolatingValve",
            "checkValve",
            "balancingValve",
            "controlValve",
            "safetyValve",
            "pump",
            "strainer",
            "energyMeter",
            "expansionVessel",
            "backflowPreventer",
            "airVent"
          ]
        },
        "code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 12
        },
        "system": {
          "type": "string",
          "enum": [
            "sewage",
            "storm",
            "coldWater",
            "hotWater",
            "hotWaterCirculation",
            "heating",
            "brine",
            "compressedAir",
            "districtHeating",
            "greaseWaste",
            "oilWaste",
            "gas",
            "supplyAir",
            "extractAir",
            "outdoorAir",
            "exhaustAir",
            "kitchenExhaust"
          ]
        },
        "connections": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "system": {
                "type": "string",
                "enum": [
                  "sewage",
                  "storm",
                  "coldWater",
                  "hotWater",
                  "hotWaterCirculation",
                  "heating",
                  "brine",
                  "compressedAir",
                  "districtHeating",
                  "greaseWaste",
                  "oilWaste",
                  "gas",
                  "supplyAir",
                  "extractAir",
                  "outdoorAir",
                  "exhaustAir",
                  "kitchenExhaust"
                ]
              },
              "size": {
                "type": "number",
                "minimum": 6,
                "maximum": 1000
              },
              "at": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "prefixItems": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "number"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "system",
              "size",
              "at"
            ],
            "x-eik-closed": true
          },
          "maxItems": 8
        },
        "outlets": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "system": {
                "type": "string",
                "enum": [
                  "sewage",
                  "storm",
                  "coldWater",
                  "hotWater",
                  "hotWaterCirculation",
                  "heating",
                  "brine",
                  "compressedAir",
                  "districtHeating",
                  "greaseWaste",
                  "oilWaste",
                  "gas",
                  "supplyAir",
                  "extractAir",
                  "outdoorAir",
                  "exhaustAir",
                  "kitchenExhaust"
                ]
              },
              "count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              },
              "size": {
                "type": "number",
                "minimum": 6,
                "maximum": 200
              }
            },
            "required": [
              "system",
              "count",
              "size"
            ],
            "x-eik-closed": true
          },
          "maxItems": 4
        },
        "mount": {
          "type": "string",
          "enum": [
            "ceiling",
            "wall",
            "floor",
            "roof",
            "duct",
            "pipe"
          ]
        },
        "width": {
          "type": "number",
          "minimum": 20,
          "maximum": 5000
        },
        "depth": {
          "type": "number",
          "minimum": 20,
          "maximum": 5000
        },
        "height": {
          "type": "number",
          "minimum": 5,
          "maximum": 5000
        },
        "flow": {
          "type": "number",
          "minimum": 0,
          "maximum": 5000
        },
        "power": {
          "type": "number",
          "minimum": 1,
          "maximum": 500000
        }
      },
      "required": [
        "kind",
        "mount",
        "width",
        "depth",
        "height"
      ],
      "x-eik-closed": true
    },
    "furniture": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "sofa",
            "armchair",
            "diningTable",
            "roundTable",
            "coffeeTable",
            "chair",
            "bed",
            "bedsideTable",
            "wardrobe",
            "desk",
            "bookshelf",
            "vanity",
            "showerScreen",
            "kitchen"
          ]
        },
        "fixed": {
          "type": "boolean"
        },
        "width": {
          "type": "number",
          "minimum": 10,
          "maximum": 10000
        },
        "depth": {
          "type": "number",
          "minimum": 10,
          "maximum": 10000
        },
        "height": {
          "type": "number",
          "minimum": 10,
          "maximum": 4000
        },
        "mount": {
          "type": "string",
          "enum": [
            "floor",
            "wall"
          ]
        }
      },
      "required": [
        "kind",
        "fixed",
        "width",
        "depth",
        "height",
        "mount"
      ],
      "x-eik-closed": true
    },
    "planting": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "tree",
            "shrub",
            "hedge"
          ]
        },
        "form": {
          "type": "string",
          "enum": [
            "round",
            "oval",
            "columnar",
            "conical",
            "weeping",
            "spreading",
            "pine",
            "mound",
            "ball",
            "clipped"
          ]
        },
        "foliage": {
          "type": "string",
          "enum": [
            "deciduous",
            "evergreen",
            "conifer"
          ]
        },
        "latin": {
          "type": "string",
          "minLength": 1,
          "maxLength": 120
        },
        "height": {
          "type": "number",
          "minimum": 100,
          "maximum": 60000
        },
        "crown": {
          "type": "number",
          "minimum": 100,
          "maximum": 40000
        },
        "stem": {
          "type": "object",
          "properties": {
            "height": {
              "type": "number",
              "minimum": 0,
              "maximum": 30000
            },
            "diameter": {
              "type": "number",
              "minimum": 10,
              "maximum": 3000
            }
          },
          "required": [
            "height",
            "diameter"
          ],
          "x-eik-closed": true
        },
        "trunkColor": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "blossom": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "autumn": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        }
      },
      "required": [
        "kind",
        "form",
        "foliage",
        "latin",
        "height",
        "crown"
      ],
      "x-eik-closed": true
    },
    "fire": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "escapeSign",
            "extinguisher",
            "hoseReel",
            "reEntry",
            "emergencyLight",
            "callPoint",
            "smokeDetector",
            "heatDetector",
            "sprinklerValve",
            "smokeVent",
            "assemblyPoint",
            "firstAid",
            "defibrillator"
          ]
        },
        "mount": {
          "type": "string",
          "enum": [
            "wall",
            "ceiling",
            "floor"
          ]
        },
        "width": {
          "type": "number",
          "minimum": 10,
          "maximum": 3000
        },
        "depth": {
          "type": "number",
          "minimum": 5,
          "maximum": 2000
        },
        "height": {
          "type": "number",
          "minimum": 10,
          "maximum": 3000
        },
        "offset": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000
        },
        "code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 12
        },
        "accessible": {
          "type": "boolean"
        },
        "agent": {
          "type": "string",
          "enum": [
            "powder",
            "foam",
            "co2",
            "water"
          ]
        }
      },
      "required": [
        "kind",
        "mount",
        "width",
        "depth",
        "height",
        "offset"
      ],
      "x-eik-closed": true
    },
    "fireClass": {
      "type": "string",
      "maxLength": 24
    },
    "road": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "road",
            "street",
            "driveway",
            "path"
          ]
        },
        "width": {
          "type": "number",
          "minimum": 500,
          "maximum": 40000
        },
        "surface": {
          "type": "string",
          "enum": [
            "asphalt",
            "gravel",
            "paving",
            "concrete"
          ]
        },
        "thickness": {
          "type": "number",
          "minimum": 20,
          "maximum": 2000
        },
        "kerb": {
          "type": "object",
          "properties": {
            "height": {
              "type": "number",
              "minimum": 0,
              "maximum": 500
            },
            "width": {
              "type": "number",
              "minimum": 50,
              "maximum": 1000
            }
          },
          "required": [
            "height",
            "width"
          ],
          "x-eik-closed": true
        },
        "centreLine": {
          "type": "boolean"
        }
      },
      "required": [
        "kind",
        "width",
        "surface",
        "thickness"
      ],
      "x-eik-closed": true
    },
    "parking": {
      "type": "object",
      "properties": {
        "width": {
          "type": "number",
          "minimum": 800,
          "maximum": 10000
        },
        "depth": {
          "type": "number",
          "minimum": 1500,
          "maximum": 12000
        },
        "angle": {
          "type": "number",
          "enum": [
            90,
            60,
            45,
            0
          ]
        },
        "accessible": {
          "type": "boolean"
        },
        "surface": {
          "type": "string",
          "enum": [
            "asphalt",
            "gravel",
            "paving",
            "concrete"
          ]
        }
      },
      "required": [
        "width",
        "depth",
        "angle",
        "surface"
      ],
      "x-eik-closed": true
    },
    "handbook": {
      "type": "object",
      "x-eik-application": true
    },
    "revision": {
      "type": "integer",
      "minimum": 0
    },
    "generic": {
      "type": "object",
      "properties": {
        "standsFor": {
          "type": "string",
          "minLength": 1
        },
        "ifcClass": {
          "type": "string",
          "pattern": "^Ifc[A-Z][A-Za-z0-9]*$"
        },
        "discipline": {
          "type": "string",
          "enum": [
            "architecture",
            "structure",
            "systems",
            "site"
          ]
        }
      },
      "required": [
        "standsFor"
      ],
      "x-eik-closed": true
    },
    "owner": {
      "$ref": "../ownership/owner.schema.json"
    },
    "classifications": {
      "$ref": "../classifications/classifications.schema.json"
    },
    "cableCarrier": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "conduit",
            "tray",
            "ladder",
            "trunking"
          ]
        },
        "sizes": {
          "description": "The widths, or a conduit's diameters, in mm, that the type comes in: its catalogue's.",
          "type": "array",
          "items": {
            "type": "number",
            "exclusiveMinimum": 0
          }
        },
        "height": {
          "description": "The side height in mm of a rectangular carrier of the type.",
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "required": [
        "kind",
        "sizes"
      ],
      "x-eik-closed": true
    },
    "electrical": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "outlet",
            "evCharger",
            "switch",
            "dimmer",
            "button",
            "sensor",
            "light",
            "spot",
            "track",
            "emergencyLight",
            "ceilingOutlet",
            "junctionBox",
            "board",
            "meterCabinet",
            "dataOutlet",
            "tvOutlet",
            "speaker",
            "accessPoint",
            "equipment",
            "other"
          ]
        },
        "mount": {
          "type": "string",
          "enum": [
            "wall",
            "ceiling",
            "floor"
          ]
        },
        "depth": {
          "description": "Its size along the direction it faces, mm: out from the wall for a wall-mounted device.",
          "type": "number",
          "minimum": 5,
          "maximum": 3000
        },
        "defaultOffset": {
          "description": "The offset a new element of the type gets, mm.",
          "type": "number",
          "minimum": 0,
          "maximum": 20000
        },
        "defaultPurpose": {
          "description": "The purpose a new element of the type gets.",
          "type": "string",
          "minLength": 1,
          "maxLength": 8,
          "x-eik-values": "national"
        },
        "sockets": {
          "description": "An outlet's number of sockets.",
          "type": "integer",
          "minimum": 1,
          "maximum": 8
        },
        "connector": {
          "description": "An outlet's connector, a plain string.",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "earth": {
          "description": "Whether it has a protective earth: an earthing contact for a plug's, or a terminal for a protective conductor. Absent, it is not said. Proposed on 29 October 2026 and decided on 30 October 2026 (open questions, 94).",
          "type": "boolean"
        },
        "ipRating": {
          "description": "Its degree of protection, IEC 60529 (IP44, IP20C, IPX4), or IP69K after ISO 20653.",
          "type": "string",
          "pattern": "^IP[0-6X][0-9X]K?[A-D]?[HMSW]*$"
        },
        "phases": {
          "enum": [
            1,
            3
          ]
        },
        "ratedCurrent": {
          "description": "A.",
          "type": "number",
          "minimum": 1,
          "maximum": 630
        },
        "power": {
          "description": "What it draws, W.",
          "type": "number",
          "minimum": 0,
          "maximum": 1000000
        },
        "luminousFlux": {
          "description": "A luminaire's luminous flux, lm: the whole luminaire's, not its lamp's. Only on the kinds light, spot, emergencyLight and track (Part XIII, 2.3, rule 6).",
          "type": "number",
          "minimum": 0,
          "maximum": 200000
        },
        "colorTemperature": {
          "description": "The correlated colour temperature of its light, K.",
          "type": "number",
          "minimum": 1000,
          "maximum": 20000
        },
        "beamAngle": {
          "description": "The full angle of its beam, degrees, for a spot or another directional light.",
          "type": "number",
          "minimum": 1,
          "maximum": 180
        },
        "distribution": {
          "description": "Which way its light goes.",
          "enum": [
            "down",
            "up",
            "downUp",
            "allRound"
          ]
        },
        "control": {
          "description": "How a switch, a dimmer, a button or a sensor works what it controls.",
          "type": "string",
          "enum": [
            "wired",
            "bus",
            "radio"
          ]
        },
        "controlSystem": {
          "description": "The bus or radio system it works by, a plain string.",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "switching": {
          "description": "A switch's contacts, by IEC 60669-1's pattern numbers: oneWay 1, doublePole 2, triplePole 3, twoCircuit 5, twoWay 6, twoWayDoublePole 6/2, intermediate 7.",
          "type": "string",
          "enum": [
            "oneWay",
            "doublePole",
            "triplePole",
            "twoWay",
            "twoWayDoublePole",
            "intermediate",
            "twoCircuit"
          ]
        },
        "gangs": {
          "description": "How many switches stand on one base; absent, 1.",
          "type": "integer",
          "minimum": 1,
          "maximum": 4,
          "default": 1
        },
        "momentary": {
          "description": "Whether its contacts spring back once it is worked, as a push-button's do; absent, false.",
          "type": "boolean",
          "default": false
        },
        "ifcClass": {
          "description": "The IFC class an element of kind other exports as.",
          "type": "string",
          "pattern": "^Ifc[A-Za-z]+$"
        }
      },
      "required": [
        "kind",
        "mount",
        "depth",
        "defaultOffset"
      ],
      "x-eik-closed": true
    },
    "littera": {
      "$ref": "../estimate/littera.schema.json"
    }
  },
  "required": [
    "id",
    "category",
    "name",
    "material",
    "color",
    "height",
    "width"
  ],
  "x-eik-closed": true
}
