Integration Guide¶
This guide describes the Building X data model and walks you through the sequence of API calls needed to onboard building data. Use the accompanying Postman collection to follow along step by step.
Tip
Before you begin, make sure you have completed the Getting Started guide and have a valid access token.
Data Model¶
The Building X APIs are organized around a hierarchy of core resources. Understanding how they relate to each other is essential before making integration calls.
flowchart LR
Customer -- "has" --> Partition
Partition -- "contains" --> Location
Device -. "has-location" .-> Location
Equipment -. "has-location" .-> Location
Equipment -. "is-controlled-by" .-> Device
Equipment -. "has-equipment-type" .-> EquipmentType
Device -- "hosts\n(point-group)" --> Point
Equipment -- "has-points\n(point-group)" --> Point
Point -- "has" --> PointValue| Resource | API | Description |
|---|---|---|
| Customer | Accounts API | The company that owns the building resources, often referred to as a customer tenant. |
| Partition | Accounts API | A logical grouping of building data within a customer tenant. Most API calls are scoped to a partition. |
| Location | Building Structure API | A Location is the basic element describing the topological structure of a site or building, i.e. the common base class of a Campus, Building, Floor, Room etc. |
| Device | Building Operations API | A Device can be any electronic equipment with some computing ability that has a firmware or supports the installation of software. Examples are pumps, dampers, valves, sensors, detectors, limit switches, remote/local switches or automation devices. For API integrations this typically represents a virtual data source connecting a third-party system to the platform. |
| EquipmentType | Building Structure API | A classification of equipment (e.g. meter, sensor). Retrieved via GET /equipment-types. |
| Equipment | Building Structure API | A logical asset (e.g. an electricity meter or occupancy sensor) linked to a device, a location, and an equipment type. Equipment can form hierarchies via the isPartOf relationship. |
| Point | Building Structure API | The data interface on a device or equipment — a sensor reading, a command, or a set-point. Points are created inside a point-group scoped to a Device and then assigned to an Equipment point-group. |
| PointValue | Point Value Ingest API | A time-series measurement or set value for a point. |
Addresses on root locations
For correct functioning of the Building X business applications, root-level locations (Campus or Building) must always have a postal address assigned via the hasPostalAddress relationship.
Data Onboarding Sequence¶
The diagram below shows the sequence of API calls to onboard building data, reflecting the steps in the Postman collection.
sequenceDiagram
autonumber
participant Client
participant Auth as Auth Server
participant Structure as Building Structure API
participant Ops as Building Operations API
participant Ingest as Point Value Ingest API
rect rgb(240, 248, 255)
Note over Client, Ingest: Phase 1 — Authentication
Client->>Auth: POST /oauth/token (client_credentials)
Auth-->>Client: access_token
end
rect rgb(240, 255, 240)
Note over Client, Ingest: Phase 2 — Building Structure
Client->>Structure: POST /locations (type: Campus + Address)
Structure-->>Client: campusId
Client->>Structure: POST /locations (type: Building, isBuildingOf: campusId + Address)
Structure-->>Client: buildingId
Client->>Structure: POST /locations (type: Floor, isFloorOf: buildingId)
Structure-->>Client: floorId
Client->>Structure: POST /locations (type: Room, isRoomOf: floorId)
Structure-->>Client: roomId
Note right of Client: Repeat for additional floors and rooms
end
rect rgb(255, 248, 240)
Note over Client, Ingest: Phase 3 — Device Registration
Client->>Ops: POST /devices (name, modelName, serialNumber)
Ops-->>Client: deviceId
Client->>Structure: PATCH /assets/{deviceId}/relationships/has-location
Note right of Client: Assign device to a location (e.g. Building)
end
rect rgb(248, 240, 255)
Note over Client, Ingest: Phase 4 — Equipment Setup
Client->>Structure: GET /equipment-types
Structure-->>Client: equipmentTypeId (e.g. "meter")
Client->>Structure: POST /equipment (hasEquipmentType, isControlledBy: deviceId)
Structure-->>Client: equipmentId
Client->>Structure: PATCH /assets/{equipmentId}/relationships/has-location
Note right of Client: Assign equipment to a location
Note right of Client: Repeat for sub-meters (isPartOf: parent equipmentId)
end
rect rgb(255, 255, 240)
Note over Client, Ingest: Phase 5 — Point Creation & Assignment
Client->>Structure: POST /point-groups/Device-{deviceId}/points
Structure-->>Client: pointId
Client->>Structure: POST /point-groups/Equipment-{equipmentId}/relationships/has-points
Note right of Client: Assign point to equipment
Note right of Client: Repeat for each data point
end
rect rgb(240, 255, 255)
Note over Client, Ingest: Phase 6 — Data Ingestion
Client->>Ingest: POST /points/{pointId}/values (batch of timestamped values)
Ingest-->>Client: 201 Created
Note right of Client: Repeat for each point
endPhase 1 — Authentication¶
Obtain an access token using the client_credentials grant. See Getting Started for details.
Phase 2 — Building Structure¶
Create the location hierarchy using the Building Structure API. Each location type references its parent through a relationship:
- Campus — top-level grouping with a postal address and geo-location.
- Building — linked to the campus via
isBuildingOf. Must also have a postal address. - Floor — linked to the building via
isFloorOf. - Room — linked to a floor via
isRoomOf.
The Postman collection creates a sample structure with one campus, one building, two floors, and two rooms per floor.
Phase 3 — Device Registration¶
Create a device via the Building Operations API and then assign it to a location using the Building Structure API.
For API-based integrations the device represents a virtual device — a logical data source that connects a third-party cloud system to Building X. This is different from a physical gateway device installed on-site.
Phase 4 — Equipment Setup¶
Equipment represents the logical assets you want to monitor (meters, sensors, etc.).
- Get equipment types — retrieve the available types (e.g.
meter,sensor) fromGET /equipment-types. - Create equipment — link it to an equipment type (
hasEquipmentType) and to the device (isControlledBy). - Assign to a location — place the equipment at the appropriate level in the building hierarchy.
- Build equipment hierarchies — sub-meters or sub-sensors use the
isPartOfrelationship to reference a parent equipment (e.g. a floor meter is part of the building-level meter).
Phase 5 — Point Creation & Assignment¶
Points are the data interfaces that carry time-series values.
- Create points on the device — use
POST /point-groups/Device-{deviceId}/pointsto register each data point with its name, data type, unit, and function (sensor,command, orsetpoint). - Assign points to equipment — use
POST /point-groups/Equipment-{equipmentId}/relationships/has-pointsto link each point to its corresponding equipment.
Phase 6 — Data Ingestion¶
Push time-series values for each point using the Point Value Ingest API:
- Single-point ingestion —
POST /points/{pointId}/valueswith a batch of up to 100 timestamped values. - Multi-point batch ingestion —
POST /points/covsto push 1 value for up to 50 points in a single request.
The Postman collection includes example requests for pushing electricity consumption, occupancy, and indoor air quality data.
Using the Postman Collection¶
The Postman collection contains ready-to-run requests organized into folders matching the phases above. It includes three scenario examples:
| Scenario | Equipment Type | Data Points |
|---|---|---|
| 3.1 Energy Meter | Meter | Electricity consumption (kWh) at building, floor, and room level |
| 3.2 Occupancy | Sensor | Occupancy counts per room |
| 3.3 Indoor Air Quality | Sensor | Temperature, humidity, CO2, TVOC, PM10, PM2.5, light, noise, NO2, CO, O3, SO2 |
Setup¶
- Import the collection into your tool of choice like Postman, Insomnia or Bruno.
Set the following collection variables:
Variable Description API_URLThe Building X API base URL partitionThe partition ID to onboard data into Run the Authorize request first — it uses
client_credentialsto obtain a token and stores it automatically for subsequent requests.- Execute the folders in order: 1. Building Structure → 2. Device → 3.x Scenario. Each request auto-saves the created resource IDs into collection variables for use in later steps.
Tip
You can run an entire folder at once by right-clicking on it in Postman and selecting Run folder.
Next Steps¶
- General Information — learn about filtering, pagination, error handling, and other API conventions.
- Try Out APIs — explore all available APIs interactively from the Developer Portal.
- Refer to individual API overviews for detailed resource documentation.