# API Documentation: AquaMaster Webserver This document describes all available API routes provided by the webserver in `webserverrouter.h`. All API endpoints return JSON unless otherwise noted. --- ## Static Files | Route | Method | Description | Response Type | |------------------|--------|------------------------------|--------------| | `/` | GET | Main page | HTML | | `/settings` | GET | Settings page | HTML | | `/rfid` | GET | RFID page | HTML | | `/firmware.bin` | GET | Firmware file (SPIFFS) | Binary | --- ## Timer & Data | Route | Method | Description | Request Body/Params | Response Example | |-------------------|--------|-------------------------------------|--------------------|------------------| | `/api/data` | GET | Get current timer and status data | – | `{...}` | | `/api/reset-best` | POST | Reset best times | – | `{ "success": true }` | --- ## Button Learning | Route | Method | Description | Request Body/Params | Response Example | |------------------------|--------|-------------------------------------|--------------------|------------------| | `/api/unlearn-button` | POST | Remove all button assignments | – | `{ "success": true }` | | `/api/start-learning` | POST | Start button learning mode | – | `{ "success": true }` | | `/api/stop-learning` | POST | Stop button learning mode | – | `{ "success": true }` | | `/api/learn/status` | GET | Get learning mode status | – | `{ "active": true, "step": 1 }` | | `/api/buttons/status` | GET | Get button assignment and voltage | – | `{ "lane1Start": true, "lane1StartVoltage": 3.3, ... }` | --- ## Settings | Route | Method | Description | Request Body/Params | Response Example | |----------------------|--------|-------------------------------------|--------------------|------------------| | `/api/set-max-time` | POST | Set max timer and display time | `maxTime`, `maxTimeDisplay` (form params, seconds) | `{ "success": true }` | | `/api/get-settings` | GET | Get current timer settings | – | `{ "maxTime": 300, "maxTimeDisplay": 20 }` | --- ## WiFi Configuration | Route | Method | Description | Request Body/Params | Response Example | |-------------------|--------|-------------------------------------|--------------------|------------------| | `/api/set-wifi` | POST | Set WiFi SSID and password | `ssid`, `password` (form params) | `{ "success": true }` | | `/api/get-wifi` | GET | Get current WiFi SSID and password | – | `{ "ssid": "...", "password": "..." }` | --- ## Location Configuration | Route | Method | Description | Request Body/Params | Response Example | |----------------------|--------|-------------------------------------|--------------------|------------------| | `/api/set-location` | POST | Set location name and ID | `id`, `name` (form params) | `{ "success": true }` | | `/api/get-location` | GET | Get current location | – | `{ "locationid": "..." }` | --- ## Button Update & Mode | Route | Method | Description | Request Body/Params | Response Example | |----------------------|--------|-------------------------------------|--------------------|------------------| | `/api/updateButtons` | GET | Trigger MQTT update for buttons | – | `{ "success": true }` | | `/api/set-mode` | POST | Set operational mode | `mode` (form param: "individual" or "wettkampf") | `{ "success": true }` | | `/api/get-mode` | GET | Get current operational mode | – | `{ "mode": "individual" }` | --- ## System Info | Route | Method | Description | Request Body/Params | Response Example | |---------------|--------|-------------------------------------|--------------------|------------------| | `/api/info` | GET | Get system info (IP, MAC, memory, license, etc.) | – | `{ "ip": "...", "ipSTA": "...", "channel": 1, "mac": "...", "freeMemory": 123456, "connectedButtons": 3, "isOnline": true, "valid": "Ja", "tier": 1 }` | --- ## WebSocket | Route | Description | |---------|------------------------------------| | `/ws` | WebSocket endpoint for live updates| --- **All API endpoints return JSON unless otherwise noted. POST requests expect form parameters (not JSON body).**