fm.plyr.stg.track

A music track published to the AT Protocol network.

Repository @plyr.fm did:plc:vs3hnzq2daqbszxlysywzy54 namespace authority
Details · record, key tid
Kindrecord
Record keytid
Authoritystg.plyr.fm
Indexed
cid bafyreifjtd2bcrnvhi2ezhdyt4km5qxeqlq7aif7eifskxcludcz7lvsei

Checks

Valid
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "featuredArtist": {
      "description": "A featured artist on a track. Identified by DID — the canonical, immutable identifier. handle and displayName are legacy denormalized snapshots; readers should resolve fresh metadata from the DID rather than trusting these fields.",
      "properties": {
        "did": {
          "description": "The DID of the featured artist. Canonical, stable identifier.",
          "format": "did",
          "type": "string"
        },
        "displayName": {
          "description": "DEPRECATED snapshot — mutable, may be stale. Resolve from `did` instead. Older records include this; new records may omit it.",
          "maxLength": 256,
          "type": "string"
        },
        "handle": {
          "description": "DEPRECATED snapshot — mutable, may be stale. Resolve from `did` instead. Older records include this; new records may omit it.",
          "format": "handle",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "main": {
      "description": "A music track published to the AT Protocol network.",
      "key": "tid",
      "record": {
        "properties": {
          "album": {
            "description": "Album name this track belongs to.",
            "maxLength": 256,
            "type": "string"
          },
          "artist": {
            "description": "The artist name (display name of the uploader).",
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          },
          "audioBlob": {
            "accept": [
              "audio/*"
            ],
            "description": "Audio file stored on the user's PDS. When present, this is the canonical source; audioUrl is the CDN fallback.",
            "maxSize": 104857600,
            "type": "blob"
          },
          "audioFileId": {
            "description": "Content hash used for a protected audio playback copy.",
            "type": "string"
          },
          "audioSpace": {
            "description": "URI of the artist-owned protected audio record in a permissioned Space. Protected BlobRefs live in that record, never in this public record.",
            "format": "uri",
            "type": "string"
          },
          "audioUrl": {
            "description": "URL to the audio file. Optional when audioBlob is present.",
            "format": "uri",
            "type": "string"
          },
          "createdAt": {
            "description": "Timestamp when the track was uploaded.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "Track description (liner notes, show notes, etc.).",
            "maxLength": 5000,
            "type": "string"
          },
          "downloadPolicy": {
            "description": "Download permission through the publishing application, independent of audio location.",
            "knownValues": [
              "open",
              "ask",
              "supporters",
              "off"
            ],
            "type": "string"
          },
          "duration": {
            "description": "Duration in seconds.",
            "minimum": 0,
            "type": "integer"
          },
          "features": {
            "description": "Featured artists on this track.",
            "items": {
              "ref": "#featuredArtist",
              "type": "ref"
            },
            "maxLength": 10,
            "type": "array"
          },
          "fileType": {
            "description": "Audio file format extension (e.g., mp3, wav, flac).",
            "maxLength": 16,
            "minLength": 1,
            "type": "string"
          },
          "imageUrl": {
            "description": "URL to cover artwork image.",
            "format": "uri",
            "type": "string"
          },
          "labels": {
            "description": "Creator-applied content warnings using global ATProto label values.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "originalAudioBlob": {
            "accept": [
              "audio/*"
            ],
            "description": "Original audio retained in the protected audio record alongside a playback rendition.",
            "maxSize": 104857600,
            "type": "blob"
          },
          "originalFileId": {
            "description": "Content hash of the original audio.",
            "type": "string"
          },
          "originalFileType": {
            "description": "Original audio file extension.",
            "type": "string"
          },
          "supportGate": {
            "description": "If set, this track requires viewer to be a supporter of the artist via atprotofans.",
            "ref": "#supportGate",
            "type": "ref"
          },
          "tags": {
            "description": "Creator-applied tags. An empty array explicitly clears all tags.",
            "items": {
              "maxLength": 50,
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "title": {
            "description": "The title of the track.",
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "title",
          "artist",
          "fileType",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "supportGate": {
      "description": "Configuration for supporter-gated content.",
      "properties": {
        "type": {
          "description": "The type of support required to access this content.",
          "knownValues": [
            "any"
          ],
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "id": "fm.plyr.stg.track",
  "lexicon": 1
}