weScan JSON Schema — Nijbegun Isolatieplan
This document describes the JSON format exported by weScan and imported into the Nijbegun insulation plan intake form.
Purpose
Once an advisor has created a customer and a building (with its rekenzone) in Nij Begun, they can upload a JSON file exported from weScan. This automatically fills in building elements, dimensions, and orientations in the intake form — removing the need to enter this data twice.
The import covers building geometry. Insulation values and installations still need to be filled in manually by the advisor. Adjacency defaults to outside air and should be verified per element.
Top-Level Fields
All top-level fields are optional. When present, they are applied to the existing building object/zone.
| Field | Type | Unit | Description |
|---|---|---|---|
building_year | string | — | Construction year, e.g. "1978" |
building_height | string | m | Total building height, e.g. "6.2" |
building_layers | array of strings | m² | Gebruiksoppervlak per bouwlaag (floor area per storey), e.g. ["48.0", "44.0"] |
childrenGroups | array of elements | — | Building elements — see below |
All numeric values must be strings, e.g.
"28.0"not28.0.
Building Elements (childrenGroups)
Each element in childrenGroups has the following structure:
{
"type": "walls",
"name": "Voorgevel",
"additionalFields": { ... },
"childrenGroups": [ ... ]
}
Common Fields
| Field | Required | Type | Description |
|---|---|---|---|
type | Yes | string (enum) | Element type — see Element Types |
name | No | string | Display label in the intake form. Defaults to the Dutch element type name if omitted ("Gevel", "Vloer", "Dak", "Raam", "Deur", "Paneel"). |
additionalFields | No | object | Geometry properties — all values must be strings. Omit the key entirely if no geometry is provided. |
childrenGroups | No | array | Child elements (openings inside this element). Defaults to [] if omitted. |
additionalFields per Element Type
All fields inside additionalFields are optional. Omitted fields are left blank in the intake form and must be filled in manually.
| Field | Unit | Applies to | Description |
|---|---|---|---|
surface_area | m² | All types | Gross area including any openings |
height | m | All types | Element height |
width | m | All types | Element width |
cardinal_point | — | walls, roof, window | Orientation — see Cardinal Points. Defaults to s. |
inclination | ° | walls, floor, roof | Tilt angle: 0 = flat, 90 = vertical. Subgeometries inherit the parent value when omitted. Defaults: wall=90, sloped roof=45, floor/flat roof=0. |
adjacency | — | walls, floor, roof | Adjoining space — see Adjacency Types. Defaults to buitenlucht when omitted. |
perimeter | m | floor | Perimeter of the floor element |
glass_insulation | — | window | Glass type — see Glass Types |
windowFrameKind | — | window, panel | Frame material — see Frame Types |
GUIDs and index values are auto-generated on import — do not include them in the JSON.
Element Types
| Value | Default name | Description |
|---|---|---|
walls | Gevel | Facade / exterior wall |
floor | Vloer | Ground floor or intermediate floor |
roof | Dak | Sloped or flat roof |
window | Raam | Window (child of walls or roof) |
door | Deur | Door (child of walls) |
panel | Paneel | Opaque panel in a facade (child of walls) |
Windows and doors are nested as childrenGroups inside their parent wall or roof element.
Cardinal Points
| Value | Dutch |
|---|---|
n | Noord |
ne | Noordoost |
e | Oost |
se | Zuidoost |
s | Zuid (default) |
sw | Zuidwest |
w | West |
nw | Noordwest |
Glass Types
Applies to window elements only via glass_insulation.
| Value | Description |
|---|---|
enkelGlas | Enkel glas |
dubbelGlas | Dubbel glas |
hrGlasdubbelGlasMetCoating | HR glas |
hrPlusGlas | HR+ glas |
hrPlusPlusGlas | HR++ glas |
tripleHrGlas | Driedubbel glas |
Full Example
{
"building_year": "1978",
"building_height": "6.2",
"building_layers": ["48.0", "44.0"],
"childrenGroups": [
{
"type": "walls",
"name": "Voorgevel",
"additionalFields": {
"surface_area": "28.0",
"height": "5.4",
"width": "5.2",
"cardinal_point": "s"
},
"childrenGroups": [
{
"type": "window",
"name": "Raam woonkamer",
"additionalFields": {
"surface_area": "3.6",
"height": "1.5",
"width": "2.4",
"glass_insulation": "hrPlusPlusGlas"
}
},
{
"type": "door",
"name": "Voordeur",
"additionalFields": {
"surface_area": "1.98",
"height": "2.2",
"width": "0.9"
}
},
{
"type": "panel",
"additionalFields": {
"surface_area": "0.5",
"height": "0.5",
"width": "1.0"
}
}
]
},
{
"type": "walls",
"additionalFields": {
"surface_area": "38.0",
"height": "5.4",
"width": "7.0",
"cardinal_point": "e"
}
},
{
"type": "floor",
"name": "Begane grondvloer",
"additionalFields": {
"surface_area": "48.0",
"height": "8.0",
"width": "6.0",
"perimeter": "28.0"
}
},
{
"type": "roof",
"name": "Hellend dak voor",
"additionalFields": {
"surface_area": "30.0",
"height": "5.0",
"width": "6.0",
"cardinal_point": "s"
},
"childrenGroups": [
{
"type": "window",
"additionalFields": {
"surface_area": "0.9",
"height": "0.9",
"width": "1.0",
"glass_insulation": "dubbelGlas"
}
}
]
},
{
"type": "roof",
"additionalFields": {
"surface_area": "8.0",
"height": "4.0",
"width": "2.0"
}
}
]
}
Adjacency Types
Applies to walls, floor, and roof elements via adjacency. Defaults to buitenlucht when omitted.
| Value | Description |
|---|---|
buitenlucht | Outside air (default) |
grond | Ground |
kruipruimte | Crawl space |
aangrenzendeOnverwarmdeRuimte | Adjacent unheated space |
aangrenzendeOnverwarmdeSerre | Adjacent unheated conservatory |
aangrenzendeSterkGeventileerdeRuimte | Adjacent strongly ventilated space |
aangrenzendeOnverwarmdeKelder | Adjacent unheated basement |
aangrenzendeVerwarmdeRuimte | Adjacent heated space |
Frame Types
Applies to window and panel elements via windowFrameKind.
| Value | Description |
|---|---|
woodOrPlastic | Wood or plastic frame |
metalThermallyBroken | Metal, thermally broken |
metalNonThermallyBroken | Metal, not thermally broken |
Validation Rules
typeis the only required field per element; all other fields are optional- If
nameis omitted, the import assigns the Dutch default for the element type - If
childrenGroupsis omitted, it defaults to an empty list - All
additionalFieldsvalues must be strings, not numbers glass_insulationonly applies towindowelementswindowFrameKindapplies towindowandpanelelementsinclinationapplies towalls,floor, androof; subgeometries inherit from parentadjacencyapplies towalls,floor, androof; defaults tobuitenluchtwhen omittedperimeteronly applies tofloorelementscardinal_pointdefaults toswhen omitted on walls and roofs- Only
window,door, andpanelelements may appear as children ofwallsorroof