HTTP API
Zařízení na portu 80 provozuje HTTP server s API. Všechny požadavky kromě /api/v1/ping musí být autentizovány pomocí HTTP Basic Auth. Uživatelské jméno je vždy admin. Heslo je ve výchozím stavu admin, ale lze jej změnit volbou password. API lze vypnout volbou enable_server v nastavení.
Data se odesílají ve formátu JSON. Všechny odpovědi jsou objekt JSON obsahující booleovskou vlastnost ok. Ta je true, pokud požadavek uspěl, jinak false. Pokud požadavek uspěl, jsou případná data odpovědi obsažena v poli data. Pokud požadavek selhal, bude přítomno pole msg obsahující jednu chybovou zprávu nebo seznam více chybových zpráv.
Příklad neúspěšného požadavku:
{
"ok": false,
"msg": "An error message"
}
Příklad úspěšného požadavku:
{
"ok": true,
"data": [1, 2, 3, 4]
}
HTTP endpointy
GET /api/v1/ping
Zařízení odpoví hodnotou "pong" v poli data. Jako jediný endpoint nevyžaduje autentizaci, takže se hodí ke kontrole dostupnosti.
GET /api/v1/config
Získání aktuální konfigurace.
POST /api/v1/config
Aktualizace konfigurace zařízení. Zařízení se automaticky restartuje.
POST /api/v1/ota
Nahrání aktualizace firmwaru do zařízení. Aktualizace se posílá jako raw octet stream v těle požadavku. Po odeslání odpovědi se zařízení automaticky restartuje.
POST /api/v1/rollback
Zahájení návratu firmwaru na předchozí verzi. Po odeslání odpovědi se zařízení automaticky restartuje.
POST /api/v1/reboot
Restart zařízení.
POST /api/v1/factory_reset
Obnovení konfigurace zařízení na výchozí hodnoty. Po odeslání odpovědi se zařízení automaticky restartuje.
POST /api/v1/counter_reset
Vynulování hodnot počítadel.
GET /api/v1/log
Odpoví polem nejnovějších záznamů logu.
GET /api/v1/meta
Odpoví metadaty o zařízení.
Příklad odpovědi:
{
"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
},
...
]
}
}