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