On this page
Delivery module (draft 0.1)
Status: draft for comment. Namespace: org.openmusiccollection.delivery. Needs: Core 1.0.
Delivery lets any app play or download a copy from a source it has no integration for: a niche streaming service, a label's own store, an artist's site, or a server someone runs at home. It is level 3 (Media) of conformance. With it, a new platform works in every app that supports OMC on the day it launches.
Sketch
A source that implements Delivery lists it in its descriptor,
with the capabilities media.preview, media.stream and/or media.download. For a copy, the
app asks for a playable resource with the person's token:
POST {base}/play { "ref": "night-drive", "intent": "stream" }
→ { "url": "https://cdn.music.example.net/…", "expires_at": "…", "mime": "audio/flac",
"kind": "full" }
intentispreview,streamordownload;kindin the answer says what the person's account actually allows (previeworfull).- The URL is short-lived and points at plain HTTP audio (progressive) or HLS.
- A source that already speaks the OpenSubsonic API can declare it instead, and apps use that API directly.
Files on the person's own devices are out of scope: a home's own app on the device that sees the folder adds them as file copies, and playing them through Delivery isn't defined.
Open questions
- Should apps report plays back to the source, so artists are paid per stream?
- Offline downloads for subscription sources: allowed, and with what expiry?
- One consent for collection access and playback, or separate?
Prior art
The OpenSubsonic API (Navidrome and other self-hosted servers), HLS, and the way podcast apps play any feed's audio.