dev.openplaylist.defs
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"artist": {
"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": {
"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": {
"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": {
"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": {
"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": {
"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"
}
},
"description": "Shared object definitions for Open Playlist records. Track metadata field names follow fm.teal.feed.defs so teal.fm and Rocksky tooling can read them without a mapping layer.",
"id": "dev.openplaylist.defs",
"lexicon": 1
}
Metadata
- DID
-
did:plc:giakgvcvljtnasoyluh3pf5a - CID
-
bafyreihyby3sztjtnf2vfjfvdyho6ruqr4lblbeozzkc4wsbiffmvl5afe - Indexed At
- 2026-10-18 19:51 UTC
- AT-URI
-
at://did:plc:giakgvcvljtnasoyluh3pf5a/com.atproto.lexicon.schema/dev.openplaylist.defs
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
dev.openplaylist.playlist record
A collaborative playlist. Holds metadata only; tracks are dev.openplaylist.playlistItem records that point back at this record with a strong reference, the same shape used by fm.teal.feed.social.playlist and app.rocksky…
-
This lexicon is in a not officially released state. It is subject to change. | Misc. items related to feeds.
-
fm.plyr.track record
A music track published to the AT Protocol network.
-
One track in a dev.openplaylist.playlist. Lives in the same repo as the playlist when added through the hosting app; a signed-in contributor may later write one into their own repo pointing at someone else's playlist.
-
Basic view of a playlist, including its metadata