fm.plyr.stg.track
A music track published to the AT Protocol network.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | stg.plyr.fm |
| Indexed |
Checks
Validunlimited-stringdefs.main.record.properties.audioFileIdNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.downloadPolicyNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.originalFileIdNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.originalFileTypeNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.supportGate.properties.typeNo maxLength, maxGraphemes or format limits this string.
{
"$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
}