# HTTP-API Basis `/api/`, JSON. Login liefert ein acht Stunden gültiges Bearer-Token. Alle Lesezugriffe benötigen Anmeldung. Agent-Token sind nur für Ingest gültig. | Methode / Pfad | Funktion | |---|---| | POST auth/login/ | username, password → token | | POST auth/logout/ | aktuelles Token widerrufen | | GET auth/me/ | Benutzerinformationen | | POST ingest/ | Agent-Batch, Header Authorization: Agent TOKEN | | GET summary/ | Kennzahlen, Server, Durchsatz | | GET servers/ | Hostliste | | GET servers/UUID/ | Detail und Zeitreihe | | PATCH servers/UUID/ | maintenance boolean, Operator | | GET tasks/ | Taskliste mit q, state, offset | | GET events/ | Ereignisliste mit q, kind, offset | | GET alarms/ | offene Alarme, all=1 für Historie, offset | | POST alarms/ID/ack/ | Quittierung, Operator | | GET/PUT settings/ | Lesen / Operator-Konfiguration | | GET flower/ | zuletzt empfangene Flower-Statuswerte | | GET export/ | Serverübersicht als CSV | | GET report/ | Seaborn-Heatmap als PNG | | POST ai/ | konfigurierte KI-Analyse, Operator | | GET health/ | Datenbankprüfung | Listen nutzen `segment` (Name), `server` (UUID) und je nach Endpunkt `hours` (1, 24, 168 oder 720). Tasks/Events/Alarme sind auf 100 Einträge pro Seite begrenzt. Flower-Status enthält den Messzeitpunkt; alte Werte sind kein aktueller Verfügbarkeitsnachweis. Ingest-Beispiel: ```json {"events":[{"id":"9f242e23-d82d-457a-b89c-cc97ce5beee9","kind":"metric","occurred_at":"2026-11-04T12:00:00Z","payload":{"cpu":12.5,"ram":43.2,"disk":50.1,"services":{"django":true}}}]} ``` Erfolgsantwort enthält `accepted` (neu eingefügte Ereignisse) und `received` (Anzahl verarbeiteter Eingabeelemente inklusive Duplikate). Nur bei erfolgreichem HTTP-Status und passender received-Anzahl bestätigt der Agent die Outbox-Einträge.