Import & Export
Spaces can be bulk imported or exported using CSV files. This is useful for initial setup, integration with other systems, or performing bulk edits.
CSV Structure
Each row in the CSV represents a single space. The following fields are recognized:
| Field | Required | Description |
|---|---|---|
name |
Required | The display name of the space (e.g., Room 101). |
type |
Required | The space type (see Space Types). |
id |
Optional | The system identifier of the space. If provided, import will attempt to merge with an existing space. If omitted, a new space is created. |
parent_space_id |
Optional | The space this one is contained by (e.g., sp.1). Spaces
may nest. |
parent_zone_ids |
Optional | The zones serving this space, as a comma-separated list (e.g.,
z.1,z.2). |
fed_by_asset_ids |
Optional | The assets that serve this space, as a comma-separated list (e.g.,
a.4,a.5). |
Because parent_zone_ids and
fed_by_asset_ids hold comma-separated lists, quote the cell
when it contains more than one id:
name, type, parent_space_id, parent_zone_ids
Room 302, room, sp.2, "z.1,z.2"
In addition to these, any space property may be included as a column
using its property id (see Space
Properties). For example, floor_area or
max_occupancy. See Property Data Types for how each type
is written in CSV, plus how omitted and empty cells are handled.
Example
Adding a building and two rooms inside a floor:
name, type, id, parent_space_id, street_address, floor_area
HQ, building, @hq, , 101 Crawfords Corner Rd, 150000 ft²
Floor 3, floor, @floor3, @hq, , 50000 ft²
Room 302, room, , @floor3, , 400 ft²
Updating only the occupancy of an existing space, leaving every other property untouched:
id, max_occupancy
sp.4, 12
Temporary IDs
Imports support the use of temporary ids prefixed with
@. These allow rows in the same import to reference each
other before permanent ids are assigned.
- A temporary id must be unique across the entire import (e.g.,
@floor-1). - When a new space is created with a temporary id, that identifier can
be used in other rows to reference relationships such as
parent_space_id. - During import, temporary ids are automatically “swizzled” to the assigned system ids.
For example:
name, type, id, parent_space_id
Floor 1, floor, @floor-1,
Room-101, room, , @floor-1
Room-102, room, , @floor-1
In this case, Room-101 and Room-102 reference @floor-1.
After import, those references are resolved to the real id assigned to
Floor-1.
Import Behavior
Merge — If an
idis provided and a matching space exists, the row’s properties are merged into the existing record. Properties not listed remain unchanged.Add Space — If no
idis provided, or a temporary id is provided, the row is added as a new space. Temporary ids can be used to link new rows together.Validation —
nameandtypeare required on every row. If import validation fails, no data will be added or updated. All errors are reported so they can be corrected and the import retried.
Export
Export produces a CSV with all defined spaces, including:
name,id, andtypeparent_space_id,parent_zone_ids, andfed_by_asset_ids- A column for every space property, whether or not it has a value
This export can be used as a template for re-importing updates.