REST Endpoints
Alle Endpoints erwarten/liefern JSON sofern nicht anders erwähnt. Authorization
‑Header erforderlich, falls Passwort gesetzt ist.
Player
Player anlegen
POST /v0/players
Body:
{
"id": "string", // eindeutige Player-ID (frei wählbar)
"uri": "string", // direkte oder auflösbare URI
"metadata": { "any": "json" } // optionale beliebige JSON-Metadaten
}
Antworten:
- 201 Created
{ "id": "<id>" }
- 409 Conflict (ID existiert bereits)
- 403 Forbidden (URI blockiert)
- 400 Bad Request (ungültige Daten)
Player auflisten
GET /v0/players
Gibt ein Array zurück; jeder Eintrag enthält:
{
"id": "player1",
"track": {
"encoded": "base64identifier",
"info": {
"identifier": "original-or-direct-uri",
"isSeekable": false,
"author": "",
"length": 0,
"isStream": true,
"position": 2000,
"title": "derived title",
"uri": "direct-uri-or-source",
"artworkUrl": null,
"isrc": null,
"sourceName": "http|file|direct",
},
"pluginInfo": {},
"userData": {
/* metadata JSON */
},
},
}
Player löschen
DELETE /v0/players/{id}
-> 204 oder 404.
Play / Pause
POST /v0/players/{id}/play
-> 204 POST /v0/players/{id}/pause
-> 204
Skip
POST /v0/players/{id}/skip
-> 204 (löst TrackEnd + nächste Auswahl aus).
Queue
Einreihen
POST /v0/players/{id}/queue
{ "uri": "string", "metadata": { "any": "json" } }
-> 201 { "trackId": "uuid" }
Queue abrufen
GET /v0/players/{id}/queue
Gibt ein Array der wartenden Tracks:
[{ "id": "uuid", "uri": "string", "metadata": { ... } }]
Loop Mode
Setzen
PATCH /v0/players/{id}/loop
{ "mode": "none" | "track" | "queue" }
-> 204
Filter
Lautstärke & EQ aktualisieren
PATCH /v0/players/{id}/filters
{
"volume": 1.0, // 0.0 - 5.0
"eq": [
{ "band": 0, "gain_db": -3.0 },
{ "band": 5, "gain_db": 4.5 }
]
}
-> 204
Metadaten
Zusammenführen oder ersetzen
PATCH /v0/players/{id}/metadata
{ "merge": true, "value": { "album": "Beispiel" } }
-> 204
Resolver
URL manuell auflösen
GET /v0/resolve?url=<encoded>
-> 200 Body = direkter Pfad/URL oder 400.
Erfordert aktivierten Resolver und erlaubte Quelle.
Track‑Hilfen
Tracks laden
GET /v0/loadtracks?identifier=<id>
Liefert entweder:
{
"loadType": "track",
"data": {
/* TrackOut */
}
}
Oder:
{ "loadType": "empty", "data": {} }
Track decodieren
GET /v0/decodetrack?encodedTrack=<b64>
-> TrackOut
oder 400.
Mehrere decodieren
POST /v0/decodetracks
Body: ["base64", "base64"]
-> Liste von TrackOut
Objekten.
Info
Info
GET /info
{ "version": "x.y.z", "buildTime": 1712345678900 }
Version
GET /version
-> Klartext oder JSON Version (Implementierungsdetail).
Fehler
Code | Bedeutung |
---|---|
400 | Ungültige Eingabe / invalides base64 / Resolver deaktiviert |
401 | Fehlendes oder falsches Passwort |
403 | URI durch Muster blockiert |
404 | Player nicht gefunden |
409 | Player-ID existiert bereits |
500 | Interner Fehler |