# API Documentation Index

Vollständige Übersicht der Dokumentation für die morz-infoboard Backend-API.

---

## Einstieg

**Für Schnellzugriff auf spezifische Endpoints:**
→ **[API Quick Reference](API-QUICK-REFERENCE.md)**

Sortiert nach Funktion mit Kurzbeschreibungen und typischen Workflows.

---

## Vollständige Dokumentation

### [API-ENDPOINTS.md](API-ENDPOINTS.md)

Detaillierte Dokumentation aller HTTP-Endpoints mit:
- Request/Response-Beispielen
- Query-Parametern und Validierung
- HTTP-Status-Codes
- Fehlerehandlung

**Bereiche:**
- Health & Meta
- Player Status (Diagnose)
- Screen Management (JSON API)
- Playlist Management (JSON API)
- Media Management (JSON API)
- Admin UI (Web-Formulare)
- Playlist Management UI (Web-Formulare)
- Player Local UI (Agent)

### [PLAYER-STATUS-HTTP.md](PLAYER-STATUS-HTTP.md)

Spezialisierte Dokumentation für Status-Reporting:
- Status-Ingest vom Player-Agent
- Status-Abruf und Filterung
- Serverseitig abgeleitete Felder (stale, derived_state)
- Persistenz-Modell
- Agentseitige Connectivity-Ableitung

---

## Konzeptdokumentation

### [SERVER-KONZEPT.md](SERVER-KONZEPT.md)

Architektur und fachliche Bereiche:
- Server-Aufgaben und Komponenten
- Mandanten und Benutzer
- Screen-, Medien-, Playlist-Verwaltung
- Templates und Kampagnen
- Provisionierung
- Revisionsmodell
- Docker-Compose-Struktur

### [SCHEMA.md](SCHEMA.md)

Relationales Datenmodell mit:
- Tabellen-Definitionen (SQL)
- Primary/Foreign Keys
- Constraints und Indizes
- Prioritätslogik
- Zukunftserweiterungen

---

## Implementierungsdokumentation

### Code-Struktur

Backend-API ist in Go implementiert:
```
server/backend/internal/httpapi/
├── router.go              — Haupt-Router, Route-Registrierung
├── playerstatus.go        — Status-Endpoints
├── statuspage.go          — HTML-Diagnoseseiten
├── messagewall.go         — Message-Wall-Auflösung
├── manage/
│   ├── register.go        — Screen-Registrierung
│   ├── playlist.go        — Playlist-Management
│   ├── media.go           — Media-Management
│   └── ui.go              — Admin- & Manage-UI
```

Player-Agent hat lokale UI:
```
player/agent/internal/playerserver/
└── server.go              — Lokale Player-UI und Status-APIs
```

---

## Typische Anfragen

**Wie registriert sich ein Agent automatisch?**
→ Siehe [API-ENDPOINTS.md](API-ENDPOINTS.md) → Screen Management → `POST /api/v1/screens/register`

**Wie ruft der Player seine Inhalte ab?**
→ Siehe [API-ENDPOINTS.md](API-ENDPOINTS.md) → Playlist Management → `GET /api/v1/screens/{screenId}/playlist`

**Welche Status-Filteroptionen gibt es?**
→ Siehe [PLAYER-STATUS-HTTP.md](PLAYER-STATUS-HTTP.md) → Query-Parameter

**Wie lautet das Datenbankschema?**
→ Siehe [SCHEMA.md](SCHEMA.md)

**Wie läuft die Provisionierung ab?**
→ Siehe [SERVER-KONZEPT.md](SERVER-KONZEPT.md) → Provisionierung

---

## Änderungshistorie der Dokumentation

| Datum | Datei | Änderung |
|-------|-------|----------|
| 2026-03-23 | API-ENDPOINTS.md | Initiale vollständige Endpoint-Dokumentation erstellt |
| 2026-03-23 | API-QUICK-REFERENCE.md | Schnellreferenz mit Workflows hinzugefügt |
| 2026-03-23 | API-INDEX.md | Dokumentations-Index erstellt |
| 2026-03-23 | PLAYER-STATUS-HTTP.md | Link zur vollständigen API-Dokumentation hinzugefügt |

---

## Fehlende oder unvollständige Bereiche

- **MQTT-Integration:** Noch keine dedizierte Dokumentation für MQTT-Topics und Protokolle
- **Authentifizierung & Autorisierung:** Noch nicht implementiert (v1)
- **Rate Limiting:** Noch nicht spezifiziert
- **Transaktions-Semantik:** Noch nicht dokumentiert
- **Webhook/Event-System:** Geplant für spätere Phase
- **Provisioning Worker Details:** Noch nicht öffentlich dokumentiert

---

## Best Practices

### Für Agent-Implementierung

1. **Registrierung:** Rufe `POST /api/v1/screens/register` auf dem Startup auf
2. **Playlist-Polling:** Hole alle 30 Sekunden `GET /api/v1/screens/{screenId}/playlist` ab
3. **Status-Reporting:** Sende alle 30 Sekunden `POST /api/v1/player/status` ab
4. **Fehlerbehandlung:** HTTP-Fehler sollten zu lokaler Fallback-Playlist führen

### Für Admin-Panel

1. **Status-Überwachung:** Nutze `GET /status` (HTML) oder `GET /api/v1/screens/status` (JSON)
2. **Batch-Operations:** Für Multisel-Operationen empfohlen: Mehrere API-Requests statt Formulare
3. **Filterung:** Nutze Query-Parameter für `GET /api/v1/screens/status` zur Filterung

### Für Tenant-UI

1. **Medien-Verwaltung:** Nutze Multipart-Upload in `POST /api/v1/tenants/{tenantSlug}/media`
2. **Playlist-Bearbeitung:** Nutze JSON-API (`/api/v1/playlists/*`) für programmatische Zugriffe
3. **Validierung:** Prüfe gültige `duration_seconds` (> 0) und Medientypen

---

## Kontakt & Support

Für Fragen zur API-Dokumentation:
- Siehe [OFFENE-ARCHITEKTURFRAGEN.md](OFFENE-ARCHITEKTURFRAGEN.md)
- Code-Review in `/server/backend/internal/httpapi/`
