Přeskočit na hlavní obsah

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
},
...
]
}
}