dev.openplaylist.playlistItem

openplaylist.dev

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record containing a single playlist entry.",
      "key": "tid",
      "record": {
        "properties": {
          "addedBy": {
            "description": "Who added the track. Maps to added_by in the ListenBrainz JSPF extension.",
            "ref": "dev.openplaylist.defs#contributor",
            "type": "ref"
          },
          "createdAt": {
            "description": "When the track was added. Maps to added_at in the ListenBrainz JSPF extension.",
            "format": "datetime",
            "type": "string"
          },
          "note": {
            "description": "Optional message from the contributor about their pick. Maps to the JSPF track annotation.",
            "maxGraphemes": 300,
            "maxLength": 3000,
            "type": "string"
          },
          "order": {
            "description": "Position in the playlist. Readers sort ascending; ties break on createdAt.",
            "minimum": 0,
            "type": "integer"
          },
          "subject": {
            "description": "Strong reference to the parent dev.openplaylist.playlist record.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "track": {
            "description": "Denormalized track metadata so the item renders without any further lookup.",
            "ref": "dev.openplaylist.defs#track",
            "type": "ref"
          }
        },
        "required": [
          "subject",
          "track",
          "order",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "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.",
  "id": "dev.openplaylist.playlistItem",
  "lexicon": 1
}

Validate Record

Validate a record against dev.openplaylist.playlistItem

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:giakgvcvljtnasoyluh3pf5a
CID
bafyreiggeaqegiofcjv44wazmrp7swtii67lg45bf736vv4spkob2jnn6m
Indexed At
2026-10-18 19:51 UTC
AT-URI
at://did:plc:giakgvcvljtnasoyluh3pf5a/com.atproto.lexicon.schema/dev.openplaylist.playlistItem

Referenced Schemas (2)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • 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…

  • An ordered list of records, authored by the repo owner. Deliberately knows nothing about music — or about any project type, which is why it lives in atjam: items are strongRefs to records of any collection, so one lis…

  • A song entry in a playlist. Holds a strong reference to the playlist it belongs to, a strong reference to the song record itself, and a denormalized copy of the song metadata so the entry can be rendered without derefer…

  • app.bluvy.tube.playlist.item recordnot from the namespace authority

    One video's membership in a app.bluvy.tube.playlist, written to the playlist owner's own repo as a separate record (not embedded in the playlist record itself) — same shape as app.bsky.graph.listitem referencing an ap…

  • 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.

Lexicon Garden

@