Data model overview
The BuildingMinds API onboards a Digital Twin of your real-estate portfolio — a connected model of your assets, their tenancy and commercial structure, their energy and resource consumption, and the ESG attributes used for reporting. You push each entity from your own systems as JSON, and BuildingMinds links them into one model using the IDs you provide.
This page is the map: what the entities are, how they relate, and the vocabulary used across the API. New to the API? Start with the Getting Started guide. For field-level detail on any entity, see the API Reference.
How the entities fit together
graph TD Address --> Site Site --> Building Building --> Floor Floor --> Space Building --> RentalUnit["Rental Unit"] RentalUnit --> RentalContract["Rental Contract"] RentalContract --> RentalPayment["Rental Payment"] RentalContract --> RentalOption["Rental Option"] Building --> Meter RentalUnit --> Meter Meter --> ResourceConsumption["Resource Consumption (raw readings)"] Building --> OperationalMeasurement["Operational Measurement (aggregated)"] Building --> Certificate Building --> EnergyRating["Energy Rating"] Building --> Valuation Building --> AreaMeasurement["Area Measurement"]
Arrows show the typical belongs-to direction. You reference a parent by the ID you assigned it — and you can send entities in any order: a child that arrives before its parent is held and linked automatically.
The asset hierarchy
The physical structure of your portfolio is a hierarchy. Each level references the one above by ID:
| Entity | Belongs to (key reference) | Notes |
|---|---|---|
| Site | one or more Addresses (addressIds) | Top-level location grouping one or more buildings. |
| Building | a Site (siteId) + Address(es) (addressIds) | The core asset. Carries rich ESG attributes — heating type, net-zero status, fossil-fuel exposure, monument protection, and more. |
| Floor | a Building (buildingId) | |
| Space | a Floor (floorId) | The smallest physical unit. |
| Rental Unit | links to Site / Building / Floor / Space / Land (siteIds, buildingIds, floorIds, spaceIds, landIds) | The lettable unit — the bridge between the physical asset and tenancy. Must reference at least one of these parents, or it stays in a New state. |
| Land | — | Land parcels associated with the portfolio. |
Consumption & metering
How energy, water and waste data flows in:
| Entity | Links to | What it is |
|---|---|---|
| Meter | Building / Rental Unit (buildingIds, rentalUnitIds); sub-meters reference their parent (parentId) | A metering device. Carries category (Meter / Sub-meter / Virtual), resource type, unit, and meteringPointId (e.g. MPAN, MPRN, SPID). |
| Resource Consumption | a Meter (meterExternalId) | Raw meter readings — the unaggregated, untransformed series. |
| Operational Measurement | a Building (buildingId) | Aggregated consumption against a building (e.g. monthly), whether derived from meters or invoices. |
| Meter Context / Meter OPM Snapshot | a Meter | Supporting context and snapshots for a meter. |
BuildingMinds performs the aggregation and contextualisation — keep your data raw on the way in. See the Metering Integration Prerequisites.
Tenancy & commercial
| Entity | Links to | What it is |
|---|---|---|
| Rental Contract | one or more Rental Units (rentalUnitIds) | The lease. |
| Rental Option | a Rental Contract | Break / extension options. |
| Rental Payment | a Rental Contract | Scheduled or actual payments. |
| Role (and Role–Rental-Contract–Contact / –Organisation) | contracts, contacts, organisations | Who plays which role on a contract. |
| Organisation, Contact | — | Legal entities and people. |
| Vacancy Rate, Headcount | building / unit | Occupancy metrics. |
ESG & performance
| Entity | What it is |
|---|---|
| Certificate | Building/sustainability certificates (e.g. BREEAM, LEED). |
| Energy Rating | Energy-performance ratings (e.g. EPC). |
| Valuation | Asset valuations. |
| Area Measurement | Floor-area figures — the denominators behind intensity metrics. |
| Retrofit / Retrofit Measure / Retrofit Scenario / Retrofit Impact | Decarbonisation planning: measures, scenarios, and their modelled impact. |
How linking works
You assign every entity a stable external ID. References between entities use those IDs, so:
- Order doesn't matter. Send a child before its parent and it is held, then linked automatically once the parent arrives.
- A record waits for its parents. Until every referenced parent exists, the record stays in a
Newstate; it only advances toCompletedonce its parents are successfully onboarded. (A Building that references asiteIdoraddressIdsthat haven't arrived yet staysNewuntil they do.) - Re-sending updates. Re-send an entity with the same ID and it updates rather than duplicates — keep your IDs stable.
- Track progress with the batch. Every submission returns a
batchId; pollGET /batch/{batchId}/inbounduntil each record reachesCompletedorPublished.
Full mechanics are in the Getting Started guide.
Updating and deleting records
Every entity carries an optional eventType field following the pattern <Entity>Added / <Entity>Updated / <Entity>Deleted (e.g. BuildingAdded, OperationalMeasurementUpdated).
- Add / update: omit
eventType(or send…Added/…Updated) and submit the record with the same external ID — the record is created or its fields are updated (upsert). - Delete: submit the record with
eventType: <Entity>Deleted. Only that record is removed — linked entities are not cascaded (deleting an Area Measurement, for example, leaves its building untouched).
A partial update only needs the external ID plus the fields you are changing — e.g. re-submit a Building with just its buildingId, its parent IDs, the changed field, and eventType: BuildingUpdated.
Not every entity supports delete — Address, for instance, has onlyAddressAdded/AddressUpdated.
Dates & formats
Date fields use ISO-8601 in UTC — yyyy-mm-ddThh:mm:ssZ (e.g. 2021-12-01T12:00:00Z). Where only a year is known (e.g. constructionYear, yearOfLastRefurbishment), use the first of January: yyyy-01-01T00:00:00Z.
Glossary
| Term | Meaning |
|---|---|
| Digital Twin | The connected data model of your portfolio inside BuildingMinds. |
| Site / Building / Floor / Space | The physical asset hierarchy, top to bottom. |
| Rental Unit | The lettable unit linking physical space to tenancy. |
| Meter / Sub-meter / Virtual meter | Metering devices; sub-meters reference a parent meter via parentId. |
| Resource Consumption | Raw, unaggregated meter readings. |
| Operational Measurement (OPM) | Aggregated consumption at building level. |
| External ID | The stable identifier you assign; used to match and update records. |
| Batch | A submission job; its batchId lets you poll per-record status. |
| Metering Point ID | Grid identifier of a supply point (e.g. MPAN/MPRN for electricity and gas, SPID for water). |
