1{ 2 "lexicon": 1, 3 "id": "fm.plyr.track", 4 "defs": { 5 "main": { 6 "type": "record", 7 "description": "A music track published to the AT Protocol network.", 8 "key": "tid", 9 "record": { 10 "type": "object", 11 "required": ["title", "artist", "audioUrl", "fileType", "createdAt"], 12 "properties": { 13 "title": { 14 "type": "string", 15 "description": "The title of the track.", 16 "minLength": 1, 17 "maxLength": 256 18 }, 19 "artist": { 20 "type": "string", 21 "description": "The artist name (display name of the uploader).", 22 "minLength": 1, 23 "maxLength": 256 24 }, 25 "audioUrl": { 26 "type": "string", 27 "format": "uri", 28 "description": "URL to the audio file (currently R2 CDN URL)." 29 }, 30 "fileType": { 31 "type": "string", 32 "description": "Audio file format extension (e.g., mp3, wav, flac).", 33 "minLength": 1, 34 "maxLength": 16 35 }, 36 "album": { 37 "type": "string", 38 "description": "Album name this track belongs to.", 39 "maxLength": 256 40 }, 41 "duration": { 42 "type": "integer", 43 "description": "Duration in seconds.", 44 "minimum": 0 45 }, 46 "features": { 47 "type": "array", 48 "description": "Featured artists on this track.", 49 "items": { 50 "type": "ref", 51 "ref": "#featuredArtist" 52 }, 53 "maxLength": 10 54 }, 55 "imageUrl": { 56 "type": "string", 57 "format": "uri", 58 "description": "URL to cover artwork image." 59 }, 60 "createdAt": { 61 "type": "string", 62 "format": "datetime", 63 "description": "Timestamp when the track was uploaded." 64 } 65 } 66 } 67 }, 68 "featuredArtist": { 69 "type": "object", 70 "description": "A featured artist on a track.", 71 "required": ["did", "handle"], 72 "properties": { 73 "did": { 74 "type": "string", 75 "format": "did", 76 "description": "The DID of the featured artist." 77 }, 78 "handle": { 79 "type": "string", 80 "format": "handle", 81 "description": "The handle of the featured artist." 82 }, 83 "displayName": { 84 "type": "string", 85 "description": "Display name of the featured artist.", 86 "maxLength": 256 87 } 88 } 89 } 90 } 91}