Introduction
The Remot Open API allows customers to stream device log data over an HTTP connection.
The API is versioned as a whole. /api/v1 and /api/v2 run concurrently and accept the same Sanctum tokens. Responses include an API-Version header (1 or 2). Only records and last-record differ between majors; other resources share the same contract on both.
v1 is not turned off when v2 ships. When a major is eventually retired, that will be advertised with Deprecation and Sunset headers (RFC 8594) rather than a silent cutoff. No retirement date is set today.
Additive changes (a new endpoint, an optional response field, an optional query parameter) are applied to every live major. Breaking changes (removing or renaming a field, changing a field's type or meaning, tightening validation, changing auth, or changing default behaviour) ship as a new major of the whole API — not a per-resource version.
Getting started
To use this API for the first time, please get in touch with our support team to have it enabled for you. There after, log into your account on the Remot platform; a new menu item labelled "API Tokens" will be available. This is an area for you to manage and create tokens that can be used to retrieve the data we have collected from your device.
Please note the following:
- You can create as many tokens as you need.
- If you intend to create multiple tokens, it is recommended that you give each of them a meaningful name; preferrable one that identifies which consumer is using the token.
- Deleting a token instantly invalidates it; all API consumers using that token will not have access to log data anymore.
- Valid tokens grant access to data from all (or only) devices attached to the account that created the token.
Example request (v1)
v1 records keep the legacy contract: fixed-style field names for common measurements, and a packed extras string on Davix devices.
URL Parameters
| Field | Type | Description |
|---|---|---|
| device_serial | string | The serial number of the device in subject |
Get Parameters
| Field | Type | Description |
|---|---|---|
| from | string | Start date of the period for which to query the data |
| to | string | End date of the period for which to query the data |
curl --location -g --request GET 'https://open-api.remotonline.com/api/v1/devices/:device_serial/records?from=2016-06-14&to=2021-06-14' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{api_token}}'
Response
To preserve performance, the response for any request has been designed to return a maximum of 3000 entries.
The response does contain additional response meta data including links to access the different available pages for the request criteria.
{
"current_page": 1,
"data": [
{
"id": 57384385,
"device": 561,
"supply_voltage": "0.00",
"supply_current": "0.03",
"battery_voltage": "1.42",
"panel_voltage": "2.67",
"panel_current": "0.00",
"temp_room": 0,
"temp_battery": 0,
"time_stamp": "2019-03-22 20:43:07"
},
{
"id": 57384393,
"device": 561,
"supply_voltage": "0.00",
"supply_current": "0.03",
"battery_voltage": "1.36",
"panel_voltage": "2.65",
"panel_current": "0.00",
"temp_room": 0,
"temp_battery": 0,
"time_stamp": "2019-03-22 20:43:11"
},
{
"id": 57384405,
"device": 561,
"supply_voltage": "0.00",
"supply_current": "0.03",
"battery_voltage": "1.38",
"panel_voltage": "2.66",
"panel_current": "0.00",
"temp_room": 0,
"temp_battery": 0,
"time_stamp": "2019-03-22 20:43:14"
},
...
],
"first_page_url": "http://open-api.remotonline.com/api/v1/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=1",
"from": 1,
"last_page": 28,
"last_page_url": "http://open-api.remotonline.com/api/v1/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=28",
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
...
{
"url": "http://open-api.remotonline.com/api/v1/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=28",
"label": "28",
"active": false
},
{
"url": "http://open-api.remotonline.com/api/v1/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=2",
"label": "Next »",
"active": false
}
],
"next_page_url": "http://open-api.remotonline.com/api/v1/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=2",
"path": "http://open-api.remotonline.com/api/v1/devices/:device_serial/records",
"per_page": 3000,
"prev_page_url": null,
"to": 3000,
"total": 83495
}
Example request (v2)
v2 records are flat JSON keyed by dimension.name for each parameter mapped to that device (e.g. battery_voltage, supply_current). There is no extras object — values that v1 packs into extras appear as top-level fields. Keys that a device does not have are omitted. Pagination (3000 per page) is the same as v1.
curl --location -g --request GET 'https://open-api.remotonline.com/api/v2/devices/:device_serial/records?from=2016-06-14&to=2021-06-14' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{api_token}}'
{
"current_page": 1,
"data": [
{
"id": 1553282587,
"supply_voltage": 0.00,
"supply_current": 0.03,
"battery_voltage": 1.42,
"panel_voltage": 2.67,
"panel_current": 0.00,
"time_stamp": "2019-03-22 20:43:07"
},
{
"id": 1553282591,
"supply_voltage": 0.00,
"supply_current": 0.03,
"battery_voltage": 1.36,
"panel_voltage": 2.65,
"panel_current": 0.00,
"time_stamp": "2019-03-22 20:43:11"
}
],
"first_page_url": "http://open-api.remotonline.com/api/v2/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=1",
"from": 1,
"last_page": 28,
"last_page_url": "http://open-api.remotonline.com/api/v2/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=28",
"next_page_url": "http://open-api.remotonline.com/api/v2/devices/:device_serial/records?from=2016-06-14&to=2021-06-14&page=2",
"path": "http://open-api.remotonline.com/api/v2/devices/:device_serial/records",
"per_page": 3000,
"prev_page_url": null,
"to": 3000,
"total": 83495
}
The exact measurement keys in each object depend on the device. A last-record request uses the same object shape without the paginator envelope: GET /api/v2/devices/:device_serial/last-record.
Please contact our support team in case you notice any unexpected behaviour.