forked from
rocksky.app/rocksky
A decentralized music tracking and discovery platform built on AT Protocol 馃幍
1/**
2 * GENERATED CODE - DO NOT MODIFY
3 */
4import { type LexiconDoc, Lexicons } from '@atproto/lexicon'
5
6export const schemaDict = {
7 AppRockskyActorDefs: {
8 lexicon: 1,
9 id: 'app.rocksky.actor.defs',
10 defs: {
11 profileViewDetailed: {
12 type: 'object',
13 properties: {
14 id: {
15 type: 'string',
16 description: 'The unique identifier of the actor.',
17 },
18 did: {
19 type: 'string',
20 description: 'The DID of the actor.',
21 },
22 handle: {
23 type: 'string',
24 description: 'The handle of the actor.',
25 },
26 displayName: {
27 type: 'string',
28 description: 'The display name of the actor.',
29 },
30 avatar: {
31 type: 'string',
32 description: "The URL of the actor's avatar image.",
33 format: 'uri',
34 },
35 createdAt: {
36 type: 'string',
37 description: 'The date and time when the actor was created.',
38 format: 'datetime',
39 },
40 updatedAt: {
41 type: 'string',
42 description: 'The date and time when the actor was last updated.',
43 format: 'datetime',
44 },
45 },
46 },
47 profileViewBasic: {
48 type: 'object',
49 properties: {
50 id: {
51 type: 'string',
52 description: 'The unique identifier of the actor.',
53 },
54 did: {
55 type: 'string',
56 description: 'The DID of the actor.',
57 },
58 handle: {
59 type: 'string',
60 description: 'The handle of the actor.',
61 },
62 displayName: {
63 type: 'string',
64 description: 'The display name of the actor.',
65 },
66 avatar: {
67 type: 'string',
68 description: "The URL of the actor's avatar image.",
69 format: 'uri',
70 },
71 createdAt: {
72 type: 'string',
73 description: 'The date and time when the actor was created.',
74 format: 'datetime',
75 },
76 updatedAt: {
77 type: 'string',
78 description: 'The date and time when the actor was last updated.',
79 format: 'datetime',
80 },
81 },
82 },
83 },
84 },
85 AppRockskyActorGetActorAlbums: {
86 lexicon: 1,
87 id: 'app.rocksky.actor.getActorAlbums',
88 defs: {
89 main: {
90 type: 'query',
91 description: 'Get albums for an actor',
92 parameters: {
93 type: 'params',
94 required: ['did'],
95 properties: {
96 did: {
97 type: 'string',
98 description: 'The DID or handle of the actor',
99 format: 'at-identifier',
100 },
101 limit: {
102 type: 'integer',
103 description: 'The maximum number of albums to return',
104 minimum: 1,
105 },
106 offset: {
107 type: 'integer',
108 description: 'The offset for pagination',
109 minimum: 0,
110 },
111 },
112 },
113 output: {
114 encoding: 'application/json',
115 schema: {
116 type: 'object',
117 properties: {
118 albums: {
119 type: 'array',
120 items: {
121 type: 'ref',
122 ref: 'lex:app.rocksky.album.defs#albumViewBasic',
123 },
124 },
125 },
126 },
127 },
128 },
129 },
130 },
131 AppRockskyActorGetActorArtists: {
132 lexicon: 1,
133 id: 'app.rocksky.actor.getActorArtists',
134 defs: {
135 main: {
136 type: 'query',
137 description: 'Get artists for an actor',
138 parameters: {
139 type: 'params',
140 required: ['did'],
141 properties: {
142 did: {
143 type: 'string',
144 description: 'The DID or handle of the actor',
145 format: 'at-identifier',
146 },
147 limit: {
148 type: 'integer',
149 description: 'The maximum number of albums to return',
150 minimum: 1,
151 },
152 offset: {
153 type: 'integer',
154 description: 'The offset for pagination',
155 minimum: 0,
156 },
157 },
158 },
159 output: {
160 encoding: 'application/json',
161 schema: {
162 type: 'object',
163 properties: {
164 artists: {
165 type: 'array',
166 items: {
167 type: 'ref',
168 ref: 'lex:app.rocksky.artist.defs#artistViewBasic',
169 },
170 },
171 },
172 },
173 },
174 },
175 },
176 },
177 AppRockskyActorGetActorLovedSongs: {
178 lexicon: 1,
179 id: 'app.rocksky.actor.getActorLovedSongs',
180 defs: {
181 main: {
182 type: 'query',
183 description: 'Get loved songs for an actor',
184 parameters: {
185 type: 'params',
186 required: ['did'],
187 properties: {
188 did: {
189 type: 'string',
190 description: 'The DID or handle of the actor',
191 format: 'at-identifier',
192 },
193 limit: {
194 type: 'integer',
195 description: 'The maximum number of albums to return',
196 minimum: 1,
197 },
198 offset: {
199 type: 'integer',
200 description: 'The offset for pagination',
201 minimum: 0,
202 },
203 },
204 },
205 output: {
206 encoding: 'application/json',
207 schema: {
208 type: 'object',
209 properties: {
210 tracks: {
211 type: 'array',
212 items: {
213 type: 'ref',
214 ref: 'lex:app.rocksky.song.defs#songViewBasic',
215 },
216 },
217 },
218 },
219 },
220 },
221 },
222 },
223 AppRockskyActorGetActorPlaylists: {
224 lexicon: 1,
225 id: 'app.rocksky.actor.getActorPlaylists',
226 defs: {
227 main: {
228 type: 'query',
229 description: 'Get playlists for an actor',
230 parameters: {
231 type: 'params',
232 required: ['did'],
233 properties: {
234 did: {
235 type: 'string',
236 description: 'The DID or handle of the actor',
237 format: 'at-identifier',
238 },
239 limit: {
240 type: 'integer',
241 description: 'The maximum number of albums to return',
242 minimum: 1,
243 },
244 offset: {
245 type: 'integer',
246 description: 'The offset for pagination',
247 minimum: 0,
248 },
249 },
250 },
251 output: {
252 encoding: 'application/json',
253 schema: {
254 type: 'object',
255 properties: {
256 playlists: {
257 type: 'array',
258 items: {
259 type: 'ref',
260 ref: 'lex:app.rocksky.playlist.defs#playlistViewBasic',
261 },
262 },
263 },
264 },
265 },
266 },
267 },
268 },
269 AppRockskyActorGetActorScrobbles: {
270 lexicon: 1,
271 id: 'app.rocksky.actor.getActorScrobbles',
272 defs: {
273 main: {
274 type: 'query',
275 description: 'Get scrobbles for an actor',
276 parameters: {
277 type: 'params',
278 required: ['did'],
279 properties: {
280 did: {
281 type: 'string',
282 description: 'The DID or handle of the actor',
283 format: 'at-identifier',
284 },
285 limit: {
286 type: 'integer',
287 description: 'The maximum number of albums to return',
288 minimum: 1,
289 },
290 offset: {
291 type: 'integer',
292 description: 'The offset for pagination',
293 minimum: 0,
294 },
295 },
296 },
297 output: {
298 encoding: 'application/json',
299 schema: {
300 type: 'object',
301 properties: {
302 scrobbles: {
303 type: 'array',
304 items: {
305 type: 'ref',
306 ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
307 },
308 },
309 },
310 },
311 },
312 },
313 },
314 },
315 AppRockskyActorGetActorSongs: {
316 lexicon: 1,
317 id: 'app.rocksky.actor.getActorSongs',
318 defs: {
319 main: {
320 type: 'query',
321 description: 'Get songs for an actor',
322 parameters: {
323 type: 'params',
324 required: ['did'],
325 properties: {
326 did: {
327 type: 'string',
328 description: 'The DID or handle of the actor',
329 format: 'at-identifier',
330 },
331 limit: {
332 type: 'integer',
333 description: 'The maximum number of albums to return',
334 minimum: 1,
335 },
336 offset: {
337 type: 'integer',
338 description: 'The offset for pagination',
339 minimum: 0,
340 },
341 },
342 },
343 output: {
344 encoding: 'application/json',
345 schema: {
346 type: 'object',
347 properties: {
348 songs: {
349 type: 'array',
350 items: {
351 type: 'ref',
352 ref: 'lex:app.rocksky.song.defs#songViewBasic',
353 },
354 },
355 },
356 },
357 },
358 },
359 },
360 },
361 AppRockskyActorGetProfile: {
362 lexicon: 1,
363 id: 'app.rocksky.actor.getProfile',
364 defs: {
365 main: {
366 type: 'query',
367 description: 'Get the profile of an actor',
368 parameters: {
369 type: 'params',
370 properties: {
371 did: {
372 type: 'string',
373 description: 'The DID or handle of the actor',
374 format: 'at-identifier',
375 },
376 },
377 },
378 output: {
379 encoding: 'application/json',
380 schema: {
381 type: 'ref',
382 ref: 'lex:app.rocksky.actor.defs#profileViewDetailed',
383 },
384 },
385 },
386 },
387 },
388 AppBskyActorProfile: {
389 lexicon: 1,
390 id: 'app.bsky.actor.profile',
391 defs: {
392 main: {
393 type: 'record',
394 description: 'A declaration of a Bluesky account profile.',
395 key: 'literal:self',
396 record: {
397 type: 'object',
398 properties: {
399 displayName: {
400 type: 'string',
401 maxGraphemes: 64,
402 maxLength: 640,
403 },
404 description: {
405 type: 'string',
406 description: 'Free-form profile description text.',
407 maxGraphemes: 256,
408 maxLength: 2560,
409 },
410 avatar: {
411 type: 'blob',
412 description:
413 "Small image to be displayed next to posts from account. AKA, 'profile picture'",
414 accept: ['image/png', 'image/jpeg'],
415 maxSize: 1000000,
416 },
417 banner: {
418 type: 'blob',
419 description:
420 'Larger horizontal image to display behind profile view.',
421 accept: ['image/png', 'image/jpeg'],
422 maxSize: 10000000,
423 },
424 labels: {
425 type: 'union',
426 description:
427 'Self-label values, specific to the Bluesky application, on the overall account.',
428 refs: ['lex:com.atproto.label.defs#selfLabels'],
429 },
430 joinedViaStarterPack: {
431 type: 'ref',
432 ref: 'lex:com.atproto.repo.strongRef',
433 },
434 createdAt: {
435 type: 'string',
436 format: 'datetime',
437 },
438 },
439 },
440 },
441 },
442 },
443 AppRockskyAlbum: {
444 lexicon: 1,
445 id: 'app.rocksky.album',
446 defs: {
447 main: {
448 type: 'record',
449 description: 'A declaration of an album.',
450 key: 'tid',
451 record: {
452 type: 'object',
453 required: ['title', 'artist', 'createdAt'],
454 properties: {
455 title: {
456 type: 'string',
457 description: 'The title of the album.',
458 minLength: 1,
459 maxLength: 512,
460 },
461 artist: {
462 type: 'string',
463 description: 'The artist of the album.',
464 minLength: 1,
465 maxLength: 256,
466 },
467 duration: {
468 type: 'integer',
469 description: 'The duration of the album in seconds.',
470 },
471 releaseDate: {
472 type: 'string',
473 description: 'The release date of the album.',
474 format: 'datetime',
475 },
476 year: {
477 type: 'integer',
478 description: 'The year the album was released.',
479 },
480 genre: {
481 type: 'string',
482 description: 'The genre of the album.',
483 maxLength: 256,
484 },
485 albumArt: {
486 type: 'blob',
487 description: 'The album art of the album.',
488 accept: ['image/png', 'image/jpeg'],
489 maxSize: 2000000,
490 },
491 tags: {
492 type: 'array',
493 description: 'The tags of the album.',
494 items: {
495 type: 'string',
496 minLength: 1,
497 maxLength: 256,
498 },
499 },
500 youtubeLink: {
501 type: 'string',
502 description: 'The YouTube link of the album.',
503 format: 'uri',
504 },
505 spotifyLink: {
506 type: 'string',
507 description: 'The Spotify link of the album.',
508 format: 'uri',
509 },
510 tidalLink: {
511 type: 'string',
512 description: 'The tidal link of the album.',
513 format: 'uri',
514 },
515 appleMusicLink: {
516 type: 'string',
517 description: 'The Apple Music link of the album.',
518 format: 'uri',
519 },
520 createdAt: {
521 type: 'string',
522 description: 'The date and time when the album was created.',
523 format: 'datetime',
524 },
525 },
526 },
527 },
528 },
529 },
530 AppRockskyAlbumDefs: {
531 lexicon: 1,
532 id: 'app.rocksky.album.defs',
533 defs: {
534 albumViewBasic: {
535 type: 'object',
536 properties: {
537 id: {
538 type: 'string',
539 description: 'The unique identifier of the album.',
540 },
541 uri: {
542 type: 'string',
543 description: 'The URI of the album.',
544 format: 'at-uri',
545 },
546 title: {
547 type: 'string',
548 description: 'The title of the album.',
549 },
550 artist: {
551 type: 'string',
552 description: 'The artist of the album.',
553 },
554 artistUri: {
555 type: 'string',
556 description: "The URI of the album's artist.",
557 format: 'at-uri',
558 },
559 year: {
560 type: 'integer',
561 description: 'The year the album was released.',
562 },
563 albumArt: {
564 type: 'string',
565 description: 'The URL of the album art image.',
566 format: 'uri',
567 },
568 releaseDate: {
569 type: 'string',
570 description: 'The release date of the album.',
571 },
572 sha256: {
573 type: 'string',
574 description: 'The SHA256 hash of the album.',
575 },
576 playCount: {
577 type: 'integer',
578 description: 'The number of times the album has been played.',
579 minimum: 0,
580 },
581 uniqueListeners: {
582 type: 'integer',
583 description:
584 'The number of unique listeners who have played the album.',
585 minimum: 0,
586 },
587 },
588 },
589 albumViewDetailed: {
590 type: 'object',
591 properties: {
592 id: {
593 type: 'string',
594 description: 'The unique identifier of the album.',
595 },
596 uri: {
597 type: 'string',
598 description: 'The URI of the album.',
599 format: 'at-uri',
600 },
601 title: {
602 type: 'string',
603 description: 'The title of the album.',
604 },
605 artist: {
606 type: 'string',
607 description: 'The artist of the album.',
608 },
609 artistUri: {
610 type: 'string',
611 description: "The URI of the album's artist.",
612 format: 'at-uri',
613 },
614 year: {
615 type: 'integer',
616 description: 'The year the album was released.',
617 },
618 albumArt: {
619 type: 'string',
620 description: 'The URL of the album art image.',
621 format: 'uri',
622 },
623 releaseDate: {
624 type: 'string',
625 description: 'The release date of the album.',
626 },
627 sha256: {
628 type: 'string',
629 description: 'The SHA256 hash of the album.',
630 },
631 playCount: {
632 type: 'integer',
633 description: 'The number of times the album has been played.',
634 minimum: 0,
635 },
636 uniqueListeners: {
637 type: 'integer',
638 description:
639 'The number of unique listeners who have played the album.',
640 minimum: 0,
641 },
642 tracks: {
643 type: 'array',
644 items: {
645 type: 'ref',
646 ref: 'lex:app.rocksky.song.defs.songViewBasic',
647 },
648 },
649 },
650 },
651 },
652 },
653 AppRockskyAlbumGetAlbum: {
654 lexicon: 1,
655 id: 'app.rocksky.album.getAlbum',
656 defs: {
657 main: {
658 type: 'query',
659 description: 'Get detailed album view',
660 parameters: {
661 type: 'params',
662 required: ['uri'],
663 properties: {
664 uri: {
665 type: 'string',
666 description: 'The URI of the album to retrieve.',
667 format: 'at-uri',
668 },
669 },
670 },
671 output: {
672 encoding: 'application/json',
673 schema: {
674 type: 'ref',
675 ref: 'lex:app.rocksky.album.defs#albumViewDetailed',
676 },
677 },
678 },
679 },
680 },
681 AppRockskyAlbumGetAlbums: {
682 lexicon: 1,
683 id: 'app.rocksky.album.getAlbums',
684 defs: {
685 main: {
686 type: 'query',
687 description: 'Get albums',
688 parameters: {
689 type: 'params',
690 properties: {
691 limit: {
692 type: 'integer',
693 description: 'The maximum number of albums to return',
694 minimum: 1,
695 },
696 offset: {
697 type: 'integer',
698 description: 'The offset for pagination',
699 minimum: 0,
700 },
701 },
702 },
703 output: {
704 encoding: 'application/json',
705 schema: {
706 type: 'object',
707 properties: {
708 albums: {
709 type: 'array',
710 items: {
711 type: 'ref',
712 ref: 'lex:app.rocksky.album.defs#albumViewBasic',
713 },
714 },
715 },
716 },
717 },
718 },
719 },
720 },
721 AppRockskyAlbumGetAlbumTracks: {
722 lexicon: 1,
723 id: 'app.rocksky.album.getAlbumTracks',
724 defs: {
725 main: {
726 type: 'query',
727 description: 'Get tracks for an album',
728 parameters: {
729 type: 'params',
730 required: ['uri'],
731 properties: {
732 uri: {
733 type: 'string',
734 description: 'The URI of the album to retrieve tracks from',
735 format: 'at-uri',
736 },
737 },
738 },
739 output: {
740 encoding: 'application/json',
741 schema: {
742 type: 'object',
743 properties: {
744 tracks: {
745 type: 'array',
746 items: {
747 type: 'ref',
748 ref: 'lex:app.rocksky.song.defs#songViewBasic',
749 },
750 },
751 },
752 },
753 },
754 },
755 },
756 },
757 AppRockskyApikeyCreateApikey: {
758 lexicon: 1,
759 id: 'app.rocksky.apikey.createApikey',
760 defs: {
761 main: {
762 type: 'procedure',
763 description: 'Create a new API key for the authenticated user',
764 input: {
765 encoding: 'application/json',
766 schema: {
767 type: 'object',
768 required: ['name'],
769 properties: {
770 name: {
771 type: 'string',
772 description: 'The name of the API key.',
773 },
774 description: {
775 type: 'string',
776 description: 'A description for the API key.',
777 },
778 },
779 },
780 },
781 output: {
782 encoding: 'application/json',
783 schema: {
784 type: 'ref',
785 ref: 'lex:app.rocksky.apikey.defs#apiKey',
786 },
787 },
788 },
789 },
790 },
791 AppRockskyApikeyDefs: {
792 lexicon: 1,
793 id: 'app.rocksky.apikey.defs',
794 defs: {
795 apiKeyView: {
796 type: 'object',
797 properties: {
798 id: {
799 type: 'string',
800 description: 'The unique identifier of the API key.',
801 },
802 name: {
803 type: 'string',
804 description: 'The name of the API key.',
805 },
806 description: {
807 type: 'string',
808 description: 'A description for the API key.',
809 },
810 createdAt: {
811 type: 'string',
812 description: 'The date and time when the API key was created.',
813 format: 'datetime',
814 },
815 },
816 },
817 },
818 },
819 AppRockskyApikeysDefs: {
820 lexicon: 1,
821 id: 'app.rocksky.apikeys.defs',
822 defs: {},
823 },
824 AppRockskyApikeyGetApikeys: {
825 lexicon: 1,
826 id: 'app.rocksky.apikey.getApikeys',
827 defs: {
828 main: {
829 type: 'query',
830 description: 'Get a list of API keys for the authenticated user',
831 parameters: {
832 type: 'params',
833 properties: {
834 offset: {
835 type: 'integer',
836 description:
837 'The number of API keys to skip before starting to collect the result set.',
838 },
839 limit: {
840 type: 'integer',
841 description: 'The number of API keys to return per page.',
842 },
843 },
844 },
845 output: {
846 encoding: 'application/json',
847 schema: {
848 type: 'object',
849 properties: {
850 apiKeys: {
851 type: 'array',
852 items: {
853 type: 'ref',
854 ref: 'lex:app.rocksky.apikey.defs#apikeyView',
855 },
856 },
857 },
858 },
859 },
860 },
861 },
862 },
863 AppRockskyApikeyRemoveApikey: {
864 lexicon: 1,
865 id: 'app.rocksky.apikey.removeApikey',
866 defs: {
867 main: {
868 type: 'procedure',
869 description: 'Remove an API key for the authenticated user',
870 parameters: {
871 type: 'params',
872 required: ['id'],
873 properties: {
874 id: {
875 type: 'string',
876 description: 'The ID of the API key to remove.',
877 },
878 },
879 },
880 output: {
881 encoding: 'application/json',
882 schema: {
883 type: 'ref',
884 ref: 'lex:app.rocksky.apikey.defs#apiKey',
885 },
886 },
887 },
888 },
889 },
890 AppRockskyApikeyUpdateApikey: {
891 lexicon: 1,
892 id: 'app.rocksky.apikey.updateApikey',
893 defs: {
894 main: {
895 type: 'procedure',
896 description: 'Update an existing API key for the authenticated user',
897 input: {
898 encoding: 'application/json',
899 schema: {
900 type: 'object',
901 required: ['id', 'name'],
902 properties: {
903 id: {
904 type: 'string',
905 description: 'The ID of the API key to update.',
906 },
907 name: {
908 type: 'string',
909 description: 'The new name of the API key.',
910 },
911 description: {
912 type: 'string',
913 description: 'A new description for the API key.',
914 },
915 },
916 },
917 },
918 output: {
919 encoding: 'application/json',
920 schema: {
921 type: 'ref',
922 ref: 'lex:app.rocksky.apikey.defs#apiKey',
923 },
924 },
925 },
926 },
927 },
928 AppRockskyArtist: {
929 lexicon: 1,
930 id: 'app.rocksky.artist',
931 defs: {
932 main: {
933 type: 'record',
934 description: 'A declaration of an artist.',
935 key: 'tid',
936 record: {
937 type: 'object',
938 required: ['name', 'createdAt'],
939 properties: {
940 name: {
941 type: 'string',
942 description: 'The name of the artist.',
943 minLength: 1,
944 maxLength: 512,
945 },
946 bio: {
947 type: 'string',
948 description: 'The biography of the artist.',
949 maxLength: 1000,
950 },
951 picture: {
952 type: 'blob',
953 description: 'The picture of the artist.',
954 accept: ['image/png', 'image/jpeg'],
955 maxSize: 2000000,
956 },
957 tags: {
958 type: 'array',
959 description: 'The tags of the artist.',
960 items: {
961 type: 'string',
962 minLength: 1,
963 maxLength: 256,
964 },
965 },
966 born: {
967 type: 'string',
968 description: 'The birth date of the artist.',
969 format: 'datetime',
970 },
971 died: {
972 type: 'string',
973 description: 'The death date of the artist.',
974 format: 'datetime',
975 },
976 bornIn: {
977 type: 'string',
978 description: 'The birth place of the artist.',
979 maxLength: 256,
980 },
981 createdAt: {
982 type: 'string',
983 description: 'The date when the artist was created.',
984 format: 'datetime',
985 },
986 },
987 },
988 },
989 },
990 },
991 AppRockskyArtistDefs: {
992 lexicon: 1,
993 id: 'app.rocksky.artist.defs',
994 defs: {
995 artistViewBasic: {
996 type: 'object',
997 properties: {
998 id: {
999 type: 'string',
1000 description: 'The unique identifier of the artist.',
1001 },
1002 uri: {
1003 type: 'string',
1004 description: 'The URI of the artist.',
1005 format: 'at-uri',
1006 },
1007 name: {
1008 type: 'string',
1009 description: 'The name of the artist.',
1010 },
1011 picture: {
1012 type: 'string',
1013 description: 'The picture of the artist.',
1014 },
1015 sha256: {
1016 type: 'string',
1017 description: 'The SHA256 hash of the artist.',
1018 },
1019 playCount: {
1020 type: 'integer',
1021 description: 'The number of times the artist has been played.',
1022 minimum: 0,
1023 },
1024 uniqueListeners: {
1025 type: 'integer',
1026 description:
1027 'The number of unique listeners who have played the artist.',
1028 minimum: 0,
1029 },
1030 },
1031 },
1032 artistViewDetailed: {
1033 type: 'object',
1034 properties: {
1035 id: {
1036 type: 'string',
1037 description: 'The unique identifier of the artist.',
1038 },
1039 uri: {
1040 type: 'string',
1041 description: 'The URI of the artist.',
1042 format: 'at-uri',
1043 },
1044 name: {
1045 type: 'string',
1046 description: 'The name of the artist.',
1047 },
1048 picture: {
1049 type: 'string',
1050 description: 'The picture of the artist.',
1051 },
1052 sha256: {
1053 type: 'string',
1054 description: 'The SHA256 hash of the artist.',
1055 },
1056 playCount: {
1057 type: 'integer',
1058 description: 'The number of times the artist has been played.',
1059 minimum: 0,
1060 },
1061 uniqueListeners: {
1062 type: 'integer',
1063 description:
1064 'The number of unique listeners who have played the artist.',
1065 minimum: 0,
1066 },
1067 },
1068 },
1069 songViewBasic: {
1070 type: 'object',
1071 properties: {
1072 uri: {
1073 type: 'string',
1074 description: 'The URI of the song.',
1075 format: 'at-uri',
1076 },
1077 title: {
1078 type: 'string',
1079 description: 'The title of the song.',
1080 },
1081 playCount: {
1082 type: 'integer',
1083 description: 'The number of times the song has been played.',
1084 minimum: 0,
1085 },
1086 },
1087 },
1088 listenerViewBasic: {
1089 type: 'object',
1090 properties: {
1091 id: {
1092 type: 'string',
1093 description: 'The unique identifier of the actor.',
1094 },
1095 did: {
1096 type: 'string',
1097 description: 'The DID of the listener.',
1098 },
1099 handle: {
1100 type: 'string',
1101 description: 'The handle of the listener.',
1102 },
1103 displayName: {
1104 type: 'string',
1105 description: 'The display name of the listener.',
1106 },
1107 avatar: {
1108 type: 'string',
1109 description: "The URL of the listener's avatar image.",
1110 format: 'uri',
1111 },
1112 mostListenedSong: {
1113 type: 'ref',
1114 ref: 'lex:app.rocksky.artist.defs#songViewBasic',
1115 },
1116 totalPlays: {
1117 type: 'integer',
1118 description: 'The total number of plays by the listener.',
1119 minimum: 0,
1120 },
1121 rank: {
1122 type: 'integer',
1123 description:
1124 'The rank of the listener among all listeners of the artist.',
1125 minimum: 1,
1126 },
1127 },
1128 },
1129 },
1130 },
1131 AppRockskyArtistGetArtistAlbums: {
1132 lexicon: 1,
1133 id: 'app.rocksky.artist.getArtistAlbums',
1134 defs: {
1135 main: {
1136 type: 'query',
1137 description: "Get artist's albums",
1138 parameters: {
1139 type: 'params',
1140 required: ['uri'],
1141 properties: {
1142 uri: {
1143 type: 'string',
1144 description: 'The URI of the artist to retrieve albums from',
1145 format: 'at-uri',
1146 },
1147 },
1148 },
1149 output: {
1150 encoding: 'application/json',
1151 schema: {
1152 type: 'object',
1153 properties: {
1154 albums: {
1155 type: 'array',
1156 items: {
1157 type: 'ref',
1158 ref: 'lex:app.rocksky.album.defs#albumViewBasic',
1159 },
1160 },
1161 },
1162 },
1163 },
1164 },
1165 },
1166 },
1167 AppRockskyArtistGetArtist: {
1168 lexicon: 1,
1169 id: 'app.rocksky.artist.getArtist',
1170 defs: {
1171 main: {
1172 type: 'query',
1173 description: 'Get artist details',
1174 parameters: {
1175 type: 'params',
1176 required: ['uri'],
1177 properties: {
1178 uri: {
1179 type: 'string',
1180 description: 'The URI of the artist to retrieve details from',
1181 format: 'at-uri',
1182 },
1183 },
1184 },
1185 output: {
1186 encoding: 'application/json',
1187 schema: {
1188 type: 'ref',
1189 ref: 'lex:app.rocksky.artist.defs#artistViewDetailed',
1190 },
1191 },
1192 },
1193 },
1194 },
1195 AppRockskyArtistGetArtistListeners: {
1196 lexicon: 1,
1197 id: 'app.rocksky.artist.getArtistListeners',
1198 defs: {
1199 main: {
1200 type: 'query',
1201 description: 'Get artist listeners',
1202 parameters: {
1203 type: 'params',
1204 required: ['uri'],
1205 properties: {
1206 uri: {
1207 type: 'string',
1208 description: 'The URI of the artist to retrieve listeners from',
1209 format: 'at-uri',
1210 },
1211 offset: {
1212 type: 'integer',
1213 description: 'Number of items to skip before returning results',
1214 },
1215 limit: {
1216 type: 'integer',
1217 description: 'Maximum number of results to return',
1218 },
1219 },
1220 },
1221 output: {
1222 encoding: 'application/json',
1223 schema: {
1224 type: 'object',
1225 properties: {
1226 listeners: {
1227 type: 'array',
1228 items: {
1229 type: 'ref',
1230 ref: 'lex:app.rocksky.artist.defs#listenerViewBasic',
1231 },
1232 },
1233 },
1234 },
1235 },
1236 },
1237 },
1238 },
1239 AppRockskyArtistGetArtists: {
1240 lexicon: 1,
1241 id: 'app.rocksky.artist.getArtists',
1242 defs: {
1243 main: {
1244 type: 'query',
1245 description: 'Get artists',
1246 parameters: {
1247 type: 'params',
1248 properties: {
1249 limit: {
1250 type: 'integer',
1251 description: 'The maximum number of artists to return',
1252 minimum: 1,
1253 },
1254 offset: {
1255 type: 'integer',
1256 description: 'The offset for pagination',
1257 minimum: 0,
1258 },
1259 },
1260 },
1261 output: {
1262 encoding: 'application/json',
1263 schema: {
1264 type: 'object',
1265 properties: {
1266 artists: {
1267 type: 'array',
1268 items: {
1269 type: 'ref',
1270 ref: 'lex:app.rocksky.artist.defs#artistViewBasic',
1271 },
1272 },
1273 },
1274 },
1275 },
1276 },
1277 },
1278 },
1279 AppRockskyArtistGetArtistTracks: {
1280 lexicon: 1,
1281 id: 'app.rocksky.artist.getArtistTracks',
1282 defs: {
1283 main: {
1284 type: 'query',
1285 description: "Get artist's tracks",
1286 parameters: {
1287 type: 'params',
1288 properties: {
1289 uri: {
1290 type: 'string',
1291 description: 'The URI of the artist to retrieve albums from',
1292 format: 'at-uri',
1293 },
1294 limit: {
1295 type: 'integer',
1296 description: 'The maximum number of tracks to return',
1297 minimum: 1,
1298 },
1299 offset: {
1300 type: 'integer',
1301 description: 'The offset for pagination',
1302 minimum: 0,
1303 },
1304 },
1305 },
1306 output: {
1307 encoding: 'application/json',
1308 schema: {
1309 type: 'object',
1310 properties: {
1311 tracks: {
1312 type: 'array',
1313 items: {
1314 type: 'ref',
1315 ref: 'lex:app.rocksky.song.defs#songViewBasic',
1316 },
1317 },
1318 },
1319 },
1320 },
1321 },
1322 },
1323 },
1324 AppRockskyChartsDefs: {
1325 lexicon: 1,
1326 id: 'app.rocksky.charts.defs',
1327 defs: {
1328 chartsView: {
1329 type: 'object',
1330 properties: {
1331 scrobbles: {
1332 type: 'array',
1333 items: {
1334 type: 'ref',
1335 ref: 'lex:app.rocksky.charts.defs#scrobbleViewBasic',
1336 },
1337 },
1338 },
1339 },
1340 scrobbleViewBasic: {
1341 type: 'object',
1342 properties: {
1343 date: {
1344 type: 'string',
1345 description: 'The date of the scrobble.',
1346 format: 'datetime',
1347 },
1348 count: {
1349 type: 'integer',
1350 description: 'The number of scrobbles on this date.',
1351 },
1352 },
1353 },
1354 },
1355 },
1356 AppRockskyChartsGetScrobblesChart: {
1357 lexicon: 1,
1358 id: 'app.rocksky.charts.getScrobblesChart',
1359 defs: {
1360 main: {
1361 type: 'query',
1362 description: 'Get the scrobbles chart',
1363 parameters: {
1364 type: 'params',
1365 properties: {
1366 did: {
1367 type: 'string',
1368 description: 'The DID or handle of the actor',
1369 format: 'at-identifier',
1370 },
1371 artisturi: {
1372 type: 'string',
1373 description: 'The URI of the artist to filter by',
1374 format: 'at-uri',
1375 },
1376 albumuri: {
1377 type: 'string',
1378 description: 'The URI of the album to filter by',
1379 format: 'at-uri',
1380 },
1381 songuri: {
1382 type: 'string',
1383 description: 'The URI of the track to filter by',
1384 format: 'at-uri',
1385 },
1386 },
1387 },
1388 output: {
1389 encoding: 'application/json',
1390 schema: {
1391 type: 'ref',
1392 ref: 'lex:app.rocksky.charts.defs#chartsView',
1393 },
1394 },
1395 },
1396 },
1397 },
1398 AppRockskyDropboxDefs: {
1399 lexicon: 1,
1400 id: 'app.rocksky.dropbox.defs',
1401 defs: {
1402 fileView: {
1403 type: 'object',
1404 properties: {
1405 id: {
1406 type: 'string',
1407 description: 'The unique identifier of the file.',
1408 },
1409 name: {
1410 type: 'string',
1411 description: 'The name of the file.',
1412 },
1413 pathLower: {
1414 type: 'string',
1415 description: 'The lowercased path of the file.',
1416 },
1417 pathDisplay: {
1418 type: 'string',
1419 description: 'The display path of the file.',
1420 },
1421 clientModified: {
1422 type: 'string',
1423 description:
1424 'The last modified date and time of the file on the client.',
1425 format: 'datetime',
1426 },
1427 serverModified: {
1428 type: 'string',
1429 description:
1430 'The last modified date and time of the file on the server.',
1431 format: 'datetime',
1432 },
1433 },
1434 },
1435 fileListView: {
1436 type: 'object',
1437 properties: {
1438 files: {
1439 type: 'array',
1440 description: 'A list of files in the Dropbox.',
1441 items: {
1442 type: 'ref',
1443 ref: 'lex:app.rocksky.dropbox.defs#fileView',
1444 },
1445 },
1446 },
1447 },
1448 temporaryLinkView: {
1449 type: 'object',
1450 properties: {
1451 link: {
1452 type: 'string',
1453 description: 'The temporary link to access the file.',
1454 format: 'uri',
1455 },
1456 },
1457 },
1458 },
1459 },
1460 AppRockskyDropboxDownloadFile: {
1461 lexicon: 1,
1462 id: 'app.rocksky.dropbox.downloadFile',
1463 defs: {
1464 main: {
1465 type: 'query',
1466 description: 'Download a file from Dropbox by its unique identifier',
1467 parameters: {
1468 type: 'params',
1469 required: ['fileId'],
1470 properties: {
1471 fileId: {
1472 type: 'string',
1473 description: 'The unique identifier of the file to download',
1474 },
1475 },
1476 },
1477 output: {
1478 encoding: 'application/octet-stream',
1479 },
1480 },
1481 },
1482 },
1483 AppRockskyDropboxGetFiles: {
1484 lexicon: 1,
1485 id: 'app.rocksky.dropbox.getFiles',
1486 defs: {
1487 main: {
1488 type: 'query',
1489 description: 'Retrieve a list of files from Dropbox',
1490 parameters: {
1491 type: 'params',
1492 properties: {
1493 at: {
1494 type: 'string',
1495 description: 'Path to the Dropbox folder or root directory',
1496 },
1497 },
1498 },
1499 output: {
1500 encoding: 'application/json',
1501 schema: {
1502 type: 'ref',
1503 ref: 'lex:app.rocksky.dropbox.defs#fileListView',
1504 },
1505 },
1506 },
1507 },
1508 },
1509 AppRockskyDropboxGetMetadata: {
1510 lexicon: 1,
1511 id: 'app.rocksky.dropbox.getMetadata',
1512 defs: {
1513 main: {
1514 type: 'query',
1515 description: 'Retrieve metadata of a file or folder in Dropbox',
1516 parameters: {
1517 type: 'params',
1518 required: ['path'],
1519 properties: {
1520 path: {
1521 type: 'string',
1522 description: 'Path to the file or folder in Dropbox',
1523 },
1524 },
1525 },
1526 output: {
1527 encoding: 'application/json',
1528 schema: {
1529 type: 'ref',
1530 ref: 'lex:app.rocksky.dropbox.defs#fileView',
1531 },
1532 },
1533 },
1534 },
1535 },
1536 AppRockskyDropboxGetTemporaryLink: {
1537 lexicon: 1,
1538 id: 'app.rocksky.dropbox.getTemporaryLink',
1539 defs: {
1540 main: {
1541 type: 'query',
1542 description: 'Retrieve a temporary link to access a file in Dropbox',
1543 parameters: {
1544 type: 'params',
1545 required: ['path'],
1546 properties: {
1547 path: {
1548 type: 'string',
1549 description: 'Path to the file in Dropbox',
1550 },
1551 },
1552 },
1553 output: {
1554 encoding: 'application/json',
1555 schema: {
1556 type: 'ref',
1557 ref: 'lex:app.rocksky.dropbox.defs#temporaryLinkView',
1558 },
1559 },
1560 },
1561 },
1562 },
1563 AppRockskyFeedDefs: {
1564 lexicon: 1,
1565 id: 'app.rocksky.feed.defs',
1566 defs: {
1567 searchResultsView: {
1568 type: 'object',
1569 properties: {
1570 hits: {
1571 type: 'array',
1572 items: {
1573 type: 'union',
1574 refs: [
1575 'lex:app.rocksky.song.defs#songViewBasic',
1576 'lex:app.rocksky.album.defs#albumViewBasic',
1577 'lex:app.rocksky.artist.defs#artistViewBasic',
1578 'lex:app.rocksky.playlist.defs#playlistViewBasic',
1579 'lex:app.rocksky.actor.defs#profileViewBasic',
1580 ],
1581 },
1582 },
1583 processingTimeMs: {
1584 type: 'integer',
1585 },
1586 limit: {
1587 type: 'integer',
1588 },
1589 offset: {
1590 type: 'integer',
1591 },
1592 estimatedTotalHits: {
1593 type: 'integer',
1594 },
1595 },
1596 },
1597 nowPlayingView: {
1598 type: 'object',
1599 properties: {
1600 album: {
1601 type: 'string',
1602 },
1603 albumArt: {
1604 type: 'string',
1605 format: 'uri',
1606 },
1607 albumArtist: {
1608 type: 'string',
1609 },
1610 albumUri: {
1611 type: 'string',
1612 format: 'at-uri',
1613 },
1614 artist: {
1615 type: 'string',
1616 },
1617 artistUri: {
1618 type: 'string',
1619 format: 'at-uri',
1620 },
1621 avatar: {
1622 type: 'string',
1623 format: 'uri',
1624 },
1625 createdAt: {
1626 type: 'string',
1627 },
1628 did: {
1629 type: 'string',
1630 format: 'at-identifier',
1631 },
1632 handle: {
1633 type: 'string',
1634 },
1635 id: {
1636 type: 'string',
1637 },
1638 title: {
1639 type: 'string',
1640 },
1641 trackId: {
1642 type: 'string',
1643 },
1644 trackUri: {
1645 type: 'string',
1646 format: 'at-uri',
1647 },
1648 uri: {
1649 type: 'string',
1650 format: 'at-uri',
1651 },
1652 },
1653 },
1654 nowPlayingsView: {
1655 type: 'object',
1656 properties: {
1657 nowPlayings: {
1658 type: 'array',
1659 items: {
1660 type: 'ref',
1661 ref: 'lex:app.rocksky.feed.defs#nowPlayingView',
1662 },
1663 },
1664 },
1665 },
1666 },
1667 },
1668 AppRockskyFeedGetNowPlayings: {
1669 lexicon: 1,
1670 id: 'app.rocksky.feed.getNowPlayings',
1671 defs: {
1672 main: {
1673 type: 'query',
1674 description: 'Get all currently playing tracks by users',
1675 parameters: {
1676 type: 'params',
1677 properties: {
1678 size: {
1679 type: 'integer',
1680 description:
1681 'The maximum number of now playing tracks to return.',
1682 minimum: 1,
1683 },
1684 },
1685 },
1686 output: {
1687 encoding: 'application/json',
1688 schema: {
1689 type: 'ref',
1690 ref: 'lex:app.rocksky.feed.defs#nowPlayingsView',
1691 },
1692 },
1693 },
1694 },
1695 },
1696 AppRockskyFeedSearch: {
1697 lexicon: 1,
1698 id: 'app.rocksky.feed.search',
1699 defs: {
1700 main: {
1701 type: 'query',
1702 description: 'Search for content in the feed',
1703 parameters: {
1704 type: 'params',
1705 required: ['query'],
1706 properties: {
1707 query: {
1708 type: 'string',
1709 description: 'The search query string',
1710 },
1711 },
1712 },
1713 output: {
1714 encoding: 'application/json',
1715 schema: {
1716 type: 'ref',
1717 ref: 'lex:app.rocksky.feed.defs#searchResultsView',
1718 },
1719 },
1720 },
1721 },
1722 },
1723 AppRockskyGoogledriveDefs: {
1724 lexicon: 1,
1725 id: 'app.rocksky.googledrive.defs',
1726 defs: {
1727 fileView: {
1728 type: 'object',
1729 properties: {
1730 id: {
1731 type: 'string',
1732 description: 'The unique identifier of the file.',
1733 },
1734 },
1735 },
1736 fileListView: {
1737 type: 'object',
1738 properties: {
1739 files: {
1740 type: 'array',
1741 items: {
1742 type: 'ref',
1743 ref: 'lex:app.rocksky.googledrive.defs#fileView',
1744 },
1745 },
1746 },
1747 },
1748 },
1749 },
1750 AppRockskyGoogledriveDownloadFile: {
1751 lexicon: 1,
1752 id: 'app.rocksky.googledrive.downloadFile',
1753 defs: {
1754 main: {
1755 type: 'query',
1756 description:
1757 'Download a file from Google Drive by its unique identifier',
1758 parameters: {
1759 type: 'params',
1760 required: ['fileId'],
1761 properties: {
1762 fileId: {
1763 type: 'string',
1764 description: 'The unique identifier of the file to download',
1765 },
1766 },
1767 },
1768 output: {
1769 encoding: 'application/octet-stream',
1770 },
1771 },
1772 },
1773 },
1774 AppRockskyGoogledriveGetFile: {
1775 lexicon: 1,
1776 id: 'app.rocksky.googledrive.getFile',
1777 defs: {
1778 main: {
1779 type: 'query',
1780 description: 'Get a file from Google Drive by its unique identifier',
1781 parameters: {
1782 type: 'params',
1783 required: ['fileId'],
1784 properties: {
1785 fileId: {
1786 type: 'string',
1787 description: 'The unique identifier of the file to retrieve',
1788 },
1789 },
1790 },
1791 output: {
1792 encoding: 'application/json',
1793 schema: {
1794 type: 'ref',
1795 ref: 'lex:app.rocksky.googledrive.defs#fileView',
1796 },
1797 },
1798 },
1799 },
1800 },
1801 AppRockskyGoogledriveGetFiles: {
1802 lexicon: 1,
1803 id: 'app.rocksky.googledrive.getFiles',
1804 defs: {
1805 main: {
1806 type: 'query',
1807 description: 'Get a list of files from Google Drive',
1808 parameters: {
1809 type: 'params',
1810 properties: {
1811 at: {
1812 type: 'string',
1813 description: 'Path to the Google Drive folder or root directory',
1814 },
1815 },
1816 },
1817 output: {
1818 encoding: 'application/json',
1819 schema: {
1820 type: 'ref',
1821 ref: 'lex:app.rocksky.googledrive.defs#fileListView',
1822 },
1823 },
1824 },
1825 },
1826 },
1827 AppRockskyLikeDislikeShout: {
1828 lexicon: 1,
1829 id: 'app.rocksky.like.dislikeShout',
1830 defs: {
1831 main: {
1832 type: 'procedure',
1833 description: 'Dislike a shout',
1834 input: {
1835 encoding: 'application/json',
1836 schema: {
1837 type: 'object',
1838 properties: {
1839 uri: {
1840 type: 'string',
1841 description: 'The unique identifier of the shout to dislike',
1842 format: 'at-uri',
1843 },
1844 },
1845 },
1846 },
1847 output: {
1848 encoding: 'application/json',
1849 schema: {
1850 type: 'ref',
1851 ref: 'lex:app.rocksky.shout.defs#shoutView',
1852 },
1853 },
1854 },
1855 },
1856 },
1857 AppRockskyLikeDislikeSong: {
1858 lexicon: 1,
1859 id: 'app.rocksky.like.dislikeSong',
1860 defs: {
1861 main: {
1862 type: 'procedure',
1863 description: 'Dislike a song',
1864 input: {
1865 encoding: 'application/json',
1866 schema: {
1867 type: 'object',
1868 properties: {
1869 uri: {
1870 type: 'string',
1871 description: 'The unique identifier of the song to dislike',
1872 format: 'at-uri',
1873 },
1874 },
1875 },
1876 },
1877 output: {
1878 encoding: 'application/json',
1879 schema: {
1880 type: 'ref',
1881 ref: 'lex:app.rocksky.song.defs#songViewDetailed',
1882 },
1883 },
1884 },
1885 },
1886 },
1887 AppRockskyLike: {
1888 lexicon: 1,
1889 id: 'app.rocksky.like',
1890 defs: {
1891 main: {
1892 type: 'record',
1893 description: 'A declaration of a like.',
1894 key: 'tid',
1895 record: {
1896 type: 'object',
1897 required: ['createdAt', 'subject'],
1898 properties: {
1899 createdAt: {
1900 type: 'string',
1901 description: 'The date when the like was created.',
1902 format: 'datetime',
1903 },
1904 subject: {
1905 type: 'ref',
1906 ref: 'lex:com.atproto.repo.strongRef',
1907 },
1908 },
1909 },
1910 },
1911 },
1912 },
1913 AppRockskyLikeLikeShout: {
1914 lexicon: 1,
1915 id: 'app.rocksky.like.likeShout',
1916 defs: {
1917 main: {
1918 type: 'procedure',
1919 description: 'Like a shout',
1920 input: {
1921 encoding: 'application/json',
1922 schema: {
1923 type: 'object',
1924 properties: {
1925 uri: {
1926 type: 'string',
1927 description: 'The unique identifier of the shout to like',
1928 format: 'at-uri',
1929 },
1930 },
1931 },
1932 },
1933 output: {
1934 encoding: 'application/json',
1935 schema: {
1936 type: 'ref',
1937 ref: 'lex:app.rocksky.shout.defs#shoutView',
1938 },
1939 },
1940 },
1941 },
1942 },
1943 AppRockskyLikeLikeSong: {
1944 lexicon: 1,
1945 id: 'app.rocksky.like.likeSong',
1946 defs: {
1947 main: {
1948 type: 'procedure',
1949 description: 'Like a song',
1950 input: {
1951 encoding: 'application/json',
1952 schema: {
1953 type: 'object',
1954 properties: {
1955 uri: {
1956 type: 'string',
1957 description: 'The unique identifier of the song to like',
1958 format: 'at-uri',
1959 },
1960 },
1961 },
1962 },
1963 output: {
1964 encoding: 'application/json',
1965 schema: {
1966 type: 'ref',
1967 ref: 'lex:app.rocksky.song.defs#songViewDetailed',
1968 },
1969 },
1970 },
1971 },
1972 },
1973 AppRockskyPlayerAddDirectoryToQueue: {
1974 lexicon: 1,
1975 id: 'app.rocksky.player.addDirectoryToQueue',
1976 defs: {
1977 main: {
1978 type: 'procedure',
1979 description: "Add directory to the player's queue",
1980 parameters: {
1981 type: 'params',
1982 required: ['directory'],
1983 properties: {
1984 playerId: {
1985 type: 'string',
1986 },
1987 directory: {
1988 type: 'string',
1989 description: 'The directory to add to the queue',
1990 },
1991 position: {
1992 type: 'integer',
1993 description:
1994 'Position in the queue to insert the directory at, defaults to the end if not specified',
1995 },
1996 shuffle: {
1997 type: 'boolean',
1998 description:
1999 'Whether to shuffle the added directory in the queue',
2000 },
2001 },
2002 },
2003 },
2004 },
2005 },
2006 AppRockskyPlayerAddItemsToQueue: {
2007 lexicon: 1,
2008 id: 'app.rocksky.player.addItemsToQueue',
2009 defs: {
2010 main: {
2011 type: 'procedure',
2012 description: "Add items to the player's queue",
2013 parameters: {
2014 type: 'params',
2015 required: ['items'],
2016 properties: {
2017 playerId: {
2018 type: 'string',
2019 },
2020 items: {
2021 type: 'array',
2022 items: {
2023 type: 'string',
2024 description: 'List of file identifiers to add to the queue',
2025 },
2026 },
2027 position: {
2028 type: 'integer',
2029 description:
2030 'Position in the queue to insert the items at, defaults to the end if not specified',
2031 },
2032 shuffle: {
2033 type: 'boolean',
2034 description: 'Whether to shuffle the added items in the queue',
2035 },
2036 },
2037 },
2038 },
2039 },
2040 },
2041 AppRockskyPlayerDefs: {
2042 lexicon: 1,
2043 id: 'app.rocksky.player.defs',
2044 defs: {
2045 currentlyPlayingViewDetailed: {
2046 type: 'object',
2047 properties: {
2048 title: {
2049 type: 'string',
2050 description: 'The title of the currently playing track',
2051 },
2052 },
2053 },
2054 playbackQueueViewDetailed: {
2055 type: 'object',
2056 properties: {
2057 tracks: {
2058 type: 'array',
2059 items: {
2060 type: 'ref',
2061 ref: 'lex:app.rocksky.song.defs.songViewBasic',
2062 },
2063 },
2064 },
2065 },
2066 },
2067 },
2068 AppRockskyPlayerGetCurrentlyPlaying: {
2069 lexicon: 1,
2070 id: 'app.rocksky.player.getCurrentlyPlaying',
2071 defs: {
2072 main: {
2073 type: 'query',
2074 description: 'Get the currently playing track',
2075 parameters: {
2076 type: 'params',
2077 properties: {
2078 playerId: {
2079 type: 'string',
2080 },
2081 actor: {
2082 type: 'string',
2083 description:
2084 'Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.',
2085 format: 'at-identifier',
2086 },
2087 },
2088 },
2089 output: {
2090 encoding: 'application/json',
2091 schema: {
2092 type: 'ref',
2093 ref: 'lex:app.rocksky.player.defs#currentlyPlayingViewDetailed',
2094 },
2095 },
2096 },
2097 },
2098 },
2099 AppRockskyPlayerGetPlaybackQueue: {
2100 lexicon: 1,
2101 id: 'app.rocksky.player.getPlaybackQueue',
2102 defs: {
2103 main: {
2104 type: 'query',
2105 description: 'Retrieve the current playback queue',
2106 parameters: {
2107 type: 'params',
2108 properties: {
2109 playerId: {
2110 type: 'string',
2111 },
2112 },
2113 },
2114 output: {
2115 encoding: 'application/json',
2116 schema: {
2117 type: 'ref',
2118 ref: 'lex:app.rocksky.player.defs#playbackQueueViewDetailed',
2119 },
2120 },
2121 },
2122 },
2123 },
2124 AppRockskyPlayerNext: {
2125 lexicon: 1,
2126 id: 'app.rocksky.player.next',
2127 defs: {
2128 main: {
2129 type: 'procedure',
2130 description: 'Play the next track in the queue',
2131 parameters: {
2132 type: 'params',
2133 properties: {
2134 playerId: {
2135 type: 'string',
2136 },
2137 },
2138 },
2139 },
2140 },
2141 },
2142 AppRockskyPlayerPause: {
2143 lexicon: 1,
2144 id: 'app.rocksky.player.pause',
2145 defs: {
2146 main: {
2147 type: 'procedure',
2148 description: 'Pause the currently playing track',
2149 parameters: {
2150 type: 'params',
2151 properties: {
2152 playerId: {
2153 type: 'string',
2154 },
2155 },
2156 },
2157 },
2158 },
2159 },
2160 AppRockskyPlayerPlayDirectory: {
2161 lexicon: 1,
2162 id: 'app.rocksky.player.playDirectory',
2163 defs: {
2164 main: {
2165 type: 'procedure',
2166 description: 'Play all tracks in a directory',
2167 parameters: {
2168 type: 'params',
2169 required: ['directoryId'],
2170 properties: {
2171 playerId: {
2172 type: 'string',
2173 },
2174 directoryId: {
2175 type: 'string',
2176 },
2177 shuffle: {
2178 type: 'boolean',
2179 },
2180 recurse: {
2181 type: 'boolean',
2182 },
2183 position: {
2184 type: 'integer',
2185 },
2186 },
2187 },
2188 },
2189 },
2190 },
2191 AppRockskyPlayerPlayFile: {
2192 lexicon: 1,
2193 id: 'app.rocksky.player.playFile',
2194 defs: {
2195 main: {
2196 type: 'procedure',
2197 description: 'Play a specific audio file',
2198 parameters: {
2199 type: 'params',
2200 required: ['fileId'],
2201 properties: {
2202 playerId: {
2203 type: 'string',
2204 },
2205 fileId: {
2206 type: 'string',
2207 },
2208 },
2209 },
2210 },
2211 },
2212 },
2213 AppRockskyPlayerPlay: {
2214 lexicon: 1,
2215 id: 'app.rocksky.player.play',
2216 defs: {
2217 main: {
2218 type: 'procedure',
2219 description: 'Resume playback of the currently paused track',
2220 parameters: {
2221 type: 'params',
2222 properties: {
2223 playerId: {
2224 type: 'string',
2225 },
2226 },
2227 },
2228 },
2229 },
2230 },
2231 AppRockskyPlayerPrevious: {
2232 lexicon: 1,
2233 id: 'app.rocksky.player.previous',
2234 defs: {
2235 main: {
2236 type: 'procedure',
2237 description: 'Play the previous track in the queue',
2238 parameters: {
2239 type: 'params',
2240 properties: {
2241 playerId: {
2242 type: 'string',
2243 },
2244 },
2245 },
2246 },
2247 },
2248 },
2249 AppRockskyPlayerSeek: {
2250 lexicon: 1,
2251 id: 'app.rocksky.player.seek',
2252 defs: {
2253 main: {
2254 type: 'procedure',
2255 description:
2256 'Seek to a specific position in the currently playing track',
2257 parameters: {
2258 type: 'params',
2259 required: ['position'],
2260 properties: {
2261 playerId: {
2262 type: 'string',
2263 },
2264 position: {
2265 type: 'integer',
2266 description: 'The position in seconds to seek to',
2267 },
2268 },
2269 },
2270 },
2271 },
2272 },
2273 AppRockskyPlaylistCreatePlaylist: {
2274 lexicon: 1,
2275 id: 'app.rocksky.playlist.createPlaylist',
2276 defs: {
2277 main: {
2278 type: 'procedure',
2279 description: 'Create a new playlist',
2280 parameters: {
2281 type: 'params',
2282 required: ['name'],
2283 properties: {
2284 name: {
2285 type: 'string',
2286 description: 'The name of the playlist',
2287 },
2288 description: {
2289 type: 'string',
2290 description: 'A brief description of the playlist',
2291 },
2292 },
2293 },
2294 },
2295 },
2296 },
2297 AppRockskyPlaylistDefs: {
2298 lexicon: 1,
2299 id: 'app.rocksky.playlist.defs',
2300 defs: {
2301 playlistViewDetailed: {
2302 type: 'object',
2303 description:
2304 'Detailed view of a playlist, including its tracks and metadata',
2305 properties: {
2306 id: {
2307 type: 'string',
2308 description: 'The unique identifier of the playlist.',
2309 },
2310 title: {
2311 type: 'string',
2312 description: 'The title of the playlist.',
2313 },
2314 uri: {
2315 type: 'string',
2316 description: 'The URI of the playlist.',
2317 format: 'at-uri',
2318 },
2319 curatorDid: {
2320 type: 'string',
2321 description: 'The DID of the curator of the playlist.',
2322 format: 'at-identifier',
2323 },
2324 curatorHandle: {
2325 type: 'string',
2326 description: 'The handle of the curator of the playlist.',
2327 format: 'at-identifier',
2328 },
2329 curatorName: {
2330 type: 'string',
2331 description: 'The name of the curator of the playlist.',
2332 },
2333 curatorAvatarUrl: {
2334 type: 'string',
2335 description: 'The URL of the avatar image of the curator.',
2336 format: 'uri',
2337 },
2338 description: {
2339 type: 'string',
2340 description: 'A description of the playlist.',
2341 },
2342 coverImageUrl: {
2343 type: 'string',
2344 description: 'The URL of the cover image for the playlist.',
2345 format: 'uri',
2346 },
2347 createdAt: {
2348 type: 'string',
2349 description: 'The date and time when the playlist was created.',
2350 format: 'datetime',
2351 },
2352 tracks: {
2353 type: 'array',
2354 description: 'A list of tracks in the playlist.',
2355 items: {
2356 type: 'ref',
2357 ref: 'lex:app.rocksky.song.defs#songViewBasic',
2358 },
2359 },
2360 },
2361 },
2362 playlistViewBasic: {
2363 type: 'object',
2364 description: 'Basic view of a playlist, including its metadata',
2365 properties: {
2366 id: {
2367 type: 'string',
2368 description: 'The unique identifier of the playlist.',
2369 },
2370 title: {
2371 type: 'string',
2372 description: 'The title of the playlist.',
2373 },
2374 uri: {
2375 type: 'string',
2376 description: 'The URI of the playlist.',
2377 format: 'at-uri',
2378 },
2379 curatorDid: {
2380 type: 'string',
2381 description: 'The DID of the curator of the playlist.',
2382 format: 'at-identifier',
2383 },
2384 curatorHandle: {
2385 type: 'string',
2386 description: 'The handle of the curator of the playlist.',
2387 format: 'at-identifier',
2388 },
2389 curatorName: {
2390 type: 'string',
2391 description: 'The name of the curator of the playlist.',
2392 },
2393 curatorAvatarUrl: {
2394 type: 'string',
2395 description: 'The URL of the avatar image of the curator.',
2396 format: 'uri',
2397 },
2398 description: {
2399 type: 'string',
2400 description: 'A description of the playlist.',
2401 },
2402 coverImageUrl: {
2403 type: 'string',
2404 description: 'The URL of the cover image for the playlist.',
2405 format: 'uri',
2406 },
2407 createdAt: {
2408 type: 'string',
2409 description: 'The date and time when the playlist was created.',
2410 format: 'datetime',
2411 },
2412 trackCount: {
2413 type: 'integer',
2414 description: 'The number of tracks in the playlist.',
2415 minimum: 0,
2416 },
2417 },
2418 },
2419 },
2420 },
2421 AppRockskyPlaylistGetPlaylist: {
2422 lexicon: 1,
2423 id: 'app.rocksky.playlist.getPlaylist',
2424 defs: {
2425 main: {
2426 type: 'query',
2427 description: 'Retrieve a playlist by its ID',
2428 parameters: {
2429 type: 'params',
2430 required: ['uri'],
2431 properties: {
2432 uri: {
2433 type: 'string',
2434 description: 'The URI of the playlist to retrieve.',
2435 format: 'at-uri',
2436 },
2437 },
2438 },
2439 output: {
2440 encoding: 'application/json',
2441 schema: {
2442 type: 'ref',
2443 ref: 'lex:app.rocksky.playlist.defs#playlistViewDetailed',
2444 },
2445 },
2446 },
2447 },
2448 },
2449 AppRockskyPlaylistGetPlaylists: {
2450 lexicon: 1,
2451 id: 'app.rocksky.playlist.getPlaylists',
2452 defs: {
2453 main: {
2454 type: 'query',
2455 description: 'Retrieve a list of playlists',
2456 parameters: {
2457 type: 'params',
2458 properties: {
2459 limit: {
2460 type: 'integer',
2461 description: 'The maximum number of playlists to return.',
2462 },
2463 offset: {
2464 type: 'integer',
2465 description:
2466 'The offset for pagination, used to skip a number of playlists.',
2467 },
2468 },
2469 },
2470 output: {
2471 encoding: 'application/json',
2472 schema: {
2473 type: 'object',
2474 properties: {
2475 playlists: {
2476 type: 'array',
2477 items: {
2478 type: 'ref',
2479 ref: 'lex:app.rocksky.playlist.defs#playlistViewBasic',
2480 },
2481 },
2482 },
2483 },
2484 },
2485 },
2486 },
2487 },
2488 AppRockskyPlaylistInsertDirectory: {
2489 lexicon: 1,
2490 id: 'app.rocksky.playlist.insertDirectory',
2491 defs: {
2492 main: {
2493 type: 'procedure',
2494 description: 'Insert a directory into a playlist',
2495 parameters: {
2496 type: 'params',
2497 required: ['uri', 'directory'],
2498 properties: {
2499 uri: {
2500 type: 'string',
2501 description: 'The URI of the playlist to start',
2502 format: 'at-uri',
2503 },
2504 directory: {
2505 type: 'string',
2506 description: 'The directory (id) to insert into the playlist',
2507 },
2508 position: {
2509 type: 'integer',
2510 description:
2511 'The position in the playlist to insert the directory at, if not specified, the directory will be appended',
2512 },
2513 },
2514 },
2515 },
2516 },
2517 },
2518 AppRockskyPlaylistInsertFiles: {
2519 lexicon: 1,
2520 id: 'app.rocksky.playlist.insertFiles',
2521 defs: {
2522 main: {
2523 type: 'procedure',
2524 description: 'Insert files into a playlist',
2525 parameters: {
2526 type: 'params',
2527 required: ['uri', 'files'],
2528 properties: {
2529 uri: {
2530 type: 'string',
2531 description: 'The URI of the playlist to start',
2532 format: 'at-uri',
2533 },
2534 files: {
2535 type: 'array',
2536 items: {
2537 type: 'string',
2538 description: 'List of file (id) to insert into the playlist',
2539 },
2540 },
2541 position: {
2542 type: 'integer',
2543 description:
2544 'The position in the playlist to insert the files at, if not specified, files will be appended',
2545 },
2546 },
2547 },
2548 },
2549 },
2550 },
2551 AppRockskyPlaylist: {
2552 lexicon: 1,
2553 id: 'app.rocksky.playlist',
2554 defs: {
2555 main: {
2556 type: 'record',
2557 description: 'A declaration of a playlist.',
2558 key: 'tid',
2559 record: {
2560 type: 'object',
2561 required: ['name', 'createdAt'],
2562 properties: {
2563 name: {
2564 type: 'string',
2565 description: 'The name of the playlist.',
2566 minLength: 1,
2567 maxLength: 512,
2568 },
2569 description: {
2570 type: 'string',
2571 description: 'The playlist description.',
2572 minLength: 1,
2573 maxLength: 256,
2574 },
2575 picture: {
2576 type: 'blob',
2577 description: 'The picture of the playlist.',
2578 accept: ['image/png', 'image/jpeg'],
2579 maxSize: 2000000,
2580 },
2581 tracks: {
2582 type: 'array',
2583 description: 'The tracks in the playlist.',
2584 items: {
2585 type: 'ref',
2586 ref: 'lex:app.rocksky.song#record',
2587 },
2588 },
2589 createdAt: {
2590 type: 'string',
2591 description: 'The date the playlist was created.',
2592 format: 'datetime',
2593 },
2594 spotifyLink: {
2595 type: 'string',
2596 description: 'The Spotify link of the playlist.',
2597 },
2598 tidalLink: {
2599 type: 'string',
2600 description: 'The Tidal link of the playlist.',
2601 },
2602 youtubeLink: {
2603 type: 'string',
2604 description: 'The YouTube link of the playlist.',
2605 },
2606 appleMusicLink: {
2607 type: 'string',
2608 description: 'The Apple Music link of the playlist.',
2609 },
2610 },
2611 },
2612 },
2613 },
2614 },
2615 AppRockskyPlaylistRemovePlaylist: {
2616 lexicon: 1,
2617 id: 'app.rocksky.playlist.removePlaylist',
2618 defs: {
2619 main: {
2620 type: 'procedure',
2621 description: 'Remove a playlist',
2622 parameters: {
2623 type: 'params',
2624 required: ['uri'],
2625 properties: {
2626 uri: {
2627 type: 'string',
2628 description: 'The URI of the playlist to remove',
2629 format: 'at-uri',
2630 },
2631 },
2632 },
2633 },
2634 },
2635 },
2636 AppRockskyPlaylistRemoveTrack: {
2637 lexicon: 1,
2638 id: 'app.rocksky.playlist.removeTrack',
2639 defs: {
2640 main: {
2641 type: 'procedure',
2642 description: 'Remove a track from a playlist',
2643 parameters: {
2644 type: 'params',
2645 required: ['uri', 'position'],
2646 properties: {
2647 uri: {
2648 type: 'string',
2649 description: 'The URI of the playlist to remove the track from',
2650 format: 'at-uri',
2651 },
2652 position: {
2653 type: 'integer',
2654 description:
2655 'The position of the track to remove in the playlist',
2656 },
2657 },
2658 },
2659 },
2660 },
2661 },
2662 AppRockskyPlaylistStartPlaylist: {
2663 lexicon: 1,
2664 id: 'app.rocksky.playlist.startPlaylist',
2665 defs: {
2666 main: {
2667 type: 'procedure',
2668 description: 'Start a playlist',
2669 parameters: {
2670 type: 'params',
2671 required: ['uri'],
2672 properties: {
2673 uri: {
2674 type: 'string',
2675 description: 'The URI of the playlist to start',
2676 format: 'at-uri',
2677 },
2678 shuffle: {
2679 type: 'boolean',
2680 description: 'Whether to shuffle the playlist when starting it',
2681 },
2682 position: {
2683 type: 'integer',
2684 description:
2685 'The position in the playlist to start from, if not specified, starts from the beginning',
2686 },
2687 },
2688 },
2689 },
2690 },
2691 },
2692 AppRockskyRadioDefs: {
2693 lexicon: 1,
2694 id: 'app.rocksky.radio.defs',
2695 defs: {
2696 radioViewBasic: {
2697 type: 'object',
2698 properties: {
2699 id: {
2700 type: 'string',
2701 description: 'The unique identifier of the radio.',
2702 },
2703 name: {
2704 type: 'string',
2705 description: 'The name of the radio.',
2706 },
2707 description: {
2708 type: 'string',
2709 description: 'A brief description of the radio.',
2710 },
2711 createdAt: {
2712 type: 'string',
2713 description: 'The date and time when the radio was created.',
2714 format: 'datetime',
2715 },
2716 },
2717 },
2718 radioViewDetailed: {
2719 type: 'object',
2720 properties: {
2721 id: {
2722 type: 'string',
2723 description: 'The unique identifier of the radio.',
2724 },
2725 name: {
2726 type: 'string',
2727 description: 'The name of the radio.',
2728 },
2729 description: {
2730 type: 'string',
2731 description: 'A brief description of the radio.',
2732 },
2733 website: {
2734 type: 'string',
2735 description: 'The website of the radio.',
2736 format: 'uri',
2737 },
2738 url: {
2739 type: 'string',
2740 description: 'The streaming URL of the radio.',
2741 format: 'uri',
2742 },
2743 genre: {
2744 type: 'string',
2745 description: 'The genre of the radio.',
2746 },
2747 logo: {
2748 type: 'string',
2749 description: 'The logo of the radio station.',
2750 },
2751 createdAt: {
2752 type: 'string',
2753 description: 'The date and time when the radio was created.',
2754 format: 'datetime',
2755 },
2756 },
2757 },
2758 },
2759 },
2760 AppRockskyRadio: {
2761 lexicon: 1,
2762 id: 'app.rocksky.radio',
2763 defs: {
2764 main: {
2765 type: 'record',
2766 description: 'A declaration of a radio station.',
2767 key: 'tid',
2768 record: {
2769 type: 'object',
2770 required: ['name', 'url', 'createdAt'],
2771 properties: {
2772 name: {
2773 type: 'string',
2774 description: 'The name of the radio station.',
2775 minLength: 1,
2776 maxLength: 512,
2777 },
2778 url: {
2779 type: 'string',
2780 description: 'The URL of the radio station.',
2781 format: 'uri',
2782 },
2783 description: {
2784 type: 'string',
2785 description: 'A description of the radio station.',
2786 minLength: 1,
2787 maxLength: 1000,
2788 },
2789 genre: {
2790 type: 'string',
2791 description: 'The genre of the radio station.',
2792 minLength: 1,
2793 maxLength: 256,
2794 },
2795 logo: {
2796 type: 'blob',
2797 description: 'The logo of the radio station.',
2798 accept: ['image/png', 'image/jpeg'],
2799 maxSize: 2000000,
2800 },
2801 website: {
2802 type: 'string',
2803 description: 'The website of the radio station.',
2804 format: 'uri',
2805 },
2806 createdAt: {
2807 type: 'string',
2808 description: 'The date when the radio station was created.',
2809 format: 'datetime',
2810 },
2811 },
2812 },
2813 },
2814 },
2815 },
2816 AppRockskyScrobbleCreateScrobble: {
2817 lexicon: 1,
2818 id: 'app.rocksky.scrobble.createScrobble',
2819 defs: {
2820 main: {
2821 type: 'procedure',
2822 description: 'Create a new scrobble',
2823 input: {
2824 encoding: 'application/json',
2825 schema: {
2826 type: 'object',
2827 required: ['title', 'artist'],
2828 properties: {
2829 title: {
2830 type: 'string',
2831 description: 'The title of the track being scrobbled',
2832 },
2833 artist: {
2834 type: 'string',
2835 description: 'The artist of the track being scrobbled',
2836 },
2837 album: {
2838 type: 'string',
2839 description: 'The album of the track being scrobbled',
2840 },
2841 duration: {
2842 type: 'integer',
2843 description: 'The duration of the track in seconds',
2844 },
2845 mbId: {
2846 type: 'string',
2847 description: 'The MusicBrainz ID of the track, if available',
2848 },
2849 albumArt: {
2850 type: 'string',
2851 description: 'The URL of the album art for the track',
2852 format: 'uri',
2853 },
2854 trackNumber: {
2855 type: 'integer',
2856 description: 'The track number of the track in the album',
2857 },
2858 releaseDate: {
2859 type: 'string',
2860 description:
2861 'The release date of the track, formatted as YYYY-MM-DD',
2862 },
2863 year: {
2864 type: 'integer',
2865 description: 'The year the track was released',
2866 },
2867 discNumber: {
2868 type: 'integer',
2869 description:
2870 'The disc number of the track in the album, if applicable',
2871 },
2872 lyrics: {
2873 type: 'string',
2874 description: 'The lyrics of the track, if available',
2875 },
2876 composer: {
2877 type: 'string',
2878 description: 'The composer of the track, if available',
2879 },
2880 copyrightMessage: {
2881 type: 'string',
2882 description:
2883 'The copyright message for the track, if available',
2884 },
2885 label: {
2886 type: 'string',
2887 description: 'The record label of the track, if available',
2888 },
2889 artistPicture: {
2890 type: 'string',
2891 description: "The URL of the artist's picture, if available",
2892 format: 'uri',
2893 },
2894 spotifyLink: {
2895 type: 'string',
2896 description: 'The Spotify link for the track, if available',
2897 format: 'uri',
2898 },
2899 lastfmLink: {
2900 type: 'string',
2901 description: 'The Last.fm link for the track, if available',
2902 format: 'uri',
2903 },
2904 tidalLink: {
2905 type: 'string',
2906 description: 'The Tidal link for the track, if available',
2907 format: 'uri',
2908 },
2909 appleMusicLink: {
2910 type: 'string',
2911 description: 'The Apple Music link for the track, if available',
2912 format: 'uri',
2913 },
2914 youtubeLink: {
2915 type: 'string',
2916 description: 'The Youtube link for the track, if available',
2917 format: 'uri',
2918 },
2919 deezerLink: {
2920 type: 'string',
2921 description: 'The Deezer link for the track, if available',
2922 format: 'uri',
2923 },
2924 timestamp: {
2925 type: 'integer',
2926 description:
2927 'The timestamp of the scrobble in milliseconds since epoch',
2928 },
2929 },
2930 },
2931 },
2932 output: {
2933 encoding: 'application/json',
2934 schema: {
2935 type: 'ref',
2936 ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
2937 },
2938 },
2939 },
2940 },
2941 },
2942 AppRockskyScrobbleDefs: {
2943 lexicon: 1,
2944 id: 'app.rocksky.scrobble.defs',
2945 defs: {
2946 scrobbleViewBasic: {
2947 type: 'object',
2948 properties: {
2949 id: {
2950 type: 'string',
2951 description: 'The unique identifier of the scrobble.',
2952 },
2953 user: {
2954 type: 'string',
2955 description: 'The handle of the user who created the scrobble.',
2956 },
2957 userDisplayName: {
2958 type: 'string',
2959 description:
2960 'The display name of the user who created the scrobble.',
2961 },
2962 userAvatar: {
2963 type: 'string',
2964 description: 'The avatar URL of the user who created the scrobble.',
2965 format: 'uri',
2966 },
2967 title: {
2968 type: 'string',
2969 description: 'The title of the scrobble.',
2970 },
2971 artist: {
2972 type: 'string',
2973 description: 'The artist of the song.',
2974 },
2975 artistUri: {
2976 type: 'string',
2977 description: 'The URI of the artist.',
2978 format: 'at-uri',
2979 },
2980 album: {
2981 type: 'string',
2982 description: 'The album of the song.',
2983 },
2984 albumUri: {
2985 type: 'string',
2986 description: 'The URI of the album.',
2987 format: 'at-uri',
2988 },
2989 cover: {
2990 type: 'string',
2991 description: 'The album art URL of the song.',
2992 format: 'uri',
2993 },
2994 date: {
2995 type: 'string',
2996 description: 'The timestamp when the scrobble was created.',
2997 format: 'datetime',
2998 },
2999 uri: {
3000 type: 'string',
3001 description: 'The URI of the scrobble.',
3002 format: 'uri',
3003 },
3004 sha256: {
3005 type: 'string',
3006 description: 'The SHA256 hash of the scrobble data.',
3007 },
3008 },
3009 },
3010 scrobbleViewDetailed: {
3011 type: 'object',
3012 properties: {
3013 id: {
3014 type: 'string',
3015 description: 'The unique identifier of the scrobble.',
3016 },
3017 user: {
3018 type: 'string',
3019 description: 'The handle of the user who created the scrobble.',
3020 },
3021 title: {
3022 type: 'string',
3023 description: 'The title of the scrobble.',
3024 },
3025 artist: {
3026 type: 'string',
3027 description: 'The artist of the song.',
3028 },
3029 artistUri: {
3030 type: 'string',
3031 description: 'The URI of the artist.',
3032 format: 'at-uri',
3033 },
3034 album: {
3035 type: 'string',
3036 description: 'The album of the song.',
3037 },
3038 albumUri: {
3039 type: 'string',
3040 description: 'The URI of the album.',
3041 format: 'at-uri',
3042 },
3043 cover: {
3044 type: 'string',
3045 description: 'The album art URL of the song.',
3046 format: 'uri',
3047 },
3048 date: {
3049 type: 'string',
3050 description: 'The timestamp when the scrobble was created.',
3051 format: 'datetime',
3052 },
3053 uri: {
3054 type: 'string',
3055 description: 'The URI of the scrobble.',
3056 format: 'uri',
3057 },
3058 sha256: {
3059 type: 'string',
3060 description: 'The SHA256 hash of the scrobble data.',
3061 },
3062 listeners: {
3063 type: 'integer',
3064 description: 'The number of listeners',
3065 },
3066 scrobbles: {
3067 type: 'integer',
3068 description: 'The number of scrobbles for this song',
3069 },
3070 },
3071 },
3072 },
3073 },
3074 AppRockskyScrobbleGetScrobble: {
3075 lexicon: 1,
3076 id: 'app.rocksky.scrobble.getScrobble',
3077 defs: {
3078 main: {
3079 type: 'query',
3080 description: 'Get a scrobble by its unique identifier',
3081 parameters: {
3082 type: 'params',
3083 required: ['uri'],
3084 properties: {
3085 uri: {
3086 type: 'string',
3087 description: 'The unique identifier of the scrobble',
3088 format: 'at-uri',
3089 },
3090 },
3091 },
3092 output: {
3093 encoding: 'application/json',
3094 schema: {
3095 type: 'ref',
3096 ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewDetailed',
3097 },
3098 },
3099 },
3100 },
3101 },
3102 AppRockskyScrobbleGetScrobbles: {
3103 lexicon: 1,
3104 id: 'app.rocksky.scrobble.getScrobbles',
3105 defs: {
3106 main: {
3107 type: 'query',
3108 description: 'Get scrobbles all scrobbles',
3109 parameters: {
3110 type: 'params',
3111 properties: {
3112 did: {
3113 type: 'string',
3114 description: 'The DID or handle of the actor',
3115 format: 'at-identifier',
3116 },
3117 limit: {
3118 type: 'integer',
3119 description: 'The maximum number of scrobbles to return',
3120 minimum: 1,
3121 },
3122 offset: {
3123 type: 'integer',
3124 description: 'The offset for pagination',
3125 minimum: 0,
3126 },
3127 },
3128 },
3129 output: {
3130 encoding: 'application/json',
3131 schema: {
3132 type: 'object',
3133 properties: {
3134 scrobbles: {
3135 type: 'array',
3136 items: {
3137 type: 'ref',
3138 ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
3139 },
3140 },
3141 },
3142 },
3143 },
3144 },
3145 },
3146 },
3147 AppRockskyScrobble: {
3148 lexicon: 1,
3149 id: 'app.rocksky.scrobble',
3150 defs: {
3151 main: {
3152 type: 'record',
3153 description: 'A declaration of a scrobble.',
3154 key: 'tid',
3155 record: {
3156 type: 'object',
3157 required: [
3158 'title',
3159 'artist',
3160 'album',
3161 'albumArtist',
3162 'duration',
3163 'createdAt',
3164 ],
3165 properties: {
3166 title: {
3167 type: 'string',
3168 description: 'The title of the song.',
3169 minLength: 1,
3170 maxLength: 512,
3171 },
3172 artist: {
3173 type: 'string',
3174 description: 'The artist of the song.',
3175 minLength: 1,
3176 maxLength: 256,
3177 },
3178 albumArtist: {
3179 type: 'string',
3180 description: 'The album artist of the song.',
3181 minLength: 1,
3182 maxLength: 256,
3183 },
3184 album: {
3185 type: 'string',
3186 description: 'The album of the song.',
3187 minLength: 1,
3188 maxLength: 256,
3189 },
3190 duration: {
3191 type: 'integer',
3192 description: 'The duration of the song in seconds.',
3193 minimum: 1,
3194 },
3195 trackNumber: {
3196 type: 'integer',
3197 description: 'The track number of the song in the album.',
3198 minimum: 1,
3199 },
3200 discNumber: {
3201 type: 'integer',
3202 description: 'The disc number of the song in the album.',
3203 minimum: 1,
3204 },
3205 releaseDate: {
3206 type: 'string',
3207 description: 'The release date of the song.',
3208 format: 'datetime',
3209 },
3210 year: {
3211 type: 'integer',
3212 description: 'The year the song was released.',
3213 },
3214 genre: {
3215 type: 'string',
3216 description: 'The genre of the song.',
3217 maxLength: 256,
3218 },
3219 tags: {
3220 type: 'array',
3221 description: 'The tags of the song.',
3222 items: {
3223 type: 'string',
3224 minLength: 1,
3225 maxLength: 256,
3226 },
3227 },
3228 composer: {
3229 type: 'string',
3230 description: 'The composer of the song.',
3231 maxLength: 256,
3232 },
3233 lyrics: {
3234 type: 'string',
3235 description: 'The lyrics of the song.',
3236 maxLength: 10000,
3237 },
3238 copyrightMessage: {
3239 type: 'string',
3240 description: 'The copyright message of the song.',
3241 maxLength: 256,
3242 },
3243 wiki: {
3244 type: 'string',
3245 description: 'Informations about the song',
3246 maxLength: 10000,
3247 },
3248 albumArt: {
3249 type: 'blob',
3250 description: 'The album art of the song.',
3251 accept: ['image/png', 'image/jpeg'],
3252 maxSize: 2000000,
3253 },
3254 youtubeLink: {
3255 type: 'string',
3256 description: 'The YouTube link of the song.',
3257 format: 'uri',
3258 },
3259 spotifyLink: {
3260 type: 'string',
3261 description: 'The Spotify link of the song.',
3262 format: 'uri',
3263 },
3264 tidalLink: {
3265 type: 'string',
3266 description: 'The Tidal link of the song.',
3267 format: 'uri',
3268 },
3269 appleMusicLink: {
3270 type: 'string',
3271 description: 'The Apple Music link of the song.',
3272 format: 'uri',
3273 },
3274 createdAt: {
3275 type: 'string',
3276 description: 'The date when the song was created.',
3277 format: 'datetime',
3278 },
3279 mbid: {
3280 type: 'string',
3281 description: 'The MusicBrainz ID of the song.',
3282 },
3283 label: {
3284 type: 'string',
3285 description: 'The label of the song.',
3286 maxLength: 256,
3287 },
3288 },
3289 },
3290 },
3291 },
3292 },
3293 AppRockskyShoutCreateShout: {
3294 lexicon: 1,
3295 id: 'app.rocksky.shout.createShout',
3296 defs: {
3297 main: {
3298 type: 'procedure',
3299 description: 'Create a new shout',
3300 input: {
3301 encoding: 'application/json',
3302 schema: {
3303 type: 'object',
3304 properties: {
3305 message: {
3306 type: 'string',
3307 description: 'The content of the shout',
3308 minLength: 1,
3309 },
3310 },
3311 },
3312 },
3313 output: {
3314 encoding: 'application/json',
3315 schema: {
3316 type: 'ref',
3317 ref: 'lex:app.rocksky.shout.defs#shoutView',
3318 },
3319 },
3320 },
3321 },
3322 },
3323 AppRockskyShoutDefs: {
3324 lexicon: 1,
3325 id: 'app.rocksky.shout.defs',
3326 defs: {
3327 author: {
3328 type: 'object',
3329 properties: {
3330 id: {
3331 type: 'string',
3332 description: 'The unique identifier of the author.',
3333 },
3334 did: {
3335 type: 'string',
3336 description: 'The decentralized identifier (DID) of the author.',
3337 format: 'at-identifier',
3338 },
3339 handle: {
3340 type: 'string',
3341 description: 'The handle of the author.',
3342 format: 'at-identifier',
3343 },
3344 displayName: {
3345 type: 'string',
3346 description: 'The display name of the author.',
3347 },
3348 avatar: {
3349 type: 'string',
3350 description: "The URL of the author's avatar image.",
3351 format: 'uri',
3352 },
3353 },
3354 },
3355 shoutView: {
3356 type: 'object',
3357 properties: {
3358 id: {
3359 type: 'string',
3360 description: 'The unique identifier of the shout.',
3361 },
3362 message: {
3363 type: 'string',
3364 description: 'The content of the shout.',
3365 },
3366 parent: {
3367 type: 'string',
3368 description:
3369 'The ID of the parent shout if this is a reply, otherwise null.',
3370 },
3371 createdAt: {
3372 type: 'string',
3373 description: 'The date and time when the shout was created.',
3374 format: 'datetime',
3375 },
3376 author: {
3377 type: 'ref',
3378 description: 'The author of the shout.',
3379 ref: 'lex:app.rocksky.shout.defs#author',
3380 },
3381 },
3382 },
3383 },
3384 },
3385 AppRockskyShoutGetAlbumShouts: {
3386 lexicon: 1,
3387 id: 'app.rocksky.shout.getAlbumShouts',
3388 defs: {
3389 main: {
3390 type: 'query',
3391 description: 'Get shouts for an album',
3392 parameters: {
3393 type: 'params',
3394 required: ['uri'],
3395 properties: {
3396 uri: {
3397 type: 'string',
3398 description:
3399 'The unique identifier of the album to retrieve shouts for',
3400 format: 'at-uri',
3401 },
3402 limit: {
3403 type: 'integer',
3404 description: 'The maximum number of shouts to return',
3405 minimum: 1,
3406 },
3407 offset: {
3408 type: 'integer',
3409 description:
3410 'The number of shouts to skip before starting to collect the result set',
3411 minimum: 0,
3412 },
3413 },
3414 },
3415 output: {
3416 encoding: 'application/json',
3417 schema: {
3418 type: 'object',
3419 properties: {
3420 shouts: {
3421 type: 'array',
3422 items: {
3423 type: 'ref',
3424 ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
3425 },
3426 },
3427 },
3428 },
3429 },
3430 },
3431 },
3432 },
3433 AppRockskyShoutGetArtistShouts: {
3434 lexicon: 1,
3435 id: 'app.rocksky.shout.getArtistShouts',
3436 defs: {
3437 main: {
3438 type: 'query',
3439 description: 'Get shouts for an artist',
3440 parameters: {
3441 type: 'params',
3442 required: ['uri'],
3443 properties: {
3444 uri: {
3445 type: 'string',
3446 description: 'The URI of the artist to retrieve shouts for',
3447 format: 'at-uri',
3448 },
3449 limit: {
3450 type: 'integer',
3451 description: 'The maximum number of shouts to return',
3452 minimum: 1,
3453 },
3454 offset: {
3455 type: 'integer',
3456 description:
3457 'The number of shouts to skip before starting to collect the result set',
3458 minimum: 0,
3459 },
3460 },
3461 },
3462 output: {
3463 encoding: 'application/json',
3464 schema: {
3465 type: 'object',
3466 properties: {
3467 shouts: {
3468 type: 'array',
3469 items: {
3470 type: 'ref',
3471 ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
3472 },
3473 },
3474 },
3475 },
3476 },
3477 },
3478 },
3479 },
3480 AppRockskyShoutGetProfileShouts: {
3481 lexicon: 1,
3482 id: 'app.rocksky.shout.getProfileShouts',
3483 defs: {
3484 main: {
3485 type: 'query',
3486 description: "Get the shouts of an actor's profile",
3487 parameters: {
3488 type: 'params',
3489 required: ['did'],
3490 properties: {
3491 did: {
3492 type: 'string',
3493 description: 'The DID or handle of the actor',
3494 format: 'at-identifier',
3495 },
3496 offset: {
3497 type: 'integer',
3498 description: 'The offset for pagination',
3499 minimum: 0,
3500 },
3501 limit: {
3502 type: 'integer',
3503 description: 'The maximum number of shouts to return',
3504 minimum: 1,
3505 },
3506 },
3507 },
3508 output: {
3509 encoding: 'application/json',
3510 schema: {
3511 type: 'object',
3512 properties: {
3513 shouts: {
3514 type: 'array',
3515 items: {
3516 type: 'ref',
3517 ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
3518 },
3519 },
3520 },
3521 },
3522 },
3523 },
3524 },
3525 },
3526 AppRockskyShoutGetShoutReplies: {
3527 lexicon: 1,
3528 id: 'app.rocksky.shout.getShoutReplies',
3529 defs: {
3530 main: {
3531 type: 'query',
3532 description: 'Get replies to a shout',
3533 parameters: {
3534 type: 'params',
3535 required: ['uri'],
3536 properties: {
3537 uri: {
3538 type: 'string',
3539 description: 'The URI of the shout to retrieve replies for',
3540 format: 'at-uri',
3541 },
3542 limit: {
3543 type: 'integer',
3544 description: 'The maximum number of shouts to return',
3545 minimum: 1,
3546 },
3547 offset: {
3548 type: 'integer',
3549 description:
3550 'The number of shouts to skip before starting to collect the result set',
3551 minimum: 0,
3552 },
3553 },
3554 },
3555 output: {
3556 encoding: 'application/json',
3557 schema: {
3558 type: 'object',
3559 properties: {
3560 shouts: {
3561 type: 'array',
3562 items: {
3563 type: 'ref',
3564 ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
3565 },
3566 },
3567 },
3568 },
3569 },
3570 },
3571 },
3572 },
3573 AppRockskyShoutGetTrackShouts: {
3574 lexicon: 1,
3575 id: 'app.rocksky.shout.getTrackShouts',
3576 defs: {
3577 main: {
3578 type: 'query',
3579 description: 'Get all shouts for a specific track',
3580 parameters: {
3581 type: 'params',
3582 required: ['uri'],
3583 properties: {
3584 uri: {
3585 type: 'string',
3586 description: 'The URI of the track to retrieve shouts for',
3587 format: 'at-uri',
3588 },
3589 },
3590 },
3591 output: {
3592 encoding: 'application/json',
3593 schema: {
3594 type: 'object',
3595 properties: {
3596 shouts: {
3597 type: 'array',
3598 items: {
3599 type: 'ref',
3600 ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
3601 },
3602 },
3603 },
3604 },
3605 },
3606 },
3607 },
3608 },
3609 AppRockskyShoutRemoveShout: {
3610 lexicon: 1,
3611 id: 'app.rocksky.shout.removeShout',
3612 defs: {
3613 main: {
3614 type: 'procedure',
3615 description: 'Remove a shout by its ID',
3616 parameters: {
3617 type: 'params',
3618 required: ['id'],
3619 properties: {
3620 id: {
3621 type: 'string',
3622 description: 'The ID of the shout to be removed',
3623 },
3624 },
3625 },
3626 output: {
3627 encoding: 'application/json',
3628 schema: {
3629 type: 'ref',
3630 ref: 'lex:app.rocksky.shout.defs#shoutView',
3631 },
3632 },
3633 },
3634 },
3635 },
3636 AppRockskyShoutReplyShout: {
3637 lexicon: 1,
3638 id: 'app.rocksky.shout.replyShout',
3639 defs: {
3640 main: {
3641 type: 'procedure',
3642 description: 'Reply to a shout',
3643 input: {
3644 encoding: 'application/json',
3645 schema: {
3646 type: 'object',
3647 required: ['shoutId', 'message'],
3648 properties: {
3649 shoutId: {
3650 type: 'string',
3651 description: 'The unique identifier of the shout to reply to',
3652 },
3653 message: {
3654 type: 'string',
3655 description: 'The content of the reply',
3656 minLength: 1,
3657 },
3658 },
3659 },
3660 },
3661 output: {
3662 encoding: 'application/json',
3663 schema: {
3664 type: 'ref',
3665 ref: 'lex:app.rocksky.shout.defs#shoutView',
3666 },
3667 },
3668 },
3669 },
3670 },
3671 AppRockskyShoutReportShout: {
3672 lexicon: 1,
3673 id: 'app.rocksky.shout.reportShout',
3674 defs: {
3675 main: {
3676 type: 'procedure',
3677 description: 'Report a shout for moderation',
3678 input: {
3679 encoding: 'application/json',
3680 schema: {
3681 type: 'object',
3682 required: ['shoutId'],
3683 properties: {
3684 shoutId: {
3685 type: 'string',
3686 description: 'The unique identifier of the shout to report',
3687 },
3688 reason: {
3689 type: 'string',
3690 description: 'The reason for reporting the shout',
3691 minLength: 1,
3692 },
3693 },
3694 },
3695 },
3696 output: {
3697 encoding: 'application/json',
3698 schema: {
3699 type: 'ref',
3700 ref: 'lex:app.rocksky.shout.defs#shoutView',
3701 },
3702 },
3703 },
3704 },
3705 },
3706 AppRockskyShout: {
3707 lexicon: 1,
3708 id: 'app.rocksky.shout',
3709 defs: {
3710 main: {
3711 type: 'record',
3712 description: 'A declaration of a shout.',
3713 key: 'tid',
3714 record: {
3715 type: 'object',
3716 required: ['message', 'createdAt', 'subject'],
3717 properties: {
3718 message: {
3719 type: 'string',
3720 description: 'The message of the shout.',
3721 minLength: 1,
3722 maxLength: 1000,
3723 },
3724 createdAt: {
3725 type: 'string',
3726 description: 'The date when the shout was created.',
3727 format: 'datetime',
3728 },
3729 parent: {
3730 type: 'ref',
3731 ref: 'lex:com.atproto.repo.strongRef',
3732 },
3733 subject: {
3734 type: 'ref',
3735 ref: 'lex:com.atproto.repo.strongRef',
3736 },
3737 },
3738 },
3739 },
3740 },
3741 },
3742 AppRockskySongCreateSong: {
3743 lexicon: 1,
3744 id: 'app.rocksky.song.createSong',
3745 defs: {
3746 main: {
3747 type: 'procedure',
3748 description: 'Create a new song',
3749 input: {
3750 encoding: 'application/json',
3751 schema: {
3752 type: 'object',
3753 required: ['title', 'artist', 'album', 'albumArtist'],
3754 properties: {
3755 title: {
3756 type: 'string',
3757 description: 'The title of the song',
3758 },
3759 artist: {
3760 type: 'string',
3761 description: 'The artist of the song',
3762 },
3763 albumArtist: {
3764 type: 'string',
3765 description:
3766 'The album artist of the song, if different from the main artist',
3767 },
3768 album: {
3769 type: 'string',
3770 description: 'The album of the song, if applicable',
3771 },
3772 duration: {
3773 type: 'integer',
3774 description: 'The duration of the song in seconds',
3775 },
3776 mbId: {
3777 type: 'string',
3778 description: 'The MusicBrainz ID of the song, if available',
3779 },
3780 albumArt: {
3781 type: 'string',
3782 description: 'The URL of the album art for the song',
3783 format: 'uri',
3784 },
3785 trackNumber: {
3786 type: 'integer',
3787 description:
3788 'The track number of the song in the album, if applicable',
3789 },
3790 releaseDate: {
3791 type: 'string',
3792 description:
3793 'The release date of the song, formatted as YYYY-MM-DD',
3794 },
3795 year: {
3796 type: 'integer',
3797 description: 'The year the song was released',
3798 },
3799 discNumber: {
3800 type: 'integer',
3801 description:
3802 'The disc number of the song in the album, if applicable',
3803 },
3804 lyrics: {
3805 type: 'string',
3806 description: 'The lyrics of the song, if available',
3807 },
3808 },
3809 },
3810 },
3811 output: {
3812 encoding: 'application/json',
3813 schema: {
3814 type: 'ref',
3815 ref: 'lex:app.rocksky.song.defs#songViewDetailed',
3816 },
3817 },
3818 },
3819 },
3820 },
3821 AppRockskySongDefs: {
3822 lexicon: 1,
3823 id: 'app.rocksky.song.defs',
3824 defs: {
3825 songViewBasic: {
3826 type: 'object',
3827 properties: {
3828 id: {
3829 type: 'string',
3830 description: 'The unique identifier of the song.',
3831 },
3832 title: {
3833 type: 'string',
3834 description: 'The title of the song.',
3835 },
3836 artist: {
3837 type: 'string',
3838 description: 'The artist of the song.',
3839 },
3840 albumArtist: {
3841 type: 'string',
3842 description: 'The artist of the album the song belongs to.',
3843 },
3844 albumArt: {
3845 type: 'string',
3846 description: 'The URL of the album art image.',
3847 format: 'uri',
3848 },
3849 uri: {
3850 type: 'string',
3851 description: 'The URI of the song.',
3852 format: 'at-uri',
3853 },
3854 album: {
3855 type: 'string',
3856 description: 'The album of the song.',
3857 },
3858 duration: {
3859 type: 'integer',
3860 description: 'The duration of the song in milliseconds.',
3861 },
3862 trackNumber: {
3863 type: 'integer',
3864 description: 'The track number of the song in the album.',
3865 },
3866 discNumber: {
3867 type: 'integer',
3868 description: 'The disc number of the song in the album.',
3869 },
3870 playCount: {
3871 type: 'integer',
3872 description: 'The number of times the song has been played.',
3873 minimum: 0,
3874 },
3875 uniqueListeners: {
3876 type: 'integer',
3877 description:
3878 'The number of unique listeners who have played the song.',
3879 minimum: 0,
3880 },
3881 albumUri: {
3882 type: 'string',
3883 description: 'The URI of the album the song belongs to.',
3884 format: 'at-uri',
3885 },
3886 artistUri: {
3887 type: 'string',
3888 description: 'The URI of the artist of the song.',
3889 format: 'at-uri',
3890 },
3891 sha256: {
3892 type: 'string',
3893 description: 'The SHA256 hash of the song.',
3894 },
3895 createdAt: {
3896 type: 'string',
3897 description: 'The timestamp when the song was created.',
3898 format: 'datetime',
3899 },
3900 },
3901 },
3902 songViewDetailed: {
3903 type: 'object',
3904 properties: {
3905 id: {
3906 type: 'string',
3907 description: 'The unique identifier of the song.',
3908 },
3909 title: {
3910 type: 'string',
3911 description: 'The title of the song.',
3912 },
3913 artist: {
3914 type: 'string',
3915 description: 'The artist of the song.',
3916 },
3917 albumArtist: {
3918 type: 'string',
3919 description: 'The artist of the album the song belongs to.',
3920 },
3921 albumArt: {
3922 type: 'string',
3923 description: 'The URL of the album art image.',
3924 format: 'uri',
3925 },
3926 uri: {
3927 type: 'string',
3928 description: 'The URI of the song.',
3929 format: 'at-uri',
3930 },
3931 album: {
3932 type: 'string',
3933 description: 'The album of the song.',
3934 },
3935 duration: {
3936 type: 'integer',
3937 description: 'The duration of the song in milliseconds.',
3938 },
3939 trackNumber: {
3940 type: 'integer',
3941 description: 'The track number of the song in the album.',
3942 },
3943 discNumber: {
3944 type: 'integer',
3945 description: 'The disc number of the song in the album.',
3946 },
3947 playCount: {
3948 type: 'integer',
3949 description: 'The number of times the song has been played.',
3950 minimum: 0,
3951 },
3952 uniqueListeners: {
3953 type: 'integer',
3954 description:
3955 'The number of unique listeners who have played the song.',
3956 minimum: 0,
3957 },
3958 albumUri: {
3959 type: 'string',
3960 description: 'The URI of the album the song belongs to.',
3961 format: 'at-uri',
3962 },
3963 artistUri: {
3964 type: 'string',
3965 description: 'The URI of the artist of the song.',
3966 format: 'at-uri',
3967 },
3968 sha256: {
3969 type: 'string',
3970 description: 'The SHA256 hash of the song.',
3971 },
3972 createdAt: {
3973 type: 'string',
3974 description: 'The timestamp when the song was created.',
3975 format: 'datetime',
3976 },
3977 },
3978 },
3979 },
3980 },
3981 AppRockskySongGetSong: {
3982 lexicon: 1,
3983 id: 'app.rocksky.song.getSong',
3984 defs: {
3985 main: {
3986 type: 'query',
3987 description: 'Get a song by its uri',
3988 parameters: {
3989 type: 'params',
3990 required: ['uri'],
3991 properties: {
3992 uri: {
3993 type: 'string',
3994 description: 'The unique identifier of the song to retrieve',
3995 format: 'at-uri',
3996 },
3997 },
3998 },
3999 output: {
4000 encoding: 'application/json',
4001 schema: {
4002 type: 'ref',
4003 ref: 'lex:app.rocksky.song.defs#songViewDetailed',
4004 },
4005 },
4006 },
4007 },
4008 },
4009 AppRockskySongGetSongs: {
4010 lexicon: 1,
4011 id: 'app.rocksky.song.getSongs',
4012 defs: {
4013 main: {
4014 type: 'query',
4015 description: 'Get songs',
4016 parameters: {
4017 type: 'params',
4018 properties: {
4019 limit: {
4020 type: 'integer',
4021 description: 'The maximum number of songs to return',
4022 minimum: 1,
4023 },
4024 offset: {
4025 type: 'integer',
4026 description: 'The offset for pagination',
4027 minimum: 0,
4028 },
4029 },
4030 },
4031 output: {
4032 encoding: 'application/json',
4033 schema: {
4034 type: 'object',
4035 properties: {
4036 songs: {
4037 type: 'array',
4038 items: {
4039 type: 'ref',
4040 ref: 'lex:app.rocksky.song.defs#songViewBasic',
4041 },
4042 },
4043 },
4044 },
4045 },
4046 },
4047 },
4048 },
4049 AppRockskySong: {
4050 lexicon: 1,
4051 id: 'app.rocksky.song',
4052 defs: {
4053 main: {
4054 type: 'record',
4055 description: 'A declaration of a song.',
4056 key: 'tid',
4057 record: {
4058 type: 'object',
4059 required: [
4060 'title',
4061 'artist',
4062 'album',
4063 'albumArtist',
4064 'duration',
4065 'createdAt',
4066 ],
4067 properties: {
4068 title: {
4069 type: 'string',
4070 description: 'The title of the song.',
4071 minLength: 1,
4072 maxLength: 512,
4073 },
4074 artist: {
4075 type: 'string',
4076 description: 'The artist of the song.',
4077 minLength: 1,
4078 maxLength: 256,
4079 },
4080 albumArtist: {
4081 type: 'string',
4082 description: 'The album artist of the song.',
4083 minLength: 1,
4084 maxLength: 256,
4085 },
4086 album: {
4087 type: 'string',
4088 description: 'The album of the song.',
4089 minLength: 1,
4090 maxLength: 256,
4091 },
4092 duration: {
4093 type: 'integer',
4094 description: 'The duration of the song in seconds.',
4095 minimum: 1,
4096 },
4097 trackNumber: {
4098 type: 'integer',
4099 description: 'The track number of the song in the album.',
4100 minimum: 1,
4101 },
4102 discNumber: {
4103 type: 'integer',
4104 description: 'The disc number of the song in the album.',
4105 minimum: 1,
4106 },
4107 releaseDate: {
4108 type: 'string',
4109 description: 'The release date of the song.',
4110 format: 'datetime',
4111 },
4112 year: {
4113 type: 'integer',
4114 description: 'The year the song was released.',
4115 },
4116 genre: {
4117 type: 'string',
4118 description: 'The genre of the song.',
4119 minLength: 1,
4120 maxLength: 256,
4121 },
4122 tags: {
4123 type: 'array',
4124 description: 'The tags of the song.',
4125 items: {
4126 type: 'string',
4127 minLength: 1,
4128 maxLength: 256,
4129 },
4130 },
4131 composer: {
4132 type: 'string',
4133 description: 'The composer of the song.',
4134 maxLength: 256,
4135 },
4136 lyrics: {
4137 type: 'string',
4138 description: 'The lyrics of the song.',
4139 maxLength: 10000,
4140 },
4141 copyrightMessage: {
4142 type: 'string',
4143 description: 'The copyright message of the song.',
4144 maxLength: 256,
4145 },
4146 wiki: {
4147 type: 'string',
4148 description: 'Informations about the song',
4149 maxLength: 10000,
4150 },
4151 albumArt: {
4152 type: 'blob',
4153 description: 'The album art of the song.',
4154 accept: ['image/png', 'image/jpeg'],
4155 maxSize: 2000000,
4156 },
4157 youtubeLink: {
4158 type: 'string',
4159 description: 'The YouTube link of the song.',
4160 format: 'uri',
4161 },
4162 spotifyLink: {
4163 type: 'string',
4164 description: 'The Spotify link of the song.',
4165 format: 'uri',
4166 },
4167 tidalLink: {
4168 type: 'string',
4169 description: 'The Tidal link of the song.',
4170 format: 'uri',
4171 },
4172 appleMusicLink: {
4173 type: 'string',
4174 description: 'The Apple Music link of the song.',
4175 format: 'uri',
4176 },
4177 createdAt: {
4178 type: 'string',
4179 description: 'The date when the song was created.',
4180 format: 'datetime',
4181 },
4182 mbid: {
4183 type: 'string',
4184 description: 'The MusicBrainz ID of the song.',
4185 },
4186 label: {
4187 type: 'string',
4188 description: 'The label of the song.',
4189 maxLength: 256,
4190 },
4191 },
4192 },
4193 },
4194 },
4195 },
4196 AppRockskySpotifyDefs: {
4197 lexicon: 1,
4198 id: 'app.rocksky.spotify.defs',
4199 defs: {
4200 spotifyTrackView: {
4201 type: 'object',
4202 properties: {
4203 id: {
4204 type: 'string',
4205 description: 'The unique identifier of the Spotify track.',
4206 },
4207 name: {
4208 type: 'string',
4209 description: 'The name of the track.',
4210 },
4211 artist: {
4212 type: 'string',
4213 description: 'The name of the artist.',
4214 },
4215 album: {
4216 type: 'string',
4217 description: 'The name of the album.',
4218 },
4219 duration: {
4220 type: 'integer',
4221 description: 'The duration of the track in milliseconds.',
4222 },
4223 previewUrl: {
4224 type: 'string',
4225 description: 'A URL to a preview of the track.',
4226 },
4227 },
4228 },
4229 },
4230 },
4231 AppRockskySpotifyGetCurrentlyPlaying: {
4232 lexicon: 1,
4233 id: 'app.rocksky.spotify.getCurrentlyPlaying',
4234 defs: {
4235 main: {
4236 type: 'query',
4237 description: 'Get the currently playing track',
4238 parameters: {
4239 type: 'params',
4240 properties: {
4241 actor: {
4242 type: 'string',
4243 description:
4244 'Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.',
4245 format: 'at-identifier',
4246 },
4247 },
4248 },
4249 output: {
4250 encoding: 'application/json',
4251 schema: {
4252 type: 'ref',
4253 ref: 'lex:app.rocksky.player.defs#currentlyPlayingViewDetailed',
4254 },
4255 },
4256 },
4257 },
4258 },
4259 AppRockskySpotifyNext: {
4260 lexicon: 1,
4261 id: 'app.rocksky.spotify.next',
4262 defs: {
4263 main: {
4264 type: 'procedure',
4265 description: 'Play the next track in the queue',
4266 },
4267 },
4268 },
4269 AppRockskySpotifyPause: {
4270 lexicon: 1,
4271 id: 'app.rocksky.spotify.pause',
4272 defs: {
4273 main: {
4274 type: 'procedure',
4275 description: 'Pause the currently playing track',
4276 },
4277 },
4278 },
4279 AppRockskySpotifyPlay: {
4280 lexicon: 1,
4281 id: 'app.rocksky.spotify.play',
4282 defs: {
4283 main: {
4284 type: 'procedure',
4285 description: 'Resume playback of the currently paused track',
4286 },
4287 },
4288 },
4289 AppRockskySpotifyPrevious: {
4290 lexicon: 1,
4291 id: 'app.rocksky.spotify.previous',
4292 defs: {
4293 main: {
4294 type: 'procedure',
4295 description: 'Play the previous track in the queue',
4296 },
4297 },
4298 },
4299 AppRockskySpotifySeek: {
4300 lexicon: 1,
4301 id: 'app.rocksky.spotify.seek',
4302 defs: {
4303 main: {
4304 type: 'procedure',
4305 description:
4306 'Seek to a specific position in the currently playing track',
4307 parameters: {
4308 type: 'params',
4309 required: ['position'],
4310 properties: {
4311 position: {
4312 type: 'integer',
4313 description: 'The position in seconds to seek to',
4314 },
4315 },
4316 },
4317 },
4318 },
4319 },
4320 AppRockskyStatsDefs: {
4321 lexicon: 1,
4322 id: 'app.rocksky.stats.defs',
4323 defs: {
4324 statsView: {
4325 type: 'object',
4326 properties: {
4327 scrobbles: {
4328 type: 'integer',
4329 description: 'The total number of scrobbles.',
4330 },
4331 artists: {
4332 type: 'integer',
4333 description: 'The total number of unique artists scrobbled.',
4334 },
4335 lovedTracks: {
4336 type: 'integer',
4337 description: 'The total number of tracks marked as loved.',
4338 },
4339 albums: {
4340 type: 'integer',
4341 description: 'The total number of unique albums scrobbled.',
4342 },
4343 tracks: {
4344 type: 'integer',
4345 description: 'The total number of unique tracks scrobbled.',
4346 },
4347 },
4348 },
4349 },
4350 },
4351 AppRockskyStatsGetStats: {
4352 lexicon: 1,
4353 id: 'app.rocksky.stats.getStats',
4354 defs: {
4355 main: {
4356 type: 'query',
4357 parameters: {
4358 type: 'params',
4359 required: ['did'],
4360 properties: {
4361 did: {
4362 type: 'string',
4363 description: 'The DID or handle of the user to get stats for.',
4364 format: 'at-identifier',
4365 },
4366 },
4367 },
4368 output: {
4369 encoding: 'application/json',
4370 schema: {
4371 type: 'ref',
4372 ref: 'lex:app.rocksky.stats.defs#statsView',
4373 },
4374 },
4375 },
4376 },
4377 },
4378 ComAtprotoRepoStrongRef: {
4379 lexicon: 1,
4380 id: 'com.atproto.repo.strongRef',
4381 description: 'A URI with a content-hash fingerprint.',
4382 defs: {
4383 main: {
4384 type: 'object',
4385 required: ['uri', 'cid'],
4386 properties: {
4387 uri: {
4388 type: 'string',
4389 format: 'at-uri',
4390 },
4391 cid: {
4392 type: 'string',
4393 format: 'cid',
4394 },
4395 },
4396 },
4397 },
4398 },
4399} as const satisfies Record<string, LexiconDoc>
4400
4401export const schemas = Object.values(schemaDict)
4402export const lexicons: Lexicons = new Lexicons(schemas)
4403export const ids = {
4404 AppRockskyActorDefs: 'app.rocksky.actor.defs',
4405 AppRockskyActorGetActorAlbums: 'app.rocksky.actor.getActorAlbums',
4406 AppRockskyActorGetActorArtists: 'app.rocksky.actor.getActorArtists',
4407 AppRockskyActorGetActorLovedSongs: 'app.rocksky.actor.getActorLovedSongs',
4408 AppRockskyActorGetActorPlaylists: 'app.rocksky.actor.getActorPlaylists',
4409 AppRockskyActorGetActorScrobbles: 'app.rocksky.actor.getActorScrobbles',
4410 AppRockskyActorGetActorSongs: 'app.rocksky.actor.getActorSongs',
4411 AppRockskyActorGetProfile: 'app.rocksky.actor.getProfile',
4412 AppBskyActorProfile: 'app.bsky.actor.profile',
4413 AppRockskyAlbum: 'app.rocksky.album',
4414 AppRockskyAlbumDefs: 'app.rocksky.album.defs',
4415 AppRockskyAlbumGetAlbum: 'app.rocksky.album.getAlbum',
4416 AppRockskyAlbumGetAlbums: 'app.rocksky.album.getAlbums',
4417 AppRockskyAlbumGetAlbumTracks: 'app.rocksky.album.getAlbumTracks',
4418 AppRockskyApikeyCreateApikey: 'app.rocksky.apikey.createApikey',
4419 AppRockskyApikeyDefs: 'app.rocksky.apikey.defs',
4420 AppRockskyApikeysDefs: 'app.rocksky.apikeys.defs',
4421 AppRockskyApikeyGetApikeys: 'app.rocksky.apikey.getApikeys',
4422 AppRockskyApikeyRemoveApikey: 'app.rocksky.apikey.removeApikey',
4423 AppRockskyApikeyUpdateApikey: 'app.rocksky.apikey.updateApikey',
4424 AppRockskyArtist: 'app.rocksky.artist',
4425 AppRockskyArtistDefs: 'app.rocksky.artist.defs',
4426 AppRockskyArtistGetArtistAlbums: 'app.rocksky.artist.getArtistAlbums',
4427 AppRockskyArtistGetArtist: 'app.rocksky.artist.getArtist',
4428 AppRockskyArtistGetArtistListeners: 'app.rocksky.artist.getArtistListeners',
4429 AppRockskyArtistGetArtists: 'app.rocksky.artist.getArtists',
4430 AppRockskyArtistGetArtistTracks: 'app.rocksky.artist.getArtistTracks',
4431 AppRockskyChartsDefs: 'app.rocksky.charts.defs',
4432 AppRockskyChartsGetScrobblesChart: 'app.rocksky.charts.getScrobblesChart',
4433 AppRockskyDropboxDefs: 'app.rocksky.dropbox.defs',
4434 AppRockskyDropboxDownloadFile: 'app.rocksky.dropbox.downloadFile',
4435 AppRockskyDropboxGetFiles: 'app.rocksky.dropbox.getFiles',
4436 AppRockskyDropboxGetMetadata: 'app.rocksky.dropbox.getMetadata',
4437 AppRockskyDropboxGetTemporaryLink: 'app.rocksky.dropbox.getTemporaryLink',
4438 AppRockskyFeedDefs: 'app.rocksky.feed.defs',
4439 AppRockskyFeedGetNowPlayings: 'app.rocksky.feed.getNowPlayings',
4440 AppRockskyFeedSearch: 'app.rocksky.feed.search',
4441 AppRockskyGoogledriveDefs: 'app.rocksky.googledrive.defs',
4442 AppRockskyGoogledriveDownloadFile: 'app.rocksky.googledrive.downloadFile',
4443 AppRockskyGoogledriveGetFile: 'app.rocksky.googledrive.getFile',
4444 AppRockskyGoogledriveGetFiles: 'app.rocksky.googledrive.getFiles',
4445 AppRockskyLikeDislikeShout: 'app.rocksky.like.dislikeShout',
4446 AppRockskyLikeDislikeSong: 'app.rocksky.like.dislikeSong',
4447 AppRockskyLike: 'app.rocksky.like',
4448 AppRockskyLikeLikeShout: 'app.rocksky.like.likeShout',
4449 AppRockskyLikeLikeSong: 'app.rocksky.like.likeSong',
4450 AppRockskyPlayerAddDirectoryToQueue: 'app.rocksky.player.addDirectoryToQueue',
4451 AppRockskyPlayerAddItemsToQueue: 'app.rocksky.player.addItemsToQueue',
4452 AppRockskyPlayerDefs: 'app.rocksky.player.defs',
4453 AppRockskyPlayerGetCurrentlyPlaying: 'app.rocksky.player.getCurrentlyPlaying',
4454 AppRockskyPlayerGetPlaybackQueue: 'app.rocksky.player.getPlaybackQueue',
4455 AppRockskyPlayerNext: 'app.rocksky.player.next',
4456 AppRockskyPlayerPause: 'app.rocksky.player.pause',
4457 AppRockskyPlayerPlayDirectory: 'app.rocksky.player.playDirectory',
4458 AppRockskyPlayerPlayFile: 'app.rocksky.player.playFile',
4459 AppRockskyPlayerPlay: 'app.rocksky.player.play',
4460 AppRockskyPlayerPrevious: 'app.rocksky.player.previous',
4461 AppRockskyPlayerSeek: 'app.rocksky.player.seek',
4462 AppRockskyPlaylistCreatePlaylist: 'app.rocksky.playlist.createPlaylist',
4463 AppRockskyPlaylistDefs: 'app.rocksky.playlist.defs',
4464 AppRockskyPlaylistGetPlaylist: 'app.rocksky.playlist.getPlaylist',
4465 AppRockskyPlaylistGetPlaylists: 'app.rocksky.playlist.getPlaylists',
4466 AppRockskyPlaylistInsertDirectory: 'app.rocksky.playlist.insertDirectory',
4467 AppRockskyPlaylistInsertFiles: 'app.rocksky.playlist.insertFiles',
4468 AppRockskyPlaylist: 'app.rocksky.playlist',
4469 AppRockskyPlaylistRemovePlaylist: 'app.rocksky.playlist.removePlaylist',
4470 AppRockskyPlaylistRemoveTrack: 'app.rocksky.playlist.removeTrack',
4471 AppRockskyPlaylistStartPlaylist: 'app.rocksky.playlist.startPlaylist',
4472 AppRockskyRadioDefs: 'app.rocksky.radio.defs',
4473 AppRockskyRadio: 'app.rocksky.radio',
4474 AppRockskyScrobbleCreateScrobble: 'app.rocksky.scrobble.createScrobble',
4475 AppRockskyScrobbleDefs: 'app.rocksky.scrobble.defs',
4476 AppRockskyScrobbleGetScrobble: 'app.rocksky.scrobble.getScrobble',
4477 AppRockskyScrobbleGetScrobbles: 'app.rocksky.scrobble.getScrobbles',
4478 AppRockskyScrobble: 'app.rocksky.scrobble',
4479 AppRockskyShoutCreateShout: 'app.rocksky.shout.createShout',
4480 AppRockskyShoutDefs: 'app.rocksky.shout.defs',
4481 AppRockskyShoutGetAlbumShouts: 'app.rocksky.shout.getAlbumShouts',
4482 AppRockskyShoutGetArtistShouts: 'app.rocksky.shout.getArtistShouts',
4483 AppRockskyShoutGetProfileShouts: 'app.rocksky.shout.getProfileShouts',
4484 AppRockskyShoutGetShoutReplies: 'app.rocksky.shout.getShoutReplies',
4485 AppRockskyShoutGetTrackShouts: 'app.rocksky.shout.getTrackShouts',
4486 AppRockskyShoutRemoveShout: 'app.rocksky.shout.removeShout',
4487 AppRockskyShoutReplyShout: 'app.rocksky.shout.replyShout',
4488 AppRockskyShoutReportShout: 'app.rocksky.shout.reportShout',
4489 AppRockskyShout: 'app.rocksky.shout',
4490 AppRockskySongCreateSong: 'app.rocksky.song.createSong',
4491 AppRockskySongDefs: 'app.rocksky.song.defs',
4492 AppRockskySongGetSong: 'app.rocksky.song.getSong',
4493 AppRockskySongGetSongs: 'app.rocksky.song.getSongs',
4494 AppRockskySong: 'app.rocksky.song',
4495 AppRockskySpotifyDefs: 'app.rocksky.spotify.defs',
4496 AppRockskySpotifyGetCurrentlyPlaying:
4497 'app.rocksky.spotify.getCurrentlyPlaying',
4498 AppRockskySpotifyNext: 'app.rocksky.spotify.next',
4499 AppRockskySpotifyPause: 'app.rocksky.spotify.pause',
4500 AppRockskySpotifyPlay: 'app.rocksky.spotify.play',
4501 AppRockskySpotifyPrevious: 'app.rocksky.spotify.previous',
4502 AppRockskySpotifySeek: 'app.rocksky.spotify.seek',
4503 AppRockskyStatsDefs: 'app.rocksky.stats.defs',
4504 AppRockskyStatsGetStats: 'app.rocksky.stats.getStats',
4505 ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef',
4506}