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