On this page
Catalog and Commerce module (draft 0.1)
Status: draft for comment. Namespace: org.openmusiccollection.catalog. Needs: Core 1.0.
The core describes what a person has. This module describes what exists and where it can be had: which services carry a recording, what it costs to buy, and where its artist would like people to listen and buy. It is how an app takes someone from "I like this" to "it's in my collection, and the artist got paid", with as few steps as possible.
Sketch
Offers. An offer says that a recording or release can be had on a source, and how:
{ "item_ids": { "isrc": "QZES72600001" },
"platform": "music.example.net",
"ref": "night-drive",
"url": "https://music.example.net/night-drive",
"access": ["stream", "purchase"],
"price": { "amount": "1.50", "currency": "EUR", "format": "flac" },
"published_by": "artist",
"signature": "…" }
published_by is artist, label, platform or user. An offer the artist published and
signed is the artist's own preference, and apps SHOULD show it first.
Resolvers. A resolver answers "what offers exist for this item?" from its identifiers,
GET {resolver}/offers?isrc=…, and "where else is this?" from a copy:
GET {resolver}/links?platform=spotify&ref=…&want=youtube,bandcamp answers the copies it knows on
the platforms named in want (all it knows, without want). Anyone can run one, and a resolver
needs no access to anyone's collection. Where else a song can be found isn't part of the
collection, which holds what the person keeps; it is a resolver's question. The standard defines
the questions and the answers. The catalog behind them is the resolver's own.
Purchases end on the seller's own checkout. After a purchase, the person's collection gains
a copy with ownership: digital on that source. Payment is not part of the standard.
Open questions
- How does an artist prove they are the artist, so their signed offers can be trusted?
- Regional prices and availability: one offer per region, or a list inside one offer?
- Can a purchase be confirmed back to the app that sent the person, without sharing payment details?
Prior art
DDEX (how labels deliver releases and deal terms to stores), MusicBrainz identifiers,
Schema.org MusicRecording and Offer.