Skip to main content

HTTP API

The device hosts an HTTP server with an API on port 80. All requests except /api/v1/ping have to be authenticated using HTTP Basic Auth. The user name will always be admin. The password is admin by default, but it is configurable using the password option. The API can be disabled using the enable_server settings option.

Data is sent in a JSON format. All responses are a JSON object containing a boolean property ok. It is true if the request succeeded, false otherwise. If the request succeeded, any response data is contained in the data field. If the request failed, there will be a msg field containing a single error message, or a list of multiple error messages.

Example of a failed request:

{
"ok": false,
"msg": "An error message"
}

Example of a successful request:

{
"ok": true,
"data": [1, 2, 3, 4]
}

HTTP Endpoints​

GET /api/v1/ping​

The device will respond with "pong" in the data field. This is the only endpoint that needs no authentication, so it can be used as a liveness probe.

GET /api/v1/config​

Get the current configuration.

POST /api/v1/config​

Update the device configuration. The device will automatically reboot.

POST /api/v1/ota​

Upload a firmware update to the device. The update is sent as raw octet stream in the request body. The device will automatically reboot after sending a response.

POST /api/v1/rollback​

Initiate a firmware rollback. The device will automatically reboot after sending a response.

POST /api/v1/reboot​

Reboot the device.

POST /api/v1/factory_reset​

Reset the device configuration to factory values. The device will automatically reboot after sending a response.

POST /api/v1/counter_reset​

Reset the counter values.

GET /api/v1/log​

Responds with an array of the most recent logs.

GET /api/v1/meta​

Responds with metadata about the device.

Example response:

{
"ok": true,
"data": {
"name": "softli-collector-a0764e81f69a",
"device_id": "a0764e81f69a",
"uptime": 25215,
"version": "v1.2.1rc1",
"fw_name": "Default firmware",
"rollback_available": false,
"free_memory": 19.8,
"wifi_status": "Access point (0 clients)",
"wifi_ip": "192.168.254.1",
"wifi_netmask": "255.255.255.0",
"wifi_gateway": "192.168.254.1",
"wifi_mac": "a6:76:4e:81:f6:9a",
"eth_connected": true,
"eth_ip": "192.168.255.1",
"eth_netmask": "255.255.255.0",
"eth_gateway": "192.168.255.1",
"eth_mac": "a2:76:4e:81:f6:9a",
"inputs": [
{
"active_count": 35980,
"inactive_count": 35980,
"active": false
},
...
]
}
}