In this release
We introduce breaking changes for Device.
The relations
- Device servedBy Device
- Device servesDevice Device
- Device servesBuildingComponent Building Component
- Device servesBuilding Building
now supports many-to-many and is represented in the API as arrays of IDs instead of single IDs.
Space Collection is expanded with areaQuantities information.
New /restore endpoint is introduced that allows users to change the ‘Archived’ twin status to ‘Valid’.
Also it is now possible to retrieve actuator edge status similar to what was previously available only for sensors.
New functionality
Area Quantity for Space Collection(s)
Now a Space Collection can keep a list of area quantity items.
Area Quantity model:
Where:
- ‘type’ : is a string describing the area quantity type (e.g. Gross Area, Net Area, Leasable area, BOA, LOA, ATEMP, etc.)
- ‘measurementUnit’ default value is m2 or “https://w3id.org/rec/core/SquareMeter”
- Note: ‘measurementUnit’ should be a valid measurement unit IRI.
Area Quantity may be populated via the existing create or update endpoints:
- POST /json/spacecollection
- PUT /json/spacecollection
Example of full Space collection json:
Restore Twin endpoint
In case an agent has enough permission to conduct an update operation, then Restore action is allowed, meaning that a twin’s status changes (is restored) from ‘Archived’ to ‘Valid’.
The following endpoints are introduced:
- PUT /json/realestate/{id}/restore
- PUT /json/realestatecomponent/{id}/restore
- PUT /json/buildingcomponent/{id}/restore
- PUT /json/room/{id}/restore
- PUT /json/storey/{id}/restore
- PUT /json/asset/{id}/restore
- PUT /json/device/{id}/restore
- PUT /json/sensor/{id}/restore
- PUT /json/actuator/{id}/restore
- PUT /json/aliasnamespace/{id}/restore
- PUT /json/collection/{id}/restore
- PUT /json/apartment/{id}/restore
- PUT /json/tenantunit/{id}/restore
- PUT /json/region/{id}/restore
- PUT /json/spacecollection/{id}/restore
- PUT /json/system/{id}/restore
For example:
- /json/room/c21b3128-779e-48f7-a33c-650b092fe044/restore
Actuator Edge Status
For the Actuators, a new endpoint is available. If the Actuator is of a read/write type, and it is able to receive actuations and send observations, now it is possible to get edge status. The logic and statistical model for determining the actuator edge status is the same as for sensor edge status.
- GET /json/actuator/{id}/edgestatus
Request example:
- /json/actuator/f1e60b09-746e-47cb-8d5a-07720f8a36bc/edgestatus
Response example:
{
“actuatorId”: “f1e60b09-746e-47cb-8d5a-07720f8a36bc”,
“edgeStatus”: {
“code”: “OK”,
“message”: “Actuator is connected”
}
}
Global coordinates for Asset
Asset (and Asset subclasses including AccessControlPanel, AccessReader, Chair, Desk, Elevator, FireExtinguisher, Gate, Window, Door) has global coordinates via the new property hasGeoReferenceOrigo in addition to its local coordinates (isLocatedAtLocalCoordinates).
- The property accepts three coordinates (latitude, longitude, altitude above sea level) separated with `;`.
- The property is not mandatory.
Breaking changes
Device Serves and Served by Device
Device Serves Device(s) and Device Serves Space(s) (Building Component) will now be many-to-many.
Next Device (Sensor and Actuator) properties change their type from single UUID to array of UUIDs:
servedBy: [“37dc4979-7052-4a04-b3a8-72776fe312a1”]
servesDevice: [“ab11f614-43c9-4fde-a28c-8e09f98b484d”]
servesBuildingComponent: [“7d6746af-763c-494a-99e4-1092abdefa7d”]
servesBuilding: [“5099d86c-7c4c-4e5b-83e7-9b51c8e8dec8”]
List of affected endpoints :
PUT /json/devices
POST /json/devices
GET /json/device
PUT /json/device
POST /json/device
GET /json/device/{id}
PATCH /json/device/{id}
PUT /devices
POST /devices
GET /device
PUT /device
POST /device
GET /device/{id}
PUT /json/sensors
POST /json/sensors
GET /json/sensor
PUT /json/sensor
POST /json/sensor
GET /json/sensor/{id}
PATCH /json/sensor/{id}
PUT /sensors
POST /sensors
GET /sensor
PUT /sensor
POST /sensor
GET /sensor/{id}
PUT /json/actuators
POST /json/actuators
GET /json/actuator
PUT /json/actuator
POST /json/actuator
GET /json/actuator/{id}
PATCH /json/actuator/{id}
PUT /actuators
POST /actuators
GET /actuator
PUT /actuator
POST /json/actuator
GET /actuator/{id}
GET /system/{id}/includes
GET /json/system/{id}/includes
GET /collection/{id}/includes
GET /json/collection/{id}/includes – in case if collection includes devices, sensors and actuators
Be aware that if your application relies on those properties to be a single id, you will need to do adjustments in code!
Example of full Device object json:
Fixes and minor updated
None.