Write setpoints
const url = 'https://example.com/v1/buildings/example/setpoints';const options = { method: 'POST', headers: {'X-Api-Key': '<X-Api-Key>', 'Content-Type': 'application/json'}, body: '{"issued_at":"2026-04-15T12:00:00Z","valid_until":"2026-04-15T12:00:00Z","idempotency_key":"example","setpoints":[{"point_id":"example","value":1}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/buildings/example/setpoints \ --header 'Content-Type: application/json' \ --header 'X-Api-Key: <X-Api-Key>' \ --data '{ "issued_at": "2026-04-15T12:00:00Z", "valid_until": "2026-04-15T12:00:00Z", "idempotency_key": "example", "setpoints": [ { "point_id": "example", "value": 1 } ] }'Asks the building to set points to values. The receipt confirms receipt, not execution; items the backend refuses are listed in rejected. idempotency_key makes a repeated request safe.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
The object id of the building: its register identification in dotted form, e.g. nl.bag.pand.0014100040022681.
Request Bodyrequired
Section titled “Request Bodyrequired”Request of POST /v1/buildings/{building_id}/setpoints.
object
RFC 3339 timestamp.
RFC 3339 timestamp.
Lets the consumer retry safely: the same key returns the same receipt.
object
Stable address of a point, for example 9b41d0aa.
Matches the point’s value_type.
Example generated
{ "issued_at": "2026-04-15T12:00:00Z", "valid_until": "2026-04-15T12:00:00Z", "idempotency_key": "example", "setpoints": [ { "point_id": "example", "value": 1 } ]}Responses
Section titled “Responses”Received.
202 response of every write. Confirms receipt, not execution.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
RFC 3339 timestamp.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Stable address of a point, for example 9b41d0aa.
Exactly one of asset_class and group_id.
object
Compact IRI such as brick:Temperature_Sensor or unit:DEG_C.
Exactly one of asset_class and group_id.
object
Compact IRI such as brick:Temperature_Sensor or unit:DEG_C.
Extension: the individual asset that failed a building-level command.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "status": "accepted", "rejected": [ { "code": "invalid_request" } ]}202 response of every write. Confirms receipt, not execution.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
RFC 3339 timestamp.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Stable address of a point, for example 9b41d0aa.
Exactly one of asset_class and group_id.
object
Compact IRI such as brick:Temperature_Sensor or unit:DEG_C.
Exactly one of asset_class and group_id.
object
Compact IRI such as brick:Temperature_Sensor or unit:DEG_C.
Extension: the individual asset that failed a building-level command.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "status": "accepted", "rejected": [ { "code": "invalid_request" } ]}invalid_request, or a write the backend refuses as a whole (point_not_writable, value_out_of_range, …).
Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}unauthenticated: no or a wrong key.
Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}forbidden: the key may not use this building.
Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}building_not_found, or not_found for an unknown route.
Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}rate_limited; retry_after says when to try again.
Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}upstream_unavailable: the building’s systems cannot be reached; retryable.
Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}Body of every 4xx and 5xx response. building_id is present when the request addressed a building.
object
Protocol version, carried by every response.
Object id of the building: the register identification in dotted form, for example nl.bag.pand.0014100040022681.
object
Invalid_request, unauthenticated, building_not_found, point_not_writable, value_out_of_range, unit_mismatch, rate_limited and upstream_unavailable come from the proposal. forbidden, point_not_found, type_mismatch, target_not_found, command_not_supported, expired, not_found and internal are extensions. Clients must accept unknown codes.
Which field caused it, for example setpoints[0].value.
ISO 8601 duration with exact units only (W, D, H, M, S), for example PT15M.
Example
{ "error": { "code": "invalid_request" }}