+43
lexicons/comment.json
+43
lexicons/comment.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "fm.plyr.comment",
4
+
"defs": {
5
+
"main": {
6
+
"type": "record",
7
+
"description": "A timed comment on a plyr.fm track, anchored to a playback position.",
8
+
"key": "tid",
9
+
"record": {
10
+
"type": "object",
11
+
"required": ["subject", "text", "timestampMs", "createdAt"],
12
+
"properties": {
13
+
"subject": {
14
+
"type": "ref",
15
+
"ref": "com.atproto.repo.strongRef",
16
+
"description": "Reference to the track being commented on (uri + cid)."
17
+
},
18
+
"text": {
19
+
"type": "string",
20
+
"description": "The comment text content.",
21
+
"minLength": 1,
22
+
"maxLength": 1000
23
+
},
24
+
"timestampMs": {
25
+
"type": "integer",
26
+
"description": "Playback position in milliseconds when the comment was made.",
27
+
"minimum": 0
28
+
},
29
+
"createdAt": {
30
+
"type": "string",
31
+
"format": "datetime",
32
+
"description": "Timestamp when the comment was created."
33
+
},
34
+
"updatedAt": {
35
+
"type": "string",
36
+
"format": "datetime",
37
+
"description": "Timestamp when the comment was last edited."
38
+
}
39
+
}
40
+
}
41
+
}
42
+
}
43
+
}
+27
lexicons/like.json
+27
lexicons/like.json
···
1
+
{
2
+
"lexicon": 1,
3
+
"id": "fm.plyr.like",
4
+
"defs": {
5
+
"main": {
6
+
"type": "record",
7
+
"description": "A like on a plyr.fm track.",
8
+
"key": "tid",
9
+
"record": {
10
+
"type": "object",
11
+
"required": ["subject", "createdAt"],
12
+
"properties": {
13
+
"subject": {
14
+
"type": "ref",
15
+
"ref": "com.atproto.repo.strongRef",
16
+
"description": "Reference to the track being liked (uri + cid)."
17
+
},
18
+
"createdAt": {
19
+
"type": "string",
20
+
"format": "datetime",
21
+
"description": "Timestamp when the like was created."
22
+
}
23
+
}
24
+
}
25
+
}
26
+
}
27
+
}
+91
lexicons/track.json
+91
lexicons/track.json
···
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
+
}