API Overview
All the messages described in this section correlate with the HTTP-based APIs described in detail in the Quickstart and API Endpoints sections of the documentation.
File/dump-related APIs
File download/upload APIs are not implemented in this protocol. You may use the Get File and Send Dump REST APIs to perform these actions.
You can authenticate using the same device ID and access key that you got using the Register Device API.
Send Telemetry
topic
: v1/device/DEVICE_ID/telemetry
userProperties
: { "device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }
payload
:
{
"status": "online",
"timestamp": "2021-08-04T07:45:44.122Z",
"telemetries": {
"fan_speed": 100.1,
"connection": "4g",
"usbc": true
}
}
Detailed information on supported fields can be found in the Send Telemetry API documentation.
Get Config
topic
: v1/device/DEVICE_ID/config
responseTopic
: v1/device/DEVICE_ID/config/update
payload
:
{
version: "CONFIG_VERSION",
last_updated: "2021-08-04T07:45:44.122Z",
…configuration_fields
}
Update Config
topic
: v1/device/DEVICE_ID/config/update
userProperties
: { "device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }
payload
:
{
version: "CONFIG_VERSION",
last_updated: "2021-08-04T07:45:44.122Z",
…configuration_fields
}
Get Command
topic
: v1/device/DEVICE_ID/commands
responseTopic
: v1/device/DEVICE_ID/commands/update
payload
:
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx",
"status": "pending",
"name": "update_firmware",
"parameters": {
"url": "https://s3.amazonaws.com/xxxx.zip",
"version": "1.3.4"
}
}
Update Command
topic
: v1/device/DEVICE_ID/commands/update
userProperties
: { "device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }
payload
:
{
"status": "done",
"message": "great, success!",
"id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
Possible command statuses: done | in_progress | error
Get License
topic
: v1/device/DEVICE_ID/license
responseTopic
: v1/device/DEVICE_ID/license/update
payload
:
{
"data": "device-specific license info...",
"signature": "RSA signature...",
"id": "xxxxxxxx-xxxx...",
"add": true,
"update": false,
"remove": false,
}
The add
/update
/remove
fields will be true
depending on what operation the device needs to perform (either adding, updating, or removing a license).
Update License
topic
: v1/device/DEVICE_ID/license/update
userProperties
: { "device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }
payload
:
{
"id": "license_id",
"state": "done",
"error": "great not success!"
}
Possible license values: inuse | removed | error
Get Space Info
topic
: v1/device/DEVICE_ID/space_info
payload
:
{
"location": {
"coordinates": {
"lat": 51.165691,
"lng": 10.451526
},
"utc_offset": 60,
"name": "Germany"
},
"temperature_units": "celsius",
"maintenance": false,
"name": "Interactive Class",
"local_time": "2022-03-17T10:55:28+01:00"
}
Get Firmware Version
topic
: v1/device/DEVICE_ID/firmware
payload
:
{
"latest_fw_version": "1.0.8",
"latest_fw_file_id": "f62e0c28-5ce2-4590-a6cf-2f255a338544"
}
Update Device
topic
: v1/device/DEVICE_ID/update
userProperties
: { "device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }
payload
:
{
"firmware_version": "VERSION",
"name": "NAME"
}
Set Cloud Settings
topic
: v1/device/DEVICE_ID/cloud_settings/update
userProperties
: {"device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }
payload
:
{
"property": "property_name",
"value": "property_value"
}
Supported properties: Set Cloud Settings
Get latest snapshot
Request the latest snapshot of the device, sent in each relevant topic specified above.
It will do the following:
- Publish space info information
- Publish device configuration
- Publish next command if available
- Publish licenses information
- Publish firmware event in case the current device firmware version does not match latest firmware version
topic
: v1/device/DEVICE_ID/get
userProperties
: {"device_id": "DEVICE_ID", "access_key": "ACCESS_KEY" }