morz-infoboard/docs/API-QUICK-REFERENCE.md
Jesko Anschütz aff12a4d81 Doku-Sync: README, TODO, DEVELOPMENT und API-Docs auf Implementierungsstand nachgezogen
README, DEVELOPMENT und TODO spiegelten noch den Stand vor Ebene 1+2 wider.
Checkboxen in TODO von ~18 auf ~70 aktualisiert, drei neue API-Dokumentationsdateien ergänzt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 09:55:36 +01:00

297 lines
5.3 KiB
Markdown

# API Quick Reference
Schnelle Übersicht aller HTTP-Endpoints nach Zweck sortiert.
---
## Agent-Integration
**Beim Player-Startup:**
```http
POST /api/v1/screens/register
```
Automatische Selbstregistrierung des Screens im Default-Tenant "morz".
**Beim Playlist-Sync (alle ~30s):**
```http
GET /api/v1/screens/{screenId}/playlist
```
Abruf der aktuellen Playlist zum Abspielen.
**Status-Reporting (alle ~30s):**
```http
POST /api/v1/player/status
```
Übermittlung des Laufzeitstatus zum Server.
---
## Admin-Dashboard
**Übersicht aller Screens:**
```http
GET /admin
```
Web-UI mit Screen-Liste, Status, Provisioning-Formulare.
**Screen-Verwaltung:**
```http
POST /admin/screens
POST /admin/screens/{screenId}/delete
```
**Provisioning neuer Screens:**
```http
POST /admin/screens/provision
```
**Diagnose:**
```http
GET /status
GET /status/{screenId}
GET /api/v1/screens/status
GET /api/v1/screens/{screenId}/status
```
---
## Tenant-Playlist-Management
**Manage-UI öffnen:**
```http
GET /manage/{screenSlug}
```
Web-UI für Playlist-Bearbeitung, Uploads, Item-Verwaltung.
**Inhalte hinzufügen:**
```http
POST /manage/{screenSlug}/upload (Datei-Upload)
POST /manage/{screenSlug}/items (Item zur Playlist)
POST /manage/{screenSlug}/media/{mediaId}/delete
```
**Inhalte bearbeiten:**
```http
POST /manage/{screenSlug}/items/{itemId}
POST /manage/{screenSlug}/items/{itemId}/delete
POST /manage/{screenSlug}/reorder
```
---
## Media Management (JSON API)
**Media-Assets auflisten:**
```http
GET /api/v1/tenants/{tenantSlug}/media
```
**Neue Medien hinzufügen:**
```http
POST /api/v1/tenants/{tenantSlug}/media
```
(Datei-Upload oder externe URL)
**Media löschen:**
```http
DELETE /api/v1/media/{id}
```
---
## Playlist Management (JSON API)
**Playlist abrufen (Admin):**
```http
GET /api/v1/playlists/{screenId}
```
**Playlist abrufen (Player):**
```http
GET /api/v1/screens/{screenId}/playlist
```
(Gibt nur aktive Items zurück)
**Items verwalten:**
```http
POST /api/v1/playlists/{playlistId}/items
PATCH /api/v1/items/{itemId}
DELETE /api/v1/items/{itemId}
```
**Playlist konfigurieren:**
```http
PUT /api/v1/playlists/{playlistId}/order
PATCH /api/v1/playlists/{playlistId}/duration
```
---
## Screen Management (JSON API)
**Self-Registration (Agent):**
```http
POST /api/v1/screens/register
```
**Screens eines Tenants auflisten:**
```http
GET /api/v1/tenants/{tenantSlug}/screens
```
**Screen erstellen (Admin):**
```http
POST /api/v1/tenants/{tenantSlug}/screens
```
---
## System & Health
**Health-Check:**
```http
GET /healthz
```
**API-Entrypoint:**
```http
GET /api/v1
```
**Metainformationen:**
```http
GET /api/v1/meta
```
---
## Player Local UI (auf dem Gerät)
**Player-Seite öffnen:**
```http
GET /player
```
**Aktuelle Playlist für lokale Anzeige:**
```http
GET /api/now-playing
```
**Systeminformationen anzeigen:**
```http
GET /api/sysinfo
```
---
## Status-Diagnose (Detailed)
Siehe `PLAYER-STATUS-HTTP.md` für vollständige Dokumentation der Status-Endpoints:
```http
POST /api/v1/player/status (Status vom Agent)
GET /api/v1/screens/status (Alle Status)
GET /api/v1/screens/{screenId}/status
DELETE /api/v1/screens/{screenId}/status
```
Query-Parameter für Filterung:
- `q` — Screen-ID Substring
- `derived_state` — online|degraded|offline
- `server_connectivity` — online|degraded|offline|unknown
- `stale` — true|false
- `updated_since` — RFC3339-Zeitstempel
- `limit` — Anzahl Items
---
## Typische Workflows
### 1. Neuen Screen provisioning
```
1. POST /admin/screens (oder /api/v1/tenants/morz/screens)
→ Neuen Screen-Record anlegen
2. POST /admin/screens/provision
→ Provisionierungs-Job starten
3. GET /admin (oder /status)
→ Status überwachen
```
### 2. Neue Inhalte hochladen und einbinden
```
1. POST /manage/{screenSlug}/upload
→ Datei hochladen, Media-Asset erstellen
2. POST /manage/{screenSlug}/items
→ Item zur Playlist hinzufügen (mit media_asset_id)
3. GET /manage/{screenSlug}
→ Playlist-Verwaltung
```
### 4. Playlist bearbeiten
```
1. GET /api/v1/playlists/{screenId}
→ Aktuelle Playlist abrufen
2. PATCH /api/v1/items/{itemId}
→ Dauer, Zeitfenster, Titel ändern
3. PUT /api/v1/playlists/{playlistId}/order
→ Items reordnen
4. GET /api/v1/screens/{screenId}/playlist
→ Player holt neue Version beim Sync ab
```
### 5. Status überwachen
```
1. GET /status (Browser)
oder
GET /api/v1/screens/status (JSON)
→ Aktuelle Status aller Screens
2. GET /status/{screenId}
oder
GET /api/v1/screens/{screenId}/status
→ Detailstatus für einen Screen
```
---
## Fehlerbehandlung
HTTP-Status-Codes:
- `200` — OK (Read erfolgreich)
- `201` — Created (Ressource erstellt)
- `204` — No Content (Write erfolgreich, kein Response-Body)
- `400` — Bad Request (Eingabe-Validierungsfehler)
- `404` — Not Found (Ressource nicht vorhanden)
- `500` — Internal Server Error (Server-Fehler)
Alle Fehler folgen dem Modell:
```json
{
"error": {
"code": "error_code",
"message": "Beschreibung",
"details": null
}
}
```
---
## Vollständige Dokumentation
Siehe `API-ENDPOINTS.md` für:
- Detaillierte Request/Response-Beispiele für jeden Endpoint
- Query-Parameter und Validierung
- Zeitstempel-Formate (RFC3339)
- Serverseitige Logik (z.B. Stale-Detection, Derived-State)