{"service":"wifi-nodes-backend","version":"2.0.0","multiTenant":true,"auth":"x-api-key header required on all /api/* routes (except /api/auth)","endpoints":["POST   /api/auth/register        — Create user account (returns API key)","POST   /api/auth/login            — Login (returns API key)","POST   /api/auth/regenerate-key   — Regenerate API key","","POST   /api/sensors/register      — Register sensor (MAC-based ID)","GET    /api/sensors               — List your sensors","DELETE /api/sensors/:sensorId     — Remove a sensor","","POST   /api/temperature           — Submit temperature reading","GET    /api/temperature/latest     — Get latest temperature","GET    /api/temperature/history    — Get temperature history","","POST   /api/humidity              — Submit humidity reading","GET    /api/humidity/latest        — Get latest humidity","GET    /api/humidity/history       — Get humidity history","","POST   /api/soil-moisture         — Submit soil moisture reading","GET    /api/soil-moisture/latest   — Get latest soil moisture","GET    /api/soil-moisture/history  — Get soil moisture history","","POST   /api/water-level           — Submit water level reading","GET    /api/water-level/latest     — Get latest water level","GET    /api/water-level/history    — Get water level history","","POST   /api/relay/command         — Send relay command","GET    /api/relay/pending          — ESP32 polls for commands","POST   /api/relay/status          — ESP32 reports relay state","GET    /api/relay/status           — Get relay status","","GET    /api/ota/policy              — List OTA policies (per type)","PUT    /api/ota/policy/:nodeType    — Update OTA policy for a node type","POST   /api/ota/ack                 — ESP32 reports OTA result","GET    /api/ota/status              — Get all nodes firmware status","","GET    /health                      — Liveness probe","GET    /ready                       — Readiness probe"]}