dev.openplaylist.defs

openplaylist.dev

Documentation

artist object

No description available.

Properties

artistMbId string uri Optional

MusicBrainz artist id, formatted as mbid:<uuid>.

artistName string Required

The name of the artist.

maxLength: 2560 bytesminLength: 1 bytesmaxGraphemes: 256 graphemes
View raw schema
{
  "properties": {
    "artistMbId": {
      "description": "MusicBrainz artist id, formatted as mbid:<uuid>.",
      "format": "uri",
      "type": "string"
    },
    "artistName": {
      "description": "The name of the artist.",
      "maxGraphemes": 256,
      "maxLength": 2560,
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "artistName"
  ],
  "type": "object"
}
artwork object

One cover art candidate. Either url or image must be present.

Properties

height integer Optional

No description available.

minimum: 1
image blob Optional

A cached copy of the artwork stored in the hosting repo, so the record survives every external service going away.

maxSize: 1.0 MB
provider string Required

Who serves this image. 'self' means the image blob is stored in this repo.

maxLength: 64 bytes
Known values: spotify, appleMusic, coverArtArchive, youtube, self
url string uri Optional

Public image URL.

width integer Optional

No description available.

minimum: 1
View raw schema
{
  "description": "One cover art candidate. Either url or image must be present.",
  "properties": {
    "height": {
      "minimum": 1,
      "type": "integer"
    },
    "image": {
      "accept": [
        "image/*"
      ],
      "description": "A cached copy of the artwork stored in the hosting repo, so the record survives every external service going away.",
      "maxSize": 1000000,
      "type": "blob"
    },
    "provider": {
      "description": "Who serves this image. 'self' means the image blob is stored in this repo.",
      "knownValues": [
        "spotify",
        "appleMusic",
        "coverArtArchive",
        "youtube",
        "self"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "url": {
      "description": "Public image URL.",
      "format": "uri",
      "type": "string"
    },
    "width": {
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "provider"
  ],
  "type": "object"
}
contributor object

Who added something. Anonymous contributors have only a display name; signed-in contributors also carry their DID.

Properties

did string did Optional

The contributor's ATProto identity, when they were signed in.

displayName string Required

Name typed or chosen by the contributor.

maxLength: 640 bytesminLength: 1 bytesmaxGraphemes: 64 graphemes
View raw schema
{
  "description": "Who added something. Anonymous contributors have only a display name; signed-in contributors also carry their DID.",
  "properties": {
    "did": {
      "description": "The contributor's ATProto identity, when they were signed in.",
      "format": "did",
      "type": "string"
    },
    "displayName": {
      "description": "Name typed or chosen by the contributor.",
      "maxGraphemes": 64,
      "maxLength": 640,
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "displayName"
  ],
  "type": "object"
}
mirror object

A native playlist on a music service that mirrors this record. The record is the source of truth; mirrors are downstream and append-only.

Properties

externalId string Optional

The service's playlist id.

maxLength: 256 bytes
hostDid string did Optional

DID of the account whose service login owns the mirror. Absent means the Open Playlist app account hosts it.

service string Required

Service identifier.

maxLength: 64 bytes
Known values: spotify, appleMusic, youtube
syncedAt string datetime Optional

When the mirror was last brought up to date with this record.

url string uri Required

Public, followable URL of the mirrored playlist.

View raw schema
{
  "description": "A native playlist on a music service that mirrors this record. The record is the source of truth; mirrors are downstream and append-only.",
  "properties": {
    "externalId": {
      "description": "The service's playlist id.",
      "maxLength": 256,
      "type": "string"
    },
    "hostDid": {
      "description": "DID of the account whose service login owns the mirror. Absent means the Open Playlist app account hosts it.",
      "format": "did",
      "type": "string"
    },
    "service": {
      "description": "Service identifier.",
      "knownValues": [
        "spotify",
        "appleMusic",
        "youtube"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "syncedAt": {
      "description": "When the mirror was last brought up to date with this record.",
      "format": "datetime",
      "type": "string"
    },
    "url": {
      "description": "Public, followable URL of the mirrored playlist.",
      "format": "uri",
      "type": "string"
    }
  },
  "required": [
    "service",
    "url"
  ],
  "type": "object"
}
source object

A location for a track on a specific music service.

Properties

externalId string Optional

The service's own track identifier, e.g. a Spotify track id or an Apple Music catalog id.

maxLength: 256 bytes
region string Optional

ISO 3166-1 alpha-2 storefront code when the externalId is region-specific, as Apple Music catalog ids are.

maxLength: 2 bytesminLength: 2 bytes
service string Required

Service identifier. Unknown values must be preserved by readers.

maxLength: 64 bytes
Known values: spotify, appleMusic, youtube, youtubeMusic, tidal, deezer, bandcamp, soundcloud, musicbrainz
url string uri Required

Public URL of the track on that service.

View raw schema
{
  "description": "A location for a track on a specific music service.",
  "properties": {
    "externalId": {
      "description": "The service's own track identifier, e.g. a Spotify track id or an Apple Music catalog id.",
      "maxLength": 256,
      "type": "string"
    },
    "region": {
      "description": "ISO 3166-1 alpha-2 storefront code when the externalId is region-specific, as Apple Music catalog ids are.",
      "maxLength": 2,
      "minLength": 2,
      "type": "string"
    },
    "service": {
      "description": "Service identifier. Unknown values must be preserved by readers.",
      "knownValues": [
        "spotify",
        "appleMusic",
        "youtube",
        "youtubeMusic",
        "tidal",
        "deezer",
        "bandcamp",
        "soundcloud",
        "musicbrainz"
      ],
      "maxLength": 64,
      "type": "string"
    },
    "url": {
      "description": "Public URL of the track on that service.",
      "format": "uri",
      "type": "string"
    }
  },
  "required": [
    "service",
    "url"
  ],
  "type": "object"
}
track object

A catalog track. Identity is carried by isrc and MusicBrainz ids; per-service locations live in sources. Nothing here depends on a single music service.

Properties

artists array of ref#artist Optional

Artists in order of original appearance.

maxLength: 20 items
artwork array of ref#artwork Optional

Cover art candidates in preference order. Readers fall through on load failure.

maxLength: 10 items
duration integer Optional

The length of the track in seconds.

minimum: 0
isrc string Optional

International Standard Recording Code. The primary cross-service identifier; both Spotify and Apple Music return it.

maxLength: 15 bytes
recordingMbId string uri Optional

MusicBrainz recording id, formatted as mbid:<uuid>.

releaseDiscriminant string Optional

Distinguishing information for release variants, e.g. 'Deluxe Edition', '2023 Remaster'.

maxLength: 1280 bytesmaxGraphemes: 128 graphemes
releaseGroupMbId string uri Optional

MusicBrainz release-group id, formatted as mbid:<uuid>. Used to fetch art from the Cover Art Archive.

releaseMbId string uri Optional

MusicBrainz release id, formatted as mbid:<uuid>.

releaseName string Optional

The name of the release or album.

maxLength: 2560 bytesmaxGraphemes: 256 graphemes
sources array of ref#source Optional

Where this track can be played, one entry per service. Readers pick the entry matching the listener's service, or resolve a missing one from isrc.

maxLength: 20 items
trackDiscriminant string Optional

Distinguishing information for track variants, e.g. 'Live at Wembley', 'Radio Edit'.

maxLength: 1280 bytesmaxGraphemes: 128 graphemes
trackName string Required

The name of the track.

maxLength: 2560 bytesminLength: 1 bytesmaxGraphemes: 256 graphemes
View raw schema
{
  "description": "A catalog track. Identity is carried by isrc and MusicBrainz ids; per-service locations live in sources. Nothing here depends on a single music service.",
  "properties": {
    "artists": {
      "description": "Artists in order of original appearance.",
      "items": {
        "ref": "#artist",
        "type": "ref"
      },
      "maxLength": 20,
      "type": "array"
    },
    "artwork": {
      "description": "Cover art candidates in preference order. Readers fall through on load failure.",
      "items": {
        "ref": "#artwork",
        "type": "ref"
      },
      "maxLength": 10,
      "type": "array"
    },
    "duration": {
      "description": "The length of the track in seconds.",
      "minimum": 0,
      "type": "integer"
    },
    "isrc": {
      "description": "International Standard Recording Code. The primary cross-service identifier; both Spotify and Apple Music return it.",
      "maxLength": 15,
      "type": "string"
    },
    "recordingMbId": {
      "description": "MusicBrainz recording id, formatted as mbid:<uuid>.",
      "format": "uri",
      "type": "string"
    },
    "releaseDiscriminant": {
      "description": "Distinguishing information for release variants, e.g. 'Deluxe Edition', '2023 Remaster'.",
      "maxGraphemes": 128,
      "maxLength": 1280,
      "type": "string"
    },
    "releaseGroupMbId": {
      "description": "MusicBrainz release-group id, formatted as mbid:<uuid>. Used to fetch art from the Cover Art Archive.",
      "format": "uri",
      "type": "string"
    },
    "releaseMbId": {
      "description": "MusicBrainz release id, formatted as mbid:<uuid>.",
      "format": "uri",
      "type": "string"
    },
    "releaseName": {
      "description": "The name of the release or album.",
      "maxGraphemes": 256,
      "maxLength": 2560,
      "type": "string"
    },
    "sources": {
      "description": "Where this track can be played, one entry per service. Readers pick the entry matching the listener's service, or resolve a missing one from isrc.",
      "items": {
        "ref": "#source",
        "type": "ref"
      },
      "maxLength": 20,
      "type": "array"
    },
    "trackDiscriminant": {
      "description": "Distinguishing information for track variants, e.g. 'Live at Wembley', 'Radio Edit'.",
      "maxGraphemes": 128,
      "maxLength": 1280,
      "type": "string"
    },
    "trackName": {
      "description": "The name of the track.",
      "maxGraphemes": 256,
      "maxLength": 2560,
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "trackName"
  ],
  "type": "object"
}

Lexicon Garden

@