Authentifizierung
Zwei Wege, beide von derselben Middleware akzeptiert:
Sitzungs-Cookie (Browser)
POST /api/v1/auth/login mit { "email": "...", "password": "..." } setzt ein Cookie namens illusiondb_session, gültig für 7 Tage. POST /api/v1/auth/logout löscht es serverseitig.
API-Token (Skripte, externe Clients)
Ein Token legst du unter Einstellungen → Mein Konto an: POST /api/v1/auth/tokens mit { "name": "..." } – die Antwort enthält den rohen Token-Wert genau einmal. Danach mitschicken als:
Authorization: Bearer <dein-token>
Der Token selbst ist ein einfacher, zufälliger Wert (Base64-URL-kodiert) – kein festes Präfix. Ein Token widerrufst du über DELETE /api/v1/auth/tokens/{id}.
Alternativ, für Fälle ohne eigene Header-Kontrolle (z.B. ein <img src="..."> auf einen Dateianhang, ein direkt verlinkter CSV-Export): derselbe Token als Query-Parameter ?token=... (bzw. &token=... bei bestehendem Query-String):
GET /api/v1/tables/{tableId}/records/{pk}/attachments/{columnId}/{fileId}?token=<dein-token>
Ist zusätzlich ein Authorization-Header gesetzt, gewinnt der Header. Sicherheitshinweis: ein Token in der URL landet potenziell in Server-/Proxy-Logs, im Browser-Verlauf und in Referer-Headern nachgelagerter Requests – wo möglich weiterhin den Authorization-Header verwenden, die Query-Variante gezielt nur für Fälle wie eingebettete Bilder oder Direktlinks einsetzen.
Öffentliche Endpunkte
Ganz ohne Anmeldung erreichbar: POST /auth/login, GET /auth/setup-status, POST /auth/setup (Erststart-Einrichtung), GET /healthz, GET /version. Ebenfalls ohne die normale Middleware laufen die Dokumenten-Generator-Endpunkte und öffentlich markierte Custom Endpoints – diese entscheiden selbst pro Aufruf, ob eine Anmeldung nötig ist.