# fm.plyr.stg.track

> A music track published to the AT Protocol network.

- Kind: record
- Record key: tid
- Authority: stg.plyr.fm
- Lexicon: 1
- Published by [plyr.fm](https://lexicon.garden/identity/did:plc:vs3hnzq2daqbszxlysywzy54), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:vs3hnzq2daqbszxlysywzy54/fm.plyr.stg.track)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:vs3hnzq2daqbszxlysywzy54/fm.plyr.stg.track/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:vs3hnzq2daqbszxlysywzy54/fm.plyr.stg.track/analytics)

## Record (`fm.plyr.stg.track`)

Type: record · key tid

### Properties

- `album` (string): Album name this track belongs to.
  - Constraints: maxLength: 256
- `artist` (string, required): The artist name (display name of the uploader).
  - Constraints: minLength: 1, maxLength: 256
- `audioBlob` (blob): Audio file stored on the user's PDS. When present, this is the canonical source; audioUrl is the CDN fallback.
  - Constraints: maxSize: 104857600, accept: audio/*
- `audioFileId` (string): Content hash used for a protected audio playback copy.
- `audioSpace` (string · uri): URI of the artist-owned protected audio record in a permissioned Space. Protected BlobRefs live in that record, never in this public record.
- `audioUrl` (string · uri): URL to the audio file. Optional when audioBlob is present.
- `createdAt` (string · datetime, required): Timestamp when the track was uploaded.
- `description` (string): Track description (liner notes, show notes, etc.).
  - Constraints: maxLength: 5000
- `downloadPolicy` (string): Download permission through the publishing application, independent of audio location.
  - Constraints: knownValues: open | ask | supporters | off
- `duration` (integer): Duration in seconds.
  - Constraints: minimum: 0
- `features` (array): Featured artists on this track.
  - Constraints: maxLength: 10
  - `items` (ref)
    - Reference: `#featuredArtist`
- `fileType` (string, required): Audio file format extension (e.g., mp3, wav, flac).
  - Constraints: minLength: 1, maxLength: 16
- `imageUrl` (string · uri): URL to cover artwork image.
- `labels` (union): Creator-applied content warnings using global ATProto label values.
  - One of: `com.atproto.label.defs#selfLabels`
- `originalAudioBlob` (blob): Original audio retained in the protected audio record alongside a playback rendition.
  - Constraints: maxSize: 104857600, accept: audio/*
- `originalFileId` (string): Content hash of the original audio.
- `originalFileType` (string): Original audio file extension.
- `supportGate` (ref): If set, this track requires viewer to be a supporter of the artist via atprotofans.
  - Reference: `#supportGate`
- `tags` (array): Creator-applied tags. An empty array explicitly clears all tags.
  - Constraints: maxLength: 20
  - `items` (string)
    - Constraints: maxLength: 50
- `title` (string, required): The title of the track.
  - Constraints: minLength: 1, maxLength: 256

## #featuredArtist (`fm.plyr.stg.track#featuredArtist`)

Type: object

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` (string · did, required): The DID of the featured artist. Canonical, stable identifier.
- `displayName` (string): DEPRECATED snapshot — mutable, may be stale. Resolve from `did` instead. Older records include this; new records may omit it.
  - Constraints: maxLength: 256
- `handle` (string · handle): DEPRECATED snapshot — mutable, may be stale. Resolve from `did` instead. Older records include this; new records may omit it.

## #supportGate (`fm.plyr.stg.track#supportGate`)

Type: object

Configuration for supporter-gated content.

### Properties

- `type` (string, required): The type of support required to access this content.
  - Constraints: knownValues: any

## Schema

```json
{
  "$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
}
```
