API endpoints by default accept and return data as JSON objects.
The API uses JSON web tokens (JWT) for authorizing access to non read-only endpoints. The underlying authentication method must be provided by intercepting POST
requests to /api/auth/login/
. The API does not specify a specific authentication method, like password-based or Kerberos, but expects to receive a valid REMOTE_USER
string in the wsgi environment upon a successful authentication.
Tokens are valid for 15 minutes. Valid tokens can be renewed indefinitely. Expired tokens can be renewed up to one week after first issuing them.
Base Path: /api/auth
Endpoint | Method | Description |
---|---|---|
/login |
POST |
Login and return an newly created token. |
/renew |
POST |
Renew existing Token. |
Endpoint example: /api/auth/renew
The playlist API allows editing static playlist entries. The allowed playlists and file formats are configured in klangbecken/settings.py
.
Base Path: /api/playlist
Endpoint | Method | Description |
---|---|---|
/<PLAYLIST>/ |
POST |
Create new entry to a playlist by uploading an audio file. Returns all extracted and generated metadata. |
/<PLAYLIST>/<UUID>.<EXT> |
PUT |
Update playlist entry metadata. Allowed keys are artist , title , weight , and expiration . |
/<PLAYLIST>/<UUID>.<EXT> |
DELETE |
Delete playlist entry. |
Endpoint example: /api/playlist/jingles/9967f00b-883a-4aa0-98e7-5085cdc380d3.mp3
Data types for playlist entry metadata updates:
- artist:
string
- title:
string
- weight:
int
(>= 0) - expiration: empty or ISO8601 datetime
string
Note for datetime strings: The string must specify a date and a time including hours, minutes and seconds (fractions of a second are optional) separated by the letter T
. Timezone information must be provided, either as (+/-) offset from UTC or by the letter Z
for UTC datetime strings. In JS Date
objects are automatically converted to compatible UTC datetime strings by JSON.stringify
using Date.prototype.toJSON()
.
The player API allows getting information about the running audio player and edit a "play next" queue.
Base Path: /api/player
Endpoint | Method | Description |
---|---|---|
/ |
GET |
Get player information. |
/reload/<PLAYLIST> |
POST |
Force player to reload a playlist (usually after modifications). |
/queue/ |
GET |
List queue entries. |
/queue/ |
POST |
Add audio track to queue. Requires a filename argument (string in the format <PLAYLIST>/<UUID>.<EXT> ) and returns the assigned queue_id . |
/queue/<QUEUE_ID> |
DELETE |
Delete queue entry. |
Endpoint example: /api/player/queue/15
/data
provides read-only access to the data directory containing the audio, playlist and log files. The metadata cache index.json
speeds up client operation, by removing the need to perform client-side audio file metadata parsing.
Base Path: /data
Endpoint | Description | Example |
---|---|---|
/index.json |
Metadata cache | |
/<PLAYLIST>.m3u |
Playlist files | /data/music.m3u |
/<PLAYLIST>/<UUID>.<EXT> |
Audio files | /data/jingles/9967f00b-883a-4aa0-98e7-5085cdc380d3.mp3 |
/log/<YEAR>-<MONTH>.csv |
Monthly play log | /data/log/2020-08.csv |
/log/fsck.log |
Nightly fsck run output |