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>
297 lines
5.3 KiB
Markdown
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)
|