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