at.atjam.playlist

atjam.at

Documentation

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 list can hold owned audio, an external song reference, and a record from an app that did not exist when this was written, with no schema change. A reader that does not recognise an item's collection renders the URI and moves on — that is the property that makes this infrastructure rather than an app's private format. Order is array order: one atomic write, and no ordering field to disagree about.

main record

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 list can hold owned audio, an external song reference, and a record from an app that did not exist when this was written, with no schema change. A reader that does not recognise an item's collection renders the URI and moves on — that is the property that makes this infrastructure rather than an app's private format. Order is array order: one atomic write, and no ordering field to disagree about.

Record Key any Any valid record key

Properties

context ref com.atproto.repo.strongRef Optional

What this list is about — a round, a jam, an event. Lets a page surface lists made about it without anyone registering them.

createdAt string datetime Required

An RFC 3339 formatted timestamp.

description string Optional

No description available.

maxLength: 30000 bytesmaxGraphemes: 3000 graphemes
items array of ref #item Required

No description available.

maxLength: 500 itemsminLength: 1 items
title string Required

No description available.

maxLength: 5120 bytesmaxGraphemes: 512 graphemes
View raw schema
{
  "key": "any",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "title",
      "items",
      "createdAt"
    ],
    "properties": {
      "items": {
        "type": "array",
        "items": {
          "ref": "#item",
          "type": "ref"
        },
        "maxLength": 500,
        "minLength": 1
      },
      "title": {
        "type": "string",
        "maxLength": 5120,
        "maxGraphemes": 512
      },
      "context": {
        "ref": "com.atproto.repo.strongRef",
        "type": "ref",
        "description": "What this list is about — a round, a jam, an event. Lets a page surface lists made about it without anyone registering them."
      },
      "createdAt": {
        "type": "string",
        "format": "datetime"
      },
      "description": {
        "type": "string",
        "maxLength": 30000,
        "maxGraphemes": 3000
      }
    }
  },
  "description": "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 list can hold owned audio, an external song reference, and a record from an app that did not exist when this was written, with no schema change. A reader that does not recognise an item's collection renders the URI and moves on — that is the property that makes this infrastructure rather than an app's private format. Order is array order: one atomic write, and no ordering field to disagree about."
}
item object

No description available.

Properties

note string Optional

Why this is here — 'the original', 'Round 30 winner'. The curator's voice, which is the part a bare list of tracks loses.

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
subject ref com.atproto.repo.strongRef Required

Any record. CID-pinned, so an item that changed under you is detectable rather than silent.

View raw schema
{
  "type": "object",
  "required": [
    "subject"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 3000,
      "description": "Why this is here — 'the original', 'Round 30 winner'. The curator's voice, which is the part a bare list of tracks loses.",
      "maxGraphemes": 300
    },
    "subject": {
      "ref": "com.atproto.repo.strongRef",
      "type": "ref",
      "description": "Any record. CID-pinned, so an item that changed under you is detectable rather than silent."
    }
  }
}

Lexicon Garden

@