Add a "genre" query parameter to getScrobblesChart and propagate it through lexicon definitions, generated TypeScript types, XRPC handler logic, and the analytics backend (GetScrobblesPerDayParams).
···2727 "type": "string",
2828 "description": "The URI of the track to filter by",
2929 "format": "at-uri"
3030+ },
3131+ "genre": {
3232+ "type": "string",
3333+ "description": "The genre to filter by"
3034 }
3135 }
3236 },
+4
apps/api/pkl/defs/charts/getScrobblesChart.pkl
···2727 description = "The URI of the track to filter by"
2828 format = "at-uri"
2929 }
3030+3131+ ["genre"] = new StringType {
3232+ description = "The genre to filter by"
3333+ }
3034 }
3135 }
3236 output {
+414-414
apps/api/src/lexicon/index.ts
···77 type Options as XrpcOptions,
88 type AuthVerifier,
99 type StreamAuthVerifier,
1010-} from '@atproto/xrpc-server'
1111-import { schemas } from './lexicons'
1212-import type * as FmTealAlphaActorGetProfile from './types/fm/teal/alpha/actor/getProfile'
1313-import type * as FmTealAlphaActorGetProfiles from './types/fm/teal/alpha/actor/getProfiles'
1414-import type * as FmTealAlphaActorSearchActors from './types/fm/teal/alpha/actor/searchActors'
1515-import type * as FmTealAlphaFeedGetActorFeed from './types/fm/teal/alpha/feed/getActorFeed'
1616-import type * as FmTealAlphaFeedGetPlay from './types/fm/teal/alpha/feed/getPlay'
1717-import type * as AppRockskyActorGetActorAlbums from './types/app/rocksky/actor/getActorAlbums'
1818-import type * as AppRockskyActorGetActorArtists from './types/app/rocksky/actor/getActorArtists'
1919-import type * as AppRockskyActorGetActorCompatibility from './types/app/rocksky/actor/getActorCompatibility'
2020-import type * as AppRockskyActorGetActorLovedSongs from './types/app/rocksky/actor/getActorLovedSongs'
2121-import type * as AppRockskyActorGetActorNeighbours from './types/app/rocksky/actor/getActorNeighbours'
2222-import type * as AppRockskyActorGetActorPlaylists from './types/app/rocksky/actor/getActorPlaylists'
2323-import type * as AppRockskyActorGetActorScrobbles from './types/app/rocksky/actor/getActorScrobbles'
2424-import type * as AppRockskyActorGetActorSongs from './types/app/rocksky/actor/getActorSongs'
2525-import type * as AppRockskyActorGetProfile from './types/app/rocksky/actor/getProfile'
2626-import type * as AppRockskyAlbumGetAlbum from './types/app/rocksky/album/getAlbum'
2727-import type * as AppRockskyAlbumGetAlbums from './types/app/rocksky/album/getAlbums'
2828-import type * as AppRockskyAlbumGetAlbumTracks from './types/app/rocksky/album/getAlbumTracks'
2929-import type * as AppRockskyApikeyCreateApikey from './types/app/rocksky/apikey/createApikey'
3030-import type * as AppRockskyApikeyGetApikeys from './types/app/rocksky/apikey/getApikeys'
3131-import type * as AppRockskyApikeyRemoveApikey from './types/app/rocksky/apikey/removeApikey'
3232-import type * as AppRockskyApikeyUpdateApikey from './types/app/rocksky/apikey/updateApikey'
3333-import type * as AppRockskyArtistGetArtist from './types/app/rocksky/artist/getArtist'
3434-import type * as AppRockskyArtistGetArtistAlbums from './types/app/rocksky/artist/getArtistAlbums'
3535-import type * as AppRockskyArtistGetArtistListeners from './types/app/rocksky/artist/getArtistListeners'
3636-import type * as AppRockskyArtistGetArtists from './types/app/rocksky/artist/getArtists'
3737-import type * as AppRockskyArtistGetArtistTracks from './types/app/rocksky/artist/getArtistTracks'
3838-import type * as AppRockskyChartsGetScrobblesChart from './types/app/rocksky/charts/getScrobblesChart'
3939-import type * as AppRockskyDropboxDownloadFile from './types/app/rocksky/dropbox/downloadFile'
4040-import type * as AppRockskyDropboxGetFiles from './types/app/rocksky/dropbox/getFiles'
4141-import type * as AppRockskyDropboxGetMetadata from './types/app/rocksky/dropbox/getMetadata'
4242-import type * as AppRockskyDropboxGetTemporaryLink from './types/app/rocksky/dropbox/getTemporaryLink'
4343-import type * as AppRockskyFeedDescribeFeedGenerator from './types/app/rocksky/feed/describeFeedGenerator'
4444-import type * as AppRockskyFeedGetFeed from './types/app/rocksky/feed/getFeed'
4545-import type * as AppRockskyFeedGetFeedGenerator from './types/app/rocksky/feed/getFeedGenerator'
4646-import type * as AppRockskyFeedGetFeedGenerators from './types/app/rocksky/feed/getFeedGenerators'
4747-import type * as AppRockskyFeedGetFeedSkeleton from './types/app/rocksky/feed/getFeedSkeleton'
4848-import type * as AppRockskyFeedGetNowPlayings from './types/app/rocksky/feed/getNowPlayings'
4949-import type * as AppRockskyFeedSearch from './types/app/rocksky/feed/search'
5050-import type * as AppRockskyGoogledriveDownloadFile from './types/app/rocksky/googledrive/downloadFile'
5151-import type * as AppRockskyGoogledriveGetFile from './types/app/rocksky/googledrive/getFile'
5252-import type * as AppRockskyGoogledriveGetFiles from './types/app/rocksky/googledrive/getFiles'
5353-import type * as AppRockskyGraphFollowAccount from './types/app/rocksky/graph/followAccount'
5454-import type * as AppRockskyGraphGetFollowers from './types/app/rocksky/graph/getFollowers'
5555-import type * as AppRockskyGraphGetFollows from './types/app/rocksky/graph/getFollows'
5656-import type * as AppRockskyGraphGetKnownFollowers from './types/app/rocksky/graph/getKnownFollowers'
5757-import type * as AppRockskyGraphUnfollowAccount from './types/app/rocksky/graph/unfollowAccount'
5858-import type * as AppRockskyLikeDislikeShout from './types/app/rocksky/like/dislikeShout'
5959-import type * as AppRockskyLikeDislikeSong from './types/app/rocksky/like/dislikeSong'
6060-import type * as AppRockskyLikeLikeShout from './types/app/rocksky/like/likeShout'
6161-import type * as AppRockskyLikeLikeSong from './types/app/rocksky/like/likeSong'
6262-import type * as AppRockskyPlayerAddDirectoryToQueue from './types/app/rocksky/player/addDirectoryToQueue'
6363-import type * as AppRockskyPlayerAddItemsToQueue from './types/app/rocksky/player/addItemsToQueue'
6464-import type * as AppRockskyPlayerGetCurrentlyPlaying from './types/app/rocksky/player/getCurrentlyPlaying'
6565-import type * as AppRockskyPlayerGetPlaybackQueue from './types/app/rocksky/player/getPlaybackQueue'
6666-import type * as AppRockskyPlayerNext from './types/app/rocksky/player/next'
6767-import type * as AppRockskyPlayerPause from './types/app/rocksky/player/pause'
6868-import type * as AppRockskyPlayerPlay from './types/app/rocksky/player/play'
6969-import type * as AppRockskyPlayerPlayDirectory from './types/app/rocksky/player/playDirectory'
7070-import type * as AppRockskyPlayerPlayFile from './types/app/rocksky/player/playFile'
7171-import type * as AppRockskyPlayerPrevious from './types/app/rocksky/player/previous'
7272-import type * as AppRockskyPlayerSeek from './types/app/rocksky/player/seek'
7373-import type * as AppRockskyPlaylistCreatePlaylist from './types/app/rocksky/playlist/createPlaylist'
7474-import type * as AppRockskyPlaylistGetPlaylist from './types/app/rocksky/playlist/getPlaylist'
7575-import type * as AppRockskyPlaylistGetPlaylists from './types/app/rocksky/playlist/getPlaylists'
7676-import type * as AppRockskyPlaylistInsertDirectory from './types/app/rocksky/playlist/insertDirectory'
7777-import type * as AppRockskyPlaylistInsertFiles from './types/app/rocksky/playlist/insertFiles'
7878-import type * as AppRockskyPlaylistRemovePlaylist from './types/app/rocksky/playlist/removePlaylist'
7979-import type * as AppRockskyPlaylistRemoveTrack from './types/app/rocksky/playlist/removeTrack'
8080-import type * as AppRockskyPlaylistStartPlaylist from './types/app/rocksky/playlist/startPlaylist'
8181-import type * as AppRockskyScrobbleCreateScrobble from './types/app/rocksky/scrobble/createScrobble'
8282-import type * as AppRockskyScrobbleGetScrobble from './types/app/rocksky/scrobble/getScrobble'
8383-import type * as AppRockskyScrobbleGetScrobbles from './types/app/rocksky/scrobble/getScrobbles'
8484-import type * as AppRockskyShoutCreateShout from './types/app/rocksky/shout/createShout'
8585-import type * as AppRockskyShoutGetAlbumShouts from './types/app/rocksky/shout/getAlbumShouts'
8686-import type * as AppRockskyShoutGetArtistShouts from './types/app/rocksky/shout/getArtistShouts'
8787-import type * as AppRockskyShoutGetProfileShouts from './types/app/rocksky/shout/getProfileShouts'
8888-import type * as AppRockskyShoutGetShoutReplies from './types/app/rocksky/shout/getShoutReplies'
8989-import type * as AppRockskyShoutGetTrackShouts from './types/app/rocksky/shout/getTrackShouts'
9090-import type * as AppRockskyShoutRemoveShout from './types/app/rocksky/shout/removeShout'
9191-import type * as AppRockskyShoutReplyShout from './types/app/rocksky/shout/replyShout'
9292-import type * as AppRockskyShoutReportShout from './types/app/rocksky/shout/reportShout'
9393-import type * as AppRockskySongCreateSong from './types/app/rocksky/song/createSong'
9494-import type * as AppRockskySongGetSong from './types/app/rocksky/song/getSong'
9595-import type * as AppRockskySongGetSongs from './types/app/rocksky/song/getSongs'
9696-import type * as AppRockskySongMatchSong from './types/app/rocksky/song/matchSong'
9797-import type * as AppRockskySpotifyGetCurrentlyPlaying from './types/app/rocksky/spotify/getCurrentlyPlaying'
9898-import type * as AppRockskySpotifyNext from './types/app/rocksky/spotify/next'
9999-import type * as AppRockskySpotifyPause from './types/app/rocksky/spotify/pause'
100100-import type * as AppRockskySpotifyPlay from './types/app/rocksky/spotify/play'
101101-import type * as AppRockskySpotifyPrevious from './types/app/rocksky/spotify/previous'
102102-import type * as AppRockskySpotifySeek from './types/app/rocksky/spotify/seek'
103103-import type * as AppRockskyStatsGetStats from './types/app/rocksky/stats/getStats'
1010+} from "@atproto/xrpc-server";
1111+import { schemas } from "./lexicons";
1212+import type * as FmTealAlphaActorGetProfile from "./types/fm/teal/alpha/actor/getProfile";
1313+import type * as FmTealAlphaActorGetProfiles from "./types/fm/teal/alpha/actor/getProfiles";
1414+import type * as FmTealAlphaActorSearchActors from "./types/fm/teal/alpha/actor/searchActors";
1515+import type * as FmTealAlphaFeedGetActorFeed from "./types/fm/teal/alpha/feed/getActorFeed";
1616+import type * as FmTealAlphaFeedGetPlay from "./types/fm/teal/alpha/feed/getPlay";
1717+import type * as AppRockskyActorGetActorAlbums from "./types/app/rocksky/actor/getActorAlbums";
1818+import type * as AppRockskyActorGetActorArtists from "./types/app/rocksky/actor/getActorArtists";
1919+import type * as AppRockskyActorGetActorCompatibility from "./types/app/rocksky/actor/getActorCompatibility";
2020+import type * as AppRockskyActorGetActorLovedSongs from "./types/app/rocksky/actor/getActorLovedSongs";
2121+import type * as AppRockskyActorGetActorNeighbours from "./types/app/rocksky/actor/getActorNeighbours";
2222+import type * as AppRockskyActorGetActorPlaylists from "./types/app/rocksky/actor/getActorPlaylists";
2323+import type * as AppRockskyActorGetActorScrobbles from "./types/app/rocksky/actor/getActorScrobbles";
2424+import type * as AppRockskyActorGetActorSongs from "./types/app/rocksky/actor/getActorSongs";
2525+import type * as AppRockskyActorGetProfile from "./types/app/rocksky/actor/getProfile";
2626+import type * as AppRockskyAlbumGetAlbum from "./types/app/rocksky/album/getAlbum";
2727+import type * as AppRockskyAlbumGetAlbums from "./types/app/rocksky/album/getAlbums";
2828+import type * as AppRockskyAlbumGetAlbumTracks from "./types/app/rocksky/album/getAlbumTracks";
2929+import type * as AppRockskyApikeyCreateApikey from "./types/app/rocksky/apikey/createApikey";
3030+import type * as AppRockskyApikeyGetApikeys from "./types/app/rocksky/apikey/getApikeys";
3131+import type * as AppRockskyApikeyRemoveApikey from "./types/app/rocksky/apikey/removeApikey";
3232+import type * as AppRockskyApikeyUpdateApikey from "./types/app/rocksky/apikey/updateApikey";
3333+import type * as AppRockskyArtistGetArtist from "./types/app/rocksky/artist/getArtist";
3434+import type * as AppRockskyArtistGetArtistAlbums from "./types/app/rocksky/artist/getArtistAlbums";
3535+import type * as AppRockskyArtistGetArtistListeners from "./types/app/rocksky/artist/getArtistListeners";
3636+import type * as AppRockskyArtistGetArtists from "./types/app/rocksky/artist/getArtists";
3737+import type * as AppRockskyArtistGetArtistTracks from "./types/app/rocksky/artist/getArtistTracks";
3838+import type * as AppRockskyChartsGetScrobblesChart from "./types/app/rocksky/charts/getScrobblesChart";
3939+import type * as AppRockskyDropboxDownloadFile from "./types/app/rocksky/dropbox/downloadFile";
4040+import type * as AppRockskyDropboxGetFiles from "./types/app/rocksky/dropbox/getFiles";
4141+import type * as AppRockskyDropboxGetMetadata from "./types/app/rocksky/dropbox/getMetadata";
4242+import type * as AppRockskyDropboxGetTemporaryLink from "./types/app/rocksky/dropbox/getTemporaryLink";
4343+import type * as AppRockskyFeedDescribeFeedGenerator from "./types/app/rocksky/feed/describeFeedGenerator";
4444+import type * as AppRockskyFeedGetFeed from "./types/app/rocksky/feed/getFeed";
4545+import type * as AppRockskyFeedGetFeedGenerator from "./types/app/rocksky/feed/getFeedGenerator";
4646+import type * as AppRockskyFeedGetFeedGenerators from "./types/app/rocksky/feed/getFeedGenerators";
4747+import type * as AppRockskyFeedGetFeedSkeleton from "./types/app/rocksky/feed/getFeedSkeleton";
4848+import type * as AppRockskyFeedGetNowPlayings from "./types/app/rocksky/feed/getNowPlayings";
4949+import type * as AppRockskyFeedSearch from "./types/app/rocksky/feed/search";
5050+import type * as AppRockskyGoogledriveDownloadFile from "./types/app/rocksky/googledrive/downloadFile";
5151+import type * as AppRockskyGoogledriveGetFile from "./types/app/rocksky/googledrive/getFile";
5252+import type * as AppRockskyGoogledriveGetFiles from "./types/app/rocksky/googledrive/getFiles";
5353+import type * as AppRockskyGraphFollowAccount from "./types/app/rocksky/graph/followAccount";
5454+import type * as AppRockskyGraphGetFollowers from "./types/app/rocksky/graph/getFollowers";
5555+import type * as AppRockskyGraphGetFollows from "./types/app/rocksky/graph/getFollows";
5656+import type * as AppRockskyGraphGetKnownFollowers from "./types/app/rocksky/graph/getKnownFollowers";
5757+import type * as AppRockskyGraphUnfollowAccount from "./types/app/rocksky/graph/unfollowAccount";
5858+import type * as AppRockskyLikeDislikeShout from "./types/app/rocksky/like/dislikeShout";
5959+import type * as AppRockskyLikeDislikeSong from "./types/app/rocksky/like/dislikeSong";
6060+import type * as AppRockskyLikeLikeShout from "./types/app/rocksky/like/likeShout";
6161+import type * as AppRockskyLikeLikeSong from "./types/app/rocksky/like/likeSong";
6262+import type * as AppRockskyPlayerAddDirectoryToQueue from "./types/app/rocksky/player/addDirectoryToQueue";
6363+import type * as AppRockskyPlayerAddItemsToQueue from "./types/app/rocksky/player/addItemsToQueue";
6464+import type * as AppRockskyPlayerGetCurrentlyPlaying from "./types/app/rocksky/player/getCurrentlyPlaying";
6565+import type * as AppRockskyPlayerGetPlaybackQueue from "./types/app/rocksky/player/getPlaybackQueue";
6666+import type * as AppRockskyPlayerNext from "./types/app/rocksky/player/next";
6767+import type * as AppRockskyPlayerPause from "./types/app/rocksky/player/pause";
6868+import type * as AppRockskyPlayerPlay from "./types/app/rocksky/player/play";
6969+import type * as AppRockskyPlayerPlayDirectory from "./types/app/rocksky/player/playDirectory";
7070+import type * as AppRockskyPlayerPlayFile from "./types/app/rocksky/player/playFile";
7171+import type * as AppRockskyPlayerPrevious from "./types/app/rocksky/player/previous";
7272+import type * as AppRockskyPlayerSeek from "./types/app/rocksky/player/seek";
7373+import type * as AppRockskyPlaylistCreatePlaylist from "./types/app/rocksky/playlist/createPlaylist";
7474+import type * as AppRockskyPlaylistGetPlaylist from "./types/app/rocksky/playlist/getPlaylist";
7575+import type * as AppRockskyPlaylistGetPlaylists from "./types/app/rocksky/playlist/getPlaylists";
7676+import type * as AppRockskyPlaylistInsertDirectory from "./types/app/rocksky/playlist/insertDirectory";
7777+import type * as AppRockskyPlaylistInsertFiles from "./types/app/rocksky/playlist/insertFiles";
7878+import type * as AppRockskyPlaylistRemovePlaylist from "./types/app/rocksky/playlist/removePlaylist";
7979+import type * as AppRockskyPlaylistRemoveTrack from "./types/app/rocksky/playlist/removeTrack";
8080+import type * as AppRockskyPlaylistStartPlaylist from "./types/app/rocksky/playlist/startPlaylist";
8181+import type * as AppRockskyScrobbleCreateScrobble from "./types/app/rocksky/scrobble/createScrobble";
8282+import type * as AppRockskyScrobbleGetScrobble from "./types/app/rocksky/scrobble/getScrobble";
8383+import type * as AppRockskyScrobbleGetScrobbles from "./types/app/rocksky/scrobble/getScrobbles";
8484+import type * as AppRockskyShoutCreateShout from "./types/app/rocksky/shout/createShout";
8585+import type * as AppRockskyShoutGetAlbumShouts from "./types/app/rocksky/shout/getAlbumShouts";
8686+import type * as AppRockskyShoutGetArtistShouts from "./types/app/rocksky/shout/getArtistShouts";
8787+import type * as AppRockskyShoutGetProfileShouts from "./types/app/rocksky/shout/getProfileShouts";
8888+import type * as AppRockskyShoutGetShoutReplies from "./types/app/rocksky/shout/getShoutReplies";
8989+import type * as AppRockskyShoutGetTrackShouts from "./types/app/rocksky/shout/getTrackShouts";
9090+import type * as AppRockskyShoutRemoveShout from "./types/app/rocksky/shout/removeShout";
9191+import type * as AppRockskyShoutReplyShout from "./types/app/rocksky/shout/replyShout";
9292+import type * as AppRockskyShoutReportShout from "./types/app/rocksky/shout/reportShout";
9393+import type * as AppRockskySongCreateSong from "./types/app/rocksky/song/createSong";
9494+import type * as AppRockskySongGetSong from "./types/app/rocksky/song/getSong";
9595+import type * as AppRockskySongGetSongs from "./types/app/rocksky/song/getSongs";
9696+import type * as AppRockskySongMatchSong from "./types/app/rocksky/song/matchSong";
9797+import type * as AppRockskySpotifyGetCurrentlyPlaying from "./types/app/rocksky/spotify/getCurrentlyPlaying";
9898+import type * as AppRockskySpotifyNext from "./types/app/rocksky/spotify/next";
9999+import type * as AppRockskySpotifyPause from "./types/app/rocksky/spotify/pause";
100100+import type * as AppRockskySpotifyPlay from "./types/app/rocksky/spotify/play";
101101+import type * as AppRockskySpotifyPrevious from "./types/app/rocksky/spotify/previous";
102102+import type * as AppRockskySpotifySeek from "./types/app/rocksky/spotify/seek";
103103+import type * as AppRockskyStatsGetStats from "./types/app/rocksky/stats/getStats";
104104105105export function createServer(options?: XrpcOptions): Server {
106106- return new Server(options)
106106+ return new Server(options);
107107}
108108109109export class Server {
110110- xrpc: XrpcServer
111111- fm: FmNS
112112- app: AppNS
113113- com: ComNS
110110+ xrpc: XrpcServer;
111111+ fm: FmNS;
112112+ app: AppNS;
113113+ com: ComNS;
114114115115 constructor(options?: XrpcOptions) {
116116- this.xrpc = createXrpcServer(schemas, options)
117117- this.fm = new FmNS(this)
118118- this.app = new AppNS(this)
119119- this.com = new ComNS(this)
116116+ this.xrpc = createXrpcServer(schemas, options);
117117+ this.fm = new FmNS(this);
118118+ this.app = new AppNS(this);
119119+ this.com = new ComNS(this);
120120 }
121121}
122122123123export class FmNS {
124124- _server: Server
125125- teal: FmTealNS
124124+ _server: Server;
125125+ teal: FmTealNS;
126126127127 constructor(server: Server) {
128128- this._server = server
129129- this.teal = new FmTealNS(server)
128128+ this._server = server;
129129+ this.teal = new FmTealNS(server);
130130 }
131131}
132132133133export class FmTealNS {
134134- _server: Server
135135- alpha: FmTealAlphaNS
134134+ _server: Server;
135135+ alpha: FmTealAlphaNS;
136136137137 constructor(server: Server) {
138138- this._server = server
139139- this.alpha = new FmTealAlphaNS(server)
138138+ this._server = server;
139139+ this.alpha = new FmTealAlphaNS(server);
140140 }
141141}
142142143143export class FmTealAlphaNS {
144144- _server: Server
145145- actor: FmTealAlphaActorNS
146146- feed: FmTealAlphaFeedNS
144144+ _server: Server;
145145+ actor: FmTealAlphaActorNS;
146146+ feed: FmTealAlphaFeedNS;
147147148148 constructor(server: Server) {
149149- this._server = server
150150- this.actor = new FmTealAlphaActorNS(server)
151151- this.feed = new FmTealAlphaFeedNS(server)
149149+ this._server = server;
150150+ this.actor = new FmTealAlphaActorNS(server);
151151+ this.feed = new FmTealAlphaFeedNS(server);
152152 }
153153}
154154155155export class FmTealAlphaActorNS {
156156- _server: Server
156156+ _server: Server;
157157158158 constructor(server: Server) {
159159- this._server = server
159159+ this._server = server;
160160 }
161161162162 getProfile<AV extends AuthVerifier>(
···166166 FmTealAlphaActorGetProfile.HandlerReqCtx<ExtractAuth<AV>>
167167 >,
168168 ) {
169169- const nsid = 'fm.teal.alpha.actor.getProfile' // @ts-ignore
170170- return this._server.xrpc.method(nsid, cfg)
169169+ const nsid = "fm.teal.alpha.actor.getProfile"; // @ts-ignore
170170+ return this._server.xrpc.method(nsid, cfg);
171171 }
172172173173 getProfiles<AV extends AuthVerifier>(
···177177 FmTealAlphaActorGetProfiles.HandlerReqCtx<ExtractAuth<AV>>
178178 >,
179179 ) {
180180- const nsid = 'fm.teal.alpha.actor.getProfiles' // @ts-ignore
181181- return this._server.xrpc.method(nsid, cfg)
180180+ const nsid = "fm.teal.alpha.actor.getProfiles"; // @ts-ignore
181181+ return this._server.xrpc.method(nsid, cfg);
182182 }
183183184184 searchActors<AV extends AuthVerifier>(
···188188 FmTealAlphaActorSearchActors.HandlerReqCtx<ExtractAuth<AV>>
189189 >,
190190 ) {
191191- const nsid = 'fm.teal.alpha.actor.searchActors' // @ts-ignore
192192- return this._server.xrpc.method(nsid, cfg)
191191+ const nsid = "fm.teal.alpha.actor.searchActors"; // @ts-ignore
192192+ return this._server.xrpc.method(nsid, cfg);
193193 }
194194}
195195196196export class FmTealAlphaFeedNS {
197197- _server: Server
197197+ _server: Server;
198198199199 constructor(server: Server) {
200200- this._server = server
200200+ this._server = server;
201201 }
202202203203 getActorFeed<AV extends AuthVerifier>(
···207207 FmTealAlphaFeedGetActorFeed.HandlerReqCtx<ExtractAuth<AV>>
208208 >,
209209 ) {
210210- const nsid = 'fm.teal.alpha.feed.getActorFeed' // @ts-ignore
211211- return this._server.xrpc.method(nsid, cfg)
210210+ const nsid = "fm.teal.alpha.feed.getActorFeed"; // @ts-ignore
211211+ return this._server.xrpc.method(nsid, cfg);
212212 }
213213214214 getPlay<AV extends AuthVerifier>(
···218218 FmTealAlphaFeedGetPlay.HandlerReqCtx<ExtractAuth<AV>>
219219 >,
220220 ) {
221221- const nsid = 'fm.teal.alpha.feed.getPlay' // @ts-ignore
222222- return this._server.xrpc.method(nsid, cfg)
221221+ const nsid = "fm.teal.alpha.feed.getPlay"; // @ts-ignore
222222+ return this._server.xrpc.method(nsid, cfg);
223223 }
224224}
225225226226export class AppNS {
227227- _server: Server
228228- rocksky: AppRockskyNS
229229- bsky: AppBskyNS
227227+ _server: Server;
228228+ rocksky: AppRockskyNS;
229229+ bsky: AppBskyNS;
230230231231 constructor(server: Server) {
232232- this._server = server
233233- this.rocksky = new AppRockskyNS(server)
234234- this.bsky = new AppBskyNS(server)
232232+ this._server = server;
233233+ this.rocksky = new AppRockskyNS(server);
234234+ this.bsky = new AppBskyNS(server);
235235 }
236236}
237237238238export class AppRockskyNS {
239239- _server: Server
240240- actor: AppRockskyActorNS
241241- album: AppRockskyAlbumNS
242242- apikey: AppRockskyApikeyNS
243243- artist: AppRockskyArtistNS
244244- charts: AppRockskyChartsNS
245245- dropbox: AppRockskyDropboxNS
246246- feed: AppRockskyFeedNS
247247- googledrive: AppRockskyGoogledriveNS
248248- graph: AppRockskyGraphNS
249249- like: AppRockskyLikeNS
250250- player: AppRockskyPlayerNS
251251- playlist: AppRockskyPlaylistNS
252252- scrobble: AppRockskyScrobbleNS
253253- shout: AppRockskyShoutNS
254254- song: AppRockskySongNS
255255- spotify: AppRockskySpotifyNS
256256- stats: AppRockskyStatsNS
239239+ _server: Server;
240240+ actor: AppRockskyActorNS;
241241+ album: AppRockskyAlbumNS;
242242+ apikey: AppRockskyApikeyNS;
243243+ artist: AppRockskyArtistNS;
244244+ charts: AppRockskyChartsNS;
245245+ dropbox: AppRockskyDropboxNS;
246246+ feed: AppRockskyFeedNS;
247247+ googledrive: AppRockskyGoogledriveNS;
248248+ graph: AppRockskyGraphNS;
249249+ like: AppRockskyLikeNS;
250250+ player: AppRockskyPlayerNS;
251251+ playlist: AppRockskyPlaylistNS;
252252+ scrobble: AppRockskyScrobbleNS;
253253+ shout: AppRockskyShoutNS;
254254+ song: AppRockskySongNS;
255255+ spotify: AppRockskySpotifyNS;
256256+ stats: AppRockskyStatsNS;
257257258258 constructor(server: Server) {
259259- this._server = server
260260- this.actor = new AppRockskyActorNS(server)
261261- this.album = new AppRockskyAlbumNS(server)
262262- this.apikey = new AppRockskyApikeyNS(server)
263263- this.artist = new AppRockskyArtistNS(server)
264264- this.charts = new AppRockskyChartsNS(server)
265265- this.dropbox = new AppRockskyDropboxNS(server)
266266- this.feed = new AppRockskyFeedNS(server)
267267- this.googledrive = new AppRockskyGoogledriveNS(server)
268268- this.graph = new AppRockskyGraphNS(server)
269269- this.like = new AppRockskyLikeNS(server)
270270- this.player = new AppRockskyPlayerNS(server)
271271- this.playlist = new AppRockskyPlaylistNS(server)
272272- this.scrobble = new AppRockskyScrobbleNS(server)
273273- this.shout = new AppRockskyShoutNS(server)
274274- this.song = new AppRockskySongNS(server)
275275- this.spotify = new AppRockskySpotifyNS(server)
276276- this.stats = new AppRockskyStatsNS(server)
259259+ this._server = server;
260260+ this.actor = new AppRockskyActorNS(server);
261261+ this.album = new AppRockskyAlbumNS(server);
262262+ this.apikey = new AppRockskyApikeyNS(server);
263263+ this.artist = new AppRockskyArtistNS(server);
264264+ this.charts = new AppRockskyChartsNS(server);
265265+ this.dropbox = new AppRockskyDropboxNS(server);
266266+ this.feed = new AppRockskyFeedNS(server);
267267+ this.googledrive = new AppRockskyGoogledriveNS(server);
268268+ this.graph = new AppRockskyGraphNS(server);
269269+ this.like = new AppRockskyLikeNS(server);
270270+ this.player = new AppRockskyPlayerNS(server);
271271+ this.playlist = new AppRockskyPlaylistNS(server);
272272+ this.scrobble = new AppRockskyScrobbleNS(server);
273273+ this.shout = new AppRockskyShoutNS(server);
274274+ this.song = new AppRockskySongNS(server);
275275+ this.spotify = new AppRockskySpotifyNS(server);
276276+ this.stats = new AppRockskyStatsNS(server);
277277 }
278278}
279279280280export class AppRockskyActorNS {
281281- _server: Server
281281+ _server: Server;
282282283283 constructor(server: Server) {
284284- this._server = server
284284+ this._server = server;
285285 }
286286287287 getActorAlbums<AV extends AuthVerifier>(
···291291 AppRockskyActorGetActorAlbums.HandlerReqCtx<ExtractAuth<AV>>
292292 >,
293293 ) {
294294- const nsid = 'app.rocksky.actor.getActorAlbums' // @ts-ignore
295295- return this._server.xrpc.method(nsid, cfg)
294294+ const nsid = "app.rocksky.actor.getActorAlbums"; // @ts-ignore
295295+ return this._server.xrpc.method(nsid, cfg);
296296 }
297297298298 getActorArtists<AV extends AuthVerifier>(
···302302 AppRockskyActorGetActorArtists.HandlerReqCtx<ExtractAuth<AV>>
303303 >,
304304 ) {
305305- const nsid = 'app.rocksky.actor.getActorArtists' // @ts-ignore
306306- return this._server.xrpc.method(nsid, cfg)
305305+ const nsid = "app.rocksky.actor.getActorArtists"; // @ts-ignore
306306+ return this._server.xrpc.method(nsid, cfg);
307307 }
308308309309 getActorCompatibility<AV extends AuthVerifier>(
···313313 AppRockskyActorGetActorCompatibility.HandlerReqCtx<ExtractAuth<AV>>
314314 >,
315315 ) {
316316- const nsid = 'app.rocksky.actor.getActorCompatibility' // @ts-ignore
317317- return this._server.xrpc.method(nsid, cfg)
316316+ const nsid = "app.rocksky.actor.getActorCompatibility"; // @ts-ignore
317317+ return this._server.xrpc.method(nsid, cfg);
318318 }
319319320320 getActorLovedSongs<AV extends AuthVerifier>(
···324324 AppRockskyActorGetActorLovedSongs.HandlerReqCtx<ExtractAuth<AV>>
325325 >,
326326 ) {
327327- const nsid = 'app.rocksky.actor.getActorLovedSongs' // @ts-ignore
328328- return this._server.xrpc.method(nsid, cfg)
327327+ const nsid = "app.rocksky.actor.getActorLovedSongs"; // @ts-ignore
328328+ return this._server.xrpc.method(nsid, cfg);
329329 }
330330331331 getActorNeighbours<AV extends AuthVerifier>(
···335335 AppRockskyActorGetActorNeighbours.HandlerReqCtx<ExtractAuth<AV>>
336336 >,
337337 ) {
338338- const nsid = 'app.rocksky.actor.getActorNeighbours' // @ts-ignore
339339- return this._server.xrpc.method(nsid, cfg)
338338+ const nsid = "app.rocksky.actor.getActorNeighbours"; // @ts-ignore
339339+ return this._server.xrpc.method(nsid, cfg);
340340 }
341341342342 getActorPlaylists<AV extends AuthVerifier>(
···346346 AppRockskyActorGetActorPlaylists.HandlerReqCtx<ExtractAuth<AV>>
347347 >,
348348 ) {
349349- const nsid = 'app.rocksky.actor.getActorPlaylists' // @ts-ignore
350350- return this._server.xrpc.method(nsid, cfg)
349349+ const nsid = "app.rocksky.actor.getActorPlaylists"; // @ts-ignore
350350+ return this._server.xrpc.method(nsid, cfg);
351351 }
352352353353 getActorScrobbles<AV extends AuthVerifier>(
···357357 AppRockskyActorGetActorScrobbles.HandlerReqCtx<ExtractAuth<AV>>
358358 >,
359359 ) {
360360- const nsid = 'app.rocksky.actor.getActorScrobbles' // @ts-ignore
361361- return this._server.xrpc.method(nsid, cfg)
360360+ const nsid = "app.rocksky.actor.getActorScrobbles"; // @ts-ignore
361361+ return this._server.xrpc.method(nsid, cfg);
362362 }
363363364364 getActorSongs<AV extends AuthVerifier>(
···368368 AppRockskyActorGetActorSongs.HandlerReqCtx<ExtractAuth<AV>>
369369 >,
370370 ) {
371371- const nsid = 'app.rocksky.actor.getActorSongs' // @ts-ignore
372372- return this._server.xrpc.method(nsid, cfg)
371371+ const nsid = "app.rocksky.actor.getActorSongs"; // @ts-ignore
372372+ return this._server.xrpc.method(nsid, cfg);
373373 }
374374375375 getProfile<AV extends AuthVerifier>(
···379379 AppRockskyActorGetProfile.HandlerReqCtx<ExtractAuth<AV>>
380380 >,
381381 ) {
382382- const nsid = 'app.rocksky.actor.getProfile' // @ts-ignore
383383- return this._server.xrpc.method(nsid, cfg)
382382+ const nsid = "app.rocksky.actor.getProfile"; // @ts-ignore
383383+ return this._server.xrpc.method(nsid, cfg);
384384 }
385385}
386386387387export class AppRockskyAlbumNS {
388388- _server: Server
388388+ _server: Server;
389389390390 constructor(server: Server) {
391391- this._server = server
391391+ this._server = server;
392392 }
393393394394 getAlbum<AV extends AuthVerifier>(
···398398 AppRockskyAlbumGetAlbum.HandlerReqCtx<ExtractAuth<AV>>
399399 >,
400400 ) {
401401- const nsid = 'app.rocksky.album.getAlbum' // @ts-ignore
402402- return this._server.xrpc.method(nsid, cfg)
401401+ const nsid = "app.rocksky.album.getAlbum"; // @ts-ignore
402402+ return this._server.xrpc.method(nsid, cfg);
403403 }
404404405405 getAlbums<AV extends AuthVerifier>(
···409409 AppRockskyAlbumGetAlbums.HandlerReqCtx<ExtractAuth<AV>>
410410 >,
411411 ) {
412412- const nsid = 'app.rocksky.album.getAlbums' // @ts-ignore
413413- return this._server.xrpc.method(nsid, cfg)
412412+ const nsid = "app.rocksky.album.getAlbums"; // @ts-ignore
413413+ return this._server.xrpc.method(nsid, cfg);
414414 }
415415416416 getAlbumTracks<AV extends AuthVerifier>(
···420420 AppRockskyAlbumGetAlbumTracks.HandlerReqCtx<ExtractAuth<AV>>
421421 >,
422422 ) {
423423- const nsid = 'app.rocksky.album.getAlbumTracks' // @ts-ignore
424424- return this._server.xrpc.method(nsid, cfg)
423423+ const nsid = "app.rocksky.album.getAlbumTracks"; // @ts-ignore
424424+ return this._server.xrpc.method(nsid, cfg);
425425 }
426426}
427427428428export class AppRockskyApikeyNS {
429429- _server: Server
429429+ _server: Server;
430430431431 constructor(server: Server) {
432432- this._server = server
432432+ this._server = server;
433433 }
434434435435 createApikey<AV extends AuthVerifier>(
···439439 AppRockskyApikeyCreateApikey.HandlerReqCtx<ExtractAuth<AV>>
440440 >,
441441 ) {
442442- const nsid = 'app.rocksky.apikey.createApikey' // @ts-ignore
443443- return this._server.xrpc.method(nsid, cfg)
442442+ const nsid = "app.rocksky.apikey.createApikey"; // @ts-ignore
443443+ return this._server.xrpc.method(nsid, cfg);
444444 }
445445446446 getApikeys<AV extends AuthVerifier>(
···450450 AppRockskyApikeyGetApikeys.HandlerReqCtx<ExtractAuth<AV>>
451451 >,
452452 ) {
453453- const nsid = 'app.rocksky.apikey.getApikeys' // @ts-ignore
454454- return this._server.xrpc.method(nsid, cfg)
453453+ const nsid = "app.rocksky.apikey.getApikeys"; // @ts-ignore
454454+ return this._server.xrpc.method(nsid, cfg);
455455 }
456456457457 removeApikey<AV extends AuthVerifier>(
···461461 AppRockskyApikeyRemoveApikey.HandlerReqCtx<ExtractAuth<AV>>
462462 >,
463463 ) {
464464- const nsid = 'app.rocksky.apikey.removeApikey' // @ts-ignore
465465- return this._server.xrpc.method(nsid, cfg)
464464+ const nsid = "app.rocksky.apikey.removeApikey"; // @ts-ignore
465465+ return this._server.xrpc.method(nsid, cfg);
466466 }
467467468468 updateApikey<AV extends AuthVerifier>(
···472472 AppRockskyApikeyUpdateApikey.HandlerReqCtx<ExtractAuth<AV>>
473473 >,
474474 ) {
475475- const nsid = 'app.rocksky.apikey.updateApikey' // @ts-ignore
476476- return this._server.xrpc.method(nsid, cfg)
475475+ const nsid = "app.rocksky.apikey.updateApikey"; // @ts-ignore
476476+ return this._server.xrpc.method(nsid, cfg);
477477 }
478478}
479479480480export class AppRockskyArtistNS {
481481- _server: Server
481481+ _server: Server;
482482483483 constructor(server: Server) {
484484- this._server = server
484484+ this._server = server;
485485 }
486486487487 getArtist<AV extends AuthVerifier>(
···491491 AppRockskyArtistGetArtist.HandlerReqCtx<ExtractAuth<AV>>
492492 >,
493493 ) {
494494- const nsid = 'app.rocksky.artist.getArtist' // @ts-ignore
495495- return this._server.xrpc.method(nsid, cfg)
494494+ const nsid = "app.rocksky.artist.getArtist"; // @ts-ignore
495495+ return this._server.xrpc.method(nsid, cfg);
496496 }
497497498498 getArtistAlbums<AV extends AuthVerifier>(
···502502 AppRockskyArtistGetArtistAlbums.HandlerReqCtx<ExtractAuth<AV>>
503503 >,
504504 ) {
505505- const nsid = 'app.rocksky.artist.getArtistAlbums' // @ts-ignore
506506- return this._server.xrpc.method(nsid, cfg)
505505+ const nsid = "app.rocksky.artist.getArtistAlbums"; // @ts-ignore
506506+ return this._server.xrpc.method(nsid, cfg);
507507 }
508508509509 getArtistListeners<AV extends AuthVerifier>(
···513513 AppRockskyArtistGetArtistListeners.HandlerReqCtx<ExtractAuth<AV>>
514514 >,
515515 ) {
516516- const nsid = 'app.rocksky.artist.getArtistListeners' // @ts-ignore
517517- return this._server.xrpc.method(nsid, cfg)
516516+ const nsid = "app.rocksky.artist.getArtistListeners"; // @ts-ignore
517517+ return this._server.xrpc.method(nsid, cfg);
518518 }
519519520520 getArtists<AV extends AuthVerifier>(
···524524 AppRockskyArtistGetArtists.HandlerReqCtx<ExtractAuth<AV>>
525525 >,
526526 ) {
527527- const nsid = 'app.rocksky.artist.getArtists' // @ts-ignore
528528- return this._server.xrpc.method(nsid, cfg)
527527+ const nsid = "app.rocksky.artist.getArtists"; // @ts-ignore
528528+ return this._server.xrpc.method(nsid, cfg);
529529 }
530530531531 getArtistTracks<AV extends AuthVerifier>(
···535535 AppRockskyArtistGetArtistTracks.HandlerReqCtx<ExtractAuth<AV>>
536536 >,
537537 ) {
538538- const nsid = 'app.rocksky.artist.getArtistTracks' // @ts-ignore
539539- return this._server.xrpc.method(nsid, cfg)
538538+ const nsid = "app.rocksky.artist.getArtistTracks"; // @ts-ignore
539539+ return this._server.xrpc.method(nsid, cfg);
540540 }
541541}
542542543543export class AppRockskyChartsNS {
544544- _server: Server
544544+ _server: Server;
545545546546 constructor(server: Server) {
547547- this._server = server
547547+ this._server = server;
548548 }
549549550550 getScrobblesChart<AV extends AuthVerifier>(
···554554 AppRockskyChartsGetScrobblesChart.HandlerReqCtx<ExtractAuth<AV>>
555555 >,
556556 ) {
557557- const nsid = 'app.rocksky.charts.getScrobblesChart' // @ts-ignore
558558- return this._server.xrpc.method(nsid, cfg)
557557+ const nsid = "app.rocksky.charts.getScrobblesChart"; // @ts-ignore
558558+ return this._server.xrpc.method(nsid, cfg);
559559 }
560560}
561561562562export class AppRockskyDropboxNS {
563563- _server: Server
563563+ _server: Server;
564564565565 constructor(server: Server) {
566566- this._server = server
566566+ this._server = server;
567567 }
568568569569 downloadFile<AV extends AuthVerifier>(
···573573 AppRockskyDropboxDownloadFile.HandlerReqCtx<ExtractAuth<AV>>
574574 >,
575575 ) {
576576- const nsid = 'app.rocksky.dropbox.downloadFile' // @ts-ignore
577577- return this._server.xrpc.method(nsid, cfg)
576576+ const nsid = "app.rocksky.dropbox.downloadFile"; // @ts-ignore
577577+ return this._server.xrpc.method(nsid, cfg);
578578 }
579579580580 getFiles<AV extends AuthVerifier>(
···584584 AppRockskyDropboxGetFiles.HandlerReqCtx<ExtractAuth<AV>>
585585 >,
586586 ) {
587587- const nsid = 'app.rocksky.dropbox.getFiles' // @ts-ignore
588588- return this._server.xrpc.method(nsid, cfg)
587587+ const nsid = "app.rocksky.dropbox.getFiles"; // @ts-ignore
588588+ return this._server.xrpc.method(nsid, cfg);
589589 }
590590591591 getMetadata<AV extends AuthVerifier>(
···595595 AppRockskyDropboxGetMetadata.HandlerReqCtx<ExtractAuth<AV>>
596596 >,
597597 ) {
598598- const nsid = 'app.rocksky.dropbox.getMetadata' // @ts-ignore
599599- return this._server.xrpc.method(nsid, cfg)
598598+ const nsid = "app.rocksky.dropbox.getMetadata"; // @ts-ignore
599599+ return this._server.xrpc.method(nsid, cfg);
600600 }
601601602602 getTemporaryLink<AV extends AuthVerifier>(
···606606 AppRockskyDropboxGetTemporaryLink.HandlerReqCtx<ExtractAuth<AV>>
607607 >,
608608 ) {
609609- const nsid = 'app.rocksky.dropbox.getTemporaryLink' // @ts-ignore
610610- return this._server.xrpc.method(nsid, cfg)
609609+ const nsid = "app.rocksky.dropbox.getTemporaryLink"; // @ts-ignore
610610+ return this._server.xrpc.method(nsid, cfg);
611611 }
612612}
613613614614export class AppRockskyFeedNS {
615615- _server: Server
615615+ _server: Server;
616616617617 constructor(server: Server) {
618618- this._server = server
618618+ this._server = server;
619619 }
620620621621 describeFeedGenerator<AV extends AuthVerifier>(
···625625 AppRockskyFeedDescribeFeedGenerator.HandlerReqCtx<ExtractAuth<AV>>
626626 >,
627627 ) {
628628- const nsid = 'app.rocksky.feed.describeFeedGenerator' // @ts-ignore
629629- return this._server.xrpc.method(nsid, cfg)
628628+ const nsid = "app.rocksky.feed.describeFeedGenerator"; // @ts-ignore
629629+ return this._server.xrpc.method(nsid, cfg);
630630 }
631631632632 getFeed<AV extends AuthVerifier>(
···636636 AppRockskyFeedGetFeed.HandlerReqCtx<ExtractAuth<AV>>
637637 >,
638638 ) {
639639- const nsid = 'app.rocksky.feed.getFeed' // @ts-ignore
640640- return this._server.xrpc.method(nsid, cfg)
639639+ const nsid = "app.rocksky.feed.getFeed"; // @ts-ignore
640640+ return this._server.xrpc.method(nsid, cfg);
641641 }
642642643643 getFeedGenerator<AV extends AuthVerifier>(
···647647 AppRockskyFeedGetFeedGenerator.HandlerReqCtx<ExtractAuth<AV>>
648648 >,
649649 ) {
650650- const nsid = 'app.rocksky.feed.getFeedGenerator' // @ts-ignore
651651- return this._server.xrpc.method(nsid, cfg)
650650+ const nsid = "app.rocksky.feed.getFeedGenerator"; // @ts-ignore
651651+ return this._server.xrpc.method(nsid, cfg);
652652 }
653653654654 getFeedGenerators<AV extends AuthVerifier>(
···658658 AppRockskyFeedGetFeedGenerators.HandlerReqCtx<ExtractAuth<AV>>
659659 >,
660660 ) {
661661- const nsid = 'app.rocksky.feed.getFeedGenerators' // @ts-ignore
662662- return this._server.xrpc.method(nsid, cfg)
661661+ const nsid = "app.rocksky.feed.getFeedGenerators"; // @ts-ignore
662662+ return this._server.xrpc.method(nsid, cfg);
663663 }
664664665665 getFeedSkeleton<AV extends AuthVerifier>(
···669669 AppRockskyFeedGetFeedSkeleton.HandlerReqCtx<ExtractAuth<AV>>
670670 >,
671671 ) {
672672- const nsid = 'app.rocksky.feed.getFeedSkeleton' // @ts-ignore
673673- return this._server.xrpc.method(nsid, cfg)
672672+ const nsid = "app.rocksky.feed.getFeedSkeleton"; // @ts-ignore
673673+ return this._server.xrpc.method(nsid, cfg);
674674 }
675675676676 getNowPlayings<AV extends AuthVerifier>(
···680680 AppRockskyFeedGetNowPlayings.HandlerReqCtx<ExtractAuth<AV>>
681681 >,
682682 ) {
683683- const nsid = 'app.rocksky.feed.getNowPlayings' // @ts-ignore
684684- return this._server.xrpc.method(nsid, cfg)
683683+ const nsid = "app.rocksky.feed.getNowPlayings"; // @ts-ignore
684684+ return this._server.xrpc.method(nsid, cfg);
685685 }
686686687687 search<AV extends AuthVerifier>(
···691691 AppRockskyFeedSearch.HandlerReqCtx<ExtractAuth<AV>>
692692 >,
693693 ) {
694694- const nsid = 'app.rocksky.feed.search' // @ts-ignore
695695- return this._server.xrpc.method(nsid, cfg)
694694+ const nsid = "app.rocksky.feed.search"; // @ts-ignore
695695+ return this._server.xrpc.method(nsid, cfg);
696696 }
697697}
698698699699export class AppRockskyGoogledriveNS {
700700- _server: Server
700700+ _server: Server;
701701702702 constructor(server: Server) {
703703- this._server = server
703703+ this._server = server;
704704 }
705705706706 downloadFile<AV extends AuthVerifier>(
···710710 AppRockskyGoogledriveDownloadFile.HandlerReqCtx<ExtractAuth<AV>>
711711 >,
712712 ) {
713713- const nsid = 'app.rocksky.googledrive.downloadFile' // @ts-ignore
714714- return this._server.xrpc.method(nsid, cfg)
713713+ const nsid = "app.rocksky.googledrive.downloadFile"; // @ts-ignore
714714+ return this._server.xrpc.method(nsid, cfg);
715715 }
716716717717 getFile<AV extends AuthVerifier>(
···721721 AppRockskyGoogledriveGetFile.HandlerReqCtx<ExtractAuth<AV>>
722722 >,
723723 ) {
724724- const nsid = 'app.rocksky.googledrive.getFile' // @ts-ignore
725725- return this._server.xrpc.method(nsid, cfg)
724724+ const nsid = "app.rocksky.googledrive.getFile"; // @ts-ignore
725725+ return this._server.xrpc.method(nsid, cfg);
726726 }
727727728728 getFiles<AV extends AuthVerifier>(
···732732 AppRockskyGoogledriveGetFiles.HandlerReqCtx<ExtractAuth<AV>>
733733 >,
734734 ) {
735735- const nsid = 'app.rocksky.googledrive.getFiles' // @ts-ignore
736736- return this._server.xrpc.method(nsid, cfg)
735735+ const nsid = "app.rocksky.googledrive.getFiles"; // @ts-ignore
736736+ return this._server.xrpc.method(nsid, cfg);
737737 }
738738}
739739740740export class AppRockskyGraphNS {
741741- _server: Server
741741+ _server: Server;
742742743743 constructor(server: Server) {
744744- this._server = server
744744+ this._server = server;
745745 }
746746747747 followAccount<AV extends AuthVerifier>(
···751751 AppRockskyGraphFollowAccount.HandlerReqCtx<ExtractAuth<AV>>
752752 >,
753753 ) {
754754- const nsid = 'app.rocksky.graph.followAccount' // @ts-ignore
755755- return this._server.xrpc.method(nsid, cfg)
754754+ const nsid = "app.rocksky.graph.followAccount"; // @ts-ignore
755755+ return this._server.xrpc.method(nsid, cfg);
756756 }
757757758758 getFollowers<AV extends AuthVerifier>(
···762762 AppRockskyGraphGetFollowers.HandlerReqCtx<ExtractAuth<AV>>
763763 >,
764764 ) {
765765- const nsid = 'app.rocksky.graph.getFollowers' // @ts-ignore
766766- return this._server.xrpc.method(nsid, cfg)
765765+ const nsid = "app.rocksky.graph.getFollowers"; // @ts-ignore
766766+ return this._server.xrpc.method(nsid, cfg);
767767 }
768768769769 getFollows<AV extends AuthVerifier>(
···773773 AppRockskyGraphGetFollows.HandlerReqCtx<ExtractAuth<AV>>
774774 >,
775775 ) {
776776- const nsid = 'app.rocksky.graph.getFollows' // @ts-ignore
777777- return this._server.xrpc.method(nsid, cfg)
776776+ const nsid = "app.rocksky.graph.getFollows"; // @ts-ignore
777777+ return this._server.xrpc.method(nsid, cfg);
778778 }
779779780780 getKnownFollowers<AV extends AuthVerifier>(
···784784 AppRockskyGraphGetKnownFollowers.HandlerReqCtx<ExtractAuth<AV>>
785785 >,
786786 ) {
787787- const nsid = 'app.rocksky.graph.getKnownFollowers' // @ts-ignore
788788- return this._server.xrpc.method(nsid, cfg)
787787+ const nsid = "app.rocksky.graph.getKnownFollowers"; // @ts-ignore
788788+ return this._server.xrpc.method(nsid, cfg);
789789 }
790790791791 unfollowAccount<AV extends AuthVerifier>(
···795795 AppRockskyGraphUnfollowAccount.HandlerReqCtx<ExtractAuth<AV>>
796796 >,
797797 ) {
798798- const nsid = 'app.rocksky.graph.unfollowAccount' // @ts-ignore
799799- return this._server.xrpc.method(nsid, cfg)
798798+ const nsid = "app.rocksky.graph.unfollowAccount"; // @ts-ignore
799799+ return this._server.xrpc.method(nsid, cfg);
800800 }
801801}
802802803803export class AppRockskyLikeNS {
804804- _server: Server
804804+ _server: Server;
805805806806 constructor(server: Server) {
807807- this._server = server
807807+ this._server = server;
808808 }
809809810810 dislikeShout<AV extends AuthVerifier>(
···814814 AppRockskyLikeDislikeShout.HandlerReqCtx<ExtractAuth<AV>>
815815 >,
816816 ) {
817817- const nsid = 'app.rocksky.like.dislikeShout' // @ts-ignore
818818- return this._server.xrpc.method(nsid, cfg)
817817+ const nsid = "app.rocksky.like.dislikeShout"; // @ts-ignore
818818+ return this._server.xrpc.method(nsid, cfg);
819819 }
820820821821 dislikeSong<AV extends AuthVerifier>(
···825825 AppRockskyLikeDislikeSong.HandlerReqCtx<ExtractAuth<AV>>
826826 >,
827827 ) {
828828- const nsid = 'app.rocksky.like.dislikeSong' // @ts-ignore
829829- return this._server.xrpc.method(nsid, cfg)
828828+ const nsid = "app.rocksky.like.dislikeSong"; // @ts-ignore
829829+ return this._server.xrpc.method(nsid, cfg);
830830 }
831831832832 likeShout<AV extends AuthVerifier>(
···836836 AppRockskyLikeLikeShout.HandlerReqCtx<ExtractAuth<AV>>
837837 >,
838838 ) {
839839- const nsid = 'app.rocksky.like.likeShout' // @ts-ignore
840840- return this._server.xrpc.method(nsid, cfg)
839839+ const nsid = "app.rocksky.like.likeShout"; // @ts-ignore
840840+ return this._server.xrpc.method(nsid, cfg);
841841 }
842842843843 likeSong<AV extends AuthVerifier>(
···847847 AppRockskyLikeLikeSong.HandlerReqCtx<ExtractAuth<AV>>
848848 >,
849849 ) {
850850- const nsid = 'app.rocksky.like.likeSong' // @ts-ignore
851851- return this._server.xrpc.method(nsid, cfg)
850850+ const nsid = "app.rocksky.like.likeSong"; // @ts-ignore
851851+ return this._server.xrpc.method(nsid, cfg);
852852 }
853853}
854854855855export class AppRockskyPlayerNS {
856856- _server: Server
856856+ _server: Server;
857857858858 constructor(server: Server) {
859859- this._server = server
859859+ this._server = server;
860860 }
861861862862 addDirectoryToQueue<AV extends AuthVerifier>(
···866866 AppRockskyPlayerAddDirectoryToQueue.HandlerReqCtx<ExtractAuth<AV>>
867867 >,
868868 ) {
869869- const nsid = 'app.rocksky.player.addDirectoryToQueue' // @ts-ignore
870870- return this._server.xrpc.method(nsid, cfg)
869869+ const nsid = "app.rocksky.player.addDirectoryToQueue"; // @ts-ignore
870870+ return this._server.xrpc.method(nsid, cfg);
871871 }
872872873873 addItemsToQueue<AV extends AuthVerifier>(
···877877 AppRockskyPlayerAddItemsToQueue.HandlerReqCtx<ExtractAuth<AV>>
878878 >,
879879 ) {
880880- const nsid = 'app.rocksky.player.addItemsToQueue' // @ts-ignore
881881- return this._server.xrpc.method(nsid, cfg)
880880+ const nsid = "app.rocksky.player.addItemsToQueue"; // @ts-ignore
881881+ return this._server.xrpc.method(nsid, cfg);
882882 }
883883884884 getCurrentlyPlaying<AV extends AuthVerifier>(
···888888 AppRockskyPlayerGetCurrentlyPlaying.HandlerReqCtx<ExtractAuth<AV>>
889889 >,
890890 ) {
891891- const nsid = 'app.rocksky.player.getCurrentlyPlaying' // @ts-ignore
892892- return this._server.xrpc.method(nsid, cfg)
891891+ const nsid = "app.rocksky.player.getCurrentlyPlaying"; // @ts-ignore
892892+ return this._server.xrpc.method(nsid, cfg);
893893 }
894894895895 getPlaybackQueue<AV extends AuthVerifier>(
···899899 AppRockskyPlayerGetPlaybackQueue.HandlerReqCtx<ExtractAuth<AV>>
900900 >,
901901 ) {
902902- const nsid = 'app.rocksky.player.getPlaybackQueue' // @ts-ignore
903903- return this._server.xrpc.method(nsid, cfg)
902902+ const nsid = "app.rocksky.player.getPlaybackQueue"; // @ts-ignore
903903+ return this._server.xrpc.method(nsid, cfg);
904904 }
905905906906 next<AV extends AuthVerifier>(
···910910 AppRockskyPlayerNext.HandlerReqCtx<ExtractAuth<AV>>
911911 >,
912912 ) {
913913- const nsid = 'app.rocksky.player.next' // @ts-ignore
914914- return this._server.xrpc.method(nsid, cfg)
913913+ const nsid = "app.rocksky.player.next"; // @ts-ignore
914914+ return this._server.xrpc.method(nsid, cfg);
915915 }
916916917917 pause<AV extends AuthVerifier>(
···921921 AppRockskyPlayerPause.HandlerReqCtx<ExtractAuth<AV>>
922922 >,
923923 ) {
924924- const nsid = 'app.rocksky.player.pause' // @ts-ignore
925925- return this._server.xrpc.method(nsid, cfg)
924924+ const nsid = "app.rocksky.player.pause"; // @ts-ignore
925925+ return this._server.xrpc.method(nsid, cfg);
926926 }
927927928928 play<AV extends AuthVerifier>(
···932932 AppRockskyPlayerPlay.HandlerReqCtx<ExtractAuth<AV>>
933933 >,
934934 ) {
935935- const nsid = 'app.rocksky.player.play' // @ts-ignore
936936- return this._server.xrpc.method(nsid, cfg)
935935+ const nsid = "app.rocksky.player.play"; // @ts-ignore
936936+ return this._server.xrpc.method(nsid, cfg);
937937 }
938938939939 playDirectory<AV extends AuthVerifier>(
···943943 AppRockskyPlayerPlayDirectory.HandlerReqCtx<ExtractAuth<AV>>
944944 >,
945945 ) {
946946- const nsid = 'app.rocksky.player.playDirectory' // @ts-ignore
947947- return this._server.xrpc.method(nsid, cfg)
946946+ const nsid = "app.rocksky.player.playDirectory"; // @ts-ignore
947947+ return this._server.xrpc.method(nsid, cfg);
948948 }
949949950950 playFile<AV extends AuthVerifier>(
···954954 AppRockskyPlayerPlayFile.HandlerReqCtx<ExtractAuth<AV>>
955955 >,
956956 ) {
957957- const nsid = 'app.rocksky.player.playFile' // @ts-ignore
958958- return this._server.xrpc.method(nsid, cfg)
957957+ const nsid = "app.rocksky.player.playFile"; // @ts-ignore
958958+ return this._server.xrpc.method(nsid, cfg);
959959 }
960960961961 previous<AV extends AuthVerifier>(
···965965 AppRockskyPlayerPrevious.HandlerReqCtx<ExtractAuth<AV>>
966966 >,
967967 ) {
968968- const nsid = 'app.rocksky.player.previous' // @ts-ignore
969969- return this._server.xrpc.method(nsid, cfg)
968968+ const nsid = "app.rocksky.player.previous"; // @ts-ignore
969969+ return this._server.xrpc.method(nsid, cfg);
970970 }
971971972972 seek<AV extends AuthVerifier>(
···976976 AppRockskyPlayerSeek.HandlerReqCtx<ExtractAuth<AV>>
977977 >,
978978 ) {
979979- const nsid = 'app.rocksky.player.seek' // @ts-ignore
980980- return this._server.xrpc.method(nsid, cfg)
979979+ const nsid = "app.rocksky.player.seek"; // @ts-ignore
980980+ return this._server.xrpc.method(nsid, cfg);
981981 }
982982}
983983984984export class AppRockskyPlaylistNS {
985985- _server: Server
985985+ _server: Server;
986986987987 constructor(server: Server) {
988988- this._server = server
988988+ this._server = server;
989989 }
990990991991 createPlaylist<AV extends AuthVerifier>(
···995995 AppRockskyPlaylistCreatePlaylist.HandlerReqCtx<ExtractAuth<AV>>
996996 >,
997997 ) {
998998- const nsid = 'app.rocksky.playlist.createPlaylist' // @ts-ignore
999999- return this._server.xrpc.method(nsid, cfg)
998998+ const nsid = "app.rocksky.playlist.createPlaylist"; // @ts-ignore
999999+ return this._server.xrpc.method(nsid, cfg);
10001000 }
1001100110021002 getPlaylist<AV extends AuthVerifier>(
···10061006 AppRockskyPlaylistGetPlaylist.HandlerReqCtx<ExtractAuth<AV>>
10071007 >,
10081008 ) {
10091009- const nsid = 'app.rocksky.playlist.getPlaylist' // @ts-ignore
10101010- return this._server.xrpc.method(nsid, cfg)
10091009+ const nsid = "app.rocksky.playlist.getPlaylist"; // @ts-ignore
10101010+ return this._server.xrpc.method(nsid, cfg);
10111011 }
1012101210131013 getPlaylists<AV extends AuthVerifier>(
···10171017 AppRockskyPlaylistGetPlaylists.HandlerReqCtx<ExtractAuth<AV>>
10181018 >,
10191019 ) {
10201020- const nsid = 'app.rocksky.playlist.getPlaylists' // @ts-ignore
10211021- return this._server.xrpc.method(nsid, cfg)
10201020+ const nsid = "app.rocksky.playlist.getPlaylists"; // @ts-ignore
10211021+ return this._server.xrpc.method(nsid, cfg);
10221022 }
1023102310241024 insertDirectory<AV extends AuthVerifier>(
···10281028 AppRockskyPlaylistInsertDirectory.HandlerReqCtx<ExtractAuth<AV>>
10291029 >,
10301030 ) {
10311031- const nsid = 'app.rocksky.playlist.insertDirectory' // @ts-ignore
10321032- return this._server.xrpc.method(nsid, cfg)
10311031+ const nsid = "app.rocksky.playlist.insertDirectory"; // @ts-ignore
10321032+ return this._server.xrpc.method(nsid, cfg);
10331033 }
1034103410351035 insertFiles<AV extends AuthVerifier>(
···10391039 AppRockskyPlaylistInsertFiles.HandlerReqCtx<ExtractAuth<AV>>
10401040 >,
10411041 ) {
10421042- const nsid = 'app.rocksky.playlist.insertFiles' // @ts-ignore
10431043- return this._server.xrpc.method(nsid, cfg)
10421042+ const nsid = "app.rocksky.playlist.insertFiles"; // @ts-ignore
10431043+ return this._server.xrpc.method(nsid, cfg);
10441044 }
1045104510461046 removePlaylist<AV extends AuthVerifier>(
···10501050 AppRockskyPlaylistRemovePlaylist.HandlerReqCtx<ExtractAuth<AV>>
10511051 >,
10521052 ) {
10531053- const nsid = 'app.rocksky.playlist.removePlaylist' // @ts-ignore
10541054- return this._server.xrpc.method(nsid, cfg)
10531053+ const nsid = "app.rocksky.playlist.removePlaylist"; // @ts-ignore
10541054+ return this._server.xrpc.method(nsid, cfg);
10551055 }
1056105610571057 removeTrack<AV extends AuthVerifier>(
···10611061 AppRockskyPlaylistRemoveTrack.HandlerReqCtx<ExtractAuth<AV>>
10621062 >,
10631063 ) {
10641064- const nsid = 'app.rocksky.playlist.removeTrack' // @ts-ignore
10651065- return this._server.xrpc.method(nsid, cfg)
10641064+ const nsid = "app.rocksky.playlist.removeTrack"; // @ts-ignore
10651065+ return this._server.xrpc.method(nsid, cfg);
10661066 }
1067106710681068 startPlaylist<AV extends AuthVerifier>(
···10721072 AppRockskyPlaylistStartPlaylist.HandlerReqCtx<ExtractAuth<AV>>
10731073 >,
10741074 ) {
10751075- const nsid = 'app.rocksky.playlist.startPlaylist' // @ts-ignore
10761076- return this._server.xrpc.method(nsid, cfg)
10751075+ const nsid = "app.rocksky.playlist.startPlaylist"; // @ts-ignore
10761076+ return this._server.xrpc.method(nsid, cfg);
10771077 }
10781078}
1079107910801080export class AppRockskyScrobbleNS {
10811081- _server: Server
10811081+ _server: Server;
1082108210831083 constructor(server: Server) {
10841084- this._server = server
10841084+ this._server = server;
10851085 }
1086108610871087 createScrobble<AV extends AuthVerifier>(
···10911091 AppRockskyScrobbleCreateScrobble.HandlerReqCtx<ExtractAuth<AV>>
10921092 >,
10931093 ) {
10941094- const nsid = 'app.rocksky.scrobble.createScrobble' // @ts-ignore
10951095- return this._server.xrpc.method(nsid, cfg)
10941094+ const nsid = "app.rocksky.scrobble.createScrobble"; // @ts-ignore
10951095+ return this._server.xrpc.method(nsid, cfg);
10961096 }
1097109710981098 getScrobble<AV extends AuthVerifier>(
···11021102 AppRockskyScrobbleGetScrobble.HandlerReqCtx<ExtractAuth<AV>>
11031103 >,
11041104 ) {
11051105- const nsid = 'app.rocksky.scrobble.getScrobble' // @ts-ignore
11061106- return this._server.xrpc.method(nsid, cfg)
11051105+ const nsid = "app.rocksky.scrobble.getScrobble"; // @ts-ignore
11061106+ return this._server.xrpc.method(nsid, cfg);
11071107 }
1108110811091109 getScrobbles<AV extends AuthVerifier>(
···11131113 AppRockskyScrobbleGetScrobbles.HandlerReqCtx<ExtractAuth<AV>>
11141114 >,
11151115 ) {
11161116- const nsid = 'app.rocksky.scrobble.getScrobbles' // @ts-ignore
11171117- return this._server.xrpc.method(nsid, cfg)
11161116+ const nsid = "app.rocksky.scrobble.getScrobbles"; // @ts-ignore
11171117+ return this._server.xrpc.method(nsid, cfg);
11181118 }
11191119}
1120112011211121export class AppRockskyShoutNS {
11221122- _server: Server
11221122+ _server: Server;
1123112311241124 constructor(server: Server) {
11251125- this._server = server
11251125+ this._server = server;
11261126 }
1127112711281128 createShout<AV extends AuthVerifier>(
···11321132 AppRockskyShoutCreateShout.HandlerReqCtx<ExtractAuth<AV>>
11331133 >,
11341134 ) {
11351135- const nsid = 'app.rocksky.shout.createShout' // @ts-ignore
11361136- return this._server.xrpc.method(nsid, cfg)
11351135+ const nsid = "app.rocksky.shout.createShout"; // @ts-ignore
11361136+ return this._server.xrpc.method(nsid, cfg);
11371137 }
1138113811391139 getAlbumShouts<AV extends AuthVerifier>(
···11431143 AppRockskyShoutGetAlbumShouts.HandlerReqCtx<ExtractAuth<AV>>
11441144 >,
11451145 ) {
11461146- const nsid = 'app.rocksky.shout.getAlbumShouts' // @ts-ignore
11471147- return this._server.xrpc.method(nsid, cfg)
11461146+ const nsid = "app.rocksky.shout.getAlbumShouts"; // @ts-ignore
11471147+ return this._server.xrpc.method(nsid, cfg);
11481148 }
1149114911501150 getArtistShouts<AV extends AuthVerifier>(
···11541154 AppRockskyShoutGetArtistShouts.HandlerReqCtx<ExtractAuth<AV>>
11551155 >,
11561156 ) {
11571157- const nsid = 'app.rocksky.shout.getArtistShouts' // @ts-ignore
11581158- return this._server.xrpc.method(nsid, cfg)
11571157+ const nsid = "app.rocksky.shout.getArtistShouts"; // @ts-ignore
11581158+ return this._server.xrpc.method(nsid, cfg);
11591159 }
1160116011611161 getProfileShouts<AV extends AuthVerifier>(
···11651165 AppRockskyShoutGetProfileShouts.HandlerReqCtx<ExtractAuth<AV>>
11661166 >,
11671167 ) {
11681168- const nsid = 'app.rocksky.shout.getProfileShouts' // @ts-ignore
11691169- return this._server.xrpc.method(nsid, cfg)
11681168+ const nsid = "app.rocksky.shout.getProfileShouts"; // @ts-ignore
11691169+ return this._server.xrpc.method(nsid, cfg);
11701170 }
1171117111721172 getShoutReplies<AV extends AuthVerifier>(
···11761176 AppRockskyShoutGetShoutReplies.HandlerReqCtx<ExtractAuth<AV>>
11771177 >,
11781178 ) {
11791179- const nsid = 'app.rocksky.shout.getShoutReplies' // @ts-ignore
11801180- return this._server.xrpc.method(nsid, cfg)
11791179+ const nsid = "app.rocksky.shout.getShoutReplies"; // @ts-ignore
11801180+ return this._server.xrpc.method(nsid, cfg);
11811181 }
1182118211831183 getTrackShouts<AV extends AuthVerifier>(
···11871187 AppRockskyShoutGetTrackShouts.HandlerReqCtx<ExtractAuth<AV>>
11881188 >,
11891189 ) {
11901190- const nsid = 'app.rocksky.shout.getTrackShouts' // @ts-ignore
11911191- return this._server.xrpc.method(nsid, cfg)
11901190+ const nsid = "app.rocksky.shout.getTrackShouts"; // @ts-ignore
11911191+ return this._server.xrpc.method(nsid, cfg);
11921192 }
1193119311941194 removeShout<AV extends AuthVerifier>(
···11981198 AppRockskyShoutRemoveShout.HandlerReqCtx<ExtractAuth<AV>>
11991199 >,
12001200 ) {
12011201- const nsid = 'app.rocksky.shout.removeShout' // @ts-ignore
12021202- return this._server.xrpc.method(nsid, cfg)
12011201+ const nsid = "app.rocksky.shout.removeShout"; // @ts-ignore
12021202+ return this._server.xrpc.method(nsid, cfg);
12031203 }
1204120412051205 replyShout<AV extends AuthVerifier>(
···12091209 AppRockskyShoutReplyShout.HandlerReqCtx<ExtractAuth<AV>>
12101210 >,
12111211 ) {
12121212- const nsid = 'app.rocksky.shout.replyShout' // @ts-ignore
12131213- return this._server.xrpc.method(nsid, cfg)
12121212+ const nsid = "app.rocksky.shout.replyShout"; // @ts-ignore
12131213+ return this._server.xrpc.method(nsid, cfg);
12141214 }
1215121512161216 reportShout<AV extends AuthVerifier>(
···12201220 AppRockskyShoutReportShout.HandlerReqCtx<ExtractAuth<AV>>
12211221 >,
12221222 ) {
12231223- const nsid = 'app.rocksky.shout.reportShout' // @ts-ignore
12241224- return this._server.xrpc.method(nsid, cfg)
12231223+ const nsid = "app.rocksky.shout.reportShout"; // @ts-ignore
12241224+ return this._server.xrpc.method(nsid, cfg);
12251225 }
12261226}
1227122712281228export class AppRockskySongNS {
12291229- _server: Server
12291229+ _server: Server;
1230123012311231 constructor(server: Server) {
12321232- this._server = server
12321232+ this._server = server;
12331233 }
1234123412351235 createSong<AV extends AuthVerifier>(
···12391239 AppRockskySongCreateSong.HandlerReqCtx<ExtractAuth<AV>>
12401240 >,
12411241 ) {
12421242- const nsid = 'app.rocksky.song.createSong' // @ts-ignore
12431243- return this._server.xrpc.method(nsid, cfg)
12421242+ const nsid = "app.rocksky.song.createSong"; // @ts-ignore
12431243+ return this._server.xrpc.method(nsid, cfg);
12441244 }
1245124512461246 getSong<AV extends AuthVerifier>(
···12501250 AppRockskySongGetSong.HandlerReqCtx<ExtractAuth<AV>>
12511251 >,
12521252 ) {
12531253- const nsid = 'app.rocksky.song.getSong' // @ts-ignore
12541254- return this._server.xrpc.method(nsid, cfg)
12531253+ const nsid = "app.rocksky.song.getSong"; // @ts-ignore
12541254+ return this._server.xrpc.method(nsid, cfg);
12551255 }
1256125612571257 getSongs<AV extends AuthVerifier>(
···12611261 AppRockskySongGetSongs.HandlerReqCtx<ExtractAuth<AV>>
12621262 >,
12631263 ) {
12641264- const nsid = 'app.rocksky.song.getSongs' // @ts-ignore
12651265- return this._server.xrpc.method(nsid, cfg)
12641264+ const nsid = "app.rocksky.song.getSongs"; // @ts-ignore
12651265+ return this._server.xrpc.method(nsid, cfg);
12661266 }
1267126712681268 matchSong<AV extends AuthVerifier>(
···12721272 AppRockskySongMatchSong.HandlerReqCtx<ExtractAuth<AV>>
12731273 >,
12741274 ) {
12751275- const nsid = 'app.rocksky.song.matchSong' // @ts-ignore
12761276- return this._server.xrpc.method(nsid, cfg)
12751275+ const nsid = "app.rocksky.song.matchSong"; // @ts-ignore
12761276+ return this._server.xrpc.method(nsid, cfg);
12771277 }
12781278}
1279127912801280export class AppRockskySpotifyNS {
12811281- _server: Server
12811281+ _server: Server;
1282128212831283 constructor(server: Server) {
12841284- this._server = server
12841284+ this._server = server;
12851285 }
1286128612871287 getCurrentlyPlaying<AV extends AuthVerifier>(
···12911291 AppRockskySpotifyGetCurrentlyPlaying.HandlerReqCtx<ExtractAuth<AV>>
12921292 >,
12931293 ) {
12941294- const nsid = 'app.rocksky.spotify.getCurrentlyPlaying' // @ts-ignore
12951295- return this._server.xrpc.method(nsid, cfg)
12941294+ const nsid = "app.rocksky.spotify.getCurrentlyPlaying"; // @ts-ignore
12951295+ return this._server.xrpc.method(nsid, cfg);
12961296 }
1297129712981298 next<AV extends AuthVerifier>(
···13021302 AppRockskySpotifyNext.HandlerReqCtx<ExtractAuth<AV>>
13031303 >,
13041304 ) {
13051305- const nsid = 'app.rocksky.spotify.next' // @ts-ignore
13061306- return this._server.xrpc.method(nsid, cfg)
13051305+ const nsid = "app.rocksky.spotify.next"; // @ts-ignore
13061306+ return this._server.xrpc.method(nsid, cfg);
13071307 }
1308130813091309 pause<AV extends AuthVerifier>(
···13131313 AppRockskySpotifyPause.HandlerReqCtx<ExtractAuth<AV>>
13141314 >,
13151315 ) {
13161316- const nsid = 'app.rocksky.spotify.pause' // @ts-ignore
13171317- return this._server.xrpc.method(nsid, cfg)
13161316+ const nsid = "app.rocksky.spotify.pause"; // @ts-ignore
13171317+ return this._server.xrpc.method(nsid, cfg);
13181318 }
1319131913201320 play<AV extends AuthVerifier>(
···13241324 AppRockskySpotifyPlay.HandlerReqCtx<ExtractAuth<AV>>
13251325 >,
13261326 ) {
13271327- const nsid = 'app.rocksky.spotify.play' // @ts-ignore
13281328- return this._server.xrpc.method(nsid, cfg)
13271327+ const nsid = "app.rocksky.spotify.play"; // @ts-ignore
13281328+ return this._server.xrpc.method(nsid, cfg);
13291329 }
1330133013311331 previous<AV extends AuthVerifier>(
···13351335 AppRockskySpotifyPrevious.HandlerReqCtx<ExtractAuth<AV>>
13361336 >,
13371337 ) {
13381338- const nsid = 'app.rocksky.spotify.previous' // @ts-ignore
13391339- return this._server.xrpc.method(nsid, cfg)
13381338+ const nsid = "app.rocksky.spotify.previous"; // @ts-ignore
13391339+ return this._server.xrpc.method(nsid, cfg);
13401340 }
1341134113421342 seek<AV extends AuthVerifier>(
···13461346 AppRockskySpotifySeek.HandlerReqCtx<ExtractAuth<AV>>
13471347 >,
13481348 ) {
13491349- const nsid = 'app.rocksky.spotify.seek' // @ts-ignore
13501350- return this._server.xrpc.method(nsid, cfg)
13491349+ const nsid = "app.rocksky.spotify.seek"; // @ts-ignore
13501350+ return this._server.xrpc.method(nsid, cfg);
13511351 }
13521352}
1353135313541354export class AppRockskyStatsNS {
13551355- _server: Server
13551355+ _server: Server;
1356135613571357 constructor(server: Server) {
13581358- this._server = server
13581358+ this._server = server;
13591359 }
1360136013611361 getStats<AV extends AuthVerifier>(
···13651365 AppRockskyStatsGetStats.HandlerReqCtx<ExtractAuth<AV>>
13661366 >,
13671367 ) {
13681368- const nsid = 'app.rocksky.stats.getStats' // @ts-ignore
13691369- return this._server.xrpc.method(nsid, cfg)
13681368+ const nsid = "app.rocksky.stats.getStats"; // @ts-ignore
13691369+ return this._server.xrpc.method(nsid, cfg);
13701370 }
13711371}
1372137213731373export class AppBskyNS {
13741374- _server: Server
13751375- actor: AppBskyActorNS
13741374+ _server: Server;
13751375+ actor: AppBskyActorNS;
1376137613771377 constructor(server: Server) {
13781378- this._server = server
13791379- this.actor = new AppBskyActorNS(server)
13781378+ this._server = server;
13791379+ this.actor = new AppBskyActorNS(server);
13801380 }
13811381}
1382138213831383export class AppBskyActorNS {
13841384- _server: Server
13841384+ _server: Server;
1385138513861386 constructor(server: Server) {
13871387- this._server = server
13871387+ this._server = server;
13881388 }
13891389}
1390139013911391export class ComNS {
13921392- _server: Server
13931393- atproto: ComAtprotoNS
13921392+ _server: Server;
13931393+ atproto: ComAtprotoNS;
1394139413951395 constructor(server: Server) {
13961396- this._server = server
13971397- this.atproto = new ComAtprotoNS(server)
13961396+ this._server = server;
13971397+ this.atproto = new ComAtprotoNS(server);
13981398 }
13991399}
1400140014011401export class ComAtprotoNS {
14021402- _server: Server
14031403- repo: ComAtprotoRepoNS
14021402+ _server: Server;
14031403+ repo: ComAtprotoRepoNS;
1404140414051405 constructor(server: Server) {
14061406- this._server = server
14071407- this.repo = new ComAtprotoRepoNS(server)
14061406+ this._server = server;
14071407+ this.repo = new ComAtprotoRepoNS(server);
14081408 }
14091409}
1410141014111411export class ComAtprotoRepoNS {
14121412- _server: Server
14121412+ _server: Server;
1413141314141414 constructor(server: Server) {
14151415- this._server = server
14151415+ this._server = server;
14161416 }
14171417}
1418141814191419type SharedRateLimitOpts<T> = {
14201420- name: string
14211421- calcKey?: (ctx: T) => string | null
14221422- calcPoints?: (ctx: T) => number
14231423-}
14201420+ name: string;
14211421+ calcKey?: (ctx: T) => string | null;
14221422+ calcPoints?: (ctx: T) => number;
14231423+};
14241424type RouteRateLimitOpts<T> = {
14251425- durationMs: number
14261426- points: number
14271427- calcKey?: (ctx: T) => string | null
14281428- calcPoints?: (ctx: T) => number
14291429-}
14301430-type HandlerOpts = { blobLimit?: number }
14311431-type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T>
14251425+ durationMs: number;
14261426+ points: number;
14271427+ calcKey?: (ctx: T) => string | null;
14281428+ calcPoints?: (ctx: T) => number;
14291429+};
14301430+type HandlerOpts = { blobLimit?: number };
14311431+type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T>;
14321432type ConfigOf<Auth, Handler, ReqCtx> =
14331433 | Handler
14341434 | {
14351435- auth?: Auth
14361436- opts?: HandlerOpts
14371437- rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[]
14381438- handler: Handler
14391439- }
14351435+ auth?: Auth;
14361436+ opts?: HandlerOpts;
14371437+ rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[];
14381438+ handler: Handler;
14391439+ };
14401440type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract<
14411441 Awaited<ReturnType<AV>>,
14421442 { credentials: unknown }
14431443->
14431443+>;
+2487-2483
apps/api/src/lexicon/lexicons.ts
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type LexiconDoc, Lexicons } from '@atproto/lexicon'
44+import { type LexiconDoc, Lexicons } from "@atproto/lexicon";
5566export const schemaDict = {
77 FmTealAlphaActorDefs: {
88 lexicon: 1,
99- id: 'fm.teal.alpha.actor.defs',
99+ id: "fm.teal.alpha.actor.defs",
1010 defs: {
1111 profileView: {
1212- type: 'object',
1212+ type: "object",
1313 properties: {
1414 did: {
1515- type: 'string',
1616- description: 'The decentralized identifier of the actor',
1515+ type: "string",
1616+ description: "The decentralized identifier of the actor",
1717 },
1818 displayName: {
1919- type: 'string',
1919+ type: "string",
2020 },
2121 description: {
2222- type: 'string',
2323- description: 'Free-form profile description text.',
2222+ type: "string",
2323+ description: "Free-form profile description text.",
2424 },
2525 descriptionFacets: {
2626- type: 'array',
2626+ type: "array",
2727 description:
2828- 'Annotations of text in the profile description (mentions, URLs, hashtags, etc). May be changed to another (backwards compatible) lexicon.',
2828+ "Annotations of text in the profile description (mentions, URLs, hashtags, etc). May be changed to another (backwards compatible) lexicon.",
2929 items: {
3030- type: 'ref',
3131- ref: 'lex:app.bsky.richtext.facet',
3030+ type: "ref",
3131+ ref: "lex:app.bsky.richtext.facet",
3232 },
3333 },
3434 featuredItem: {
3535- type: 'ref',
3535+ type: "ref",
3636 description:
3737 "The user's most recent item featured on their profile.",
3838- ref: 'lex:fm.teal.alpha.actor.profile#featuredItem',
3838+ ref: "lex:fm.teal.alpha.actor.profile#featuredItem",
3939 },
4040 avatar: {
4141- type: 'string',
4242- description: 'IPLD of the avatar',
4141+ type: "string",
4242+ description: "IPLD of the avatar",
4343 },
4444 banner: {
4545- type: 'string',
4646- description: 'IPLD of the banner image',
4545+ type: "string",
4646+ description: "IPLD of the banner image",
4747 },
4848 createdAt: {
4949- type: 'string',
5050- format: 'datetime',
4949+ type: "string",
5050+ format: "datetime",
5151 },
5252 },
5353 },
5454 miniProfileView: {
5555- type: 'object',
5555+ type: "object",
5656 properties: {
5757 did: {
5858- type: 'string',
5959- description: 'The decentralized identifier of the actor',
5858+ type: "string",
5959+ description: "The decentralized identifier of the actor",
6060 },
6161 displayName: {
6262- type: 'string',
6262+ type: "string",
6363 },
6464 handle: {
6565- type: 'string',
6565+ type: "string",
6666 },
6767 avatar: {
6868- type: 'string',
6969- description: 'IPLD of the avatar',
6868+ type: "string",
6969+ description: "IPLD of the avatar",
7070 },
7171 },
7272 },
···7474 },
7575 FmTealAlphaActorGetProfile: {
7676 lexicon: 1,
7777- id: 'fm.teal.alpha.actor.getProfile',
7777+ id: "fm.teal.alpha.actor.getProfile",
7878 description:
7979- 'This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.',
7979+ "This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.",
8080 defs: {
8181 main: {
8282- type: 'query',
8282+ type: "query",
8383 parameters: {
8484- type: 'params',
8585- required: ['actor'],
8484+ type: "params",
8585+ required: ["actor"],
8686 properties: {
8787 actor: {
8888- type: 'string',
8989- format: 'at-identifier',
8888+ type: "string",
8989+ format: "at-identifier",
9090 description: "The author's DID",
9191 },
9292 },
9393 },
9494 output: {
9595- encoding: 'application/json',
9595+ encoding: "application/json",
9696 schema: {
9797- type: 'object',
9898- required: ['actor'],
9797+ type: "object",
9898+ required: ["actor"],
9999 properties: {
100100 actor: {
101101- type: 'ref',
102102- ref: 'lex:fm.teal.alpha.actor.defs#profileView',
101101+ type: "ref",
102102+ ref: "lex:fm.teal.alpha.actor.defs#profileView",
103103 },
104104 },
105105 },
···109109 },
110110 FmTealAlphaActorGetProfiles: {
111111 lexicon: 1,
112112- id: 'fm.teal.alpha.actor.getProfiles',
112112+ id: "fm.teal.alpha.actor.getProfiles",
113113 description:
114114- 'This lexicon is in a not officially released state. It is subject to change. | Retrieves the associated profile.',
114114+ "This lexicon is in a not officially released state. It is subject to change. | Retrieves the associated profile.",
115115 defs: {
116116 main: {
117117- type: 'query',
117117+ type: "query",
118118 parameters: {
119119- type: 'params',
120120- required: ['actors'],
119119+ type: "params",
120120+ required: ["actors"],
121121 properties: {
122122 actors: {
123123- type: 'array',
123123+ type: "array",
124124 items: {
125125- type: 'string',
126126- format: 'at-identifier',
125125+ type: "string",
126126+ format: "at-identifier",
127127 },
128128- description: 'Array of actor DIDs',
128128+ description: "Array of actor DIDs",
129129 },
130130 },
131131 },
132132 output: {
133133- encoding: 'application/json',
133133+ encoding: "application/json",
134134 schema: {
135135- type: 'object',
136136- required: ['actors'],
135135+ type: "object",
136136+ required: ["actors"],
137137 properties: {
138138 actors: {
139139- type: 'array',
139139+ type: "array",
140140 items: {
141141- type: 'ref',
142142- ref: 'lex:fm.teal.alpha.actor.defs#miniProfileView',
141141+ type: "ref",
142142+ ref: "lex:fm.teal.alpha.actor.defs#miniProfileView",
143143 },
144144 },
145145 },
···150150 },
151151 FmTealAlphaActorProfile: {
152152 lexicon: 1,
153153- id: 'fm.teal.alpha.actor.profile',
153153+ id: "fm.teal.alpha.actor.profile",
154154 defs: {
155155 main: {
156156- type: 'record',
156156+ type: "record",
157157 description:
158158- 'This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm account profile.',
159159- key: 'literal:self',
158158+ "This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm account profile.",
159159+ key: "literal:self",
160160 record: {
161161- type: 'object',
161161+ type: "object",
162162 properties: {
163163 displayName: {
164164- type: 'string',
164164+ type: "string",
165165 maxGraphemes: 64,
166166 maxLength: 640,
167167 },
168168 description: {
169169- type: 'string',
170170- description: 'Free-form profile description text.',
169169+ type: "string",
170170+ description: "Free-form profile description text.",
171171 maxGraphemes: 256,
172172 maxLength: 2560,
173173 },
174174 descriptionFacets: {
175175- type: 'array',
175175+ type: "array",
176176 description:
177177- 'Annotations of text in the profile description (mentions, URLs, hashtags, etc).',
177177+ "Annotations of text in the profile description (mentions, URLs, hashtags, etc).",
178178 items: {
179179- type: 'ref',
180180- ref: 'lex:app.bsky.richtext.facet',
179179+ type: "ref",
180180+ ref: "lex:app.bsky.richtext.facet",
181181 },
182182 },
183183 featuredItem: {
184184- type: 'ref',
184184+ type: "ref",
185185 description:
186186 "The user's most recent item featured on their profile.",
187187- ref: 'lex:fm.teal.alpha.actor.profile#featuredItem',
187187+ ref: "lex:fm.teal.alpha.actor.profile#featuredItem",
188188 },
189189 avatar: {
190190- type: 'blob',
190190+ type: "blob",
191191 description:
192192 "Small image to be displayed next to posts from account. AKA, 'profile picture'",
193193- accept: ['image/png', 'image/jpeg'],
193193+ accept: ["image/png", "image/jpeg"],
194194 maxSize: 1000000,
195195 },
196196 banner: {
197197- type: 'blob',
197197+ type: "blob",
198198 description:
199199- 'Larger horizontal image to display behind profile view.',
200200- accept: ['image/png', 'image/jpeg'],
199199+ "Larger horizontal image to display behind profile view.",
200200+ accept: ["image/png", "image/jpeg"],
201201 maxSize: 1000000,
202202 },
203203 createdAt: {
204204- type: 'string',
205205- format: 'datetime',
204204+ type: "string",
205205+ format: "datetime",
206206 },
207207 },
208208 },
209209 },
210210 featuredItem: {
211211- type: 'object',
212212- required: ['mbid', 'type'],
211211+ type: "object",
212212+ required: ["mbid", "type"],
213213 properties: {
214214 mbid: {
215215- type: 'string',
216216- description: 'The Musicbrainz ID of the item',
215215+ type: "string",
216216+ description: "The Musicbrainz ID of the item",
217217 },
218218 type: {
219219- type: 'string',
219219+ type: "string",
220220 description:
221221- 'The type of the item. Must be a valid Musicbrainz type, e.g. album, track, recording, etc.',
221221+ "The type of the item. Must be a valid Musicbrainz type, e.g. album, track, recording, etc.",
222222 },
223223 },
224224 },
···226226 },
227227 FmTealAlphaActorSearchActors: {
228228 lexicon: 1,
229229- id: 'fm.teal.alpha.actor.searchActors',
229229+ id: "fm.teal.alpha.actor.searchActors",
230230 description:
231231- 'This lexicon is in a not officially released state. It is subject to change. | Searches for actors based on profile contents.',
231231+ "This lexicon is in a not officially released state. It is subject to change. | Searches for actors based on profile contents.",
232232 defs: {
233233 main: {
234234- type: 'query',
234234+ type: "query",
235235 parameters: {
236236- type: 'params',
237237- required: ['q'],
236236+ type: "params",
237237+ required: ["q"],
238238 properties: {
239239 q: {
240240- type: 'string',
241241- description: 'The search query',
240240+ type: "string",
241241+ description: "The search query",
242242 maxGraphemes: 128,
243243 maxLength: 640,
244244 },
245245 limit: {
246246- type: 'integer',
247247- description: 'The maximum number of actors to return',
246246+ type: "integer",
247247+ description: "The maximum number of actors to return",
248248 minimum: 1,
249249 maximum: 25,
250250 },
251251 cursor: {
252252- type: 'string',
253253- description: 'Cursor for pagination',
252252+ type: "string",
253253+ description: "Cursor for pagination",
254254 },
255255 },
256256 },
257257 output: {
258258- encoding: 'application/json',
258258+ encoding: "application/json",
259259 schema: {
260260- type: 'object',
261261- required: ['actors'],
260260+ type: "object",
261261+ required: ["actors"],
262262 properties: {
263263 actors: {
264264- type: 'array',
264264+ type: "array",
265265 items: {
266266- type: 'ref',
267267- ref: 'lex:fm.teal.alpha.actor.defs#miniProfileView',
266266+ type: "ref",
267267+ ref: "lex:fm.teal.alpha.actor.defs#miniProfileView",
268268 },
269269 },
270270 cursor: {
271271- type: 'string',
272272- description: 'Cursor for pagination',
271271+ type: "string",
272272+ description: "Cursor for pagination",
273273 },
274274 },
275275 },
···279279 },
280280 FmTealAlphaActorStatus: {
281281 lexicon: 1,
282282- id: 'fm.teal.alpha.actor.status',
282282+ id: "fm.teal.alpha.actor.status",
283283 defs: {
284284 main: {
285285- type: 'record',
285285+ type: "record",
286286 description:
287287- 'This lexicon is in a not officially released state. It is subject to change. | A declaration of the status of the actor. Only one can be shown at a time. If there are multiple, the latest record should be picked and earlier records should be deleted or tombstoned.',
288288- key: 'literal:self',
287287+ "This lexicon is in a not officially released state. It is subject to change. | A declaration of the status of the actor. Only one can be shown at a time. If there are multiple, the latest record should be picked and earlier records should be deleted or tombstoned.",
288288+ key: "literal:self",
289289 record: {
290290- type: 'object',
291291- required: ['time', 'item'],
290290+ type: "object",
291291+ required: ["time", "item"],
292292 properties: {
293293 time: {
294294- type: 'string',
295295- format: 'datetime',
296296- description: 'The unix timestamp of when the item was recorded',
294294+ type: "string",
295295+ format: "datetime",
296296+ description: "The unix timestamp of when the item was recorded",
297297 },
298298 expiry: {
299299- type: 'string',
300300- format: 'datetime',
299299+ type: "string",
300300+ format: "datetime",
301301 description:
302302- 'The unix timestamp of the expiry time of the item. If unavailable, default to 10 minutes past the start time.',
302302+ "The unix timestamp of the expiry time of the item. If unavailable, default to 10 minutes past the start time.",
303303 },
304304 item: {
305305- type: 'ref',
306306- ref: 'lex:fm.teal.alpha.feed.defs#playView',
305305+ type: "ref",
306306+ ref: "lex:fm.teal.alpha.feed.defs#playView",
307307 },
308308 },
309309 },
···312312 },
313313 FmTealAlphaFeedDefs: {
314314 lexicon: 1,
315315- id: 'fm.teal.alpha.feed.defs',
315315+ id: "fm.teal.alpha.feed.defs",
316316 description:
317317- 'This lexicon is in a not officially released state. It is subject to change. | Misc. items related to feeds.',
317317+ "This lexicon is in a not officially released state. It is subject to change. | Misc. items related to feeds.",
318318 defs: {
319319 playView: {
320320- type: 'object',
321321- required: ['trackName', 'artists'],
320320+ type: "object",
321321+ required: ["trackName", "artists"],
322322 properties: {
323323 trackName: {
324324- type: 'string',
324324+ type: "string",
325325 minLength: 1,
326326 maxLength: 256,
327327 maxGraphemes: 2560,
328328- description: 'The name of the track',
328328+ description: "The name of the track",
329329 },
330330 trackMbId: {
331331- type: 'string',
332332- description: 'The Musicbrainz ID of the track',
331331+ type: "string",
332332+ description: "The Musicbrainz ID of the track",
333333 },
334334 recordingMbId: {
335335- type: 'string',
336336- description: 'The Musicbrainz recording ID of the track',
335335+ type: "string",
336336+ description: "The Musicbrainz recording ID of the track",
337337 },
338338 duration: {
339339- type: 'integer',
340340- description: 'The length of the track in seconds',
339339+ type: "integer",
340340+ description: "The length of the track in seconds",
341341 },
342342 artists: {
343343- type: 'array',
343343+ type: "array",
344344 items: {
345345- type: 'ref',
346346- ref: 'lex:fm.teal.alpha.feed.defs#artist',
345345+ type: "ref",
346346+ ref: "lex:fm.teal.alpha.feed.defs#artist",
347347 },
348348- description: 'Array of artists in order of original appearance.',
348348+ description: "Array of artists in order of original appearance.",
349349 },
350350 releaseName: {
351351- type: 'string',
351351+ type: "string",
352352 maxLength: 256,
353353 maxGraphemes: 2560,
354354- description: 'The name of the release/album',
354354+ description: "The name of the release/album",
355355 },
356356 releaseMbId: {
357357- type: 'string',
358358- description: 'The Musicbrainz release ID',
357357+ type: "string",
358358+ description: "The Musicbrainz release ID",
359359 },
360360 isrc: {
361361- type: 'string',
362362- description: 'The ISRC code associated with the recording',
361361+ type: "string",
362362+ description: "The ISRC code associated with the recording",
363363 },
364364 originUrl: {
365365- type: 'string',
366366- description: 'The URL associated with this track',
365365+ type: "string",
366366+ description: "The URL associated with this track",
367367 },
368368 musicServiceBaseDomain: {
369369- type: 'string',
369369+ type: "string",
370370 description:
371371 "The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided.",
372372 },
373373 submissionClientAgent: {
374374- type: 'string',
374374+ type: "string",
375375 maxLength: 256,
376376 maxGraphemes: 2560,
377377 description:
378378 "A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided.",
379379 },
380380 playedTime: {
381381- type: 'string',
382382- format: 'datetime',
383383- description: 'The unix timestamp of when the track was played',
381381+ type: "string",
382382+ format: "datetime",
383383+ description: "The unix timestamp of when the track was played",
384384 },
385385 },
386386 },
387387 artist: {
388388- type: 'object',
389389- required: ['artistName'],
388388+ type: "object",
389389+ required: ["artistName"],
390390 properties: {
391391 artistName: {
392392- type: 'string',
392392+ type: "string",
393393 minLength: 1,
394394 maxLength: 256,
395395 maxGraphemes: 2560,
396396- description: 'The name of the artist',
396396+ description: "The name of the artist",
397397 },
398398 artistMbId: {
399399- type: 'string',
400400- description: 'The Musicbrainz ID of the artist',
399399+ type: "string",
400400+ description: "The Musicbrainz ID of the artist",
401401 },
402402 },
403403 },
···405405 },
406406 FmTealAlphaFeedGetActorFeed: {
407407 lexicon: 1,
408408- id: 'fm.teal.alpha.feed.getActorFeed',
408408+ id: "fm.teal.alpha.feed.getActorFeed",
409409 description:
410410 "This lexicon is in a not officially released state. It is subject to change. | Retrieves multiple plays from the index or via an author's DID.",
411411 defs: {
412412 main: {
413413- type: 'query',
413413+ type: "query",
414414 parameters: {
415415- type: 'params',
416416- required: ['authorDID'],
415415+ type: "params",
416416+ required: ["authorDID"],
417417 properties: {
418418 authorDID: {
419419- type: 'string',
420420- format: 'at-identifier',
419419+ type: "string",
420420+ format: "at-identifier",
421421 description: "The author's DID for the play",
422422 },
423423 cursor: {
424424- type: 'string',
425425- description: 'The cursor to start the query from',
424424+ type: "string",
425425+ description: "The cursor to start the query from",
426426 },
427427 limit: {
428428- type: 'integer',
428428+ type: "integer",
429429 description:
430430- 'The upper limit of tracks to get per request. Default is 20, max is 50.',
430430+ "The upper limit of tracks to get per request. Default is 20, max is 50.",
431431 },
432432 },
433433 },
434434 output: {
435435- encoding: 'application/json',
435435+ encoding: "application/json",
436436 schema: {
437437- type: 'object',
438438- required: ['plays'],
437437+ type: "object",
438438+ required: ["plays"],
439439 properties: {
440440 plays: {
441441- type: 'array',
441441+ type: "array",
442442 items: {
443443- type: 'ref',
444444- ref: 'lex:fm.teal.alpha.feed.defs#playView',
443443+ type: "ref",
444444+ ref: "lex:fm.teal.alpha.feed.defs#playView",
445445 },
446446 },
447447 },
···452452 },
453453 FmTealAlphaFeedGetPlay: {
454454 lexicon: 1,
455455- id: 'fm.teal.alpha.feed.getPlay',
455455+ id: "fm.teal.alpha.feed.getPlay",
456456 description:
457457- 'This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.',
457457+ "This lexicon is in a not officially released state. It is subject to change. | Retrieves a play given an author DID and record key.",
458458 defs: {
459459 main: {
460460- type: 'query',
460460+ type: "query",
461461 parameters: {
462462- type: 'params',
463463- required: ['authorDID', 'rkey'],
462462+ type: "params",
463463+ required: ["authorDID", "rkey"],
464464 properties: {
465465 authorDID: {
466466- type: 'string',
467467- format: 'at-identifier',
466466+ type: "string",
467467+ format: "at-identifier",
468468 description: "The author's DID for the play",
469469 },
470470 rkey: {
471471- type: 'string',
472472- description: 'The record key of the play',
471471+ type: "string",
472472+ description: "The record key of the play",
473473 },
474474 },
475475 },
476476 output: {
477477- encoding: 'application/json',
477477+ encoding: "application/json",
478478 schema: {
479479- type: 'object',
480480- required: ['play'],
479479+ type: "object",
480480+ required: ["play"],
481481 properties: {
482482 play: {
483483- type: 'ref',
484484- ref: 'lex:fm.teal.alpha.feed.defs#playView',
483483+ type: "ref",
484484+ ref: "lex:fm.teal.alpha.feed.defs#playView",
485485 },
486486 },
487487 },
···491491 },
492492 FmTealAlphaFeedPlay: {
493493 lexicon: 1,
494494- id: 'fm.teal.alpha.feed.play',
494494+ id: "fm.teal.alpha.feed.play",
495495 description:
496496 "This lexicon is in a not officially released state. It is subject to change. | A declaration of a teal.fm play. Plays are submitted as a result of a user listening to a track. Plays should be marked as tracked when a user has listened to the entire track if it's under 2 minutes long, or half of the track's duration up to 4 minutes, whichever is longest.",
497497 defs: {
498498 main: {
499499- type: 'record',
500500- key: 'tid',
499499+ type: "record",
500500+ key: "tid",
501501 record: {
502502- type: 'object',
503503- required: ['trackName'],
502502+ type: "object",
503503+ required: ["trackName"],
504504 properties: {
505505 trackName: {
506506- type: 'string',
506506+ type: "string",
507507 minLength: 1,
508508 maxLength: 256,
509509 maxGraphemes: 2560,
510510- description: 'The name of the track',
510510+ description: "The name of the track",
511511 },
512512 trackMbId: {
513513- type: 'string',
514514- description: 'The Musicbrainz ID of the track',
513513+ type: "string",
514514+ description: "The Musicbrainz ID of the track",
515515 },
516516 recordingMbId: {
517517- type: 'string',
518518- description: 'The Musicbrainz recording ID of the track',
517517+ type: "string",
518518+ description: "The Musicbrainz recording ID of the track",
519519 },
520520 duration: {
521521- type: 'integer',
522522- description: 'The length of the track in seconds',
521521+ type: "integer",
522522+ description: "The length of the track in seconds",
523523 },
524524 artistNames: {
525525- type: 'array',
525525+ type: "array",
526526 items: {
527527- type: 'string',
527527+ type: "string",
528528 minLength: 1,
529529 maxLength: 256,
530530 maxGraphemes: 2560,
···533533 "Array of artist names in order of original appearance. Prefer using 'artists'.",
534534 },
535535 artistMbIds: {
536536- type: 'array',
536536+ type: "array",
537537 items: {
538538- type: 'string',
538538+ type: "string",
539539 },
540540 description:
541541 "Array of Musicbrainz artist IDs. Prefer using 'artists'.",
542542 },
543543 artists: {
544544- type: 'array',
544544+ type: "array",
545545 items: {
546546- type: 'ref',
547547- ref: 'lex:fm.teal.alpha.feed.defs#artist',
546546+ type: "ref",
547547+ ref: "lex:fm.teal.alpha.feed.defs#artist",
548548 },
549549- description: 'Array of artists in order of original appearance.',
549549+ description: "Array of artists in order of original appearance.",
550550 },
551551 releaseName: {
552552- type: 'string',
552552+ type: "string",
553553 maxLength: 256,
554554 maxGraphemes: 2560,
555555- description: 'The name of the release/album',
555555+ description: "The name of the release/album",
556556 },
557557 releaseMbId: {
558558- type: 'string',
559559- description: 'The Musicbrainz release ID',
558558+ type: "string",
559559+ description: "The Musicbrainz release ID",
560560 },
561561 isrc: {
562562- type: 'string',
563563- description: 'The ISRC code associated with the recording',
562562+ type: "string",
563563+ description: "The ISRC code associated with the recording",
564564 },
565565 originUrl: {
566566- type: 'string',
567567- description: 'The URL associated with this track',
566566+ type: "string",
567567+ description: "The URL associated with this track",
568568 },
569569 musicServiceBaseDomain: {
570570- type: 'string',
570570+ type: "string",
571571 description:
572572 "The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if unavailable or not provided.",
573573 },
574574 submissionClientAgent: {
575575- type: 'string',
575575+ type: "string",
576576 maxLength: 256,
577577 maxGraphemes: 2560,
578578 description:
579579 "A metadata string specifying the user agent where the format is `<app-identifier>/<version> (<kernel/OS-base>; <platform/OS-version>; <device-model>)`. If string is provided, only `app-identifier` and `version` are required. `app-identifier` is recommended to be in reverse dns format. Defaults to 'manual/unknown' if unavailable or not provided.",
580580 },
581581 playedTime: {
582582- type: 'string',
583583- format: 'datetime',
584584- description: 'The unix timestamp of when the track was played',
582582+ type: "string",
583583+ format: "datetime",
584584+ description: "The unix timestamp of when the track was played",
585585 },
586586 },
587587 },
···590590 },
591591 AppRockskyActorDefs: {
592592 lexicon: 1,
593593- id: 'app.rocksky.actor.defs',
593593+ id: "app.rocksky.actor.defs",
594594 defs: {
595595 profileViewDetailed: {
596596- type: 'object',
596596+ type: "object",
597597 properties: {
598598 id: {
599599- type: 'string',
600600- description: 'The unique identifier of the actor.',
599599+ type: "string",
600600+ description: "The unique identifier of the actor.",
601601 },
602602 did: {
603603- type: 'string',
604604- description: 'The DID of the actor.',
603603+ type: "string",
604604+ description: "The DID of the actor.",
605605 },
606606 handle: {
607607- type: 'string',
608608- description: 'The handle of the actor.',
607607+ type: "string",
608608+ description: "The handle of the actor.",
609609 },
610610 displayName: {
611611- type: 'string',
612612- description: 'The display name of the actor.',
611611+ type: "string",
612612+ description: "The display name of the actor.",
613613 },
614614 avatar: {
615615- type: 'string',
615615+ type: "string",
616616 description: "The URL of the actor's avatar image.",
617617- format: 'uri',
617617+ format: "uri",
618618 },
619619 createdAt: {
620620- type: 'string',
621621- description: 'The date and time when the actor was created.',
622622- format: 'datetime',
620620+ type: "string",
621621+ description: "The date and time when the actor was created.",
622622+ format: "datetime",
623623 },
624624 updatedAt: {
625625- type: 'string',
626626- description: 'The date and time when the actor was last updated.',
627627- format: 'datetime',
625625+ type: "string",
626626+ description: "The date and time when the actor was last updated.",
627627+ format: "datetime",
628628 },
629629 },
630630 },
631631 profileViewBasic: {
632632- type: 'object',
632632+ type: "object",
633633 properties: {
634634 id: {
635635- type: 'string',
636636- description: 'The unique identifier of the actor.',
635635+ type: "string",
636636+ description: "The unique identifier of the actor.",
637637 },
638638 did: {
639639- type: 'string',
640640- description: 'The DID of the actor.',
639639+ type: "string",
640640+ description: "The DID of the actor.",
641641 },
642642 handle: {
643643- type: 'string',
644644- description: 'The handle of the actor.',
643643+ type: "string",
644644+ description: "The handle of the actor.",
645645 },
646646 displayName: {
647647- type: 'string',
648648- description: 'The display name of the actor.',
647647+ type: "string",
648648+ description: "The display name of the actor.",
649649 },
650650 avatar: {
651651- type: 'string',
651651+ type: "string",
652652 description: "The URL of the actor's avatar image.",
653653- format: 'uri',
653653+ format: "uri",
654654 },
655655 createdAt: {
656656- type: 'string',
657657- description: 'The date and time when the actor was created.',
658658- format: 'datetime',
656656+ type: "string",
657657+ description: "The date and time when the actor was created.",
658658+ format: "datetime",
659659 },
660660 updatedAt: {
661661- type: 'string',
662662- description: 'The date and time when the actor was last updated.',
663663- format: 'datetime',
661661+ type: "string",
662662+ description: "The date and time when the actor was last updated.",
663663+ format: "datetime",
664664 },
665665 },
666666 },
667667 neighbourViewBasic: {
668668- type: 'object',
668668+ type: "object",
669669 properties: {
670670 userId: {
671671- type: 'string',
671671+ type: "string",
672672 },
673673 did: {
674674- type: 'string',
674674+ type: "string",
675675 },
676676 handle: {
677677- type: 'string',
677677+ type: "string",
678678 },
679679 displayName: {
680680- type: 'string',
680680+ type: "string",
681681 },
682682 avatar: {
683683- type: 'string',
683683+ type: "string",
684684 description: "The URL of the actor's avatar image.",
685685- format: 'uri',
685685+ format: "uri",
686686 },
687687 sharedArtistsCount: {
688688- type: 'integer',
689689- description: 'The number of artists shared with the actor.',
688688+ type: "integer",
689689+ description: "The number of artists shared with the actor.",
690690 },
691691 similarityScore: {
692692- type: 'integer',
693693- description: 'The similarity score with the actor.',
692692+ type: "integer",
693693+ description: "The similarity score with the actor.",
694694 },
695695 topSharedArtistNames: {
696696- type: 'array',
697697- description: 'The top shared artist names with the actor.',
696696+ type: "array",
697697+ description: "The top shared artist names with the actor.",
698698 items: {
699699- type: 'string',
699699+ type: "string",
700700 },
701701 },
702702 topSharedArtistsDetails: {
703703- type: 'array',
704704- description: 'The top shared artist details with the actor.',
703703+ type: "array",
704704+ description: "The top shared artist details with the actor.",
705705 items: {
706706- type: 'ref',
707707- ref: 'lex:app.rocksky.artist.defs#artistViewBasic',
706706+ type: "ref",
707707+ ref: "lex:app.rocksky.artist.defs#artistViewBasic",
708708 },
709709 },
710710 },
711711 },
712712 compatibilityViewBasic: {
713713- type: 'object',
713713+ type: "object",
714714 properties: {
715715 compatibilityLevel: {
716716- type: 'integer',
716716+ type: "integer",
717717 },
718718 compatibilityPercentage: {
719719- type: 'integer',
719719+ type: "integer",
720720 },
721721 sharedArtists: {
722722- type: 'integer',
722722+ type: "integer",
723723 },
724724 topSharedArtistNames: {
725725- type: 'array',
725725+ type: "array",
726726 items: {
727727- type: 'string',
727727+ type: "string",
728728 },
729729 },
730730 topSharedDetailedArtists: {
731731- type: 'array',
731731+ type: "array",
732732 items: {
733733- type: 'ref',
734734- ref: 'lex:app.rocksky.actor.defs#artistViewBasic',
733733+ type: "ref",
734734+ ref: "lex:app.rocksky.actor.defs#artistViewBasic",
735735 },
736736 },
737737 user1ArtistCount: {
738738- type: 'integer',
738738+ type: "integer",
739739 },
740740 user2ArtistCount: {
741741- type: 'integer',
741741+ type: "integer",
742742 },
743743 },
744744 },
745745 artistViewBasic: {
746746- type: 'object',
746746+ type: "object",
747747 properties: {
748748 id: {
749749- type: 'string',
749749+ type: "string",
750750 },
751751 name: {
752752- type: 'string',
752752+ type: "string",
753753 },
754754 picture: {
755755- type: 'string',
756756- format: 'uri',
755755+ type: "string",
756756+ format: "uri",
757757 },
758758 uri: {
759759- type: 'string',
760760- format: 'at-uri',
759759+ type: "string",
760760+ format: "at-uri",
761761 },
762762 user1Rank: {
763763- type: 'integer',
763763+ type: "integer",
764764 },
765765 user2Rank: {
766766- type: 'integer',
766766+ type: "integer",
767767 },
768768 weight: {
769769- type: 'integer',
769769+ type: "integer",
770770 },
771771 },
772772 },
···774774 },
775775 AppRockskyActorGetActorAlbums: {
776776 lexicon: 1,
777777- id: 'app.rocksky.actor.getActorAlbums',
777777+ id: "app.rocksky.actor.getActorAlbums",
778778 defs: {
779779 main: {
780780- type: 'query',
781781- description: 'Get albums for an actor',
780780+ type: "query",
781781+ description: "Get albums for an actor",
782782 parameters: {
783783- type: 'params',
784784- required: ['did'],
783783+ type: "params",
784784+ required: ["did"],
785785 properties: {
786786 did: {
787787- type: 'string',
788788- description: 'The DID or handle of the actor',
789789- format: 'at-identifier',
787787+ type: "string",
788788+ description: "The DID or handle of the actor",
789789+ format: "at-identifier",
790790 },
791791 limit: {
792792- type: 'integer',
793793- description: 'The maximum number of albums to return',
792792+ type: "integer",
793793+ description: "The maximum number of albums to return",
794794 minimum: 1,
795795 },
796796 offset: {
797797- type: 'integer',
798798- description: 'The offset for pagination',
797797+ type: "integer",
798798+ description: "The offset for pagination",
799799 minimum: 0,
800800 },
801801 startDate: {
802802- type: 'string',
802802+ type: "string",
803803 description:
804804- 'The start date to filter albums from (ISO 8601 format)',
805805- format: 'datetime',
804804+ "The start date to filter albums from (ISO 8601 format)",
805805+ format: "datetime",
806806 },
807807 endDate: {
808808- type: 'string',
809809- description: 'The end date to filter albums to (ISO 8601 format)',
810810- format: 'datetime',
808808+ type: "string",
809809+ description: "The end date to filter albums to (ISO 8601 format)",
810810+ format: "datetime",
811811 },
812812 },
813813 },
814814 output: {
815815- encoding: 'application/json',
815815+ encoding: "application/json",
816816 schema: {
817817- type: 'object',
817817+ type: "object",
818818 properties: {
819819 albums: {
820820- type: 'array',
820820+ type: "array",
821821 items: {
822822- type: 'ref',
823823- ref: 'lex:app.rocksky.album.defs#albumViewBasic',
822822+ type: "ref",
823823+ ref: "lex:app.rocksky.album.defs#albumViewBasic",
824824 },
825825 },
826826 },
···831831 },
832832 AppRockskyActorGetActorArtists: {
833833 lexicon: 1,
834834- id: 'app.rocksky.actor.getActorArtists',
834834+ id: "app.rocksky.actor.getActorArtists",
835835 defs: {
836836 main: {
837837- type: 'query',
838838- description: 'Get artists for an actor',
837837+ type: "query",
838838+ description: "Get artists for an actor",
839839 parameters: {
840840- type: 'params',
841841- required: ['did'],
840840+ type: "params",
841841+ required: ["did"],
842842 properties: {
843843 did: {
844844- type: 'string',
845845- description: 'The DID or handle of the actor',
846846- format: 'at-identifier',
844844+ type: "string",
845845+ description: "The DID or handle of the actor",
846846+ format: "at-identifier",
847847 },
848848 limit: {
849849- type: 'integer',
850850- description: 'The maximum number of albums to return',
849849+ type: "integer",
850850+ description: "The maximum number of albums to return",
851851 minimum: 1,
852852 },
853853 offset: {
854854- type: 'integer',
855855- description: 'The offset for pagination',
854854+ type: "integer",
855855+ description: "The offset for pagination",
856856 minimum: 0,
857857 },
858858 startDate: {
859859- type: 'string',
859859+ type: "string",
860860 description:
861861- 'The start date to filter albums from (ISO 8601 format)',
862862- format: 'datetime',
861861+ "The start date to filter albums from (ISO 8601 format)",
862862+ format: "datetime",
863863 },
864864 endDate: {
865865- type: 'string',
866866- description: 'The end date to filter albums to (ISO 8601 format)',
867867- format: 'datetime',
865865+ type: "string",
866866+ description: "The end date to filter albums to (ISO 8601 format)",
867867+ format: "datetime",
868868 },
869869 },
870870 },
871871 output: {
872872- encoding: 'application/json',
872872+ encoding: "application/json",
873873 schema: {
874874- type: 'object',
874874+ type: "object",
875875 properties: {
876876 artists: {
877877- type: 'array',
877877+ type: "array",
878878 items: {
879879- type: 'ref',
880880- ref: 'lex:app.rocksky.artist.defs#artistViewBasic',
879879+ type: "ref",
880880+ ref: "lex:app.rocksky.artist.defs#artistViewBasic",
881881 },
882882 },
883883 },
···888888 },
889889 AppRockskyActorGetActorCompatibility: {
890890 lexicon: 1,
891891- id: 'app.rocksky.actor.getActorCompatibility',
891891+ id: "app.rocksky.actor.getActorCompatibility",
892892 defs: {
893893 main: {
894894- type: 'query',
895895- description: 'Get compatibility for an actor',
894894+ type: "query",
895895+ description: "Get compatibility for an actor",
896896 parameters: {
897897- type: 'params',
898898- required: ['did'],
897897+ type: "params",
898898+ required: ["did"],
899899 properties: {
900900 did: {
901901- type: 'string',
902902- description: 'DID or handle to get compatibility for',
903903- format: 'at-identifier',
901901+ type: "string",
902902+ description: "DID or handle to get compatibility for",
903903+ format: "at-identifier",
904904 },
905905 },
906906 },
907907 output: {
908908- encoding: 'application/json',
908908+ encoding: "application/json",
909909 schema: {
910910- type: 'object',
910910+ type: "object",
911911 properties: {
912912 compatibility: {
913913- type: 'ref',
914914- ref: 'lex:app.rocksky.actor.defs#compatibilityViewBasic',
913913+ type: "ref",
914914+ ref: "lex:app.rocksky.actor.defs#compatibilityViewBasic",
915915 },
916916 },
917917 },
···921921 },
922922 AppRockskyActorGetActorLovedSongs: {
923923 lexicon: 1,
924924- id: 'app.rocksky.actor.getActorLovedSongs',
924924+ id: "app.rocksky.actor.getActorLovedSongs",
925925 defs: {
926926 main: {
927927- type: 'query',
928928- description: 'Get loved songs for an actor',
927927+ type: "query",
928928+ description: "Get loved songs for an actor",
929929 parameters: {
930930- type: 'params',
931931- required: ['did'],
930930+ type: "params",
931931+ required: ["did"],
932932 properties: {
933933 did: {
934934- type: 'string',
935935- description: 'The DID or handle of the actor',
936936- format: 'at-identifier',
934934+ type: "string",
935935+ description: "The DID or handle of the actor",
936936+ format: "at-identifier",
937937 },
938938 limit: {
939939- type: 'integer',
940940- description: 'The maximum number of albums to return',
939939+ type: "integer",
940940+ description: "The maximum number of albums to return",
941941 minimum: 1,
942942 },
943943 offset: {
944944- type: 'integer',
945945- description: 'The offset for pagination',
944944+ type: "integer",
945945+ description: "The offset for pagination",
946946 minimum: 0,
947947 },
948948 },
949949 },
950950 output: {
951951- encoding: 'application/json',
951951+ encoding: "application/json",
952952 schema: {
953953- type: 'object',
953953+ type: "object",
954954 properties: {
955955 tracks: {
956956- type: 'array',
956956+ type: "array",
957957 items: {
958958- type: 'ref',
959959- ref: 'lex:app.rocksky.song.defs#songViewBasic',
958958+ type: "ref",
959959+ ref: "lex:app.rocksky.song.defs#songViewBasic",
960960 },
961961 },
962962 },
···967967 },
968968 AppRockskyActorGetActorNeighbours: {
969969 lexicon: 1,
970970- id: 'app.rocksky.actor.getActorNeighbours',
970970+ id: "app.rocksky.actor.getActorNeighbours",
971971 defs: {
972972 main: {
973973- type: 'query',
974974- description: 'Get neighbours for an actor',
973973+ type: "query",
974974+ description: "Get neighbours for an actor",
975975 parameters: {
976976- type: 'params',
977977- required: ['did'],
976976+ type: "params",
977977+ required: ["did"],
978978 properties: {
979979 did: {
980980- type: 'string',
981981- description: 'The DID or handle of the actor',
982982- format: 'at-identifier',
980980+ type: "string",
981981+ description: "The DID or handle of the actor",
982982+ format: "at-identifier",
983983 },
984984 },
985985 },
986986 output: {
987987- encoding: 'application/json',
987987+ encoding: "application/json",
988988 schema: {
989989- type: 'object',
989989+ type: "object",
990990 properties: {
991991 neighbours: {
992992- type: 'array',
992992+ type: "array",
993993 items: {
994994- type: 'ref',
995995- ref: 'lex:app.rocksky.actor.defs#neighbourViewBasic',
994994+ type: "ref",
995995+ ref: "lex:app.rocksky.actor.defs#neighbourViewBasic",
996996 },
997997 },
998998 },
···10031003 },
10041004 AppRockskyActorGetActorPlaylists: {
10051005 lexicon: 1,
10061006- id: 'app.rocksky.actor.getActorPlaylists',
10061006+ id: "app.rocksky.actor.getActorPlaylists",
10071007 defs: {
10081008 main: {
10091009- type: 'query',
10101010- description: 'Get playlists for an actor',
10091009+ type: "query",
10101010+ description: "Get playlists for an actor",
10111011 parameters: {
10121012- type: 'params',
10131013- required: ['did'],
10121012+ type: "params",
10131013+ required: ["did"],
10141014 properties: {
10151015 did: {
10161016- type: 'string',
10171017- description: 'The DID or handle of the actor',
10181018- format: 'at-identifier',
10161016+ type: "string",
10171017+ description: "The DID or handle of the actor",
10181018+ format: "at-identifier",
10191019 },
10201020 limit: {
10211021- type: 'integer',
10221022- description: 'The maximum number of albums to return',
10211021+ type: "integer",
10221022+ description: "The maximum number of albums to return",
10231023 minimum: 1,
10241024 },
10251025 offset: {
10261026- type: 'integer',
10271027- description: 'The offset for pagination',
10261026+ type: "integer",
10271027+ description: "The offset for pagination",
10281028 minimum: 0,
10291029 },
10301030 },
10311031 },
10321032 output: {
10331033- encoding: 'application/json',
10331033+ encoding: "application/json",
10341034 schema: {
10351035- type: 'object',
10351035+ type: "object",
10361036 properties: {
10371037 playlists: {
10381038- type: 'array',
10381038+ type: "array",
10391039 items: {
10401040- type: 'ref',
10411041- ref: 'lex:app.rocksky.playlist.defs#playlistViewBasic',
10401040+ type: "ref",
10411041+ ref: "lex:app.rocksky.playlist.defs#playlistViewBasic",
10421042 },
10431043 },
10441044 },
···10491049 },
10501050 AppRockskyActorGetActorScrobbles: {
10511051 lexicon: 1,
10521052- id: 'app.rocksky.actor.getActorScrobbles',
10521052+ id: "app.rocksky.actor.getActorScrobbles",
10531053 defs: {
10541054 main: {
10551055- type: 'query',
10561056- description: 'Get scrobbles for an actor',
10551055+ type: "query",
10561056+ description: "Get scrobbles for an actor",
10571057 parameters: {
10581058- type: 'params',
10591059- required: ['did'],
10581058+ type: "params",
10591059+ required: ["did"],
10601060 properties: {
10611061 did: {
10621062- type: 'string',
10631063- description: 'The DID or handle of the actor',
10641064- format: 'at-identifier',
10621062+ type: "string",
10631063+ description: "The DID or handle of the actor",
10641064+ format: "at-identifier",
10651065 },
10661066 limit: {
10671067- type: 'integer',
10681068- description: 'The maximum number of albums to return',
10671067+ type: "integer",
10681068+ description: "The maximum number of albums to return",
10691069 minimum: 1,
10701070 },
10711071 offset: {
10721072- type: 'integer',
10731073- description: 'The offset for pagination',
10721072+ type: "integer",
10731073+ description: "The offset for pagination",
10741074 minimum: 0,
10751075 },
10761076 },
10771077 },
10781078 output: {
10791079- encoding: 'application/json',
10791079+ encoding: "application/json",
10801080 schema: {
10811081- type: 'object',
10811081+ type: "object",
10821082 properties: {
10831083 scrobbles: {
10841084- type: 'array',
10841084+ type: "array",
10851085 items: {
10861086- type: 'ref',
10871087- ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
10861086+ type: "ref",
10871087+ ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic",
10881088 },
10891089 },
10901090 },
···10951095 },
10961096 AppRockskyActorGetActorSongs: {
10971097 lexicon: 1,
10981098- id: 'app.rocksky.actor.getActorSongs',
10981098+ id: "app.rocksky.actor.getActorSongs",
10991099 defs: {
11001100 main: {
11011101- type: 'query',
11021102- description: 'Get songs for an actor',
11011101+ type: "query",
11021102+ description: "Get songs for an actor",
11031103 parameters: {
11041104- type: 'params',
11051105- required: ['did'],
11041104+ type: "params",
11051105+ required: ["did"],
11061106 properties: {
11071107 did: {
11081108- type: 'string',
11091109- description: 'The DID or handle of the actor',
11101110- format: 'at-identifier',
11081108+ type: "string",
11091109+ description: "The DID or handle of the actor",
11101110+ format: "at-identifier",
11111111 },
11121112 limit: {
11131113- type: 'integer',
11141114- description: 'The maximum number of albums to return',
11131113+ type: "integer",
11141114+ description: "The maximum number of albums to return",
11151115 minimum: 1,
11161116 },
11171117 offset: {
11181118- type: 'integer',
11191119- description: 'The offset for pagination',
11181118+ type: "integer",
11191119+ description: "The offset for pagination",
11201120 minimum: 0,
11211121 },
11221122 startDate: {
11231123- type: 'string',
11231123+ type: "string",
11241124 description:
11251125- 'The start date to filter albums from (ISO 8601 format)',
11261126- format: 'datetime',
11251125+ "The start date to filter albums from (ISO 8601 format)",
11261126+ format: "datetime",
11271127 },
11281128 endDate: {
11291129- type: 'string',
11301130- description: 'The end date to filter albums to (ISO 8601 format)',
11311131- format: 'datetime',
11291129+ type: "string",
11301130+ description: "The end date to filter albums to (ISO 8601 format)",
11311131+ format: "datetime",
11321132 },
11331133 },
11341134 },
11351135 output: {
11361136- encoding: 'application/json',
11361136+ encoding: "application/json",
11371137 schema: {
11381138- type: 'object',
11381138+ type: "object",
11391139 properties: {
11401140 songs: {
11411141- type: 'array',
11411141+ type: "array",
11421142 items: {
11431143- type: 'ref',
11441144- ref: 'lex:app.rocksky.song.defs#songViewBasic',
11431143+ type: "ref",
11441144+ ref: "lex:app.rocksky.song.defs#songViewBasic",
11451145 },
11461146 },
11471147 },
···11521152 },
11531153 AppRockskyActorGetProfile: {
11541154 lexicon: 1,
11551155- id: 'app.rocksky.actor.getProfile',
11551155+ id: "app.rocksky.actor.getProfile",
11561156 defs: {
11571157 main: {
11581158- type: 'query',
11591159- description: 'Get the profile of an actor',
11581158+ type: "query",
11591159+ description: "Get the profile of an actor",
11601160 parameters: {
11611161- type: 'params',
11611161+ type: "params",
11621162 properties: {
11631163 did: {
11641164- type: 'string',
11651165- description: 'The DID or handle of the actor',
11661166- format: 'at-identifier',
11641164+ type: "string",
11651165+ description: "The DID or handle of the actor",
11661166+ format: "at-identifier",
11671167 },
11681168 },
11691169 },
11701170 output: {
11711171- encoding: 'application/json',
11711171+ encoding: "application/json",
11721172 schema: {
11731173- type: 'ref',
11741174- ref: 'lex:app.rocksky.actor.defs#profileViewDetailed',
11731173+ type: "ref",
11741174+ ref: "lex:app.rocksky.actor.defs#profileViewDetailed",
11751175 },
11761176 },
11771177 },
···11791179 },
11801180 AppBskyActorProfile: {
11811181 lexicon: 1,
11821182- id: 'app.bsky.actor.profile',
11821182+ id: "app.bsky.actor.profile",
11831183 defs: {
11841184 main: {
11851185- type: 'record',
11861186- description: 'A declaration of a Bluesky account profile.',
11871187- key: 'literal:self',
11851185+ type: "record",
11861186+ description: "A declaration of a Bluesky account profile.",
11871187+ key: "literal:self",
11881188 record: {
11891189- type: 'object',
11891189+ type: "object",
11901190 properties: {
11911191 displayName: {
11921192- type: 'string',
11921192+ type: "string",
11931193 maxGraphemes: 64,
11941194 maxLength: 640,
11951195 },
11961196 description: {
11971197- type: 'string',
11981198- description: 'Free-form profile description text.',
11971197+ type: "string",
11981198+ description: "Free-form profile description text.",
11991199 maxGraphemes: 256,
12001200 maxLength: 2560,
12011201 },
12021202 avatar: {
12031203- type: 'blob',
12031203+ type: "blob",
12041204 description:
12051205 "Small image to be displayed next to posts from account. AKA, 'profile picture'",
12061206- accept: ['image/png', 'image/jpeg'],
12061206+ accept: ["image/png", "image/jpeg"],
12071207 maxSize: 1000000,
12081208 },
12091209 banner: {
12101210- type: 'blob',
12101210+ type: "blob",
12111211 description:
12121212- 'Larger horizontal image to display behind profile view.',
12131213- accept: ['image/png', 'image/jpeg'],
12121212+ "Larger horizontal image to display behind profile view.",
12131213+ accept: ["image/png", "image/jpeg"],
12141214 maxSize: 10000000,
12151215 },
12161216 labels: {
12171217- type: 'union',
12171217+ type: "union",
12181218 description:
12191219- 'Self-label values, specific to the Bluesky application, on the overall account.',
12201220- refs: ['lex:com.atproto.label.defs#selfLabels'],
12191219+ "Self-label values, specific to the Bluesky application, on the overall account.",
12201220+ refs: ["lex:com.atproto.label.defs#selfLabels"],
12211221 },
12221222 joinedViaStarterPack: {
12231223- type: 'ref',
12241224- ref: 'lex:com.atproto.repo.strongRef',
12231223+ type: "ref",
12241224+ ref: "lex:com.atproto.repo.strongRef",
12251225 },
12261226 createdAt: {
12271227- type: 'string',
12281228- format: 'datetime',
12271227+ type: "string",
12281228+ format: "datetime",
12291229 },
12301230 },
12311231 },
···12341234 },
12351235 AppRockskyAlbum: {
12361236 lexicon: 1,
12371237- id: 'app.rocksky.album',
12371237+ id: "app.rocksky.album",
12381238 defs: {
12391239 main: {
12401240- type: 'record',
12411241- description: 'A declaration of an album.',
12421242- key: 'tid',
12401240+ type: "record",
12411241+ description: "A declaration of an album.",
12421242+ key: "tid",
12431243 record: {
12441244- type: 'object',
12451245- required: ['title', 'artist', 'createdAt'],
12441244+ type: "object",
12451245+ required: ["title", "artist", "createdAt"],
12461246 properties: {
12471247 title: {
12481248- type: 'string',
12491249- description: 'The title of the album.',
12481248+ type: "string",
12491249+ description: "The title of the album.",
12501250 minLength: 1,
12511251 maxLength: 512,
12521252 },
12531253 artist: {
12541254- type: 'string',
12551255- description: 'The artist of the album.',
12541254+ type: "string",
12551255+ description: "The artist of the album.",
12561256 minLength: 1,
12571257 maxLength: 256,
12581258 },
12591259 duration: {
12601260- type: 'integer',
12611261- description: 'The duration of the album in seconds.',
12601260+ type: "integer",
12611261+ description: "The duration of the album in seconds.",
12621262 },
12631263 releaseDate: {
12641264- type: 'string',
12651265- description: 'The release date of the album.',
12661266- format: 'datetime',
12641264+ type: "string",
12651265+ description: "The release date of the album.",
12661266+ format: "datetime",
12671267 },
12681268 year: {
12691269- type: 'integer',
12701270- description: 'The year the album was released.',
12691269+ type: "integer",
12701270+ description: "The year the album was released.",
12711271 },
12721272 genre: {
12731273- type: 'string',
12741274- description: 'The genre of the album.',
12731273+ type: "string",
12741274+ description: "The genre of the album.",
12751275 maxLength: 256,
12761276 },
12771277 albumArt: {
12781278- type: 'blob',
12791279- description: 'The album art of the album.',
12801280- accept: ['image/png', 'image/jpeg'],
12781278+ type: "blob",
12791279+ description: "The album art of the album.",
12801280+ accept: ["image/png", "image/jpeg"],
12811281 maxSize: 2000000,
12821282 },
12831283 albumArtUrl: {
12841284- type: 'string',
12851285- description: 'The URL of the album art of the album.',
12861286- format: 'uri',
12841284+ type: "string",
12851285+ description: "The URL of the album art of the album.",
12861286+ format: "uri",
12871287 },
12881288 tags: {
12891289- type: 'array',
12901290- description: 'The tags of the album.',
12891289+ type: "array",
12901290+ description: "The tags of the album.",
12911291 items: {
12921292- type: 'string',
12921292+ type: "string",
12931293 minLength: 1,
12941294 maxLength: 256,
12951295 },
12961296 },
12971297 youtubeLink: {
12981298- type: 'string',
12991299- description: 'The YouTube link of the album.',
13001300- format: 'uri',
12981298+ type: "string",
12991299+ description: "The YouTube link of the album.",
13001300+ format: "uri",
13011301 },
13021302 spotifyLink: {
13031303- type: 'string',
13041304- description: 'The Spotify link of the album.',
13051305- format: 'uri',
13031303+ type: "string",
13041304+ description: "The Spotify link of the album.",
13051305+ format: "uri",
13061306 },
13071307 tidalLink: {
13081308- type: 'string',
13091309- description: 'The tidal link of the album.',
13101310- format: 'uri',
13081308+ type: "string",
13091309+ description: "The tidal link of the album.",
13101310+ format: "uri",
13111311 },
13121312 appleMusicLink: {
13131313- type: 'string',
13141314- description: 'The Apple Music link of the album.',
13151315- format: 'uri',
13131313+ type: "string",
13141314+ description: "The Apple Music link of the album.",
13151315+ format: "uri",
13161316 },
13171317 createdAt: {
13181318- type: 'string',
13191319- description: 'The date and time when the album was created.',
13201320- format: 'datetime',
13181318+ type: "string",
13191319+ description: "The date and time when the album was created.",
13201320+ format: "datetime",
13211321 },
13221322 },
13231323 },
···13261326 },
13271327 AppRockskyAlbumDefs: {
13281328 lexicon: 1,
13291329- id: 'app.rocksky.album.defs',
13291329+ id: "app.rocksky.album.defs",
13301330 defs: {
13311331 albumViewBasic: {
13321332- type: 'object',
13321332+ type: "object",
13331333 properties: {
13341334 id: {
13351335- type: 'string',
13361336- description: 'The unique identifier of the album.',
13351335+ type: "string",
13361336+ description: "The unique identifier of the album.",
13371337 },
13381338 uri: {
13391339- type: 'string',
13401340- description: 'The URI of the album.',
13411341- format: 'at-uri',
13391339+ type: "string",
13401340+ description: "The URI of the album.",
13411341+ format: "at-uri",
13421342 },
13431343 title: {
13441344- type: 'string',
13451345- description: 'The title of the album.',
13441344+ type: "string",
13451345+ description: "The title of the album.",
13461346 },
13471347 artist: {
13481348- type: 'string',
13491349- description: 'The artist of the album.',
13481348+ type: "string",
13491349+ description: "The artist of the album.",
13501350 },
13511351 artistUri: {
13521352- type: 'string',
13521352+ type: "string",
13531353 description: "The URI of the album's artist.",
13541354- format: 'at-uri',
13541354+ format: "at-uri",
13551355 },
13561356 year: {
13571357- type: 'integer',
13581358- description: 'The year the album was released.',
13571357+ type: "integer",
13581358+ description: "The year the album was released.",
13591359 },
13601360 albumArt: {
13611361- type: 'string',
13621362- description: 'The URL of the album art image.',
13631363- format: 'uri',
13611361+ type: "string",
13621362+ description: "The URL of the album art image.",
13631363+ format: "uri",
13641364 },
13651365 releaseDate: {
13661366- type: 'string',
13671367- description: 'The release date of the album.',
13661366+ type: "string",
13671367+ description: "The release date of the album.",
13681368 },
13691369 sha256: {
13701370- type: 'string',
13711371- description: 'The SHA256 hash of the album.',
13701370+ type: "string",
13711371+ description: "The SHA256 hash of the album.",
13721372 },
13731373 playCount: {
13741374- type: 'integer',
13751375- description: 'The number of times the album has been played.',
13741374+ type: "integer",
13751375+ description: "The number of times the album has been played.",
13761376 minimum: 0,
13771377 },
13781378 uniqueListeners: {
13791379- type: 'integer',
13791379+ type: "integer",
13801380 description:
13811381- 'The number of unique listeners who have played the album.',
13811381+ "The number of unique listeners who have played the album.",
13821382 minimum: 0,
13831383 },
13841384 },
13851385 },
13861386 albumViewDetailed: {
13871387- type: 'object',
13871387+ type: "object",
13881388 properties: {
13891389 id: {
13901390- type: 'string',
13911391- description: 'The unique identifier of the album.',
13901390+ type: "string",
13911391+ description: "The unique identifier of the album.",
13921392 },
13931393 uri: {
13941394- type: 'string',
13951395- description: 'The URI of the album.',
13961396- format: 'at-uri',
13941394+ type: "string",
13951395+ description: "The URI of the album.",
13961396+ format: "at-uri",
13971397 },
13981398 title: {
13991399- type: 'string',
14001400- description: 'The title of the album.',
13991399+ type: "string",
14001400+ description: "The title of the album.",
14011401 },
14021402 artist: {
14031403- type: 'string',
14041404- description: 'The artist of the album.',
14031403+ type: "string",
14041404+ description: "The artist of the album.",
14051405 },
14061406 artistUri: {
14071407- type: 'string',
14071407+ type: "string",
14081408 description: "The URI of the album's artist.",
14091409- format: 'at-uri',
14091409+ format: "at-uri",
14101410 },
14111411 year: {
14121412- type: 'integer',
14131413- description: 'The year the album was released.',
14121412+ type: "integer",
14131413+ description: "The year the album was released.",
14141414 },
14151415 albumArt: {
14161416- type: 'string',
14171417- description: 'The URL of the album art image.',
14181418- format: 'uri',
14161416+ type: "string",
14171417+ description: "The URL of the album art image.",
14181418+ format: "uri",
14191419 },
14201420 releaseDate: {
14211421- type: 'string',
14221422- description: 'The release date of the album.',
14211421+ type: "string",
14221422+ description: "The release date of the album.",
14231423 },
14241424 sha256: {
14251425- type: 'string',
14261426- description: 'The SHA256 hash of the album.',
14251425+ type: "string",
14261426+ description: "The SHA256 hash of the album.",
14271427 },
14281428 playCount: {
14291429- type: 'integer',
14301430- description: 'The number of times the album has been played.',
14291429+ type: "integer",
14301430+ description: "The number of times the album has been played.",
14311431 minimum: 0,
14321432 },
14331433 uniqueListeners: {
14341434- type: 'integer',
14341434+ type: "integer",
14351435 description:
14361436- 'The number of unique listeners who have played the album.',
14361436+ "The number of unique listeners who have played the album.",
14371437 minimum: 0,
14381438 },
14391439 tags: {
14401440- type: 'array',
14401440+ type: "array",
14411441 items: {
14421442- type: 'string',
14421442+ type: "string",
14431443 },
14441444 },
14451445 tracks: {
14461446- type: 'array',
14461446+ type: "array",
14471447 items: {
14481448- type: 'ref',
14491449- ref: 'lex:app.rocksky.song.defs.songViewBasic',
14481448+ type: "ref",
14491449+ ref: "lex:app.rocksky.song.defs.songViewBasic",
14501450 },
14511451 },
14521452 },
···14551455 },
14561456 AppRockskyAlbumGetAlbum: {
14571457 lexicon: 1,
14581458- id: 'app.rocksky.album.getAlbum',
14581458+ id: "app.rocksky.album.getAlbum",
14591459 defs: {
14601460 main: {
14611461- type: 'query',
14621462- description: 'Get detailed album view',
14611461+ type: "query",
14621462+ description: "Get detailed album view",
14631463 parameters: {
14641464- type: 'params',
14651465- required: ['uri'],
14641464+ type: "params",
14651465+ required: ["uri"],
14661466 properties: {
14671467 uri: {
14681468- type: 'string',
14691469- description: 'The URI of the album to retrieve.',
14701470- format: 'at-uri',
14681468+ type: "string",
14691469+ description: "The URI of the album to retrieve.",
14701470+ format: "at-uri",
14711471 },
14721472 },
14731473 },
14741474 output: {
14751475- encoding: 'application/json',
14751475+ encoding: "application/json",
14761476 schema: {
14771477- type: 'ref',
14781478- ref: 'lex:app.rocksky.album.defs#albumViewDetailed',
14771477+ type: "ref",
14781478+ ref: "lex:app.rocksky.album.defs#albumViewDetailed",
14791479 },
14801480 },
14811481 },
···14831483 },
14841484 AppRockskyAlbumGetAlbums: {
14851485 lexicon: 1,
14861486- id: 'app.rocksky.album.getAlbums',
14861486+ id: "app.rocksky.album.getAlbums",
14871487 defs: {
14881488 main: {
14891489- type: 'query',
14901490- description: 'Get albums',
14891489+ type: "query",
14901490+ description: "Get albums",
14911491 parameters: {
14921492- type: 'params',
14921492+ type: "params",
14931493 properties: {
14941494 limit: {
14951495- type: 'integer',
14961496- description: 'The maximum number of albums to return',
14951495+ type: "integer",
14961496+ description: "The maximum number of albums to return",
14971497 minimum: 1,
14981498 },
14991499 offset: {
15001500- type: 'integer',
15011501- description: 'The offset for pagination',
15001500+ type: "integer",
15011501+ description: "The offset for pagination",
15021502 minimum: 0,
15031503 },
15041504 genre: {
15051505- type: 'string',
15061506- description: 'The genre to filter artists by',
15051505+ type: "string",
15061506+ description: "The genre to filter artists by",
15071507 },
15081508 },
15091509 },
15101510 output: {
15111511- encoding: 'application/json',
15111511+ encoding: "application/json",
15121512 schema: {
15131513- type: 'object',
15131513+ type: "object",
15141514 properties: {
15151515 albums: {
15161516- type: 'array',
15161516+ type: "array",
15171517 items: {
15181518- type: 'ref',
15191519- ref: 'lex:app.rocksky.album.defs#albumViewBasic',
15181518+ type: "ref",
15191519+ ref: "lex:app.rocksky.album.defs#albumViewBasic",
15201520 },
15211521 },
15221522 },
···15271527 },
15281528 AppRockskyAlbumGetAlbumTracks: {
15291529 lexicon: 1,
15301530- id: 'app.rocksky.album.getAlbumTracks',
15301530+ id: "app.rocksky.album.getAlbumTracks",
15311531 defs: {
15321532 main: {
15331533- type: 'query',
15341534- description: 'Get tracks for an album',
15331533+ type: "query",
15341534+ description: "Get tracks for an album",
15351535 parameters: {
15361536- type: 'params',
15371537- required: ['uri'],
15361536+ type: "params",
15371537+ required: ["uri"],
15381538 properties: {
15391539 uri: {
15401540- type: 'string',
15411541- description: 'The URI of the album to retrieve tracks from',
15421542- format: 'at-uri',
15401540+ type: "string",
15411541+ description: "The URI of the album to retrieve tracks from",
15421542+ format: "at-uri",
15431543 },
15441544 },
15451545 },
15461546 output: {
15471547- encoding: 'application/json',
15471547+ encoding: "application/json",
15481548 schema: {
15491549- type: 'object',
15491549+ type: "object",
15501550 properties: {
15511551 tracks: {
15521552- type: 'array',
15521552+ type: "array",
15531553 items: {
15541554- type: 'ref',
15551555- ref: 'lex:app.rocksky.song.defs#songViewBasic',
15541554+ type: "ref",
15551555+ ref: "lex:app.rocksky.song.defs#songViewBasic",
15561556 },
15571557 },
15581558 },
···15631563 },
15641564 AppRockskyApikeyCreateApikey: {
15651565 lexicon: 1,
15661566- id: 'app.rocksky.apikey.createApikey',
15661566+ id: "app.rocksky.apikey.createApikey",
15671567 defs: {
15681568 main: {
15691569- type: 'procedure',
15701570- description: 'Create a new API key for the authenticated user',
15691569+ type: "procedure",
15701570+ description: "Create a new API key for the authenticated user",
15711571 input: {
15721572- encoding: 'application/json',
15721572+ encoding: "application/json",
15731573 schema: {
15741574- type: 'object',
15751575- required: ['name'],
15741574+ type: "object",
15751575+ required: ["name"],
15761576 properties: {
15771577 name: {
15781578- type: 'string',
15791579- description: 'The name of the API key.',
15781578+ type: "string",
15791579+ description: "The name of the API key.",
15801580 },
15811581 description: {
15821582- type: 'string',
15831583- description: 'A description for the API key.',
15821582+ type: "string",
15831583+ description: "A description for the API key.",
15841584 },
15851585 },
15861586 },
15871587 },
15881588 output: {
15891589- encoding: 'application/json',
15891589+ encoding: "application/json",
15901590 schema: {
15911591- type: 'ref',
15921592- ref: 'lex:app.rocksky.apikey.defs#apiKey',
15911591+ type: "ref",
15921592+ ref: "lex:app.rocksky.apikey.defs#apiKey",
15931593 },
15941594 },
15951595 },
···15971597 },
15981598 AppRockskyApikeyDefs: {
15991599 lexicon: 1,
16001600- id: 'app.rocksky.apikey.defs',
16001600+ id: "app.rocksky.apikey.defs",
16011601 defs: {
16021602 apiKeyView: {
16031603- type: 'object',
16031603+ type: "object",
16041604 properties: {
16051605 id: {
16061606- type: 'string',
16071607- description: 'The unique identifier of the API key.',
16061606+ type: "string",
16071607+ description: "The unique identifier of the API key.",
16081608 },
16091609 name: {
16101610- type: 'string',
16111611- description: 'The name of the API key.',
16101610+ type: "string",
16111611+ description: "The name of the API key.",
16121612 },
16131613 description: {
16141614- type: 'string',
16151615- description: 'A description for the API key.',
16141614+ type: "string",
16151615+ description: "A description for the API key.",
16161616 },
16171617 createdAt: {
16181618- type: 'string',
16191619- description: 'The date and time when the API key was created.',
16201620- format: 'datetime',
16181618+ type: "string",
16191619+ description: "The date and time when the API key was created.",
16201620+ format: "datetime",
16211621 },
16221622 },
16231623 },
···16251625 },
16261626 AppRockskyApikeysDefs: {
16271627 lexicon: 1,
16281628- id: 'app.rocksky.apikeys.defs',
16281628+ id: "app.rocksky.apikeys.defs",
16291629 defs: {},
16301630 },
16311631 AppRockskyApikeyGetApikeys: {
16321632 lexicon: 1,
16331633- id: 'app.rocksky.apikey.getApikeys',
16331633+ id: "app.rocksky.apikey.getApikeys",
16341634 defs: {
16351635 main: {
16361636- type: 'query',
16371637- description: 'Get a list of API keys for the authenticated user',
16361636+ type: "query",
16371637+ description: "Get a list of API keys for the authenticated user",
16381638 parameters: {
16391639- type: 'params',
16391639+ type: "params",
16401640 properties: {
16411641 offset: {
16421642- type: 'integer',
16421642+ type: "integer",
16431643 description:
16441644- 'The number of API keys to skip before starting to collect the result set.',
16441644+ "The number of API keys to skip before starting to collect the result set.",
16451645 },
16461646 limit: {
16471647- type: 'integer',
16481648- description: 'The number of API keys to return per page.',
16471647+ type: "integer",
16481648+ description: "The number of API keys to return per page.",
16491649 },
16501650 },
16511651 },
16521652 output: {
16531653- encoding: 'application/json',
16531653+ encoding: "application/json",
16541654 schema: {
16551655- type: 'object',
16551655+ type: "object",
16561656 properties: {
16571657 apiKeys: {
16581658- type: 'array',
16581658+ type: "array",
16591659 items: {
16601660- type: 'ref',
16611661- ref: 'lex:app.rocksky.apikey.defs#apikeyView',
16601660+ type: "ref",
16611661+ ref: "lex:app.rocksky.apikey.defs#apikeyView",
16621662 },
16631663 },
16641664 },
···16691669 },
16701670 AppRockskyApikeyRemoveApikey: {
16711671 lexicon: 1,
16721672- id: 'app.rocksky.apikey.removeApikey',
16721672+ id: "app.rocksky.apikey.removeApikey",
16731673 defs: {
16741674 main: {
16751675- type: 'procedure',
16761676- description: 'Remove an API key for the authenticated user',
16751675+ type: "procedure",
16761676+ description: "Remove an API key for the authenticated user",
16771677 parameters: {
16781678- type: 'params',
16791679- required: ['id'],
16781678+ type: "params",
16791679+ required: ["id"],
16801680 properties: {
16811681 id: {
16821682- type: 'string',
16831683- description: 'The ID of the API key to remove.',
16821682+ type: "string",
16831683+ description: "The ID of the API key to remove.",
16841684 },
16851685 },
16861686 },
16871687 output: {
16881688- encoding: 'application/json',
16881688+ encoding: "application/json",
16891689 schema: {
16901690- type: 'ref',
16911691- ref: 'lex:app.rocksky.apikey.defs#apiKey',
16901690+ type: "ref",
16911691+ ref: "lex:app.rocksky.apikey.defs#apiKey",
16921692 },
16931693 },
16941694 },
···16961696 },
16971697 AppRockskyApikeyUpdateApikey: {
16981698 lexicon: 1,
16991699- id: 'app.rocksky.apikey.updateApikey',
16991699+ id: "app.rocksky.apikey.updateApikey",
17001700 defs: {
17011701 main: {
17021702- type: 'procedure',
17031703- description: 'Update an existing API key for the authenticated user',
17021702+ type: "procedure",
17031703+ description: "Update an existing API key for the authenticated user",
17041704 input: {
17051705- encoding: 'application/json',
17051705+ encoding: "application/json",
17061706 schema: {
17071707- type: 'object',
17081708- required: ['id', 'name'],
17071707+ type: "object",
17081708+ required: ["id", "name"],
17091709 properties: {
17101710 id: {
17111711- type: 'string',
17121712- description: 'The ID of the API key to update.',
17111711+ type: "string",
17121712+ description: "The ID of the API key to update.",
17131713 },
17141714 name: {
17151715- type: 'string',
17161716- description: 'The new name of the API key.',
17151715+ type: "string",
17161716+ description: "The new name of the API key.",
17171717 },
17181718 description: {
17191719- type: 'string',
17201720- description: 'A new description for the API key.',
17191719+ type: "string",
17201720+ description: "A new description for the API key.",
17211721 },
17221722 },
17231723 },
17241724 },
17251725 output: {
17261726- encoding: 'application/json',
17261726+ encoding: "application/json",
17271727 schema: {
17281728- type: 'ref',
17291729- ref: 'lex:app.rocksky.apikey.defs#apiKey',
17281728+ type: "ref",
17291729+ ref: "lex:app.rocksky.apikey.defs#apiKey",
17301730 },
17311731 },
17321732 },
···17341734 },
17351735 AppRockskyArtist: {
17361736 lexicon: 1,
17371737- id: 'app.rocksky.artist',
17371737+ id: "app.rocksky.artist",
17381738 defs: {
17391739 main: {
17401740- type: 'record',
17411741- description: 'A declaration of an artist.',
17421742- key: 'tid',
17401740+ type: "record",
17411741+ description: "A declaration of an artist.",
17421742+ key: "tid",
17431743 record: {
17441744- type: 'object',
17451745- required: ['name', 'createdAt'],
17441744+ type: "object",
17451745+ required: ["name", "createdAt"],
17461746 properties: {
17471747 name: {
17481748- type: 'string',
17491749- description: 'The name of the artist.',
17481748+ type: "string",
17491749+ description: "The name of the artist.",
17501750 minLength: 1,
17511751 maxLength: 512,
17521752 },
17531753 bio: {
17541754- type: 'string',
17551755- description: 'The biography of the artist.',
17541754+ type: "string",
17551755+ description: "The biography of the artist.",
17561756 maxLength: 1000,
17571757 },
17581758 picture: {
17591759- type: 'blob',
17601760- description: 'The picture of the artist.',
17611761- accept: ['image/png', 'image/jpeg'],
17591759+ type: "blob",
17601760+ description: "The picture of the artist.",
17611761+ accept: ["image/png", "image/jpeg"],
17621762 maxSize: 2000000,
17631763 },
17641764 pictureUrl: {
17651765- type: 'string',
17661766- description: 'The URL of the picture of the artist.',
17671767- format: 'uri',
17651765+ type: "string",
17661766+ description: "The URL of the picture of the artist.",
17671767+ format: "uri",
17681768 },
17691769 tags: {
17701770- type: 'array',
17711771- description: 'The tags of the artist.',
17701770+ type: "array",
17711771+ description: "The tags of the artist.",
17721772 items: {
17731773- type: 'string',
17731773+ type: "string",
17741774 minLength: 1,
17751775 maxLength: 256,
17761776 },
17771777 },
17781778 born: {
17791779- type: 'string',
17801780- description: 'The birth date of the artist.',
17811781- format: 'datetime',
17791779+ type: "string",
17801780+ description: "The birth date of the artist.",
17811781+ format: "datetime",
17821782 },
17831783 died: {
17841784- type: 'string',
17851785- description: 'The death date of the artist.',
17861786- format: 'datetime',
17841784+ type: "string",
17851785+ description: "The death date of the artist.",
17861786+ format: "datetime",
17871787 },
17881788 bornIn: {
17891789- type: 'string',
17901790- description: 'The birth place of the artist.',
17891789+ type: "string",
17901790+ description: "The birth place of the artist.",
17911791 maxLength: 256,
17921792 },
17931793 createdAt: {
17941794- type: 'string',
17951795- description: 'The date when the artist was created.',
17961796- format: 'datetime',
17941794+ type: "string",
17951795+ description: "The date when the artist was created.",
17961796+ format: "datetime",
17971797 },
17981798 },
17991799 },
···18021802 },
18031803 AppRockskyArtistDefs: {
18041804 lexicon: 1,
18051805- id: 'app.rocksky.artist.defs',
18051805+ id: "app.rocksky.artist.defs",
18061806 defs: {
18071807 artistViewBasic: {
18081808- type: 'object',
18081808+ type: "object",
18091809 properties: {
18101810 id: {
18111811- type: 'string',
18121812- description: 'The unique identifier of the artist.',
18111811+ type: "string",
18121812+ description: "The unique identifier of the artist.",
18131813 },
18141814 uri: {
18151815- type: 'string',
18161816- description: 'The URI of the artist.',
18171817- format: 'at-uri',
18151815+ type: "string",
18161816+ description: "The URI of the artist.",
18171817+ format: "at-uri",
18181818 },
18191819 name: {
18201820- type: 'string',
18211821- description: 'The name of the artist.',
18201820+ type: "string",
18211821+ description: "The name of the artist.",
18221822 },
18231823 picture: {
18241824- type: 'string',
18251825- description: 'The picture of the artist.',
18241824+ type: "string",
18251825+ description: "The picture of the artist.",
18261826 },
18271827 sha256: {
18281828- type: 'string',
18291829- description: 'The SHA256 hash of the artist.',
18281828+ type: "string",
18291829+ description: "The SHA256 hash of the artist.",
18301830 },
18311831 playCount: {
18321832- type: 'integer',
18331833- description: 'The number of times the artist has been played.',
18321832+ type: "integer",
18331833+ description: "The number of times the artist has been played.",
18341834 minimum: 0,
18351835 },
18361836 uniqueListeners: {
18371837- type: 'integer',
18371837+ type: "integer",
18381838 description:
18391839- 'The number of unique listeners who have played the artist.',
18391839+ "The number of unique listeners who have played the artist.",
18401840 minimum: 0,
18411841 },
18421842 tags: {
18431843- type: 'array',
18431843+ type: "array",
18441844 items: {
18451845- type: 'string',
18451845+ type: "string",
18461846 },
18471847 },
18481848 },
18491849 },
18501850 artistViewDetailed: {
18511851- type: 'object',
18511851+ type: "object",
18521852 properties: {
18531853 id: {
18541854- type: 'string',
18551855- description: 'The unique identifier of the artist.',
18541854+ type: "string",
18551855+ description: "The unique identifier of the artist.",
18561856 },
18571857 uri: {
18581858- type: 'string',
18591859- description: 'The URI of the artist.',
18601860- format: 'at-uri',
18581858+ type: "string",
18591859+ description: "The URI of the artist.",
18601860+ format: "at-uri",
18611861 },
18621862 name: {
18631863- type: 'string',
18641864- description: 'The name of the artist.',
18631863+ type: "string",
18641864+ description: "The name of the artist.",
18651865 },
18661866 picture: {
18671867- type: 'string',
18681868- description: 'The picture of the artist.',
18671867+ type: "string",
18681868+ description: "The picture of the artist.",
18691869 },
18701870 sha256: {
18711871- type: 'string',
18721872- description: 'The SHA256 hash of the artist.',
18711871+ type: "string",
18721872+ description: "The SHA256 hash of the artist.",
18731873 },
18741874 playCount: {
18751875- type: 'integer',
18761876- description: 'The number of times the artist has been played.',
18751875+ type: "integer",
18761876+ description: "The number of times the artist has been played.",
18771877 minimum: 0,
18781878 },
18791879 uniqueListeners: {
18801880- type: 'integer',
18801880+ type: "integer",
18811881 description:
18821882- 'The number of unique listeners who have played the artist.',
18821882+ "The number of unique listeners who have played the artist.",
18831883 minimum: 0,
18841884 },
18851885 tags: {
18861886- type: 'array',
18861886+ type: "array",
18871887 items: {
18881888- type: 'string',
18881888+ type: "string",
18891889 },
18901890 },
18911891 },
18921892 },
18931893 songViewBasic: {
18941894- type: 'object',
18941894+ type: "object",
18951895 properties: {
18961896 uri: {
18971897- type: 'string',
18981898- description: 'The URI of the song.',
18991899- format: 'at-uri',
18971897+ type: "string",
18981898+ description: "The URI of the song.",
18991899+ format: "at-uri",
19001900 },
19011901 title: {
19021902- type: 'string',
19031903- description: 'The title of the song.',
19021902+ type: "string",
19031903+ description: "The title of the song.",
19041904 },
19051905 playCount: {
19061906- type: 'integer',
19071907- description: 'The number of times the song has been played.',
19061906+ type: "integer",
19071907+ description: "The number of times the song has been played.",
19081908 minimum: 0,
19091909 },
19101910 },
19111911 },
19121912 listenerViewBasic: {
19131913- type: 'object',
19131913+ type: "object",
19141914 properties: {
19151915 id: {
19161916- type: 'string',
19171917- description: 'The unique identifier of the actor.',
19161916+ type: "string",
19171917+ description: "The unique identifier of the actor.",
19181918 },
19191919 did: {
19201920- type: 'string',
19211921- description: 'The DID of the listener.',
19201920+ type: "string",
19211921+ description: "The DID of the listener.",
19221922 },
19231923 handle: {
19241924- type: 'string',
19251925- description: 'The handle of the listener.',
19241924+ type: "string",
19251925+ description: "The handle of the listener.",
19261926 },
19271927 displayName: {
19281928- type: 'string',
19291929- description: 'The display name of the listener.',
19281928+ type: "string",
19291929+ description: "The display name of the listener.",
19301930 },
19311931 avatar: {
19321932- type: 'string',
19321932+ type: "string",
19331933 description: "The URL of the listener's avatar image.",
19341934- format: 'uri',
19341934+ format: "uri",
19351935 },
19361936 mostListenedSong: {
19371937- type: 'ref',
19381938- ref: 'lex:app.rocksky.artist.defs#songViewBasic',
19371937+ type: "ref",
19381938+ ref: "lex:app.rocksky.artist.defs#songViewBasic",
19391939 },
19401940 totalPlays: {
19411941- type: 'integer',
19421942- description: 'The total number of plays by the listener.',
19411941+ type: "integer",
19421942+ description: "The total number of plays by the listener.",
19431943 minimum: 0,
19441944 },
19451945 rank: {
19461946- type: 'integer',
19461946+ type: "integer",
19471947 description:
19481948- 'The rank of the listener among all listeners of the artist.',
19481948+ "The rank of the listener among all listeners of the artist.",
19491949 minimum: 1,
19501950 },
19511951 },
19521952 },
19531953 artistMbid: {
19541954- type: 'object',
19541954+ type: "object",
19551955 properties: {
19561956 mbid: {
19571957- type: 'string',
19581958- description: 'The MusicBrainz Identifier (MBID) of the artist.',
19571957+ type: "string",
19581958+ description: "The MusicBrainz Identifier (MBID) of the artist.",
19591959 },
19601960 name: {
19611961- type: 'string',
19621962- description: 'The name of the artist.',
19611961+ type: "string",
19621962+ description: "The name of the artist.",
19631963 minLength: 1,
19641964 maxLength: 256,
19651965 },
···19691969 },
19701970 AppRockskyArtistGetArtist: {
19711971 lexicon: 1,
19721972- id: 'app.rocksky.artist.getArtist',
19721972+ id: "app.rocksky.artist.getArtist",
19731973 defs: {
19741974 main: {
19751975- type: 'query',
19761976- description: 'Get artist details',
19751975+ type: "query",
19761976+ description: "Get artist details",
19771977 parameters: {
19781978- type: 'params',
19791979- required: ['uri'],
19781978+ type: "params",
19791979+ required: ["uri"],
19801980 properties: {
19811981 uri: {
19821982- type: 'string',
19831983- description: 'The URI of the artist to retrieve details from',
19841984- format: 'at-uri',
19821982+ type: "string",
19831983+ description: "The URI of the artist to retrieve details from",
19841984+ format: "at-uri",
19851985 },
19861986 },
19871987 },
19881988 output: {
19891989- encoding: 'application/json',
19891989+ encoding: "application/json",
19901990 schema: {
19911991- type: 'ref',
19921992- ref: 'lex:app.rocksky.artist.defs#artistViewDetailed',
19911991+ type: "ref",
19921992+ ref: "lex:app.rocksky.artist.defs#artistViewDetailed",
19931993 },
19941994 },
19951995 },
···19971997 },
19981998 AppRockskyArtistGetArtistAlbums: {
19991999 lexicon: 1,
20002000- id: 'app.rocksky.artist.getArtistAlbums',
20002000+ id: "app.rocksky.artist.getArtistAlbums",
20012001 defs: {
20022002 main: {
20032003- type: 'query',
20032003+ type: "query",
20042004 description: "Get artist's albums",
20052005 parameters: {
20062006- type: 'params',
20072007- required: ['uri'],
20062006+ type: "params",
20072007+ required: ["uri"],
20082008 properties: {
20092009 uri: {
20102010- type: 'string',
20112011- description: 'The URI of the artist to retrieve albums from',
20122012- format: 'at-uri',
20102010+ type: "string",
20112011+ description: "The URI of the artist to retrieve albums from",
20122012+ format: "at-uri",
20132013 },
20142014 },
20152015 },
20162016 output: {
20172017- encoding: 'application/json',
20172017+ encoding: "application/json",
20182018 schema: {
20192019- type: 'object',
20192019+ type: "object",
20202020 properties: {
20212021 albums: {
20222022- type: 'array',
20222022+ type: "array",
20232023 items: {
20242024- type: 'ref',
20252025- ref: 'lex:app.rocksky.album.defs#albumViewBasic',
20242024+ type: "ref",
20252025+ ref: "lex:app.rocksky.album.defs#albumViewBasic",
20262026 },
20272027 },
20282028 },
···20332033 },
20342034 AppRockskyArtistGetArtistListeners: {
20352035 lexicon: 1,
20362036- id: 'app.rocksky.artist.getArtistListeners',
20362036+ id: "app.rocksky.artist.getArtistListeners",
20372037 defs: {
20382038 main: {
20392039- type: 'query',
20402040- description: 'Get artist listeners',
20392039+ type: "query",
20402040+ description: "Get artist listeners",
20412041 parameters: {
20422042- type: 'params',
20432043- required: ['uri'],
20422042+ type: "params",
20432043+ required: ["uri"],
20442044 properties: {
20452045 uri: {
20462046- type: 'string',
20472047- description: 'The URI of the artist to retrieve listeners from',
20482048- format: 'at-uri',
20462046+ type: "string",
20472047+ description: "The URI of the artist to retrieve listeners from",
20482048+ format: "at-uri",
20492049 },
20502050 offset: {
20512051- type: 'integer',
20522052- description: 'Number of items to skip before returning results',
20512051+ type: "integer",
20522052+ description: "Number of items to skip before returning results",
20532053 },
20542054 limit: {
20552055- type: 'integer',
20562056- description: 'Maximum number of results to return',
20552055+ type: "integer",
20562056+ description: "Maximum number of results to return",
20572057 },
20582058 },
20592059 },
20602060 output: {
20612061- encoding: 'application/json',
20612061+ encoding: "application/json",
20622062 schema: {
20632063- type: 'object',
20632063+ type: "object",
20642064 properties: {
20652065 listeners: {
20662066- type: 'array',
20662066+ type: "array",
20672067 items: {
20682068- type: 'ref',
20692069- ref: 'lex:app.rocksky.artist.defs#listenerViewBasic',
20682068+ type: "ref",
20692069+ ref: "lex:app.rocksky.artist.defs#listenerViewBasic",
20702070 },
20712071 },
20722072 },
···20772077 },
20782078 AppRockskyArtistGetArtists: {
20792079 lexicon: 1,
20802080- id: 'app.rocksky.artist.getArtists',
20802080+ id: "app.rocksky.artist.getArtists",
20812081 defs: {
20822082 main: {
20832083- type: 'query',
20842084- description: 'Get artists',
20832083+ type: "query",
20842084+ description: "Get artists",
20852085 parameters: {
20862086- type: 'params',
20862086+ type: "params",
20872087 properties: {
20882088 limit: {
20892089- type: 'integer',
20902090- description: 'The maximum number of artists to return',
20892089+ type: "integer",
20902090+ description: "The maximum number of artists to return",
20912091 minimum: 1,
20922092 },
20932093 offset: {
20942094- type: 'integer',
20952095- description: 'The offset for pagination',
20942094+ type: "integer",
20952095+ description: "The offset for pagination",
20962096 minimum: 0,
20972097 },
20982098 names: {
20992099- type: 'string',
21002100- description: 'The names of the artists to return',
20992099+ type: "string",
21002100+ description: "The names of the artists to return",
21012101 },
21022102 genre: {
21032103- type: 'string',
21042104- description: 'The genre to filter artists by',
21032103+ type: "string",
21042104+ description: "The genre to filter artists by",
21052105 },
21062106 },
21072107 },
21082108 output: {
21092109- encoding: 'application/json',
21092109+ encoding: "application/json",
21102110 schema: {
21112111- type: 'object',
21112111+ type: "object",
21122112 properties: {
21132113 artists: {
21142114- type: 'array',
21142114+ type: "array",
21152115 items: {
21162116- type: 'ref',
21172117- ref: 'lex:app.rocksky.artist.defs#artistViewBasic',
21162116+ type: "ref",
21172117+ ref: "lex:app.rocksky.artist.defs#artistViewBasic",
21182118 },
21192119 },
21202120 },
···21252125 },
21262126 AppRockskyArtistGetArtistTracks: {
21272127 lexicon: 1,
21282128- id: 'app.rocksky.artist.getArtistTracks',
21282128+ id: "app.rocksky.artist.getArtistTracks",
21292129 defs: {
21302130 main: {
21312131- type: 'query',
21312131+ type: "query",
21322132 description: "Get artist's tracks",
21332133 parameters: {
21342134- type: 'params',
21342134+ type: "params",
21352135 properties: {
21362136 uri: {
21372137- type: 'string',
21382138- description: 'The URI of the artist to retrieve albums from',
21392139- format: 'at-uri',
21372137+ type: "string",
21382138+ description: "The URI of the artist to retrieve albums from",
21392139+ format: "at-uri",
21402140 },
21412141 limit: {
21422142- type: 'integer',
21432143- description: 'The maximum number of tracks to return',
21422142+ type: "integer",
21432143+ description: "The maximum number of tracks to return",
21442144 minimum: 1,
21452145 },
21462146 offset: {
21472147- type: 'integer',
21482148- description: 'The offset for pagination',
21472147+ type: "integer",
21482148+ description: "The offset for pagination",
21492149 minimum: 0,
21502150 },
21512151 },
21522152 },
21532153 output: {
21542154- encoding: 'application/json',
21542154+ encoding: "application/json",
21552155 schema: {
21562156- type: 'object',
21562156+ type: "object",
21572157 properties: {
21582158 tracks: {
21592159- type: 'array',
21592159+ type: "array",
21602160 items: {
21612161- type: 'ref',
21622162- ref: 'lex:app.rocksky.song.defs#songViewBasic',
21612161+ type: "ref",
21622162+ ref: "lex:app.rocksky.song.defs#songViewBasic",
21632163 },
21642164 },
21652165 },
···21702170 },
21712171 AppRockskyChartsDefs: {
21722172 lexicon: 1,
21732173- id: 'app.rocksky.charts.defs',
21732173+ id: "app.rocksky.charts.defs",
21742174 defs: {
21752175 chartsView: {
21762176- type: 'object',
21762176+ type: "object",
21772177 properties: {
21782178 scrobbles: {
21792179- type: 'array',
21792179+ type: "array",
21802180 items: {
21812181- type: 'ref',
21822182- ref: 'lex:app.rocksky.charts.defs#scrobbleViewBasic',
21812181+ type: "ref",
21822182+ ref: "lex:app.rocksky.charts.defs#scrobbleViewBasic",
21832183 },
21842184 },
21852185 },
21862186 },
21872187 scrobbleViewBasic: {
21882188- type: 'object',
21882188+ type: "object",
21892189 properties: {
21902190 date: {
21912191- type: 'string',
21922192- description: 'The date of the scrobble.',
21932193- format: 'datetime',
21912191+ type: "string",
21922192+ description: "The date of the scrobble.",
21932193+ format: "datetime",
21942194 },
21952195 count: {
21962196- type: 'integer',
21972197- description: 'The number of scrobbles on this date.',
21962196+ type: "integer",
21972197+ description: "The number of scrobbles on this date.",
21982198 },
21992199 },
22002200 },
···22022202 },
22032203 AppRockskyChartsGetScrobblesChart: {
22042204 lexicon: 1,
22052205- id: 'app.rocksky.charts.getScrobblesChart',
22052205+ id: "app.rocksky.charts.getScrobblesChart",
22062206 defs: {
22072207 main: {
22082208- type: 'query',
22092209- description: 'Get the scrobbles chart',
22082208+ type: "query",
22092209+ description: "Get the scrobbles chart",
22102210 parameters: {
22112211- type: 'params',
22112211+ type: "params",
22122212 properties: {
22132213 did: {
22142214- type: 'string',
22152215- description: 'The DID or handle of the actor',
22162216- format: 'at-identifier',
22142214+ type: "string",
22152215+ description: "The DID or handle of the actor",
22162216+ format: "at-identifier",
22172217 },
22182218 artisturi: {
22192219- type: 'string',
22202220- description: 'The URI of the artist to filter by',
22212221- format: 'at-uri',
22192219+ type: "string",
22202220+ description: "The URI of the artist to filter by",
22212221+ format: "at-uri",
22222222 },
22232223 albumuri: {
22242224- type: 'string',
22252225- description: 'The URI of the album to filter by',
22262226- format: 'at-uri',
22242224+ type: "string",
22252225+ description: "The URI of the album to filter by",
22262226+ format: "at-uri",
22272227 },
22282228 songuri: {
22292229- type: 'string',
22302230- description: 'The URI of the track to filter by',
22312231- format: 'at-uri',
22292229+ type: "string",
22302230+ description: "The URI of the track to filter by",
22312231+ format: "at-uri",
22322232+ },
22332233+ genre: {
22342234+ type: "string",
22352235+ description: "The genre to filter by",
22322236 },
22332237 },
22342238 },
22352239 output: {
22362236- encoding: 'application/json',
22402240+ encoding: "application/json",
22372241 schema: {
22382238- type: 'ref',
22392239- ref: 'lex:app.rocksky.charts.defs#chartsView',
22422242+ type: "ref",
22432243+ ref: "lex:app.rocksky.charts.defs#chartsView",
22402244 },
22412245 },
22422246 },
···22442248 },
22452249 AppRockskyDropboxDefs: {
22462250 lexicon: 1,
22472247- id: 'app.rocksky.dropbox.defs',
22512251+ id: "app.rocksky.dropbox.defs",
22482252 defs: {
22492253 fileView: {
22502250- type: 'object',
22542254+ type: "object",
22512255 properties: {
22522256 id: {
22532253- type: 'string',
22542254- description: 'The unique identifier of the file.',
22572257+ type: "string",
22582258+ description: "The unique identifier of the file.",
22552259 },
22562260 name: {
22572257- type: 'string',
22582258- description: 'The name of the file.',
22612261+ type: "string",
22622262+ description: "The name of the file.",
22592263 },
22602264 pathLower: {
22612261- type: 'string',
22622262- description: 'The lowercased path of the file.',
22652265+ type: "string",
22662266+ description: "The lowercased path of the file.",
22632267 },
22642268 pathDisplay: {
22652265- type: 'string',
22662266- description: 'The display path of the file.',
22692269+ type: "string",
22702270+ description: "The display path of the file.",
22672271 },
22682272 clientModified: {
22692269- type: 'string',
22732273+ type: "string",
22702274 description:
22712271- 'The last modified date and time of the file on the client.',
22722272- format: 'datetime',
22752275+ "The last modified date and time of the file on the client.",
22762276+ format: "datetime",
22732277 },
22742278 serverModified: {
22752275- type: 'string',
22792279+ type: "string",
22762280 description:
22772277- 'The last modified date and time of the file on the server.',
22782278- format: 'datetime',
22812281+ "The last modified date and time of the file on the server.",
22822282+ format: "datetime",
22792283 },
22802284 },
22812285 },
22822286 fileListView: {
22832283- type: 'object',
22872287+ type: "object",
22842288 properties: {
22852289 files: {
22862286- type: 'array',
22872287- description: 'A list of files in the Dropbox.',
22902290+ type: "array",
22912291+ description: "A list of files in the Dropbox.",
22882292 items: {
22892289- type: 'ref',
22902290- ref: 'lex:app.rocksky.dropbox.defs#fileView',
22932293+ type: "ref",
22942294+ ref: "lex:app.rocksky.dropbox.defs#fileView",
22912295 },
22922296 },
22932297 },
22942298 },
22952299 temporaryLinkView: {
22962296- type: 'object',
23002300+ type: "object",
22972301 properties: {
22982302 link: {
22992299- type: 'string',
23002300- description: 'The temporary link to access the file.',
23012301- format: 'uri',
23032303+ type: "string",
23042304+ description: "The temporary link to access the file.",
23052305+ format: "uri",
23022306 },
23032307 },
23042308 },
···23062310 },
23072311 AppRockskyDropboxDownloadFile: {
23082312 lexicon: 1,
23092309- id: 'app.rocksky.dropbox.downloadFile',
23132313+ id: "app.rocksky.dropbox.downloadFile",
23102314 defs: {
23112315 main: {
23122312- type: 'query',
23132313- description: 'Download a file from Dropbox by its unique identifier',
23162316+ type: "query",
23172317+ description: "Download a file from Dropbox by its unique identifier",
23142318 parameters: {
23152315- type: 'params',
23162316- required: ['fileId'],
23192319+ type: "params",
23202320+ required: ["fileId"],
23172321 properties: {
23182322 fileId: {
23192319- type: 'string',
23202320- description: 'The unique identifier of the file to download',
23232323+ type: "string",
23242324+ description: "The unique identifier of the file to download",
23212325 },
23222326 },
23232327 },
23242328 output: {
23252325- encoding: 'application/octet-stream',
23292329+ encoding: "application/octet-stream",
23262330 },
23272331 },
23282332 },
23292333 },
23302334 AppRockskyDropboxGetFiles: {
23312335 lexicon: 1,
23322332- id: 'app.rocksky.dropbox.getFiles',
23362336+ id: "app.rocksky.dropbox.getFiles",
23332337 defs: {
23342338 main: {
23352335- type: 'query',
23362336- description: 'Retrieve a list of files from Dropbox',
23392339+ type: "query",
23402340+ description: "Retrieve a list of files from Dropbox",
23372341 parameters: {
23382338- type: 'params',
23422342+ type: "params",
23392343 properties: {
23402344 at: {
23412341- type: 'string',
23422342- description: 'Path to the Dropbox folder or root directory',
23452345+ type: "string",
23462346+ description: "Path to the Dropbox folder or root directory",
23432347 },
23442348 },
23452349 },
23462350 output: {
23472347- encoding: 'application/json',
23512351+ encoding: "application/json",
23482352 schema: {
23492349- type: 'ref',
23502350- ref: 'lex:app.rocksky.dropbox.defs#fileListView',
23532353+ type: "ref",
23542354+ ref: "lex:app.rocksky.dropbox.defs#fileListView",
23512355 },
23522356 },
23532357 },
···23552359 },
23562360 AppRockskyDropboxGetMetadata: {
23572361 lexicon: 1,
23582358- id: 'app.rocksky.dropbox.getMetadata',
23622362+ id: "app.rocksky.dropbox.getMetadata",
23592363 defs: {
23602364 main: {
23612361- type: 'query',
23622362- description: 'Retrieve metadata of a file or folder in Dropbox',
23652365+ type: "query",
23662366+ description: "Retrieve metadata of a file or folder in Dropbox",
23632367 parameters: {
23642364- type: 'params',
23652365- required: ['path'],
23682368+ type: "params",
23692369+ required: ["path"],
23662370 properties: {
23672371 path: {
23682368- type: 'string',
23692369- description: 'Path to the file or folder in Dropbox',
23722372+ type: "string",
23732373+ description: "Path to the file or folder in Dropbox",
23702374 },
23712375 },
23722376 },
23732377 output: {
23742374- encoding: 'application/json',
23782378+ encoding: "application/json",
23752379 schema: {
23762376- type: 'ref',
23772377- ref: 'lex:app.rocksky.dropbox.defs#fileView',
23802380+ type: "ref",
23812381+ ref: "lex:app.rocksky.dropbox.defs#fileView",
23782382 },
23792383 },
23802384 },
···23822386 },
23832387 AppRockskyDropboxGetTemporaryLink: {
23842388 lexicon: 1,
23852385- id: 'app.rocksky.dropbox.getTemporaryLink',
23892389+ id: "app.rocksky.dropbox.getTemporaryLink",
23862390 defs: {
23872391 main: {
23882388- type: 'query',
23892389- description: 'Retrieve a temporary link to access a file in Dropbox',
23922392+ type: "query",
23932393+ description: "Retrieve a temporary link to access a file in Dropbox",
23902394 parameters: {
23912391- type: 'params',
23922392- required: ['path'],
23952395+ type: "params",
23962396+ required: ["path"],
23932397 properties: {
23942398 path: {
23952395- type: 'string',
23962396- description: 'Path to the file in Dropbox',
23992399+ type: "string",
24002400+ description: "Path to the file in Dropbox",
23972401 },
23982402 },
23992403 },
24002404 output: {
24012401- encoding: 'application/json',
24052405+ encoding: "application/json",
24022406 schema: {
24032403- type: 'ref',
24042404- ref: 'lex:app.rocksky.dropbox.defs#temporaryLinkView',
24072407+ type: "ref",
24082408+ ref: "lex:app.rocksky.dropbox.defs#temporaryLinkView",
24052409 },
24062410 },
24072411 },
···24092413 },
24102414 AppRockskyFeedDefs: {
24112415 lexicon: 1,
24122412- id: 'app.rocksky.feed.defs',
24162416+ id: "app.rocksky.feed.defs",
24132417 defs: {
24142418 searchResultsView: {
24152415- type: 'object',
24192419+ type: "object",
24162420 properties: {
24172421 hits: {
24182418- type: 'array',
24222422+ type: "array",
24192423 items: {
24202420- type: 'union',
24242424+ type: "union",
24212425 refs: [
24222422- 'lex:app.rocksky.song.defs#songViewBasic',
24232423- 'lex:app.rocksky.album.defs#albumViewBasic',
24242424- 'lex:app.rocksky.artist.defs#artistViewBasic',
24252425- 'lex:app.rocksky.playlist.defs#playlistViewBasic',
24262426- 'lex:app.rocksky.actor.defs#profileViewBasic',
24262426+ "lex:app.rocksky.song.defs#songViewBasic",
24272427+ "lex:app.rocksky.album.defs#albumViewBasic",
24282428+ "lex:app.rocksky.artist.defs#artistViewBasic",
24292429+ "lex:app.rocksky.playlist.defs#playlistViewBasic",
24302430+ "lex:app.rocksky.actor.defs#profileViewBasic",
24272431 ],
24282432 },
24292433 },
24302434 processingTimeMs: {
24312431- type: 'integer',
24352435+ type: "integer",
24322436 },
24332437 limit: {
24342434- type: 'integer',
24382438+ type: "integer",
24352439 },
24362440 offset: {
24372437- type: 'integer',
24412441+ type: "integer",
24382442 },
24392443 estimatedTotalHits: {
24402440- type: 'integer',
24442444+ type: "integer",
24412445 },
24422446 },
24432447 },
24442448 nowPlayingView: {
24452445- type: 'object',
24492449+ type: "object",
24462450 properties: {
24472451 album: {
24482448- type: 'string',
24522452+ type: "string",
24492453 },
24502454 albumArt: {
24512451- type: 'string',
24522452- format: 'uri',
24552455+ type: "string",
24562456+ format: "uri",
24532457 },
24542458 albumArtist: {
24552455- type: 'string',
24592459+ type: "string",
24562460 },
24572461 albumUri: {
24582458- type: 'string',
24592459- format: 'at-uri',
24622462+ type: "string",
24632463+ format: "at-uri",
24602464 },
24612465 artist: {
24622462- type: 'string',
24662466+ type: "string",
24632467 },
24642468 artistUri: {
24652465- type: 'string',
24662466- format: 'at-uri',
24692469+ type: "string",
24702470+ format: "at-uri",
24672471 },
24682472 avatar: {
24692469- type: 'string',
24702470- format: 'uri',
24732473+ type: "string",
24742474+ format: "uri",
24712475 },
24722476 createdAt: {
24732473- type: 'string',
24772477+ type: "string",
24742478 },
24752479 did: {
24762476- type: 'string',
24772477- format: 'at-identifier',
24802480+ type: "string",
24812481+ format: "at-identifier",
24782482 },
24792483 handle: {
24802480- type: 'string',
24842484+ type: "string",
24812485 },
24822486 id: {
24832483- type: 'string',
24872487+ type: "string",
24842488 },
24852489 title: {
24862486- type: 'string',
24902490+ type: "string",
24872491 },
24882492 trackId: {
24892489- type: 'string',
24932493+ type: "string",
24902494 },
24912495 trackUri: {
24922492- type: 'string',
24932493- format: 'at-uri',
24962496+ type: "string",
24972497+ format: "at-uri",
24942498 },
24952499 uri: {
24962496- type: 'string',
24972497- format: 'at-uri',
25002500+ type: "string",
25012501+ format: "at-uri",
24982502 },
24992503 },
25002504 },
25012505 nowPlayingsView: {
25022502- type: 'object',
25062506+ type: "object",
25032507 properties: {
25042508 nowPlayings: {
25052505- type: 'array',
25092509+ type: "array",
25062510 items: {
25072507- type: 'ref',
25082508- ref: 'lex:app.rocksky.feed.defs#nowPlayingView',
25112511+ type: "ref",
25122512+ ref: "lex:app.rocksky.feed.defs#nowPlayingView",
25092513 },
25102514 },
25112515 },
25122516 },
25132517 feedGeneratorsView: {
25142514- type: 'object',
25182518+ type: "object",
25152519 properties: {
25162520 feeds: {
25172517- type: 'array',
25212521+ type: "array",
25182522 items: {
25192519- type: 'ref',
25202520- ref: 'lex:app.rocksky.feed.defs#feedGeneratorView',
25232523+ type: "ref",
25242524+ ref: "lex:app.rocksky.feed.defs#feedGeneratorView",
25212525 },
25222526 },
25232527 },
25242528 },
25252529 feedGeneratorView: {
25262526- type: 'object',
25302530+ type: "object",
25272531 properties: {
25282532 id: {
25292529- type: 'string',
25332533+ type: "string",
25302534 },
25312535 name: {
25322532- type: 'string',
25362536+ type: "string",
25332537 },
25342538 description: {
25352535- type: 'string',
25392539+ type: "string",
25362540 },
25372541 uri: {
25382538- type: 'string',
25392539- format: 'at-uri',
25422542+ type: "string",
25432543+ format: "at-uri",
25402544 },
25412545 avatar: {
25422542- type: 'string',
25432543- format: 'uri',
25462546+ type: "string",
25472547+ format: "uri",
25442548 },
25452549 creator: {
25462546- type: 'ref',
25472547- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
25502550+ type: "ref",
25512551+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
25482552 },
25492553 },
25502554 },
25512555 feedUriView: {
25522552- type: 'object',
25562556+ type: "object",
25532557 properties: {
25542558 uri: {
25552555- type: 'string',
25562556- description: 'The feed URI.',
25572557- format: 'at-uri',
25592559+ type: "string",
25602560+ description: "The feed URI.",
25612561+ format: "at-uri",
25582562 },
25592563 },
25602564 },
25612565 feedItemView: {
25622562- type: 'object',
25662566+ type: "object",
25632567 properties: {
25642568 scrobble: {
25652565- type: 'ref',
25662566- ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
25692569+ type: "ref",
25702570+ ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic",
25672571 },
25682572 },
25692573 },
25702574 feedView: {
25712571- type: 'object',
25752575+ type: "object",
25722576 properties: {
25732577 feed: {
25742574- type: 'array',
25782578+ type: "array",
25752579 items: {
25762576- type: 'ref',
25772577- ref: 'lex:app.rocksky.feed.defs#feedItemView',
25802580+ type: "ref",
25812581+ ref: "lex:app.rocksky.feed.defs#feedItemView",
25782582 },
25792583 },
25802584 cursor: {
25812581- type: 'string',
25822582- description: 'The pagination cursor for the next set of results.',
25852585+ type: "string",
25862586+ description: "The pagination cursor for the next set of results.",
25832587 },
25842588 },
25852589 },
···25872591 },
25882592 AppRockskyFeedDescribeFeedGenerator: {
25892593 lexicon: 1,
25902590- id: 'app.rocksky.feed.describeFeedGenerator',
25942594+ id: "app.rocksky.feed.describeFeedGenerator",
25912595 defs: {
25922596 main: {
25932593- type: 'query',
25942594- description: 'Get information about a feed generator',
25972597+ type: "query",
25982598+ description: "Get information about a feed generator",
25952599 parameters: {
25962596- type: 'params',
26002600+ type: "params",
25972601 properties: {},
25982602 },
25992603 output: {
26002600- encoding: 'application/json',
26042604+ encoding: "application/json",
26012605 schema: {
26022602- type: 'object',
26062606+ type: "object",
26032607 properties: {
26042608 did: {
26052605- type: 'string',
26062606- description: 'The DID of the feed generator.',
26072607- format: 'at-identifier',
26092609+ type: "string",
26102610+ description: "The DID of the feed generator.",
26112611+ format: "at-identifier",
26082612 },
26092613 feeds: {
26102610- type: 'array',
26142614+ type: "array",
26112615 description:
26122612- 'List of feed URIs generated by this feed generator.',
26162616+ "List of feed URIs generated by this feed generator.",
26132617 items: {
26142614- type: 'ref',
26152615- ref: 'lex:app.rocksky.feed.defs#feedUriView',
26182618+ type: "ref",
26192619+ ref: "lex:app.rocksky.feed.defs#feedUriView",
26162620 },
26172621 },
26182622 },
···26232627 },
26242628 AppRockskyFeedGenerator: {
26252629 lexicon: 1,
26262626- id: 'app.rocksky.feed.generator',
26302630+ id: "app.rocksky.feed.generator",
26272631 defs: {
26282632 main: {
26292629- type: 'record',
26332633+ type: "record",
26302634 description:
26312631- 'Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.',
26322632- key: 'tid',
26352635+ "Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.",
26362636+ key: "tid",
26332637 record: {
26342634- type: 'object',
26352635- required: ['did', 'displayName', 'createdAt'],
26382638+ type: "object",
26392639+ required: ["did", "displayName", "createdAt"],
26362640 properties: {
26372641 did: {
26382638- type: 'string',
26392639- format: 'did',
26422642+ type: "string",
26432643+ format: "did",
26402644 },
26412645 avatar: {
26422642- type: 'blob',
26432643- accept: ['image/png', 'image/jpeg'],
26462646+ type: "blob",
26472647+ accept: ["image/png", "image/jpeg"],
26442648 maxSize: 1000000,
26452649 },
26462650 displayName: {
26472647- type: 'string',
26512651+ type: "string",
26482652 maxGraphemes: 24,
26492653 maxLength: 240,
26502654 },
26512655 description: {
26522652- type: 'string',
26562656+ type: "string",
26532657 maxGraphemes: 300,
26542658 maxLength: 3000,
26552659 },
26562660 createdAt: {
26572657- type: 'string',
26582658- format: 'datetime',
26612661+ type: "string",
26622662+ format: "datetime",
26592663 },
26602664 },
26612665 },
···26642668 },
26652669 AppRockskyFeedGetFeed: {
26662670 lexicon: 1,
26672667- id: 'app.rocksky.feed.getFeed',
26712671+ id: "app.rocksky.feed.getFeed",
26682672 defs: {
26692673 main: {
26702670- type: 'query',
26712671- description: 'Get the feed by uri',
26742674+ type: "query",
26752675+ description: "Get the feed by uri",
26722676 parameters: {
26732673- type: 'params',
26742674- required: ['feed'],
26772677+ type: "params",
26782678+ required: ["feed"],
26752679 properties: {
26762680 feed: {
26772677- type: 'string',
26782678- description: 'The feed URI.',
26792679- format: 'at-uri',
26812681+ type: "string",
26822682+ description: "The feed URI.",
26832683+ format: "at-uri",
26802684 },
26812685 limit: {
26822682- type: 'integer',
26832683- description: 'The maximum number of scrobbles to return',
26862686+ type: "integer",
26872687+ description: "The maximum number of scrobbles to return",
26842688 minimum: 1,
26852689 },
26862690 cursor: {
26872687- type: 'string',
26882688- description: 'The cursor for pagination',
26912691+ type: "string",
26922692+ description: "The cursor for pagination",
26892693 },
26902694 },
26912695 },
26922696 output: {
26932693- encoding: 'application/json',
26972697+ encoding: "application/json",
26942698 schema: {
26952695- type: 'ref',
26962696- ref: 'lex:app.rocksky.feed.defs#feedView',
26992699+ type: "ref",
27002700+ ref: "lex:app.rocksky.feed.defs#feedView",
26972701 },
26982702 },
26992703 },
···27012705 },
27022706 AppRockskyFeedGetFeedGenerator: {
27032707 lexicon: 1,
27042704- id: 'app.rocksky.feed.getFeedGenerator',
27082708+ id: "app.rocksky.feed.getFeedGenerator",
27052709 defs: {
27062710 main: {
27072707- type: 'query',
27082708- description: 'Get information about a feed generator',
27112711+ type: "query",
27122712+ description: "Get information about a feed generator",
27092713 parameters: {
27102710- type: 'params',
27112711- required: ['feed'],
27142714+ type: "params",
27152715+ required: ["feed"],
27122716 properties: {
27132717 feed: {
27142714- type: 'string',
27152715- description: 'AT-URI of the feed generator record.',
27162716- format: 'at-uri',
27182718+ type: "string",
27192719+ description: "AT-URI of the feed generator record.",
27202720+ format: "at-uri",
27172721 },
27182722 },
27192723 },
27202724 output: {
27212721- encoding: 'application/json',
27252725+ encoding: "application/json",
27222726 schema: {
27232723- type: 'object',
27272727+ type: "object",
27242728 properties: {
27252729 view: {
27262726- type: 'ref',
27272727- ref: 'lex:app.rocksky.feed.defs#feedGeneratorView',
27302730+ type: "ref",
27312731+ ref: "lex:app.rocksky.feed.defs#feedGeneratorView",
27282732 },
27292733 },
27302734 },
···27342738 },
27352739 AppRockskyFeedGetFeedGenerators: {
27362740 lexicon: 1,
27372737- id: 'app.rocksky.feed.getFeedGenerators',
27412741+ id: "app.rocksky.feed.getFeedGenerators",
27382742 defs: {
27392743 main: {
27402740- type: 'query',
27412741- description: 'Get all feed generators',
27442744+ type: "query",
27452745+ description: "Get all feed generators",
27422746 parameters: {
27432743- type: 'params',
27472747+ type: "params",
27442748 properties: {
27452749 size: {
27462746- type: 'integer',
27472747- description: 'The maximum number of feed generators to return.',
27502750+ type: "integer",
27512751+ description: "The maximum number of feed generators to return.",
27482752 minimum: 1,
27492753 },
27502754 },
27512755 },
27522756 output: {
27532753- encoding: 'application/json',
27572757+ encoding: "application/json",
27542758 schema: {
27552755- type: 'ref',
27562756- ref: 'lex:app.rocksky.feed.defs#feedGeneratorsView',
27592759+ type: "ref",
27602760+ ref: "lex:app.rocksky.feed.defs#feedGeneratorsView",
27572761 },
27582762 },
27592763 },
···27612765 },
27622766 AppRockskyFeedGetFeedSkeleton: {
27632767 lexicon: 1,
27642764- id: 'app.rocksky.feed.getFeedSkeleton',
27682768+ id: "app.rocksky.feed.getFeedSkeleton",
27652769 defs: {
27662770 main: {
27672767- type: 'query',
27682768- description: 'Get the feed by uri',
27712771+ type: "query",
27722772+ description: "Get the feed by uri",
27692773 parameters: {
27702770- type: 'params',
27712771- required: ['feed'],
27742774+ type: "params",
27752775+ required: ["feed"],
27722776 properties: {
27732777 feed: {
27742774- type: 'string',
27752775- description: 'The feed URI.',
27762776- format: 'at-uri',
27782778+ type: "string",
27792779+ description: "The feed URI.",
27802780+ format: "at-uri",
27772781 },
27782782 limit: {
27792779- type: 'integer',
27802780- description: 'The maximum number of scrobbles to return',
27832783+ type: "integer",
27842784+ description: "The maximum number of scrobbles to return",
27812785 minimum: 1,
27822786 },
27832787 offset: {
27842784- type: 'integer',
27852785- description: 'The offset for pagination',
27882788+ type: "integer",
27892789+ description: "The offset for pagination",
27862790 minimum: 0,
27872791 },
27882792 cursor: {
27892789- type: 'string',
27902790- description: 'The pagination cursor.',
27932793+ type: "string",
27942794+ description: "The pagination cursor.",
27912795 },
27922796 },
27932797 },
27942798 output: {
27952795- encoding: 'application/json',
27992799+ encoding: "application/json",
27962800 schema: {
27972797- type: 'object',
28012801+ type: "object",
27982802 properties: {
27992803 scrobbles: {
28002800- type: 'array',
28042804+ type: "array",
28012805 items: {
28022802- type: 'ref',
28032803- ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
28062806+ type: "ref",
28072807+ ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic",
28042808 },
28052809 },
28062810 cursor: {
28072807- type: 'string',
28112811+ type: "string",
28082812 description:
28092809- 'The pagination cursor for the next set of results.',
28132813+ "The pagination cursor for the next set of results.",
28102814 },
28112815 },
28122816 },
···28162820 },
28172821 AppRockskyFeedGetNowPlayings: {
28182822 lexicon: 1,
28192819- id: 'app.rocksky.feed.getNowPlayings',
28232823+ id: "app.rocksky.feed.getNowPlayings",
28202824 defs: {
28212825 main: {
28222822- type: 'query',
28232823- description: 'Get all currently playing tracks by users',
28262826+ type: "query",
28272827+ description: "Get all currently playing tracks by users",
28242828 parameters: {
28252825- type: 'params',
28292829+ type: "params",
28262830 properties: {
28272831 size: {
28282828- type: 'integer',
28322832+ type: "integer",
28292833 description:
28302830- 'The maximum number of now playing tracks to return.',
28342834+ "The maximum number of now playing tracks to return.",
28312835 minimum: 1,
28322836 },
28332837 },
28342838 },
28352839 output: {
28362836- encoding: 'application/json',
28402840+ encoding: "application/json",
28372841 schema: {
28382838- type: 'ref',
28392839- ref: 'lex:app.rocksky.feed.defs#nowPlayingsView',
28422842+ type: "ref",
28432843+ ref: "lex:app.rocksky.feed.defs#nowPlayingsView",
28402844 },
28412845 },
28422846 },
···28442848 },
28452849 AppRockskyFeedSearch: {
28462850 lexicon: 1,
28472847- id: 'app.rocksky.feed.search',
28512851+ id: "app.rocksky.feed.search",
28482852 defs: {
28492853 main: {
28502850- type: 'query',
28512851- description: 'Search for content in the feed',
28542854+ type: "query",
28552855+ description: "Search for content in the feed",
28522856 parameters: {
28532853- type: 'params',
28542854- required: ['query'],
28572857+ type: "params",
28582858+ required: ["query"],
28552859 properties: {
28562860 query: {
28572857- type: 'string',
28582858- description: 'The search query string',
28612861+ type: "string",
28622862+ description: "The search query string",
28592863 },
28602864 },
28612865 },
28622866 output: {
28632863- encoding: 'application/json',
28672867+ encoding: "application/json",
28642868 schema: {
28652865- type: 'ref',
28662866- ref: 'lex:app.rocksky.feed.defs#searchResultsView',
28692869+ type: "ref",
28702870+ ref: "lex:app.rocksky.feed.defs#searchResultsView",
28672871 },
28682872 },
28692873 },
···28712875 },
28722876 AppRockskyGoogledriveDefs: {
28732877 lexicon: 1,
28742874- id: 'app.rocksky.googledrive.defs',
28782878+ id: "app.rocksky.googledrive.defs",
28752879 defs: {
28762880 fileView: {
28772877- type: 'object',
28812881+ type: "object",
28782882 properties: {
28792883 id: {
28802880- type: 'string',
28812881- description: 'The unique identifier of the file.',
28842884+ type: "string",
28852885+ description: "The unique identifier of the file.",
28822886 },
28832887 },
28842888 },
28852889 fileListView: {
28862886- type: 'object',
28902890+ type: "object",
28872891 properties: {
28882892 files: {
28892889- type: 'array',
28932893+ type: "array",
28902894 items: {
28912891- type: 'ref',
28922892- ref: 'lex:app.rocksky.googledrive.defs#fileView',
28952895+ type: "ref",
28962896+ ref: "lex:app.rocksky.googledrive.defs#fileView",
28932897 },
28942898 },
28952899 },
···28982902 },
28992903 AppRockskyGoogledriveDownloadFile: {
29002904 lexicon: 1,
29012901- id: 'app.rocksky.googledrive.downloadFile',
29052905+ id: "app.rocksky.googledrive.downloadFile",
29022906 defs: {
29032907 main: {
29042904- type: 'query',
29082908+ type: "query",
29052909 description:
29062906- 'Download a file from Google Drive by its unique identifier',
29102910+ "Download a file from Google Drive by its unique identifier",
29072911 parameters: {
29082908- type: 'params',
29092909- required: ['fileId'],
29122912+ type: "params",
29132913+ required: ["fileId"],
29102914 properties: {
29112915 fileId: {
29122912- type: 'string',
29132913- description: 'The unique identifier of the file to download',
29162916+ type: "string",
29172917+ description: "The unique identifier of the file to download",
29142918 },
29152919 },
29162920 },
29172921 output: {
29182918- encoding: 'application/octet-stream',
29222922+ encoding: "application/octet-stream",
29192923 },
29202924 },
29212925 },
29222926 },
29232927 AppRockskyGoogledriveGetFile: {
29242928 lexicon: 1,
29252925- id: 'app.rocksky.googledrive.getFile',
29292929+ id: "app.rocksky.googledrive.getFile",
29262930 defs: {
29272931 main: {
29282928- type: 'query',
29292929- description: 'Get a file from Google Drive by its unique identifier',
29322932+ type: "query",
29332933+ description: "Get a file from Google Drive by its unique identifier",
29302934 parameters: {
29312931- type: 'params',
29322932- required: ['fileId'],
29352935+ type: "params",
29362936+ required: ["fileId"],
29332937 properties: {
29342938 fileId: {
29352935- type: 'string',
29362936- description: 'The unique identifier of the file to retrieve',
29392939+ type: "string",
29402940+ description: "The unique identifier of the file to retrieve",
29372941 },
29382942 },
29392943 },
29402944 output: {
29412941- encoding: 'application/json',
29452945+ encoding: "application/json",
29422946 schema: {
29432943- type: 'ref',
29442944- ref: 'lex:app.rocksky.googledrive.defs#fileView',
29472947+ type: "ref",
29482948+ ref: "lex:app.rocksky.googledrive.defs#fileView",
29452949 },
29462950 },
29472951 },
···29492953 },
29502954 AppRockskyGoogledriveGetFiles: {
29512955 lexicon: 1,
29522952- id: 'app.rocksky.googledrive.getFiles',
29562956+ id: "app.rocksky.googledrive.getFiles",
29532957 defs: {
29542958 main: {
29552955- type: 'query',
29562956- description: 'Get a list of files from Google Drive',
29592959+ type: "query",
29602960+ description: "Get a list of files from Google Drive",
29572961 parameters: {
29582958- type: 'params',
29622962+ type: "params",
29592963 properties: {
29602964 at: {
29612961- type: 'string',
29622962- description: 'Path to the Google Drive folder or root directory',
29652965+ type: "string",
29662966+ description: "Path to the Google Drive folder or root directory",
29632967 },
29642968 },
29652969 },
29662970 output: {
29672967- encoding: 'application/json',
29712971+ encoding: "application/json",
29682972 schema: {
29692969- type: 'ref',
29702970- ref: 'lex:app.rocksky.googledrive.defs#fileListView',
29732973+ type: "ref",
29742974+ ref: "lex:app.rocksky.googledrive.defs#fileListView",
29712975 },
29722976 },
29732977 },
···29752979 },
29762980 AppRockskyGraphDefs: {
29772981 lexicon: 1,
29782978- id: 'app.rocksky.graph.defs',
29822982+ id: "app.rocksky.graph.defs",
29792983 defs: {
29802984 notFoundActor: {
29812981- type: 'object',
29822982- description: 'indicates that a handle or DID could not be resolved',
29832983- required: ['actor', 'notFound'],
29852985+ type: "object",
29862986+ description: "indicates that a handle or DID could not be resolved",
29872987+ required: ["actor", "notFound"],
29842988 properties: {
29852989 actor: {
29862986- type: 'string',
29872987- format: 'at-identifier',
29902990+ type: "string",
29912991+ format: "at-identifier",
29882992 },
29892993 notFound: {
29902990- type: 'boolean',
29942994+ type: "boolean",
29912995 },
29922996 },
29932997 },
29942998 relationship: {
29952995- type: 'object',
29962996- required: ['did'],
29992999+ type: "object",
30003000+ required: ["did"],
29973001 properties: {
29983002 did: {
29992999- type: 'string',
30003000- format: 'did',
30033003+ type: "string",
30043004+ format: "did",
30013005 },
30023006 following: {
30033003- type: 'string',
30073007+ type: "string",
30043008 description:
30053005- 'if the actor follows this DID, this is the AT-URI of the follow record',
30063006- format: 'at-uri',
30093009+ "if the actor follows this DID, this is the AT-URI of the follow record",
30103010+ format: "at-uri",
30073011 },
30083012 followedBy: {
30093009- type: 'string',
30133013+ type: "string",
30103014 description:
30113011- 'if the actor is followed by this DID, contains the AT-URI of the follow record',
30123012- format: 'at-uri',
30153015+ "if the actor is followed by this DID, contains the AT-URI of the follow record",
30163016+ format: "at-uri",
30133017 },
30143018 },
30153019 },
···30173021 },
30183022 AppRockskyGraphFollow: {
30193023 lexicon: 1,
30203020- id: 'app.rocksky.graph.follow',
30243024+ id: "app.rocksky.graph.follow",
30213025 defs: {
30223026 main: {
30233023- type: 'record',
30273027+ type: "record",
30243028 description:
30253029 "Record declaring a social 'follow' relationship of another account.",
30263026- key: 'tid',
30303030+ key: "tid",
30273031 record: {
30283028- type: 'object',
30293029- required: ['createdAt', 'subject'],
30323032+ type: "object",
30333033+ required: ["createdAt", "subject"],
30303034 properties: {
30313035 createdAt: {
30323032- type: 'string',
30333033- format: 'datetime',
30363036+ type: "string",
30373037+ format: "datetime",
30343038 },
30353039 subject: {
30363036- type: 'string',
30373037- format: 'did',
30403040+ type: "string",
30413041+ format: "did",
30383042 },
30393043 via: {
30403040- type: 'ref',
30413041- ref: 'lex:com.atproto.repo.strongRef',
30443044+ type: "ref",
30453045+ ref: "lex:com.atproto.repo.strongRef",
30423046 },
30433047 },
30443048 },
···30473051 },
30483052 AppRockskyGraphFollowAccount: {
30493053 lexicon: 1,
30503050- id: 'app.rocksky.graph.followAccount',
30543054+ id: "app.rocksky.graph.followAccount",
30513055 defs: {
30523056 main: {
30533053- type: 'procedure',
30573057+ type: "procedure",
30543058 description:
30553059 "Creates a 'follow' relationship from the authenticated account to a specified account.",
30563060 parameters: {
30573057- type: 'params',
30583058- required: ['account'],
30613061+ type: "params",
30623062+ required: ["account"],
30593063 properties: {
30603064 account: {
30613061- type: 'string',
30623062- format: 'at-identifier',
30653065+ type: "string",
30663066+ format: "at-identifier",
30633067 },
30643068 },
30653069 },
30663070 output: {
30673067- encoding: 'application/json',
30713071+ encoding: "application/json",
30683072 schema: {
30693069- type: 'object',
30703070- required: ['subject', 'followers'],
30733073+ type: "object",
30743074+ required: ["subject", "followers"],
30713075 properties: {
30723076 subject: {
30733073- type: 'ref',
30743074- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
30773077+ type: "ref",
30783078+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
30753079 },
30763080 followers: {
30773077- type: 'array',
30813081+ type: "array",
30783082 items: {
30793079- type: 'ref',
30803080- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
30833083+ type: "ref",
30843084+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
30813085 },
30823086 },
30833087 cursor: {
30843084- type: 'string',
30883088+ type: "string",
30853089 description:
30863086- 'A cursor value to pass to subsequent calls to get the next page of results.',
30903090+ "A cursor value to pass to subsequent calls to get the next page of results.",
30873091 },
30883092 },
30893093 },
···30933097 },
30943098 AppRockskyGraphGetFollowers: {
30953099 lexicon: 1,
30963096- id: 'app.rocksky.graph.getFollowers',
31003100+ id: "app.rocksky.graph.getFollowers",
30973101 defs: {
30983102 main: {
30993099- type: 'query',
31033103+ type: "query",
31003104 description:
31013101- 'Enumerates accounts which follow a specified account (actor).',
31053105+ "Enumerates accounts which follow a specified account (actor).",
31023106 parameters: {
31033103- type: 'params',
31043104- required: ['actor'],
31073107+ type: "params",
31083108+ required: ["actor"],
31053109 properties: {
31063110 actor: {
31073107- type: 'string',
31083108- format: 'at-identifier',
31113111+ type: "string",
31123112+ format: "at-identifier",
31093113 },
31103114 limit: {
31113111- type: 'integer',
31153115+ type: "integer",
31123116 maximum: 100,
31133117 minimum: 1,
31143118 default: 50,
31153119 },
31163120 dids: {
31173117- type: 'array',
31213121+ type: "array",
31183122 description:
31193119- 'If provided, filters the followers to only include those with DIDs in this list.',
31233123+ "If provided, filters the followers to only include those with DIDs in this list.",
31203124 items: {
31213121- type: 'string',
31223122- format: 'did',
31253125+ type: "string",
31263126+ format: "did",
31233127 },
31243128 },
31253129 cursor: {
31263126- type: 'string',
31303130+ type: "string",
31273131 },
31283132 },
31293133 },
31303134 output: {
31313131- encoding: 'application/json',
31353135+ encoding: "application/json",
31323136 schema: {
31333133- type: 'object',
31343134- required: ['subject', 'followers'],
31373137+ type: "object",
31383138+ required: ["subject", "followers"],
31353139 properties: {
31363140 subject: {
31373137- type: 'ref',
31383138- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
31413141+ type: "ref",
31423142+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
31393143 },
31403144 followers: {
31413141- type: 'array',
31453145+ type: "array",
31423146 items: {
31433143- type: 'ref',
31443144- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
31473147+ type: "ref",
31483148+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
31453149 },
31463150 },
31473151 cursor: {
31483148- type: 'string',
31523152+ type: "string",
31493153 description:
31503150- 'A cursor value to pass to subsequent calls to get the next page of results.',
31543154+ "A cursor value to pass to subsequent calls to get the next page of results.",
31513155 },
31523156 count: {
31533153- type: 'integer',
31543154- description: 'The total number of followers.',
31573157+ type: "integer",
31583158+ description: "The total number of followers.",
31553159 },
31563160 },
31573161 },
···31613165 },
31623166 AppRockskyGraphGetFollows: {
31633167 lexicon: 1,
31643164- id: 'app.rocksky.graph.getFollows',
31683168+ id: "app.rocksky.graph.getFollows",
31653169 defs: {
31663170 main: {
31673167- type: 'query',
31713171+ type: "query",
31683172 description:
31693169- 'Enumerates accounts which a specified account (actor) follows.',
31733173+ "Enumerates accounts which a specified account (actor) follows.",
31703174 parameters: {
31713171- type: 'params',
31723172- required: ['actor'],
31753175+ type: "params",
31763176+ required: ["actor"],
31733177 properties: {
31743178 actor: {
31753175- type: 'string',
31763176- format: 'at-identifier',
31793179+ type: "string",
31803180+ format: "at-identifier",
31773181 },
31783182 limit: {
31793179- type: 'integer',
31833183+ type: "integer",
31803184 maximum: 100,
31813185 minimum: 1,
31823186 default: 50,
31833187 },
31843188 dids: {
31853185- type: 'array',
31893189+ type: "array",
31863190 description:
31873187- 'If provided, filters the follows to only include those with DIDs in this list.',
31913191+ "If provided, filters the follows to only include those with DIDs in this list.",
31883192 items: {
31893189- type: 'string',
31903190- format: 'did',
31933193+ type: "string",
31943194+ format: "did",
31913195 },
31923196 },
31933197 cursor: {
31943194- type: 'string',
31983198+ type: "string",
31953199 },
31963200 },
31973201 },
31983202 output: {
31993199- encoding: 'application/json',
32033203+ encoding: "application/json",
32003204 schema: {
32013201- type: 'object',
32023202- required: ['subject', 'follows'],
32053205+ type: "object",
32063206+ required: ["subject", "follows"],
32033207 properties: {
32043208 subject: {
32053205- type: 'ref',
32063206- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
32093209+ type: "ref",
32103210+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
32073211 },
32083212 follows: {
32093209- type: 'array',
32133213+ type: "array",
32103214 items: {
32113211- type: 'ref',
32123212- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
32153215+ type: "ref",
32163216+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
32133217 },
32143218 },
32153219 cursor: {
32163216- type: 'string',
32203220+ type: "string",
32173221 description:
32183218- 'A cursor value to pass to subsequent calls to get the next page of results.',
32223222+ "A cursor value to pass to subsequent calls to get the next page of results.",
32193223 },
32203224 count: {
32213221- type: 'integer',
32223222- description: 'The total number of follows.',
32253225+ type: "integer",
32263226+ description: "The total number of follows.",
32233227 },
32243228 },
32253229 },
···32293233 },
32303234 AppRockskyGraphGetKnownFollowers: {
32313235 lexicon: 1,
32323232- id: 'app.rocksky.graph.getKnownFollowers',
32363236+ id: "app.rocksky.graph.getKnownFollowers",
32333237 defs: {
32343238 main: {
32353235- type: 'query',
32393239+ type: "query",
32363240 description:
32373237- 'Enumerates accounts which follow a specified account (actor) and are followed by the viewer.',
32413241+ "Enumerates accounts which follow a specified account (actor) and are followed by the viewer.",
32383242 parameters: {
32393239- type: 'params',
32403240- required: ['actor'],
32433243+ type: "params",
32443244+ required: ["actor"],
32413245 properties: {
32423246 actor: {
32433243- type: 'string',
32443244- format: 'at-identifier',
32473247+ type: "string",
32483248+ format: "at-identifier",
32453249 },
32463250 limit: {
32473247- type: 'integer',
32513251+ type: "integer",
32483252 maximum: 100,
32493253 minimum: 1,
32503254 default: 50,
32513255 },
32523256 cursor: {
32533253- type: 'string',
32573257+ type: "string",
32543258 },
32553259 },
32563260 },
32573261 output: {
32583258- encoding: 'application/json',
32623262+ encoding: "application/json",
32593263 schema: {
32603260- type: 'object',
32613261- required: ['subject', 'followers'],
32643264+ type: "object",
32653265+ required: ["subject", "followers"],
32623266 properties: {
32633267 subject: {
32643264- type: 'ref',
32653265- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
32683268+ type: "ref",
32693269+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
32663270 },
32673271 followers: {
32683268- type: 'array',
32723272+ type: "array",
32693273 items: {
32703270- type: 'ref',
32713271- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
32743274+ type: "ref",
32753275+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
32723276 },
32733277 },
32743278 cursor: {
32753275- type: 'string',
32793279+ type: "string",
32763280 description:
32773277- 'A cursor value to pass to subsequent calls to get the next page of results.',
32813281+ "A cursor value to pass to subsequent calls to get the next page of results.",
32783282 },
32793283 },
32803284 },
···32843288 },
32853289 AppRockskyGraphUnfollowAccount: {
32863290 lexicon: 1,
32873287- id: 'app.rocksky.graph.unfollowAccount',
32913291+ id: "app.rocksky.graph.unfollowAccount",
32883292 defs: {
32893293 main: {
32903290- type: 'procedure',
32943294+ type: "procedure",
32913295 description:
32923296 "Removes a 'follow' relationship from the authenticated account to a specified account.",
32933297 parameters: {
32943294- type: 'params',
32953295- required: ['account'],
32983298+ type: "params",
32993299+ required: ["account"],
32963300 properties: {
32973301 account: {
32983298- type: 'string',
32993299- format: 'at-identifier',
33023302+ type: "string",
33033303+ format: "at-identifier",
33003304 },
33013305 },
33023306 },
33033307 output: {
33043304- encoding: 'application/json',
33083308+ encoding: "application/json",
33053309 schema: {
33063306- type: 'object',
33073307- required: ['subject', 'followers'],
33103310+ type: "object",
33113311+ required: ["subject", "followers"],
33083312 properties: {
33093313 subject: {
33103310- type: 'ref',
33113311- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
33143314+ type: "ref",
33153315+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
33123316 },
33133317 followers: {
33143314- type: 'array',
33183318+ type: "array",
33153319 items: {
33163316- type: 'ref',
33173317- ref: 'lex:app.rocksky.actor.defs#profileViewBasic',
33203320+ type: "ref",
33213321+ ref: "lex:app.rocksky.actor.defs#profileViewBasic",
33183322 },
33193323 },
33203324 cursor: {
33213321- type: 'string',
33253325+ type: "string",
33223326 description:
33233323- 'A cursor value to pass to subsequent calls to get the next page of results.',
33273327+ "A cursor value to pass to subsequent calls to get the next page of results.",
33243328 },
33253329 },
33263330 },
···33303334 },
33313335 AppRockskyLikeDislikeShout: {
33323336 lexicon: 1,
33333333- id: 'app.rocksky.like.dislikeShout',
33373337+ id: "app.rocksky.like.dislikeShout",
33343338 defs: {
33353339 main: {
33363336- type: 'procedure',
33373337- description: 'Dislike a shout',
33403340+ type: "procedure",
33413341+ description: "Dislike a shout",
33383342 input: {
33393339- encoding: 'application/json',
33433343+ encoding: "application/json",
33403344 schema: {
33413341- type: 'object',
33453345+ type: "object",
33423346 properties: {
33433347 uri: {
33443344- type: 'string',
33453345- description: 'The unique identifier of the shout to dislike',
33463346- format: 'at-uri',
33483348+ type: "string",
33493349+ description: "The unique identifier of the shout to dislike",
33503350+ format: "at-uri",
33473351 },
33483352 },
33493353 },
33503354 },
33513355 output: {
33523352- encoding: 'application/json',
33563356+ encoding: "application/json",
33533357 schema: {
33543354- type: 'ref',
33553355- ref: 'lex:app.rocksky.shout.defs#shoutView',
33583358+ type: "ref",
33593359+ ref: "lex:app.rocksky.shout.defs#shoutView",
33563360 },
33573361 },
33583362 },
···33603364 },
33613365 AppRockskyLikeDislikeSong: {
33623366 lexicon: 1,
33633363- id: 'app.rocksky.like.dislikeSong',
33673367+ id: "app.rocksky.like.dislikeSong",
33643368 defs: {
33653369 main: {
33663366- type: 'procedure',
33673367- description: 'Dislike a song',
33703370+ type: "procedure",
33713371+ description: "Dislike a song",
33683372 input: {
33693369- encoding: 'application/json',
33733373+ encoding: "application/json",
33703374 schema: {
33713371- type: 'object',
33753375+ type: "object",
33723376 properties: {
33733377 uri: {
33743374- type: 'string',
33753375- description: 'The unique identifier of the song to dislike',
33763376- format: 'at-uri',
33783378+ type: "string",
33793379+ description: "The unique identifier of the song to dislike",
33803380+ format: "at-uri",
33773381 },
33783382 },
33793383 },
33803384 },
33813385 output: {
33823382- encoding: 'application/json',
33863386+ encoding: "application/json",
33833387 schema: {
33843384- type: 'ref',
33853385- ref: 'lex:app.rocksky.song.defs#songViewDetailed',
33883388+ type: "ref",
33893389+ ref: "lex:app.rocksky.song.defs#songViewDetailed",
33863390 },
33873391 },
33883392 },
···33903394 },
33913395 AppRockskyLike: {
33923396 lexicon: 1,
33933393- id: 'app.rocksky.like',
33973397+ id: "app.rocksky.like",
33943398 defs: {
33953399 main: {
33963396- type: 'record',
33973397- description: 'A declaration of a like.',
33983398- key: 'tid',
34003400+ type: "record",
34013401+ description: "A declaration of a like.",
34023402+ key: "tid",
33993403 record: {
34003400- type: 'object',
34013401- required: ['createdAt', 'subject'],
34043404+ type: "object",
34053405+ required: ["createdAt", "subject"],
34023406 properties: {
34033407 createdAt: {
34043404- type: 'string',
34053405- description: 'The date when the like was created.',
34063406- format: 'datetime',
34083408+ type: "string",
34093409+ description: "The date when the like was created.",
34103410+ format: "datetime",
34073411 },
34083412 subject: {
34093409- type: 'ref',
34103410- ref: 'lex:com.atproto.repo.strongRef',
34133413+ type: "ref",
34143414+ ref: "lex:com.atproto.repo.strongRef",
34113415 },
34123416 },
34133417 },
···34163420 },
34173421 AppRockskyLikeLikeShout: {
34183422 lexicon: 1,
34193419- id: 'app.rocksky.like.likeShout',
34233423+ id: "app.rocksky.like.likeShout",
34203424 defs: {
34213425 main: {
34223422- type: 'procedure',
34233423- description: 'Like a shout',
34263426+ type: "procedure",
34273427+ description: "Like a shout",
34243428 input: {
34253425- encoding: 'application/json',
34293429+ encoding: "application/json",
34263430 schema: {
34273427- type: 'object',
34313431+ type: "object",
34283432 properties: {
34293433 uri: {
34303430- type: 'string',
34313431- description: 'The unique identifier of the shout to like',
34323432- format: 'at-uri',
34343434+ type: "string",
34353435+ description: "The unique identifier of the shout to like",
34363436+ format: "at-uri",
34333437 },
34343438 },
34353439 },
34363440 },
34373441 output: {
34383438- encoding: 'application/json',
34423442+ encoding: "application/json",
34393443 schema: {
34403440- type: 'ref',
34413441- ref: 'lex:app.rocksky.shout.defs#shoutView',
34443444+ type: "ref",
34453445+ ref: "lex:app.rocksky.shout.defs#shoutView",
34423446 },
34433447 },
34443448 },
···34463450 },
34473451 AppRockskyLikeLikeSong: {
34483452 lexicon: 1,
34493449- id: 'app.rocksky.like.likeSong',
34533453+ id: "app.rocksky.like.likeSong",
34503454 defs: {
34513455 main: {
34523452- type: 'procedure',
34533453- description: 'Like a song',
34563456+ type: "procedure",
34573457+ description: "Like a song",
34543458 input: {
34553455- encoding: 'application/json',
34593459+ encoding: "application/json",
34563460 schema: {
34573457- type: 'object',
34613461+ type: "object",
34583462 properties: {
34593463 uri: {
34603460- type: 'string',
34613461- description: 'The unique identifier of the song to like',
34623462- format: 'at-uri',
34643464+ type: "string",
34653465+ description: "The unique identifier of the song to like",
34663466+ format: "at-uri",
34633467 },
34643468 },
34653469 },
34663470 },
34673471 output: {
34683468- encoding: 'application/json',
34723472+ encoding: "application/json",
34693473 schema: {
34703470- type: 'ref',
34713471- ref: 'lex:app.rocksky.song.defs#songViewDetailed',
34743474+ type: "ref",
34753475+ ref: "lex:app.rocksky.song.defs#songViewDetailed",
34723476 },
34733477 },
34743478 },
···34763480 },
34773481 AppRockskyPlayerAddDirectoryToQueue: {
34783482 lexicon: 1,
34793479- id: 'app.rocksky.player.addDirectoryToQueue',
34833483+ id: "app.rocksky.player.addDirectoryToQueue",
34803484 defs: {
34813485 main: {
34823482- type: 'procedure',
34863486+ type: "procedure",
34833487 description: "Add directory to the player's queue",
34843488 parameters: {
34853485- type: 'params',
34863486- required: ['directory'],
34893489+ type: "params",
34903490+ required: ["directory"],
34873491 properties: {
34883492 playerId: {
34893489- type: 'string',
34933493+ type: "string",
34903494 },
34913495 directory: {
34923492- type: 'string',
34933493- description: 'The directory to add to the queue',
34963496+ type: "string",
34973497+ description: "The directory to add to the queue",
34943498 },
34953499 position: {
34963496- type: 'integer',
35003500+ type: "integer",
34973501 description:
34983498- 'Position in the queue to insert the directory at, defaults to the end if not specified',
35023502+ "Position in the queue to insert the directory at, defaults to the end if not specified",
34993503 },
35003504 shuffle: {
35013501- type: 'boolean',
35053505+ type: "boolean",
35023506 description:
35033503- 'Whether to shuffle the added directory in the queue',
35073507+ "Whether to shuffle the added directory in the queue",
35043508 },
35053509 },
35063510 },
···35093513 },
35103514 AppRockskyPlayerAddItemsToQueue: {
35113515 lexicon: 1,
35123512- id: 'app.rocksky.player.addItemsToQueue',
35163516+ id: "app.rocksky.player.addItemsToQueue",
35133517 defs: {
35143518 main: {
35153515- type: 'procedure',
35193519+ type: "procedure",
35163520 description: "Add items to the player's queue",
35173521 parameters: {
35183518- type: 'params',
35193519- required: ['items'],
35223522+ type: "params",
35233523+ required: ["items"],
35203524 properties: {
35213525 playerId: {
35223522- type: 'string',
35263526+ type: "string",
35233527 },
35243528 items: {
35253525- type: 'array',
35293529+ type: "array",
35263530 items: {
35273527- type: 'string',
35283528- description: 'List of file identifiers to add to the queue',
35313531+ type: "string",
35323532+ description: "List of file identifiers to add to the queue",
35293533 },
35303534 },
35313535 position: {
35323532- type: 'integer',
35363536+ type: "integer",
35333537 description:
35343534- 'Position in the queue to insert the items at, defaults to the end if not specified',
35383538+ "Position in the queue to insert the items at, defaults to the end if not specified",
35353539 },
35363540 shuffle: {
35373537- type: 'boolean',
35383538- description: 'Whether to shuffle the added items in the queue',
35413541+ type: "boolean",
35423542+ description: "Whether to shuffle the added items in the queue",
35393543 },
35403544 },
35413545 },
···35443548 },
35453549 AppRockskyPlayerDefs: {
35463550 lexicon: 1,
35473547- id: 'app.rocksky.player.defs',
35513551+ id: "app.rocksky.player.defs",
35483552 defs: {
35493553 currentlyPlayingViewDetailed: {
35503550- type: 'object',
35543554+ type: "object",
35513555 properties: {
35523556 title: {
35533553- type: 'string',
35543554- description: 'The title of the currently playing track',
35573557+ type: "string",
35583558+ description: "The title of the currently playing track",
35553559 },
35563560 },
35573561 },
35583562 playbackQueueViewDetailed: {
35593559- type: 'object',
35633563+ type: "object",
35603564 properties: {
35613565 tracks: {
35623562- type: 'array',
35663566+ type: "array",
35633567 items: {
35643564- type: 'ref',
35653565- ref: 'lex:app.rocksky.song.defs.songViewBasic',
35683568+ type: "ref",
35693569+ ref: "lex:app.rocksky.song.defs.songViewBasic",
35663570 },
35673571 },
35683572 },
···35713575 },
35723576 AppRockskyPlayerGetCurrentlyPlaying: {
35733577 lexicon: 1,
35743574- id: 'app.rocksky.player.getCurrentlyPlaying',
35783578+ id: "app.rocksky.player.getCurrentlyPlaying",
35753579 defs: {
35763580 main: {
35773577- type: 'query',
35783578- description: 'Get the currently playing track',
35813581+ type: "query",
35823582+ description: "Get the currently playing track",
35793583 parameters: {
35803580- type: 'params',
35843584+ type: "params",
35813585 properties: {
35823586 playerId: {
35833583- type: 'string',
35873587+ type: "string",
35843588 },
35853589 actor: {
35863586- type: 'string',
35903590+ type: "string",
35873591 description:
35883588- 'Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.',
35893589- format: 'at-identifier',
35923592+ "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.",
35933593+ format: "at-identifier",
35903594 },
35913595 },
35923596 },
35933597 output: {
35943594- encoding: 'application/json',
35983598+ encoding: "application/json",
35953599 schema: {
35963596- type: 'ref',
35973597- ref: 'lex:app.rocksky.player.defs#currentlyPlayingViewDetailed',
36003600+ type: "ref",
36013601+ ref: "lex:app.rocksky.player.defs#currentlyPlayingViewDetailed",
35983602 },
35993603 },
36003604 },
···36023606 },
36033607 AppRockskyPlayerGetPlaybackQueue: {
36043608 lexicon: 1,
36053605- id: 'app.rocksky.player.getPlaybackQueue',
36093609+ id: "app.rocksky.player.getPlaybackQueue",
36063610 defs: {
36073611 main: {
36083608- type: 'query',
36093609- description: 'Retrieve the current playback queue',
36123612+ type: "query",
36133613+ description: "Retrieve the current playback queue",
36103614 parameters: {
36113611- type: 'params',
36153615+ type: "params",
36123616 properties: {
36133617 playerId: {
36143614- type: 'string',
36183618+ type: "string",
36153619 },
36163620 },
36173621 },
36183622 output: {
36193619- encoding: 'application/json',
36233623+ encoding: "application/json",
36203624 schema: {
36213621- type: 'ref',
36223622- ref: 'lex:app.rocksky.player.defs#playbackQueueViewDetailed',
36253625+ type: "ref",
36263626+ ref: "lex:app.rocksky.player.defs#playbackQueueViewDetailed",
36233627 },
36243628 },
36253629 },
···36273631 },
36283632 AppRockskyPlayerNext: {
36293633 lexicon: 1,
36303630- id: 'app.rocksky.player.next',
36343634+ id: "app.rocksky.player.next",
36313635 defs: {
36323636 main: {
36333633- type: 'procedure',
36343634- description: 'Play the next track in the queue',
36373637+ type: "procedure",
36383638+ description: "Play the next track in the queue",
36353639 parameters: {
36363636- type: 'params',
36403640+ type: "params",
36373641 properties: {
36383642 playerId: {
36393639- type: 'string',
36433643+ type: "string",
36403644 },
36413645 },
36423646 },
···36453649 },
36463650 AppRockskyPlayerPause: {
36473651 lexicon: 1,
36483648- id: 'app.rocksky.player.pause',
36523652+ id: "app.rocksky.player.pause",
36493653 defs: {
36503654 main: {
36513651- type: 'procedure',
36523652- description: 'Pause the currently playing track',
36553655+ type: "procedure",
36563656+ description: "Pause the currently playing track",
36533657 parameters: {
36543654- type: 'params',
36583658+ type: "params",
36553659 properties: {
36563660 playerId: {
36573657- type: 'string',
36613661+ type: "string",
36583662 },
36593663 },
36603664 },
···36633667 },
36643668 AppRockskyPlayerPlay: {
36653669 lexicon: 1,
36663666- id: 'app.rocksky.player.play',
36703670+ id: "app.rocksky.player.play",
36673671 defs: {
36683672 main: {
36693669- type: 'procedure',
36703670- description: 'Resume playback of the currently paused track',
36733673+ type: "procedure",
36743674+ description: "Resume playback of the currently paused track",
36713675 parameters: {
36723672- type: 'params',
36763676+ type: "params",
36733677 properties: {
36743678 playerId: {
36753675- type: 'string',
36793679+ type: "string",
36763680 },
36773681 },
36783682 },
···36813685 },
36823686 AppRockskyPlayerPlayDirectory: {
36833687 lexicon: 1,
36843684- id: 'app.rocksky.player.playDirectory',
36883688+ id: "app.rocksky.player.playDirectory",
36853689 defs: {
36863690 main: {
36873687- type: 'procedure',
36883688- description: 'Play all tracks in a directory',
36913691+ type: "procedure",
36923692+ description: "Play all tracks in a directory",
36893693 parameters: {
36903690- type: 'params',
36913691- required: ['directoryId'],
36943694+ type: "params",
36953695+ required: ["directoryId"],
36923696 properties: {
36933697 playerId: {
36943694- type: 'string',
36983698+ type: "string",
36953699 },
36963700 directoryId: {
36973697- type: 'string',
37013701+ type: "string",
36983702 },
36993703 shuffle: {
37003700- type: 'boolean',
37043704+ type: "boolean",
37013705 },
37023706 recurse: {
37033703- type: 'boolean',
37073707+ type: "boolean",
37043708 },
37053709 position: {
37063706- type: 'integer',
37103710+ type: "integer",
37073711 },
37083712 },
37093713 },
···37123716 },
37133717 AppRockskyPlayerPlayFile: {
37143718 lexicon: 1,
37153715- id: 'app.rocksky.player.playFile',
37193719+ id: "app.rocksky.player.playFile",
37163720 defs: {
37173721 main: {
37183718- type: 'procedure',
37193719- description: 'Play a specific audio file',
37223722+ type: "procedure",
37233723+ description: "Play a specific audio file",
37203724 parameters: {
37213721- type: 'params',
37223722- required: ['fileId'],
37253725+ type: "params",
37263726+ required: ["fileId"],
37233727 properties: {
37243728 playerId: {
37253725- type: 'string',
37293729+ type: "string",
37263730 },
37273731 fileId: {
37283728- type: 'string',
37323732+ type: "string",
37293733 },
37303734 },
37313735 },
···37343738 },
37353739 AppRockskyPlayerPrevious: {
37363740 lexicon: 1,
37373737- id: 'app.rocksky.player.previous',
37413741+ id: "app.rocksky.player.previous",
37383742 defs: {
37393743 main: {
37403740- type: 'procedure',
37413741- description: 'Play the previous track in the queue',
37443744+ type: "procedure",
37453745+ description: "Play the previous track in the queue",
37423746 parameters: {
37433743- type: 'params',
37473747+ type: "params",
37443748 properties: {
37453749 playerId: {
37463746- type: 'string',
37503750+ type: "string",
37473751 },
37483752 },
37493753 },
···37523756 },
37533757 AppRockskyPlayerSeek: {
37543758 lexicon: 1,
37553755- id: 'app.rocksky.player.seek',
37593759+ id: "app.rocksky.player.seek",
37563760 defs: {
37573761 main: {
37583758- type: 'procedure',
37623762+ type: "procedure",
37593763 description:
37603760- 'Seek to a specific position in the currently playing track',
37643764+ "Seek to a specific position in the currently playing track",
37613765 parameters: {
37623762- type: 'params',
37633763- required: ['position'],
37663766+ type: "params",
37673767+ required: ["position"],
37643768 properties: {
37653769 playerId: {
37663766- type: 'string',
37703770+ type: "string",
37673771 },
37683772 position: {
37693769- type: 'integer',
37703770- description: 'The position in seconds to seek to',
37733773+ type: "integer",
37743774+ description: "The position in seconds to seek to",
37713775 },
37723776 },
37733777 },
···37763780 },
37773781 AppRockskyPlaylistCreatePlaylist: {
37783782 lexicon: 1,
37793779- id: 'app.rocksky.playlist.createPlaylist',
37833783+ id: "app.rocksky.playlist.createPlaylist",
37803784 defs: {
37813785 main: {
37823782- type: 'procedure',
37833783- description: 'Create a new playlist',
37863786+ type: "procedure",
37873787+ description: "Create a new playlist",
37843788 parameters: {
37853785- type: 'params',
37863786- required: ['name'],
37893789+ type: "params",
37903790+ required: ["name"],
37873791 properties: {
37883792 name: {
37893789- type: 'string',
37903790- description: 'The name of the playlist',
37933793+ type: "string",
37943794+ description: "The name of the playlist",
37913795 },
37923796 description: {
37933793- type: 'string',
37943794- description: 'A brief description of the playlist',
37973797+ type: "string",
37983798+ description: "A brief description of the playlist",
37953799 },
37963800 },
37973801 },
···38003804 },
38013805 AppRockskyPlaylistDefs: {
38023806 lexicon: 1,
38033803- id: 'app.rocksky.playlist.defs',
38073807+ id: "app.rocksky.playlist.defs",
38043808 defs: {
38053809 playlistViewDetailed: {
38063806- type: 'object',
38103810+ type: "object",
38073811 description:
38083808- 'Detailed view of a playlist, including its tracks and metadata',
38123812+ "Detailed view of a playlist, including its tracks and metadata",
38093813 properties: {
38103814 id: {
38113811- type: 'string',
38123812- description: 'The unique identifier of the playlist.',
38153815+ type: "string",
38163816+ description: "The unique identifier of the playlist.",
38133817 },
38143818 title: {
38153815- type: 'string',
38163816- description: 'The title of the playlist.',
38193819+ type: "string",
38203820+ description: "The title of the playlist.",
38173821 },
38183822 uri: {
38193819- type: 'string',
38203820- description: 'The URI of the playlist.',
38213821- format: 'at-uri',
38233823+ type: "string",
38243824+ description: "The URI of the playlist.",
38253825+ format: "at-uri",
38223826 },
38233827 curatorDid: {
38243824- type: 'string',
38253825- description: 'The DID of the curator of the playlist.',
38263826- format: 'at-identifier',
38283828+ type: "string",
38293829+ description: "The DID of the curator of the playlist.",
38303830+ format: "at-identifier",
38273831 },
38283832 curatorHandle: {
38293829- type: 'string',
38303830- description: 'The handle of the curator of the playlist.',
38313831- format: 'at-identifier',
38333833+ type: "string",
38343834+ description: "The handle of the curator of the playlist.",
38353835+ format: "at-identifier",
38323836 },
38333837 curatorName: {
38343834- type: 'string',
38353835- description: 'The name of the curator of the playlist.',
38383838+ type: "string",
38393839+ description: "The name of the curator of the playlist.",
38363840 },
38373841 curatorAvatarUrl: {
38383838- type: 'string',
38393839- description: 'The URL of the avatar image of the curator.',
38403840- format: 'uri',
38423842+ type: "string",
38433843+ description: "The URL of the avatar image of the curator.",
38443844+ format: "uri",
38413845 },
38423846 description: {
38433843- type: 'string',
38443844- description: 'A description of the playlist.',
38473847+ type: "string",
38483848+ description: "A description of the playlist.",
38453849 },
38463850 coverImageUrl: {
38473847- type: 'string',
38483848- description: 'The URL of the cover image for the playlist.',
38493849- format: 'uri',
38513851+ type: "string",
38523852+ description: "The URL of the cover image for the playlist.",
38533853+ format: "uri",
38503854 },
38513855 createdAt: {
38523852- type: 'string',
38533853- description: 'The date and time when the playlist was created.',
38543854- format: 'datetime',
38563856+ type: "string",
38573857+ description: "The date and time when the playlist was created.",
38583858+ format: "datetime",
38553859 },
38563860 tracks: {
38573857- type: 'array',
38583858- description: 'A list of tracks in the playlist.',
38613861+ type: "array",
38623862+ description: "A list of tracks in the playlist.",
38593863 items: {
38603860- type: 'ref',
38613861- ref: 'lex:app.rocksky.song.defs#songViewBasic',
38643864+ type: "ref",
38653865+ ref: "lex:app.rocksky.song.defs#songViewBasic",
38623866 },
38633867 },
38643868 },
38653869 },
38663870 playlistViewBasic: {
38673867- type: 'object',
38683868- description: 'Basic view of a playlist, including its metadata',
38713871+ type: "object",
38723872+ description: "Basic view of a playlist, including its metadata",
38693873 properties: {
38703874 id: {
38713871- type: 'string',
38723872- description: 'The unique identifier of the playlist.',
38753875+ type: "string",
38763876+ description: "The unique identifier of the playlist.",
38733877 },
38743878 title: {
38753875- type: 'string',
38763876- description: 'The title of the playlist.',
38793879+ type: "string",
38803880+ description: "The title of the playlist.",
38773881 },
38783882 uri: {
38793879- type: 'string',
38803880- description: 'The URI of the playlist.',
38813881- format: 'at-uri',
38833883+ type: "string",
38843884+ description: "The URI of the playlist.",
38853885+ format: "at-uri",
38823886 },
38833887 curatorDid: {
38843884- type: 'string',
38853885- description: 'The DID of the curator of the playlist.',
38863886- format: 'at-identifier',
38883888+ type: "string",
38893889+ description: "The DID of the curator of the playlist.",
38903890+ format: "at-identifier",
38873891 },
38883892 curatorHandle: {
38893889- type: 'string',
38903890- description: 'The handle of the curator of the playlist.',
38913891- format: 'at-identifier',
38933893+ type: "string",
38943894+ description: "The handle of the curator of the playlist.",
38953895+ format: "at-identifier",
38923896 },
38933897 curatorName: {
38943894- type: 'string',
38953895- description: 'The name of the curator of the playlist.',
38983898+ type: "string",
38993899+ description: "The name of the curator of the playlist.",
38963900 },
38973901 curatorAvatarUrl: {
38983898- type: 'string',
38993899- description: 'The URL of the avatar image of the curator.',
39003900- format: 'uri',
39023902+ type: "string",
39033903+ description: "The URL of the avatar image of the curator.",
39043904+ format: "uri",
39013905 },
39023906 description: {
39033903- type: 'string',
39043904- description: 'A description of the playlist.',
39073907+ type: "string",
39083908+ description: "A description of the playlist.",
39053909 },
39063910 coverImageUrl: {
39073907- type: 'string',
39083908- description: 'The URL of the cover image for the playlist.',
39093909- format: 'uri',
39113911+ type: "string",
39123912+ description: "The URL of the cover image for the playlist.",
39133913+ format: "uri",
39103914 },
39113915 createdAt: {
39123912- type: 'string',
39133913- description: 'The date and time when the playlist was created.',
39143914- format: 'datetime',
39163916+ type: "string",
39173917+ description: "The date and time when the playlist was created.",
39183918+ format: "datetime",
39153919 },
39163920 trackCount: {
39173917- type: 'integer',
39183918- description: 'The number of tracks in the playlist.',
39213921+ type: "integer",
39223922+ description: "The number of tracks in the playlist.",
39193923 minimum: 0,
39203924 },
39213925 },
···39243928 },
39253929 AppRockskyPlaylistGetPlaylist: {
39263930 lexicon: 1,
39273927- id: 'app.rocksky.playlist.getPlaylist',
39313931+ id: "app.rocksky.playlist.getPlaylist",
39283932 defs: {
39293933 main: {
39303930- type: 'query',
39313931- description: 'Retrieve a playlist by its ID',
39343934+ type: "query",
39353935+ description: "Retrieve a playlist by its ID",
39323936 parameters: {
39333933- type: 'params',
39343934- required: ['uri'],
39373937+ type: "params",
39383938+ required: ["uri"],
39353939 properties: {
39363940 uri: {
39373937- type: 'string',
39383938- description: 'The URI of the playlist to retrieve.',
39393939- format: 'at-uri',
39413941+ type: "string",
39423942+ description: "The URI of the playlist to retrieve.",
39433943+ format: "at-uri",
39403944 },
39413945 },
39423946 },
39433947 output: {
39443944- encoding: 'application/json',
39483948+ encoding: "application/json",
39453949 schema: {
39463946- type: 'ref',
39473947- ref: 'lex:app.rocksky.playlist.defs#playlistViewDetailed',
39503950+ type: "ref",
39513951+ ref: "lex:app.rocksky.playlist.defs#playlistViewDetailed",
39483952 },
39493953 },
39503954 },
···39523956 },
39533957 AppRockskyPlaylistGetPlaylists: {
39543958 lexicon: 1,
39553955- id: 'app.rocksky.playlist.getPlaylists',
39593959+ id: "app.rocksky.playlist.getPlaylists",
39563960 defs: {
39573961 main: {
39583958- type: 'query',
39593959- description: 'Retrieve a list of playlists',
39623962+ type: "query",
39633963+ description: "Retrieve a list of playlists",
39603964 parameters: {
39613961- type: 'params',
39653965+ type: "params",
39623966 properties: {
39633967 limit: {
39643964- type: 'integer',
39653965- description: 'The maximum number of playlists to return.',
39683968+ type: "integer",
39693969+ description: "The maximum number of playlists to return.",
39663970 },
39673971 offset: {
39683968- type: 'integer',
39723972+ type: "integer",
39693973 description:
39703970- 'The offset for pagination, used to skip a number of playlists.',
39743974+ "The offset for pagination, used to skip a number of playlists.",
39713975 },
39723976 },
39733977 },
39743978 output: {
39753975- encoding: 'application/json',
39793979+ encoding: "application/json",
39763980 schema: {
39773977- type: 'object',
39813981+ type: "object",
39783982 properties: {
39793983 playlists: {
39803980- type: 'array',
39843984+ type: "array",
39813985 items: {
39823982- type: 'ref',
39833983- ref: 'lex:app.rocksky.playlist.defs#playlistViewBasic',
39863986+ type: "ref",
39873987+ ref: "lex:app.rocksky.playlist.defs#playlistViewBasic",
39843988 },
39853989 },
39863990 },
···39913995 },
39923996 AppRockskyPlaylistInsertDirectory: {
39933997 lexicon: 1,
39943994- id: 'app.rocksky.playlist.insertDirectory',
39983998+ id: "app.rocksky.playlist.insertDirectory",
39953999 defs: {
39964000 main: {
39973997- type: 'procedure',
39983998- description: 'Insert a directory into a playlist',
40014001+ type: "procedure",
40024002+ description: "Insert a directory into a playlist",
39994003 parameters: {
40004000- type: 'params',
40014001- required: ['uri', 'directory'],
40044004+ type: "params",
40054005+ required: ["uri", "directory"],
40024006 properties: {
40034007 uri: {
40044004- type: 'string',
40054005- description: 'The URI of the playlist to start',
40064006- format: 'at-uri',
40084008+ type: "string",
40094009+ description: "The URI of the playlist to start",
40104010+ format: "at-uri",
40074011 },
40084012 directory: {
40094009- type: 'string',
40104010- description: 'The directory (id) to insert into the playlist',
40134013+ type: "string",
40144014+ description: "The directory (id) to insert into the playlist",
40114015 },
40124016 position: {
40134013- type: 'integer',
40174017+ type: "integer",
40144018 description:
40154015- 'The position in the playlist to insert the directory at, if not specified, the directory will be appended',
40194019+ "The position in the playlist to insert the directory at, if not specified, the directory will be appended",
40164020 },
40174021 },
40184022 },
···40214025 },
40224026 AppRockskyPlaylistInsertFiles: {
40234027 lexicon: 1,
40244024- id: 'app.rocksky.playlist.insertFiles',
40284028+ id: "app.rocksky.playlist.insertFiles",
40254029 defs: {
40264030 main: {
40274027- type: 'procedure',
40284028- description: 'Insert files into a playlist',
40314031+ type: "procedure",
40324032+ description: "Insert files into a playlist",
40294033 parameters: {
40304030- type: 'params',
40314031- required: ['uri', 'files'],
40344034+ type: "params",
40354035+ required: ["uri", "files"],
40324036 properties: {
40334037 uri: {
40344034- type: 'string',
40354035- description: 'The URI of the playlist to start',
40364036- format: 'at-uri',
40384038+ type: "string",
40394039+ description: "The URI of the playlist to start",
40404040+ format: "at-uri",
40374041 },
40384042 files: {
40394039- type: 'array',
40434043+ type: "array",
40404044 items: {
40414041- type: 'string',
40424042- description: 'List of file (id) to insert into the playlist',
40454045+ type: "string",
40464046+ description: "List of file (id) to insert into the playlist",
40434047 },
40444048 },
40454049 position: {
40464046- type: 'integer',
40504050+ type: "integer",
40474051 description:
40484048- 'The position in the playlist to insert the files at, if not specified, files will be appended',
40524052+ "The position in the playlist to insert the files at, if not specified, files will be appended",
40494053 },
40504054 },
40514055 },
···40544058 },
40554059 AppRockskyPlaylist: {
40564060 lexicon: 1,
40574057- id: 'app.rocksky.playlist',
40614061+ id: "app.rocksky.playlist",
40584062 defs: {
40594063 main: {
40604060- type: 'record',
40614061- description: 'A declaration of a playlist.',
40624062- key: 'tid',
40644064+ type: "record",
40654065+ description: "A declaration of a playlist.",
40664066+ key: "tid",
40634067 record: {
40644064- type: 'object',
40654065- required: ['name', 'createdAt'],
40684068+ type: "object",
40694069+ required: ["name", "createdAt"],
40664070 properties: {
40674071 name: {
40684068- type: 'string',
40694069- description: 'The name of the playlist.',
40724072+ type: "string",
40734073+ description: "The name of the playlist.",
40704074 minLength: 1,
40714075 maxLength: 512,
40724076 },
40734077 description: {
40744074- type: 'string',
40754075- description: 'The playlist description.',
40784078+ type: "string",
40794079+ description: "The playlist description.",
40764080 minLength: 1,
40774081 maxLength: 256,
40784082 },
40794083 picture: {
40804080- type: 'blob',
40814081- description: 'The picture of the playlist.',
40824082- accept: ['image/png', 'image/jpeg'],
40844084+ type: "blob",
40854085+ description: "The picture of the playlist.",
40864086+ accept: ["image/png", "image/jpeg"],
40834087 maxSize: 2000000,
40844088 },
40854089 pictureUrl: {
40864086- type: 'string',
40874087- description: 'The URL of the picture of the artist.',
40884088- format: 'uri',
40904090+ type: "string",
40914091+ description: "The URL of the picture of the artist.",
40924092+ format: "uri",
40894093 },
40904094 createdAt: {
40914091- type: 'string',
40924092- description: 'The date the playlist was created.',
40934093- format: 'datetime',
40954095+ type: "string",
40964096+ description: "The date the playlist was created.",
40974097+ format: "datetime",
40944098 },
40954099 spotifyLink: {
40964096- type: 'string',
40974097- description: 'The Spotify link of the playlist.',
41004100+ type: "string",
41014101+ description: "The Spotify link of the playlist.",
40984102 },
40994103 tidalLink: {
41004100- type: 'string',
41014101- description: 'The Tidal link of the playlist.',
41044104+ type: "string",
41054105+ description: "The Tidal link of the playlist.",
41024106 },
41034107 youtubeLink: {
41044104- type: 'string',
41054105- description: 'The YouTube link of the playlist.',
41084108+ type: "string",
41094109+ description: "The YouTube link of the playlist.",
41064110 },
41074111 appleMusicLink: {
41084108- type: 'string',
41094109- description: 'The Apple Music link of the playlist.',
41124112+ type: "string",
41134113+ description: "The Apple Music link of the playlist.",
41104114 },
41114115 },
41124116 },
···41154119 },
41164120 AppRockskyPlaylistItem: {
41174121 lexicon: 1,
41184118- id: 'app.rocksky.playlistItem',
41224122+ id: "app.rocksky.playlistItem",
41194123 defs: {
41204124 main: {
41214121- type: 'record',
41254125+ type: "record",
41224126 description:
41234123- 'A playlist item represents a single entry in a playlist, containing metadata and references to media content.',
41244124- key: 'tid',
41274127+ "A playlist item represents a single entry in a playlist, containing metadata and references to media content.",
41284128+ key: "tid",
41254129 record: {
41264126- type: 'object',
41274127- required: ['createdAt', 'track', 'order', 'subject'],
41304130+ type: "object",
41314131+ required: ["createdAt", "track", "order", "subject"],
41284132 properties: {
41294133 subject: {
41304130- type: 'ref',
41314131- ref: 'lex:com.atproto.repo.strongRef',
41344134+ type: "ref",
41354135+ ref: "lex:com.atproto.repo.strongRef",
41324136 },
41334137 createdAt: {
41344134- type: 'string',
41354135- description: 'The date the playlist was created.',
41364136- format: 'datetime',
41384138+ type: "string",
41394139+ description: "The date the playlist was created.",
41404140+ format: "datetime",
41374141 },
41384142 track: {
41394139- type: 'ref',
41404140- ref: 'lex:app.rocksky.song.defs#songViewBasic',
41434143+ type: "ref",
41444144+ ref: "lex:app.rocksky.song.defs#songViewBasic",
41414145 },
41424146 order: {
41434143- type: 'integer',
41444144- description: 'The order of the item in the playlist.',
41474147+ type: "integer",
41484148+ description: "The order of the item in the playlist.",
41454149 minimum: 0,
41464150 },
41474151 },
···41514155 },
41524156 AppRockskyPlaylistRemovePlaylist: {
41534157 lexicon: 1,
41544154- id: 'app.rocksky.playlist.removePlaylist',
41584158+ id: "app.rocksky.playlist.removePlaylist",
41554159 defs: {
41564160 main: {
41574157- type: 'procedure',
41584158- description: 'Remove a playlist',
41614161+ type: "procedure",
41624162+ description: "Remove a playlist",
41594163 parameters: {
41604160- type: 'params',
41614161- required: ['uri'],
41644164+ type: "params",
41654165+ required: ["uri"],
41624166 properties: {
41634167 uri: {
41644164- type: 'string',
41654165- description: 'The URI of the playlist to remove',
41664166- format: 'at-uri',
41684168+ type: "string",
41694169+ description: "The URI of the playlist to remove",
41704170+ format: "at-uri",
41674171 },
41684172 },
41694173 },
···41724176 },
41734177 AppRockskyPlaylistRemoveTrack: {
41744178 lexicon: 1,
41754175- id: 'app.rocksky.playlist.removeTrack',
41794179+ id: "app.rocksky.playlist.removeTrack",
41764180 defs: {
41774181 main: {
41784178- type: 'procedure',
41794179- description: 'Remove a track from a playlist',
41824182+ type: "procedure",
41834183+ description: "Remove a track from a playlist",
41804184 parameters: {
41814181- type: 'params',
41824182- required: ['uri', 'position'],
41854185+ type: "params",
41864186+ required: ["uri", "position"],
41834187 properties: {
41844188 uri: {
41854185- type: 'string',
41864186- description: 'The URI of the playlist to remove the track from',
41874187- format: 'at-uri',
41894189+ type: "string",
41904190+ description: "The URI of the playlist to remove the track from",
41914191+ format: "at-uri",
41884192 },
41894193 position: {
41904190- type: 'integer',
41944194+ type: "integer",
41914195 description:
41924192- 'The position of the track to remove in the playlist',
41964196+ "The position of the track to remove in the playlist",
41934197 },
41944198 },
41954199 },
···41984202 },
41994203 AppRockskyPlaylistStartPlaylist: {
42004204 lexicon: 1,
42014201- id: 'app.rocksky.playlist.startPlaylist',
42054205+ id: "app.rocksky.playlist.startPlaylist",
42024206 defs: {
42034207 main: {
42044204- type: 'procedure',
42054205- description: 'Start a playlist',
42084208+ type: "procedure",
42094209+ description: "Start a playlist",
42064210 parameters: {
42074207- type: 'params',
42084208- required: ['uri'],
42114211+ type: "params",
42124212+ required: ["uri"],
42094213 properties: {
42104214 uri: {
42114211- type: 'string',
42124212- description: 'The URI of the playlist to start',
42134213- format: 'at-uri',
42154215+ type: "string",
42164216+ description: "The URI of the playlist to start",
42174217+ format: "at-uri",
42144218 },
42154219 shuffle: {
42164216- type: 'boolean',
42174217- description: 'Whether to shuffle the playlist when starting it',
42204220+ type: "boolean",
42214221+ description: "Whether to shuffle the playlist when starting it",
42184222 },
42194223 position: {
42204220- type: 'integer',
42244224+ type: "integer",
42214225 description:
42224222- 'The position in the playlist to start from, if not specified, starts from the beginning',
42264226+ "The position in the playlist to start from, if not specified, starts from the beginning",
42234227 },
42244228 },
42254229 },
···42284232 },
42294233 AppRockskyRadioDefs: {
42304234 lexicon: 1,
42314231- id: 'app.rocksky.radio.defs',
42354235+ id: "app.rocksky.radio.defs",
42324236 defs: {
42334237 radioViewBasic: {
42344234- type: 'object',
42384238+ type: "object",
42354239 properties: {
42364240 id: {
42374237- type: 'string',
42384238- description: 'The unique identifier of the radio.',
42414241+ type: "string",
42424242+ description: "The unique identifier of the radio.",
42394243 },
42404244 name: {
42414241- type: 'string',
42424242- description: 'The name of the radio.',
42454245+ type: "string",
42464246+ description: "The name of the radio.",
42434247 },
42444248 description: {
42454245- type: 'string',
42464246- description: 'A brief description of the radio.',
42494249+ type: "string",
42504250+ description: "A brief description of the radio.",
42474251 },
42484252 createdAt: {
42494249- type: 'string',
42504250- description: 'The date and time when the radio was created.',
42514251- format: 'datetime',
42534253+ type: "string",
42544254+ description: "The date and time when the radio was created.",
42554255+ format: "datetime",
42524256 },
42534257 },
42544258 },
42554259 radioViewDetailed: {
42564256- type: 'object',
42604260+ type: "object",
42574261 properties: {
42584262 id: {
42594259- type: 'string',
42604260- description: 'The unique identifier of the radio.',
42634263+ type: "string",
42644264+ description: "The unique identifier of the radio.",
42614265 },
42624266 name: {
42634263- type: 'string',
42644264- description: 'The name of the radio.',
42674267+ type: "string",
42684268+ description: "The name of the radio.",
42654269 },
42664270 description: {
42674267- type: 'string',
42684268- description: 'A brief description of the radio.',
42714271+ type: "string",
42724272+ description: "A brief description of the radio.",
42694273 },
42704274 website: {
42714271- type: 'string',
42724272- description: 'The website of the radio.',
42734273- format: 'uri',
42754275+ type: "string",
42764276+ description: "The website of the radio.",
42774277+ format: "uri",
42744278 },
42754279 url: {
42764276- type: 'string',
42774277- description: 'The streaming URL of the radio.',
42784278- format: 'uri',
42804280+ type: "string",
42814281+ description: "The streaming URL of the radio.",
42824282+ format: "uri",
42794283 },
42804284 genre: {
42814281- type: 'string',
42824282- description: 'The genre of the radio.',
42854285+ type: "string",
42864286+ description: "The genre of the radio.",
42834287 },
42844288 logo: {
42854285- type: 'string',
42864286- description: 'The logo of the radio station.',
42894289+ type: "string",
42904290+ description: "The logo of the radio station.",
42874291 },
42884292 createdAt: {
42894289- type: 'string',
42904290- description: 'The date and time when the radio was created.',
42914291- format: 'datetime',
42934293+ type: "string",
42944294+ description: "The date and time when the radio was created.",
42954295+ format: "datetime",
42924296 },
42934297 },
42944298 },
···42964300 },
42974301 AppRockskyRadio: {
42984302 lexicon: 1,
42994299- id: 'app.rocksky.radio',
43034303+ id: "app.rocksky.radio",
43004304 defs: {
43014305 main: {
43024302- type: 'record',
43034303- description: 'A declaration of a radio station.',
43044304- key: 'tid',
43064306+ type: "record",
43074307+ description: "A declaration of a radio station.",
43084308+ key: "tid",
43054309 record: {
43064306- type: 'object',
43074307- required: ['name', 'url', 'createdAt'],
43104310+ type: "object",
43114311+ required: ["name", "url", "createdAt"],
43084312 properties: {
43094313 name: {
43104310- type: 'string',
43114311- description: 'The name of the radio station.',
43144314+ type: "string",
43154315+ description: "The name of the radio station.",
43124316 minLength: 1,
43134317 maxLength: 512,
43144318 },
43154319 url: {
43164316- type: 'string',
43174317- description: 'The URL of the radio station.',
43184318- format: 'uri',
43204320+ type: "string",
43214321+ description: "The URL of the radio station.",
43224322+ format: "uri",
43194323 },
43204324 description: {
43214321- type: 'string',
43224322- description: 'A description of the radio station.',
43254325+ type: "string",
43264326+ description: "A description of the radio station.",
43234327 minLength: 1,
43244328 maxLength: 1000,
43254329 },
43264330 genre: {
43274327- type: 'string',
43284328- description: 'The genre of the radio station.',
43314331+ type: "string",
43324332+ description: "The genre of the radio station.",
43294333 minLength: 1,
43304334 maxLength: 256,
43314335 },
43324336 logo: {
43334333- type: 'blob',
43344334- description: 'The logo of the radio station.',
43354335- accept: ['image/png', 'image/jpeg'],
43374337+ type: "blob",
43384338+ description: "The logo of the radio station.",
43394339+ accept: ["image/png", "image/jpeg"],
43364340 maxSize: 2000000,
43374341 },
43384342 website: {
43394339- type: 'string',
43404340- description: 'The website of the radio station.',
43414341- format: 'uri',
43434343+ type: "string",
43444344+ description: "The website of the radio station.",
43454345+ format: "uri",
43424346 },
43434347 createdAt: {
43444344- type: 'string',
43454345- description: 'The date when the radio station was created.',
43464346- format: 'datetime',
43484348+ type: "string",
43494349+ description: "The date when the radio station was created.",
43504350+ format: "datetime",
43474351 },
43484352 },
43494353 },
···43524356 },
43534357 AppRockskyScrobbleCreateScrobble: {
43544358 lexicon: 1,
43554355- id: 'app.rocksky.scrobble.createScrobble',
43594359+ id: "app.rocksky.scrobble.createScrobble",
43564360 defs: {
43574361 main: {
43584358- type: 'procedure',
43594359- description: 'Create a new scrobble',
43624362+ type: "procedure",
43634363+ description: "Create a new scrobble",
43604364 input: {
43614361- encoding: 'application/json',
43654365+ encoding: "application/json",
43624366 schema: {
43634363- type: 'object',
43644364- required: ['title', 'artist'],
43674367+ type: "object",
43684368+ required: ["title", "artist"],
43654369 properties: {
43664370 title: {
43674367- type: 'string',
43684368- description: 'The title of the track being scrobbled',
43714371+ type: "string",
43724372+ description: "The title of the track being scrobbled",
43694373 },
43704374 artist: {
43714371- type: 'string',
43724372- description: 'The artist of the track being scrobbled',
43754375+ type: "string",
43764376+ description: "The artist of the track being scrobbled",
43734377 },
43744378 album: {
43754375- type: 'string',
43764376- description: 'The album of the track being scrobbled',
43794379+ type: "string",
43804380+ description: "The album of the track being scrobbled",
43774381 },
43784382 duration: {
43794379- type: 'integer',
43804380- description: 'The duration of the track in seconds',
43834383+ type: "integer",
43844384+ description: "The duration of the track in seconds",
43814385 },
43824386 mbId: {
43834383- type: 'string',
43844384- description: 'The MusicBrainz ID of the track, if available',
43874387+ type: "string",
43884388+ description: "The MusicBrainz ID of the track, if available",
43854389 },
43864390 albumArt: {
43874387- type: 'string',
43884388- description: 'The URL of the album art for the track',
43894389- format: 'uri',
43914391+ type: "string",
43924392+ description: "The URL of the album art for the track",
43934393+ format: "uri",
43904394 },
43914395 trackNumber: {
43924392- type: 'integer',
43934393- description: 'The track number of the track in the album',
43964396+ type: "integer",
43974397+ description: "The track number of the track in the album",
43944398 },
43954399 releaseDate: {
43964396- type: 'string',
44004400+ type: "string",
43974401 description:
43984398- 'The release date of the track, formatted as YYYY-MM-DD',
44024402+ "The release date of the track, formatted as YYYY-MM-DD",
43994403 },
44004404 year: {
44014401- type: 'integer',
44024402- description: 'The year the track was released',
44054405+ type: "integer",
44064406+ description: "The year the track was released",
44034407 },
44044408 discNumber: {
44054405- type: 'integer',
44094409+ type: "integer",
44064410 description:
44074407- 'The disc number of the track in the album, if applicable',
44114411+ "The disc number of the track in the album, if applicable",
44084412 },
44094413 lyrics: {
44104410- type: 'string',
44114411- description: 'The lyrics of the track, if available',
44144414+ type: "string",
44154415+ description: "The lyrics of the track, if available",
44124416 },
44134417 composer: {
44144414- type: 'string',
44154415- description: 'The composer of the track, if available',
44184418+ type: "string",
44194419+ description: "The composer of the track, if available",
44164420 },
44174421 copyrightMessage: {
44184418- type: 'string',
44224422+ type: "string",
44194423 description:
44204420- 'The copyright message for the track, if available',
44244424+ "The copyright message for the track, if available",
44214425 },
44224426 label: {
44234423- type: 'string',
44244424- description: 'The record label of the track, if available',
44274427+ type: "string",
44284428+ description: "The record label of the track, if available",
44254429 },
44264430 artistPicture: {
44274427- type: 'string',
44314431+ type: "string",
44284432 description: "The URL of the artist's picture, if available",
44294429- format: 'uri',
44334433+ format: "uri",
44304434 },
44314435 spotifyLink: {
44324432- type: 'string',
44334433- description: 'The Spotify link for the track, if available',
44344434- format: 'uri',
44364436+ type: "string",
44374437+ description: "The Spotify link for the track, if available",
44384438+ format: "uri",
44354439 },
44364440 lastfmLink: {
44374437- type: 'string',
44384438- description: 'The Last.fm link for the track, if available',
44394439- format: 'uri',
44414441+ type: "string",
44424442+ description: "The Last.fm link for the track, if available",
44434443+ format: "uri",
44404444 },
44414445 tidalLink: {
44424442- type: 'string',
44434443- description: 'The Tidal link for the track, if available',
44444444- format: 'uri',
44464446+ type: "string",
44474447+ description: "The Tidal link for the track, if available",
44484448+ format: "uri",
44454449 },
44464450 appleMusicLink: {
44474447- type: 'string',
44484448- description: 'The Apple Music link for the track, if available',
44494449- format: 'uri',
44514451+ type: "string",
44524452+ description: "The Apple Music link for the track, if available",
44534453+ format: "uri",
44504454 },
44514455 youtubeLink: {
44524452- type: 'string',
44534453- description: 'The Youtube link for the track, if available',
44544454- format: 'uri',
44564456+ type: "string",
44574457+ description: "The Youtube link for the track, if available",
44584458+ format: "uri",
44554459 },
44564460 deezerLink: {
44574457- type: 'string',
44584458- description: 'The Deezer link for the track, if available',
44594459- format: 'uri',
44614461+ type: "string",
44624462+ description: "The Deezer link for the track, if available",
44634463+ format: "uri",
44604464 },
44614465 timestamp: {
44624462- type: 'integer',
44664466+ type: "integer",
44634467 description:
44644464- 'The timestamp of the scrobble in milliseconds since epoch',
44684468+ "The timestamp of the scrobble in milliseconds since epoch",
44654469 },
44664470 },
44674471 },
44684472 },
44694473 output: {
44704470- encoding: 'application/json',
44744474+ encoding: "application/json",
44714475 schema: {
44724472- type: 'ref',
44734473- ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
44764476+ type: "ref",
44774477+ ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic",
44744478 },
44754479 },
44764480 },
···44784482 },
44794483 AppRockskyScrobbleDefs: {
44804484 lexicon: 1,
44814481- id: 'app.rocksky.scrobble.defs',
44854485+ id: "app.rocksky.scrobble.defs",
44824486 defs: {
44834487 scrobbleViewBasic: {
44844484- type: 'object',
44884488+ type: "object",
44854489 properties: {
44864490 id: {
44874487- type: 'string',
44884488- description: 'The unique identifier of the scrobble.',
44914491+ type: "string",
44924492+ description: "The unique identifier of the scrobble.",
44894493 },
44904494 user: {
44914491- type: 'string',
44924492- description: 'The handle of the user who created the scrobble.',
44954495+ type: "string",
44964496+ description: "The handle of the user who created the scrobble.",
44934497 },
44944498 userDisplayName: {
44954495- type: 'string',
44994499+ type: "string",
44964500 description:
44974497- 'The display name of the user who created the scrobble.',
45014501+ "The display name of the user who created the scrobble.",
44984502 },
44994503 userAvatar: {
45004500- type: 'string',
45014501- description: 'The avatar URL of the user who created the scrobble.',
45024502- format: 'uri',
45044504+ type: "string",
45054505+ description: "The avatar URL of the user who created the scrobble.",
45064506+ format: "uri",
45034507 },
45044508 title: {
45054505- type: 'string',
45064506- description: 'The title of the scrobble.',
45094509+ type: "string",
45104510+ description: "The title of the scrobble.",
45074511 },
45084512 artist: {
45094509- type: 'string',
45104510- description: 'The artist of the song.',
45134513+ type: "string",
45144514+ description: "The artist of the song.",
45114515 },
45124516 artistUri: {
45134513- type: 'string',
45144514- description: 'The URI of the artist.',
45154515- format: 'at-uri',
45174517+ type: "string",
45184518+ description: "The URI of the artist.",
45194519+ format: "at-uri",
45164520 },
45174521 album: {
45184518- type: 'string',
45194519- description: 'The album of the song.',
45224522+ type: "string",
45234523+ description: "The album of the song.",
45204524 },
45214525 albumUri: {
45224522- type: 'string',
45234523- description: 'The URI of the album.',
45244524- format: 'at-uri',
45264526+ type: "string",
45274527+ description: "The URI of the album.",
45284528+ format: "at-uri",
45254529 },
45264530 cover: {
45274527- type: 'string',
45284528- description: 'The album art URL of the song.',
45294529- format: 'uri',
45314531+ type: "string",
45324532+ description: "The album art URL of the song.",
45334533+ format: "uri",
45304534 },
45314535 date: {
45324532- type: 'string',
45334533- description: 'The timestamp when the scrobble was created.',
45344534- format: 'datetime',
45364536+ type: "string",
45374537+ description: "The timestamp when the scrobble was created.",
45384538+ format: "datetime",
45354539 },
45364540 uri: {
45374537- type: 'string',
45384538- description: 'The URI of the scrobble.',
45394539- format: 'uri',
45414541+ type: "string",
45424542+ description: "The URI of the scrobble.",
45434543+ format: "uri",
45404544 },
45414545 sha256: {
45424542- type: 'string',
45434543- description: 'The SHA256 hash of the scrobble data.',
45464546+ type: "string",
45474547+ description: "The SHA256 hash of the scrobble data.",
45444548 },
45454549 liked: {
45464546- type: 'boolean',
45504550+ type: "boolean",
45474551 },
45484552 likesCount: {
45494549- type: 'integer',
45534553+ type: "integer",
45504554 },
45514555 },
45524556 },
45534557 scrobbleViewDetailed: {
45544554- type: 'object',
45584558+ type: "object",
45554559 properties: {
45564560 id: {
45574557- type: 'string',
45584558- description: 'The unique identifier of the scrobble.',
45614561+ type: "string",
45624562+ description: "The unique identifier of the scrobble.",
45594563 },
45604564 user: {
45614561- type: 'string',
45624562- description: 'The handle of the user who created the scrobble.',
45654565+ type: "string",
45664566+ description: "The handle of the user who created the scrobble.",
45634567 },
45644568 title: {
45654565- type: 'string',
45664566- description: 'The title of the scrobble.',
45694569+ type: "string",
45704570+ description: "The title of the scrobble.",
45674571 },
45684572 artist: {
45694569- type: 'string',
45704570- description: 'The artist of the song.',
45734573+ type: "string",
45744574+ description: "The artist of the song.",
45714575 },
45724576 artistUri: {
45734573- type: 'string',
45744574- description: 'The URI of the artist.',
45754575- format: 'at-uri',
45774577+ type: "string",
45784578+ description: "The URI of the artist.",
45794579+ format: "at-uri",
45764580 },
45774581 album: {
45784578- type: 'string',
45794579- description: 'The album of the song.',
45824582+ type: "string",
45834583+ description: "The album of the song.",
45804584 },
45814585 albumUri: {
45824582- type: 'string',
45834583- description: 'The URI of the album.',
45844584- format: 'at-uri',
45864586+ type: "string",
45874587+ description: "The URI of the album.",
45884588+ format: "at-uri",
45854589 },
45864590 cover: {
45874587- type: 'string',
45884588- description: 'The album art URL of the song.',
45894589- format: 'uri',
45914591+ type: "string",
45924592+ description: "The album art URL of the song.",
45934593+ format: "uri",
45904594 },
45914595 date: {
45924592- type: 'string',
45934593- description: 'The timestamp when the scrobble was created.',
45944594- format: 'datetime',
45964596+ type: "string",
45974597+ description: "The timestamp when the scrobble was created.",
45984598+ format: "datetime",
45954599 },
45964600 uri: {
45974597- type: 'string',
45984598- description: 'The URI of the scrobble.',
45994599- format: 'uri',
46014601+ type: "string",
46024602+ description: "The URI of the scrobble.",
46034603+ format: "uri",
46004604 },
46014605 sha256: {
46024602- type: 'string',
46034603- description: 'The SHA256 hash of the scrobble data.',
46064606+ type: "string",
46074607+ description: "The SHA256 hash of the scrobble data.",
46044608 },
46054609 listeners: {
46064606- type: 'integer',
46074607- description: 'The number of listeners',
46104610+ type: "integer",
46114611+ description: "The number of listeners",
46084612 },
46094613 scrobbles: {
46104610- type: 'integer',
46114611- description: 'The number of scrobbles for this song',
46144614+ type: "integer",
46154615+ description: "The number of scrobbles for this song",
46124616 },
46134617 },
46144618 },
···46164620 },
46174621 AppRockskyScrobbleGetScrobble: {
46184622 lexicon: 1,
46194619- id: 'app.rocksky.scrobble.getScrobble',
46234623+ id: "app.rocksky.scrobble.getScrobble",
46204624 defs: {
46214625 main: {
46224622- type: 'query',
46234623- description: 'Get a scrobble by its unique identifier',
46264626+ type: "query",
46274627+ description: "Get a scrobble by its unique identifier",
46244628 parameters: {
46254625- type: 'params',
46264626- required: ['uri'],
46294629+ type: "params",
46304630+ required: ["uri"],
46274631 properties: {
46284632 uri: {
46294629- type: 'string',
46304630- description: 'The unique identifier of the scrobble',
46314631- format: 'at-uri',
46334633+ type: "string",
46344634+ description: "The unique identifier of the scrobble",
46354635+ format: "at-uri",
46324636 },
46334637 },
46344638 },
46354639 output: {
46364636- encoding: 'application/json',
46404640+ encoding: "application/json",
46374641 schema: {
46384638- type: 'ref',
46394639- ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewDetailed',
46424642+ type: "ref",
46434643+ ref: "lex:app.rocksky.scrobble.defs#scrobbleViewDetailed",
46404644 },
46414645 },
46424646 },
···46444648 },
46454649 AppRockskyScrobbleGetScrobbles: {
46464650 lexicon: 1,
46474647- id: 'app.rocksky.scrobble.getScrobbles',
46514651+ id: "app.rocksky.scrobble.getScrobbles",
46484652 defs: {
46494653 main: {
46504650- type: 'query',
46514651- description: 'Get scrobbles all scrobbles',
46544654+ type: "query",
46554655+ description: "Get scrobbles all scrobbles",
46524656 parameters: {
46534653- type: 'params',
46574657+ type: "params",
46544658 properties: {
46554659 did: {
46564656- type: 'string',
46574657- description: 'The DID or handle of the actor',
46584658- format: 'at-identifier',
46604660+ type: "string",
46614661+ description: "The DID or handle of the actor",
46624662+ format: "at-identifier",
46594663 },
46604664 following: {
46614661- type: 'boolean',
46654665+ type: "boolean",
46624666 description:
46634663- 'If true, only return scrobbles from actors the viewer is following.',
46674667+ "If true, only return scrobbles from actors the viewer is following.",
46644668 },
46654669 limit: {
46664666- type: 'integer',
46674667- description: 'The maximum number of scrobbles to return',
46704670+ type: "integer",
46714671+ description: "The maximum number of scrobbles to return",
46684672 minimum: 1,
46694673 },
46704674 offset: {
46714671- type: 'integer',
46724672- description: 'The offset for pagination',
46754675+ type: "integer",
46764676+ description: "The offset for pagination",
46734677 minimum: 0,
46744678 },
46754679 },
46764680 },
46774681 output: {
46784678- encoding: 'application/json',
46824682+ encoding: "application/json",
46794683 schema: {
46804680- type: 'object',
46844684+ type: "object",
46814685 properties: {
46824686 scrobbles: {
46834683- type: 'array',
46874687+ type: "array",
46844688 items: {
46854685- type: 'ref',
46864686- ref: 'lex:app.rocksky.scrobble.defs#scrobbleViewBasic',
46894689+ type: "ref",
46904690+ ref: "lex:app.rocksky.scrobble.defs#scrobbleViewBasic",
46874691 },
46884692 },
46894693 },
···46944698 },
46954699 AppRockskyScrobble: {
46964700 lexicon: 1,
46974697- id: 'app.rocksky.scrobble',
47014701+ id: "app.rocksky.scrobble",
46984702 defs: {
46994703 main: {
47004700- type: 'record',
47014701- description: 'A declaration of a scrobble.',
47024702- key: 'tid',
47044704+ type: "record",
47054705+ description: "A declaration of a scrobble.",
47064706+ key: "tid",
47034707 record: {
47044704- type: 'object',
47084708+ type: "object",
47054709 required: [
47064706- 'title',
47074707- 'artist',
47084708- 'album',
47094709- 'albumArtist',
47104710- 'duration',
47114711- 'createdAt',
47104710+ "title",
47114711+ "artist",
47124712+ "album",
47134713+ "albumArtist",
47144714+ "duration",
47154715+ "createdAt",
47124716 ],
47134717 properties: {
47144718 title: {
47154715- type: 'string',
47164716- description: 'The title of the song.',
47194719+ type: "string",
47204720+ description: "The title of the song.",
47174721 minLength: 1,
47184722 maxLength: 512,
47194723 },
47204724 artist: {
47214721- type: 'string',
47224722- description: 'The artist of the song.',
47254725+ type: "string",
47264726+ description: "The artist of the song.",
47234727 minLength: 1,
47244728 maxLength: 256,
47254729 },
47264730 artists: {
47274727- type: 'array',
47284728- description: 'The artists of the song with MusicBrainz IDs.',
47314731+ type: "array",
47324732+ description: "The artists of the song with MusicBrainz IDs.",
47294733 items: {
47304730- type: 'ref',
47314731- ref: 'lex:app.rocksky.artist.defs#artistMbid',
47344734+ type: "ref",
47354735+ ref: "lex:app.rocksky.artist.defs#artistMbid",
47324736 },
47334737 },
47344738 albumArtist: {
47354735- type: 'string',
47364736- description: 'The album artist of the song.',
47394739+ type: "string",
47404740+ description: "The album artist of the song.",
47374741 minLength: 1,
47384742 maxLength: 256,
47394743 },
47404744 album: {
47414741- type: 'string',
47424742- description: 'The album of the song.',
47454745+ type: "string",
47464746+ description: "The album of the song.",
47434747 minLength: 1,
47444748 maxLength: 256,
47454749 },
47464750 duration: {
47474747- type: 'integer',
47484748- description: 'The duration of the song in seconds.',
47514751+ type: "integer",
47524752+ description: "The duration of the song in seconds.",
47494753 minimum: 1,
47504754 },
47514755 trackNumber: {
47524752- type: 'integer',
47534753- description: 'The track number of the song in the album.',
47564756+ type: "integer",
47574757+ description: "The track number of the song in the album.",
47544758 minimum: 1,
47554759 },
47564760 discNumber: {
47574757- type: 'integer',
47584758- description: 'The disc number of the song in the album.',
47614761+ type: "integer",
47624762+ description: "The disc number of the song in the album.",
47594763 minimum: 1,
47604764 },
47614765 releaseDate: {
47624762- type: 'string',
47634763- description: 'The release date of the song.',
47644764- format: 'datetime',
47664766+ type: "string",
47674767+ description: "The release date of the song.",
47684768+ format: "datetime",
47654769 },
47664770 year: {
47674767- type: 'integer',
47684768- description: 'The year the song was released.',
47714771+ type: "integer",
47724772+ description: "The year the song was released.",
47694773 },
47704774 genre: {
47714771- type: 'string',
47724772- description: 'The genre of the song.',
47754775+ type: "string",
47764776+ description: "The genre of the song.",
47734777 maxLength: 256,
47744778 },
47754779 tags: {
47764776- type: 'array',
47774777- description: 'The tags of the song.',
47804780+ type: "array",
47814781+ description: "The tags of the song.",
47784782 items: {
47794779- type: 'string',
47834783+ type: "string",
47804784 minLength: 1,
47814785 maxLength: 256,
47824786 },
47834787 },
47844788 composer: {
47854785- type: 'string',
47864786- description: 'The composer of the song.',
47894789+ type: "string",
47904790+ description: "The composer of the song.",
47874791 maxLength: 256,
47884792 },
47894793 lyrics: {
47904790- type: 'string',
47914791- description: 'The lyrics of the song.',
47944794+ type: "string",
47954795+ description: "The lyrics of the song.",
47924796 maxLength: 10000,
47934797 },
47944798 copyrightMessage: {
47954795- type: 'string',
47964796- description: 'The copyright message of the song.',
47994799+ type: "string",
48004800+ description: "The copyright message of the song.",
47974801 maxLength: 256,
47984802 },
47994803 wiki: {
48004800- type: 'string',
48014801- description: 'Informations about the song',
48044804+ type: "string",
48054805+ description: "Informations about the song",
48024806 maxLength: 10000,
48034807 },
48044808 albumArt: {
48054805- type: 'blob',
48064806- description: 'The album art of the song.',
48074807- accept: ['image/png', 'image/jpeg'],
48094809+ type: "blob",
48104810+ description: "The album art of the song.",
48114811+ accept: ["image/png", "image/jpeg"],
48084812 maxSize: 2000000,
48094813 },
48104814 albumArtUrl: {
48114811- type: 'string',
48124812- description: 'The URL of the album art of the song.',
48134813- format: 'uri',
48154815+ type: "string",
48164816+ description: "The URL of the album art of the song.",
48174817+ format: "uri",
48144818 },
48154819 youtubeLink: {
48164816- type: 'string',
48174817- description: 'The YouTube link of the song.',
48184818- format: 'uri',
48204820+ type: "string",
48214821+ description: "The YouTube link of the song.",
48224822+ format: "uri",
48194823 },
48204824 spotifyLink: {
48214821- type: 'string',
48224822- description: 'The Spotify link of the song.',
48234823- format: 'uri',
48254825+ type: "string",
48264826+ description: "The Spotify link of the song.",
48274827+ format: "uri",
48244828 },
48254829 tidalLink: {
48264826- type: 'string',
48274827- description: 'The Tidal link of the song.',
48284828- format: 'uri',
48304830+ type: "string",
48314831+ description: "The Tidal link of the song.",
48324832+ format: "uri",
48294833 },
48304834 appleMusicLink: {
48314831- type: 'string',
48324832- description: 'The Apple Music link of the song.',
48334833- format: 'uri',
48354835+ type: "string",
48364836+ description: "The Apple Music link of the song.",
48374837+ format: "uri",
48344838 },
48354839 createdAt: {
48364836- type: 'string',
48374837- description: 'The date when the song was created.',
48384838- format: 'datetime',
48404840+ type: "string",
48414841+ description: "The date when the song was created.",
48424842+ format: "datetime",
48394843 },
48404844 mbid: {
48414841- type: 'string',
48424842- description: 'The MusicBrainz ID of the song.',
48454845+ type: "string",
48464846+ description: "The MusicBrainz ID of the song.",
48434847 },
48444848 label: {
48454845- type: 'string',
48464846- description: 'The label of the song.',
48494849+ type: "string",
48504850+ description: "The label of the song.",
48474851 maxLength: 256,
48484852 },
48494853 },
···48534857 },
48544858 AppRockskyShoutCreateShout: {
48554859 lexicon: 1,
48564856- id: 'app.rocksky.shout.createShout',
48604860+ id: "app.rocksky.shout.createShout",
48574861 defs: {
48584862 main: {
48594859- type: 'procedure',
48604860- description: 'Create a new shout',
48634863+ type: "procedure",
48644864+ description: "Create a new shout",
48614865 input: {
48624862- encoding: 'application/json',
48664866+ encoding: "application/json",
48634867 schema: {
48644864- type: 'object',
48684868+ type: "object",
48654869 properties: {
48664870 message: {
48674867- type: 'string',
48684868- description: 'The content of the shout',
48714871+ type: "string",
48724872+ description: "The content of the shout",
48694873 minLength: 1,
48704874 },
48714875 },
48724876 },
48734877 },
48744878 output: {
48754875- encoding: 'application/json',
48794879+ encoding: "application/json",
48764880 schema: {
48774877- type: 'ref',
48784878- ref: 'lex:app.rocksky.shout.defs#shoutView',
48814881+ type: "ref",
48824882+ ref: "lex:app.rocksky.shout.defs#shoutView",
48794883 },
48804884 },
48814885 },
···48834887 },
48844888 AppRockskyShoutDefs: {
48854889 lexicon: 1,
48864886- id: 'app.rocksky.shout.defs',
48904890+ id: "app.rocksky.shout.defs",
48874891 defs: {
48884892 author: {
48894889- type: 'object',
48934893+ type: "object",
48904894 properties: {
48914895 id: {
48924892- type: 'string',
48934893- description: 'The unique identifier of the author.',
48964896+ type: "string",
48974897+ description: "The unique identifier of the author.",
48944898 },
48954899 did: {
48964896- type: 'string',
48974897- description: 'The decentralized identifier (DID) of the author.',
48984898- format: 'at-identifier',
49004900+ type: "string",
49014901+ description: "The decentralized identifier (DID) of the author.",
49024902+ format: "at-identifier",
48994903 },
49004904 handle: {
49014901- type: 'string',
49024902- description: 'The handle of the author.',
49034903- format: 'at-identifier',
49054905+ type: "string",
49064906+ description: "The handle of the author.",
49074907+ format: "at-identifier",
49044908 },
49054909 displayName: {
49064906- type: 'string',
49074907- description: 'The display name of the author.',
49104910+ type: "string",
49114911+ description: "The display name of the author.",
49084912 },
49094913 avatar: {
49104910- type: 'string',
49144914+ type: "string",
49114915 description: "The URL of the author's avatar image.",
49124912- format: 'uri',
49164916+ format: "uri",
49134917 },
49144918 },
49154919 },
49164920 shoutView: {
49174917- type: 'object',
49214921+ type: "object",
49184922 properties: {
49194923 id: {
49204920- type: 'string',
49214921- description: 'The unique identifier of the shout.',
49244924+ type: "string",
49254925+ description: "The unique identifier of the shout.",
49224926 },
49234927 message: {
49244924- type: 'string',
49254925- description: 'The content of the shout.',
49284928+ type: "string",
49294929+ description: "The content of the shout.",
49264930 },
49274931 parent: {
49284928- type: 'string',
49324932+ type: "string",
49294933 description:
49304930- 'The ID of the parent shout if this is a reply, otherwise null.',
49344934+ "The ID of the parent shout if this is a reply, otherwise null.",
49314935 },
49324936 createdAt: {
49334933- type: 'string',
49344934- description: 'The date and time when the shout was created.',
49354935- format: 'datetime',
49374937+ type: "string",
49384938+ description: "The date and time when the shout was created.",
49394939+ format: "datetime",
49364940 },
49374941 author: {
49384938- type: 'ref',
49394939- description: 'The author of the shout.',
49404940- ref: 'lex:app.rocksky.shout.defs#author',
49424942+ type: "ref",
49434943+ description: "The author of the shout.",
49444944+ ref: "lex:app.rocksky.shout.defs#author",
49414945 },
49424946 },
49434947 },
···49454949 },
49464950 AppRockskyShoutGetAlbumShouts: {
49474951 lexicon: 1,
49484948- id: 'app.rocksky.shout.getAlbumShouts',
49524952+ id: "app.rocksky.shout.getAlbumShouts",
49494953 defs: {
49504954 main: {
49514951- type: 'query',
49524952- description: 'Get shouts for an album',
49554955+ type: "query",
49564956+ description: "Get shouts for an album",
49534957 parameters: {
49544954- type: 'params',
49554955- required: ['uri'],
49584958+ type: "params",
49594959+ required: ["uri"],
49564960 properties: {
49574961 uri: {
49584958- type: 'string',
49624962+ type: "string",
49594963 description:
49604960- 'The unique identifier of the album to retrieve shouts for',
49614961- format: 'at-uri',
49644964+ "The unique identifier of the album to retrieve shouts for",
49654965+ format: "at-uri",
49624966 },
49634967 limit: {
49644964- type: 'integer',
49654965- description: 'The maximum number of shouts to return',
49684968+ type: "integer",
49694969+ description: "The maximum number of shouts to return",
49664970 minimum: 1,
49674971 },
49684972 offset: {
49694969- type: 'integer',
49734973+ type: "integer",
49704974 description:
49714971- 'The number of shouts to skip before starting to collect the result set',
49754975+ "The number of shouts to skip before starting to collect the result set",
49724976 minimum: 0,
49734977 },
49744978 },
49754979 },
49764980 output: {
49774977- encoding: 'application/json',
49814981+ encoding: "application/json",
49784982 schema: {
49794979- type: 'object',
49834983+ type: "object",
49804984 properties: {
49814985 shouts: {
49824982- type: 'array',
49864986+ type: "array",
49834987 items: {
49844984- type: 'ref',
49854985- ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
49884988+ type: "ref",
49894989+ ref: "lex:app.rocksky.shout.defs#shoutViewBasic",
49864990 },
49874991 },
49884992 },
···49934997 },
49944998 AppRockskyShoutGetArtistShouts: {
49954999 lexicon: 1,
49964996- id: 'app.rocksky.shout.getArtistShouts',
50005000+ id: "app.rocksky.shout.getArtistShouts",
49975001 defs: {
49985002 main: {
49994999- type: 'query',
50005000- description: 'Get shouts for an artist',
50035003+ type: "query",
50045004+ description: "Get shouts for an artist",
50015005 parameters: {
50025002- type: 'params',
50035003- required: ['uri'],
50065006+ type: "params",
50075007+ required: ["uri"],
50045008 properties: {
50055009 uri: {
50065006- type: 'string',
50075007- description: 'The URI of the artist to retrieve shouts for',
50085008- format: 'at-uri',
50105010+ type: "string",
50115011+ description: "The URI of the artist to retrieve shouts for",
50125012+ format: "at-uri",
50095013 },
50105014 limit: {
50115011- type: 'integer',
50125012- description: 'The maximum number of shouts to return',
50155015+ type: "integer",
50165016+ description: "The maximum number of shouts to return",
50135017 minimum: 1,
50145018 },
50155019 offset: {
50165016- type: 'integer',
50205020+ type: "integer",
50175021 description:
50185018- 'The number of shouts to skip before starting to collect the result set',
50225022+ "The number of shouts to skip before starting to collect the result set",
50195023 minimum: 0,
50205024 },
50215025 },
50225026 },
50235027 output: {
50245024- encoding: 'application/json',
50285028+ encoding: "application/json",
50255029 schema: {
50265026- type: 'object',
50305030+ type: "object",
50275031 properties: {
50285032 shouts: {
50295029- type: 'array',
50335033+ type: "array",
50305034 items: {
50315031- type: 'ref',
50325032- ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
50355035+ type: "ref",
50365036+ ref: "lex:app.rocksky.shout.defs#shoutViewBasic",
50335037 },
50345038 },
50355039 },
···50405044 },
50415045 AppRockskyShoutGetProfileShouts: {
50425046 lexicon: 1,
50435043- id: 'app.rocksky.shout.getProfileShouts',
50475047+ id: "app.rocksky.shout.getProfileShouts",
50445048 defs: {
50455049 main: {
50465046- type: 'query',
50505050+ type: "query",
50475051 description: "Get the shouts of an actor's profile",
50485052 parameters: {
50495049- type: 'params',
50505050- required: ['did'],
50535053+ type: "params",
50545054+ required: ["did"],
50515055 properties: {
50525056 did: {
50535053- type: 'string',
50545054- description: 'The DID or handle of the actor',
50555055- format: 'at-identifier',
50575057+ type: "string",
50585058+ description: "The DID or handle of the actor",
50595059+ format: "at-identifier",
50565060 },
50575061 offset: {
50585058- type: 'integer',
50595059- description: 'The offset for pagination',
50625062+ type: "integer",
50635063+ description: "The offset for pagination",
50605064 minimum: 0,
50615065 },
50625066 limit: {
50635063- type: 'integer',
50645064- description: 'The maximum number of shouts to return',
50675067+ type: "integer",
50685068+ description: "The maximum number of shouts to return",
50655069 minimum: 1,
50665070 },
50675071 },
50685072 },
50695073 output: {
50705070- encoding: 'application/json',
50745074+ encoding: "application/json",
50715075 schema: {
50725072- type: 'object',
50765076+ type: "object",
50735077 properties: {
50745078 shouts: {
50755075- type: 'array',
50795079+ type: "array",
50765080 items: {
50775077- type: 'ref',
50785078- ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
50815081+ type: "ref",
50825082+ ref: "lex:app.rocksky.shout.defs#shoutViewBasic",
50795083 },
50805084 },
50815085 },
···50865090 },
50875091 AppRockskyShoutGetShoutReplies: {
50885092 lexicon: 1,
50895089- id: 'app.rocksky.shout.getShoutReplies',
50935093+ id: "app.rocksky.shout.getShoutReplies",
50905094 defs: {
50915095 main: {
50925092- type: 'query',
50935093- description: 'Get replies to a shout',
50965096+ type: "query",
50975097+ description: "Get replies to a shout",
50945098 parameters: {
50955095- type: 'params',
50965096- required: ['uri'],
50995099+ type: "params",
51005100+ required: ["uri"],
50975101 properties: {
50985102 uri: {
50995099- type: 'string',
51005100- description: 'The URI of the shout to retrieve replies for',
51015101- format: 'at-uri',
51035103+ type: "string",
51045104+ description: "The URI of the shout to retrieve replies for",
51055105+ format: "at-uri",
51025106 },
51035107 limit: {
51045104- type: 'integer',
51055105- description: 'The maximum number of shouts to return',
51085108+ type: "integer",
51095109+ description: "The maximum number of shouts to return",
51065110 minimum: 1,
51075111 },
51085112 offset: {
51095109- type: 'integer',
51135113+ type: "integer",
51105114 description:
51115111- 'The number of shouts to skip before starting to collect the result set',
51155115+ "The number of shouts to skip before starting to collect the result set",
51125116 minimum: 0,
51135117 },
51145118 },
51155119 },
51165120 output: {
51175117- encoding: 'application/json',
51215121+ encoding: "application/json",
51185122 schema: {
51195119- type: 'object',
51235123+ type: "object",
51205124 properties: {
51215125 shouts: {
51225122- type: 'array',
51265126+ type: "array",
51235127 items: {
51245124- type: 'ref',
51255125- ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
51285128+ type: "ref",
51295129+ ref: "lex:app.rocksky.shout.defs#shoutViewBasic",
51265130 },
51275131 },
51285132 },
···51335137 },
51345138 AppRockskyShoutGetTrackShouts: {
51355139 lexicon: 1,
51365136- id: 'app.rocksky.shout.getTrackShouts',
51405140+ id: "app.rocksky.shout.getTrackShouts",
51375141 defs: {
51385142 main: {
51395139- type: 'query',
51405140- description: 'Get all shouts for a specific track',
51435143+ type: "query",
51445144+ description: "Get all shouts for a specific track",
51415145 parameters: {
51425142- type: 'params',
51435143- required: ['uri'],
51465146+ type: "params",
51475147+ required: ["uri"],
51445148 properties: {
51455149 uri: {
51465146- type: 'string',
51475147- description: 'The URI of the track to retrieve shouts for',
51485148- format: 'at-uri',
51505150+ type: "string",
51515151+ description: "The URI of the track to retrieve shouts for",
51525152+ format: "at-uri",
51495153 },
51505154 },
51515155 },
51525156 output: {
51535153- encoding: 'application/json',
51575157+ encoding: "application/json",
51545158 schema: {
51555155- type: 'object',
51595159+ type: "object",
51565160 properties: {
51575161 shouts: {
51585158- type: 'array',
51625162+ type: "array",
51595163 items: {
51605160- type: 'ref',
51615161- ref: 'lex:app.rocksky.shout.defs#shoutViewBasic',
51645164+ type: "ref",
51655165+ ref: "lex:app.rocksky.shout.defs#shoutViewBasic",
51625166 },
51635167 },
51645168 },
···51695173 },
51705174 AppRockskyShoutRemoveShout: {
51715175 lexicon: 1,
51725172- id: 'app.rocksky.shout.removeShout',
51765176+ id: "app.rocksky.shout.removeShout",
51735177 defs: {
51745178 main: {
51755175- type: 'procedure',
51765176- description: 'Remove a shout by its ID',
51795179+ type: "procedure",
51805180+ description: "Remove a shout by its ID",
51775181 parameters: {
51785178- type: 'params',
51795179- required: ['id'],
51825182+ type: "params",
51835183+ required: ["id"],
51805184 properties: {
51815185 id: {
51825182- type: 'string',
51835183- description: 'The ID of the shout to be removed',
51865186+ type: "string",
51875187+ description: "The ID of the shout to be removed",
51845188 },
51855189 },
51865190 },
51875191 output: {
51885188- encoding: 'application/json',
51925192+ encoding: "application/json",
51895193 schema: {
51905190- type: 'ref',
51915191- ref: 'lex:app.rocksky.shout.defs#shoutView',
51945194+ type: "ref",
51955195+ ref: "lex:app.rocksky.shout.defs#shoutView",
51925196 },
51935197 },
51945198 },
···51965200 },
51975201 AppRockskyShoutReplyShout: {
51985202 lexicon: 1,
51995199- id: 'app.rocksky.shout.replyShout',
52035203+ id: "app.rocksky.shout.replyShout",
52005204 defs: {
52015205 main: {
52025202- type: 'procedure',
52035203- description: 'Reply to a shout',
52065206+ type: "procedure",
52075207+ description: "Reply to a shout",
52045208 input: {
52055205- encoding: 'application/json',
52095209+ encoding: "application/json",
52065210 schema: {
52075207- type: 'object',
52085208- required: ['shoutId', 'message'],
52115211+ type: "object",
52125212+ required: ["shoutId", "message"],
52095213 properties: {
52105214 shoutId: {
52115211- type: 'string',
52125212- description: 'The unique identifier of the shout to reply to',
52155215+ type: "string",
52165216+ description: "The unique identifier of the shout to reply to",
52135217 },
52145218 message: {
52155215- type: 'string',
52165216- description: 'The content of the reply',
52195219+ type: "string",
52205220+ description: "The content of the reply",
52175221 minLength: 1,
52185222 },
52195223 },
52205224 },
52215225 },
52225226 output: {
52235223- encoding: 'application/json',
52275227+ encoding: "application/json",
52245228 schema: {
52255225- type: 'ref',
52265226- ref: 'lex:app.rocksky.shout.defs#shoutView',
52295229+ type: "ref",
52305230+ ref: "lex:app.rocksky.shout.defs#shoutView",
52275231 },
52285232 },
52295233 },
···52315235 },
52325236 AppRockskyShoutReportShout: {
52335237 lexicon: 1,
52345234- id: 'app.rocksky.shout.reportShout',
52385238+ id: "app.rocksky.shout.reportShout",
52355239 defs: {
52365240 main: {
52375237- type: 'procedure',
52385238- description: 'Report a shout for moderation',
52415241+ type: "procedure",
52425242+ description: "Report a shout for moderation",
52395243 input: {
52405240- encoding: 'application/json',
52445244+ encoding: "application/json",
52415245 schema: {
52425242- type: 'object',
52435243- required: ['shoutId'],
52465246+ type: "object",
52475247+ required: ["shoutId"],
52445248 properties: {
52455249 shoutId: {
52465246- type: 'string',
52475247- description: 'The unique identifier of the shout to report',
52505250+ type: "string",
52515251+ description: "The unique identifier of the shout to report",
52485252 },
52495253 reason: {
52505250- type: 'string',
52515251- description: 'The reason for reporting the shout',
52545254+ type: "string",
52555255+ description: "The reason for reporting the shout",
52525256 minLength: 1,
52535257 },
52545258 },
52555259 },
52565260 },
52575261 output: {
52585258- encoding: 'application/json',
52625262+ encoding: "application/json",
52595263 schema: {
52605260- type: 'ref',
52615261- ref: 'lex:app.rocksky.shout.defs#shoutView',
52645264+ type: "ref",
52655265+ ref: "lex:app.rocksky.shout.defs#shoutView",
52625266 },
52635267 },
52645268 },
···52665270 },
52675271 AppRockskyShout: {
52685272 lexicon: 1,
52695269- id: 'app.rocksky.shout',
52735273+ id: "app.rocksky.shout",
52705274 defs: {
52715275 main: {
52725272- type: 'record',
52735273- description: 'A declaration of a shout.',
52745274- key: 'tid',
52765276+ type: "record",
52775277+ description: "A declaration of a shout.",
52785278+ key: "tid",
52755279 record: {
52765276- type: 'object',
52775277- required: ['message', 'createdAt', 'subject'],
52805280+ type: "object",
52815281+ required: ["message", "createdAt", "subject"],
52785282 properties: {
52795283 message: {
52805280- type: 'string',
52815281- description: 'The message of the shout.',
52845284+ type: "string",
52855285+ description: "The message of the shout.",
52825286 minLength: 1,
52835287 maxLength: 1000,
52845288 },
52855289 createdAt: {
52865286- type: 'string',
52875287- description: 'The date when the shout was created.',
52885288- format: 'datetime',
52905290+ type: "string",
52915291+ description: "The date when the shout was created.",
52925292+ format: "datetime",
52895293 },
52905294 parent: {
52915291- type: 'ref',
52925292- ref: 'lex:com.atproto.repo.strongRef',
52955295+ type: "ref",
52965296+ ref: "lex:com.atproto.repo.strongRef",
52935297 },
52945298 subject: {
52955295- type: 'ref',
52965296- ref: 'lex:com.atproto.repo.strongRef',
52995299+ type: "ref",
53005300+ ref: "lex:com.atproto.repo.strongRef",
52975301 },
52985302 },
52995303 },
···53025306 },
53035307 AppRockskySongCreateSong: {
53045308 lexicon: 1,
53055305- id: 'app.rocksky.song.createSong',
53095309+ id: "app.rocksky.song.createSong",
53065310 defs: {
53075311 main: {
53085308- type: 'procedure',
53095309- description: 'Create a new song',
53125312+ type: "procedure",
53135313+ description: "Create a new song",
53105314 input: {
53115311- encoding: 'application/json',
53155315+ encoding: "application/json",
53125316 schema: {
53135313- type: 'object',
53145314- required: ['title', 'artist', 'album', 'albumArtist'],
53175317+ type: "object",
53185318+ required: ["title", "artist", "album", "albumArtist"],
53155319 properties: {
53165320 title: {
53175317- type: 'string',
53185318- description: 'The title of the song',
53215321+ type: "string",
53225322+ description: "The title of the song",
53195323 },
53205324 artist: {
53215321- type: 'string',
53225322- description: 'The artist of the song',
53255325+ type: "string",
53265326+ description: "The artist of the song",
53235327 },
53245328 albumArtist: {
53255325- type: 'string',
53295329+ type: "string",
53265330 description:
53275327- 'The album artist of the song, if different from the main artist',
53315331+ "The album artist of the song, if different from the main artist",
53285332 },
53295333 album: {
53305330- type: 'string',
53315331- description: 'The album of the song, if applicable',
53345334+ type: "string",
53355335+ description: "The album of the song, if applicable",
53325336 },
53335337 duration: {
53345334- type: 'integer',
53355335- description: 'The duration of the song in seconds',
53385338+ type: "integer",
53395339+ description: "The duration of the song in seconds",
53365340 },
53375341 mbId: {
53385338- type: 'string',
53395339- description: 'The MusicBrainz ID of the song, if available',
53425342+ type: "string",
53435343+ description: "The MusicBrainz ID of the song, if available",
53405344 },
53415345 albumArt: {
53425342- type: 'string',
53435343- description: 'The URL of the album art for the song',
53445344- format: 'uri',
53465346+ type: "string",
53475347+ description: "The URL of the album art for the song",
53485348+ format: "uri",
53455349 },
53465350 trackNumber: {
53475347- type: 'integer',
53515351+ type: "integer",
53485352 description:
53495349- 'The track number of the song in the album, if applicable',
53535353+ "The track number of the song in the album, if applicable",
53505354 },
53515355 releaseDate: {
53525352- type: 'string',
53565356+ type: "string",
53535357 description:
53545354- 'The release date of the song, formatted as YYYY-MM-DD',
53585358+ "The release date of the song, formatted as YYYY-MM-DD",
53555359 },
53565360 year: {
53575357- type: 'integer',
53585358- description: 'The year the song was released',
53615361+ type: "integer",
53625362+ description: "The year the song was released",
53595363 },
53605364 discNumber: {
53615361- type: 'integer',
53655365+ type: "integer",
53625366 description:
53635363- 'The disc number of the song in the album, if applicable',
53675367+ "The disc number of the song in the album, if applicable",
53645368 },
53655369 lyrics: {
53665366- type: 'string',
53675367- description: 'The lyrics of the song, if available',
53705370+ type: "string",
53715371+ description: "The lyrics of the song, if available",
53685372 },
53695373 },
53705374 },
53715375 },
53725376 output: {
53735373- encoding: 'application/json',
53775377+ encoding: "application/json",
53745378 schema: {
53755375- type: 'ref',
53765376- ref: 'lex:app.rocksky.song.defs#songViewDetailed',
53795379+ type: "ref",
53805380+ ref: "lex:app.rocksky.song.defs#songViewDetailed",
53775381 },
53785382 },
53795383 },
···53815385 },
53825386 AppRockskySongDefs: {
53835387 lexicon: 1,
53845384- id: 'app.rocksky.song.defs',
53885388+ id: "app.rocksky.song.defs",
53855389 defs: {
53865390 songViewBasic: {
53875387- type: 'object',
53915391+ type: "object",
53885392 properties: {
53895393 id: {
53905390- type: 'string',
53915391- description: 'The unique identifier of the song.',
53945394+ type: "string",
53955395+ description: "The unique identifier of the song.",
53925396 },
53935397 title: {
53945394- type: 'string',
53955395- description: 'The title of the song.',
53985398+ type: "string",
53995399+ description: "The title of the song.",
53965400 },
53975401 artist: {
53985398- type: 'string',
53995399- description: 'The artist of the song.',
54025402+ type: "string",
54035403+ description: "The artist of the song.",
54005404 },
54015405 albumArtist: {
54025402- type: 'string',
54035403- description: 'The artist of the album the song belongs to.',
54065406+ type: "string",
54075407+ description: "The artist of the album the song belongs to.",
54045408 },
54055409 albumArt: {
54065406- type: 'string',
54075407- description: 'The URL of the album art image.',
54085408- format: 'uri',
54105410+ type: "string",
54115411+ description: "The URL of the album art image.",
54125412+ format: "uri",
54095413 },
54105414 uri: {
54115411- type: 'string',
54125412- description: 'The URI of the song.',
54135413- format: 'at-uri',
54155415+ type: "string",
54165416+ description: "The URI of the song.",
54175417+ format: "at-uri",
54145418 },
54155419 album: {
54165416- type: 'string',
54175417- description: 'The album of the song.',
54205420+ type: "string",
54215421+ description: "The album of the song.",
54185422 },
54195423 duration: {
54205420- type: 'integer',
54215421- description: 'The duration of the song in milliseconds.',
54245424+ type: "integer",
54255425+ description: "The duration of the song in milliseconds.",
54225426 },
54235427 trackNumber: {
54245424- type: 'integer',
54255425- description: 'The track number of the song in the album.',
54285428+ type: "integer",
54295429+ description: "The track number of the song in the album.",
54265430 },
54275431 discNumber: {
54285428- type: 'integer',
54295429- description: 'The disc number of the song in the album.',
54325432+ type: "integer",
54335433+ description: "The disc number of the song in the album.",
54305434 },
54315435 playCount: {
54325432- type: 'integer',
54335433- description: 'The number of times the song has been played.',
54365436+ type: "integer",
54375437+ description: "The number of times the song has been played.",
54345438 minimum: 0,
54355439 },
54365440 uniqueListeners: {
54375437- type: 'integer',
54415441+ type: "integer",
54385442 description:
54395439- 'The number of unique listeners who have played the song.',
54435443+ "The number of unique listeners who have played the song.",
54405444 minimum: 0,
54415445 },
54425446 albumUri: {
54435443- type: 'string',
54445444- description: 'The URI of the album the song belongs to.',
54455445- format: 'at-uri',
54475447+ type: "string",
54485448+ description: "The URI of the album the song belongs to.",
54495449+ format: "at-uri",
54465450 },
54475451 artistUri: {
54485448- type: 'string',
54495449- description: 'The URI of the artist of the song.',
54505450- format: 'at-uri',
54525452+ type: "string",
54535453+ description: "The URI of the artist of the song.",
54545454+ format: "at-uri",
54515455 },
54525456 sha256: {
54535453- type: 'string',
54545454- description: 'The SHA256 hash of the song.',
54575457+ type: "string",
54585458+ description: "The SHA256 hash of the song.",
54555459 },
54565460 tags: {
54575457- type: 'array',
54615461+ type: "array",
54585462 items: {
54595459- type: 'string',
54635463+ type: "string",
54605464 },
54615465 },
54625466 createdAt: {
54635463- type: 'string',
54645464- description: 'The timestamp when the song was created.',
54655465- format: 'datetime',
54675467+ type: "string",
54685468+ description: "The timestamp when the song was created.",
54695469+ format: "datetime",
54665470 },
54675471 },
54685472 },
54695473 songViewDetailed: {
54705470- type: 'object',
54745474+ type: "object",
54715475 properties: {
54725476 id: {
54735473- type: 'string',
54745474- description: 'The unique identifier of the song.',
54775477+ type: "string",
54785478+ description: "The unique identifier of the song.",
54755479 },
54765480 title: {
54775477- type: 'string',
54785478- description: 'The title of the song.',
54815481+ type: "string",
54825482+ description: "The title of the song.",
54795483 },
54805484 artist: {
54815481- type: 'string',
54825482- description: 'The artist of the song.',
54855485+ type: "string",
54865486+ description: "The artist of the song.",
54835487 },
54845488 albumArtist: {
54855485- type: 'string',
54865486- description: 'The artist of the album the song belongs to.',
54895489+ type: "string",
54905490+ description: "The artist of the album the song belongs to.",
54875491 },
54885492 albumArt: {
54895489- type: 'string',
54905490- description: 'The URL of the album art image.',
54915491- format: 'uri',
54935493+ type: "string",
54945494+ description: "The URL of the album art image.",
54955495+ format: "uri",
54925496 },
54935497 uri: {
54945494- type: 'string',
54955495- description: 'The URI of the song.',
54965496- format: 'at-uri',
54985498+ type: "string",
54995499+ description: "The URI of the song.",
55005500+ format: "at-uri",
54975501 },
54985502 album: {
54995499- type: 'string',
55005500- description: 'The album of the song.',
55035503+ type: "string",
55045504+ description: "The album of the song.",
55015505 },
55025506 duration: {
55035503- type: 'integer',
55045504- description: 'The duration of the song in milliseconds.',
55075507+ type: "integer",
55085508+ description: "The duration of the song in milliseconds.",
55055509 },
55065510 trackNumber: {
55075507- type: 'integer',
55085508- description: 'The track number of the song in the album.',
55115511+ type: "integer",
55125512+ description: "The track number of the song in the album.",
55095513 },
55105514 discNumber: {
55115511- type: 'integer',
55125512- description: 'The disc number of the song in the album.',
55155515+ type: "integer",
55165516+ description: "The disc number of the song in the album.",
55135517 },
55145518 playCount: {
55155515- type: 'integer',
55165516- description: 'The number of times the song has been played.',
55195519+ type: "integer",
55205520+ description: "The number of times the song has been played.",
55175521 minimum: 0,
55185522 },
55195523 uniqueListeners: {
55205520- type: 'integer',
55245524+ type: "integer",
55215525 description:
55225522- 'The number of unique listeners who have played the song.',
55265526+ "The number of unique listeners who have played the song.",
55235527 minimum: 0,
55245528 },
55255529 albumUri: {
55265526- type: 'string',
55275527- description: 'The URI of the album the song belongs to.',
55285528- format: 'at-uri',
55305530+ type: "string",
55315531+ description: "The URI of the album the song belongs to.",
55325532+ format: "at-uri",
55295533 },
55305534 artistUri: {
55315531- type: 'string',
55325532- description: 'The URI of the artist of the song.',
55335533- format: 'at-uri',
55355535+ type: "string",
55365536+ description: "The URI of the artist of the song.",
55375537+ format: "at-uri",
55345538 },
55355539 sha256: {
55365536- type: 'string',
55375537- description: 'The SHA256 hash of the song.',
55405540+ type: "string",
55415541+ description: "The SHA256 hash of the song.",
55385542 },
55395543 tags: {
55405540- type: 'array',
55445544+ type: "array",
55415545 items: {
55425542- type: 'string',
55465546+ type: "string",
55435547 },
55445548 },
55455549 createdAt: {
55465546- type: 'string',
55475547- description: 'The timestamp when the song was created.',
55485548- format: 'datetime',
55505550+ type: "string",
55515551+ description: "The timestamp when the song was created.",
55525552+ format: "datetime",
55495553 },
55505554 },
55515555 },
···55535557 },
55545558 AppRockskySongGetSong: {
55555559 lexicon: 1,
55565556- id: 'app.rocksky.song.getSong',
55605560+ id: "app.rocksky.song.getSong",
55575561 defs: {
55585562 main: {
55595559- type: 'query',
55605560- description: 'Get a song by its uri',
55635563+ type: "query",
55645564+ description: "Get a song by its uri",
55615565 parameters: {
55625562- type: 'params',
55635563- required: ['uri'],
55665566+ type: "params",
55675567+ required: ["uri"],
55645568 properties: {
55655569 uri: {
55665566- type: 'string',
55675567- description: 'The unique identifier of the song to retrieve',
55685568- format: 'at-uri',
55705570+ type: "string",
55715571+ description: "The unique identifier of the song to retrieve",
55725572+ format: "at-uri",
55695573 },
55705574 },
55715575 },
55725576 output: {
55735573- encoding: 'application/json',
55775577+ encoding: "application/json",
55745578 schema: {
55755575- type: 'ref',
55765576- ref: 'lex:app.rocksky.song.defs#songViewDetailed',
55795579+ type: "ref",
55805580+ ref: "lex:app.rocksky.song.defs#songViewDetailed",
55775581 },
55785582 },
55795583 },
···55815585 },
55825586 AppRockskySongGetSongs: {
55835587 lexicon: 1,
55845584- id: 'app.rocksky.song.getSongs',
55885588+ id: "app.rocksky.song.getSongs",
55855589 defs: {
55865590 main: {
55875587- type: 'query',
55885588- description: 'Get songs',
55915591+ type: "query",
55925592+ description: "Get songs",
55895593 parameters: {
55905590- type: 'params',
55945594+ type: "params",
55915595 properties: {
55925596 limit: {
55935593- type: 'integer',
55945594- description: 'The maximum number of songs to return',
55975597+ type: "integer",
55985598+ description: "The maximum number of songs to return",
55955599 minimum: 1,
55965600 },
55975601 offset: {
55985598- type: 'integer',
55995599- description: 'The offset for pagination',
56025602+ type: "integer",
56035603+ description: "The offset for pagination",
56005604 minimum: 0,
56015605 },
56025606 genre: {
56035603- type: 'string',
56045604- description: 'The genre to filter artists by',
56075607+ type: "string",
56085608+ description: "The genre to filter artists by",
56055609 },
56065610 },
56075611 },
56085612 output: {
56095609- encoding: 'application/json',
56135613+ encoding: "application/json",
56105614 schema: {
56115611- type: 'object',
56155615+ type: "object",
56125616 properties: {
56135617 songs: {
56145614- type: 'array',
56185618+ type: "array",
56155619 items: {
56165616- type: 'ref',
56175617- ref: 'lex:app.rocksky.song.defs#songViewBasic',
56205620+ type: "ref",
56215621+ ref: "lex:app.rocksky.song.defs#songViewBasic",
56185622 },
56195623 },
56205624 },
···56255629 },
56265630 AppRockskySongMatchSong: {
56275631 lexicon: 1,
56285628- id: 'app.rocksky.song.matchSong',
56325632+ id: "app.rocksky.song.matchSong",
56295633 defs: {
56305634 main: {
56315631- type: 'query',
56355635+ type: "query",
56325636 description:
56335633- 'Matches a song against Rocksky’s music database and external metadata providers to resolve the best canonical track, artist, and album',
56375637+ "Matches a song against Rocksky’s music database and external metadata providers to resolve the best canonical track, artist, and album",
56345638 parameters: {
56355635- type: 'params',
56365636- required: ['title', 'artist'],
56395639+ type: "params",
56405640+ required: ["title", "artist"],
56375641 properties: {
56385642 title: {
56395639- type: 'string',
56405640- description: 'The title of the song to retrieve',
56435643+ type: "string",
56445644+ description: "The title of the song to retrieve",
56415645 },
56425646 artist: {
56435643- type: 'string',
56445644- description: 'The artist of the song to retrieve',
56475647+ type: "string",
56485648+ description: "The artist of the song to retrieve",
56455649 },
56465650 },
56475651 },
56485652 output: {
56495649- encoding: 'application/json',
56535653+ encoding: "application/json",
56505654 schema: {
56515651- type: 'ref',
56525652- ref: 'lex:app.rocksky.song.defs#songViewDetailed',
56555655+ type: "ref",
56565656+ ref: "lex:app.rocksky.song.defs#songViewDetailed",
56535657 },
56545658 },
56555659 },
···56575661 },
56585662 AppRockskySong: {
56595663 lexicon: 1,
56605660- id: 'app.rocksky.song',
56645664+ id: "app.rocksky.song",
56615665 defs: {
56625666 main: {
56635663- type: 'record',
56645664- description: 'A declaration of a song.',
56655665- key: 'tid',
56675667+ type: "record",
56685668+ description: "A declaration of a song.",
56695669+ key: "tid",
56665670 record: {
56675667- type: 'object',
56715671+ type: "object",
56685672 required: [
56695669- 'title',
56705670- 'artist',
56715671- 'album',
56725672- 'albumArtist',
56735673- 'duration',
56745674- 'createdAt',
56735673+ "title",
56745674+ "artist",
56755675+ "album",
56765676+ "albumArtist",
56775677+ "duration",
56785678+ "createdAt",
56755679 ],
56765680 properties: {
56775681 title: {
56785678- type: 'string',
56795679- description: 'The title of the song.',
56825682+ type: "string",
56835683+ description: "The title of the song.",
56805684 minLength: 1,
56815685 maxLength: 512,
56825686 },
56835687 artist: {
56845684- type: 'string',
56855685- description: 'The artist of the song.',
56885688+ type: "string",
56895689+ description: "The artist of the song.",
56865690 minLength: 1,
56875691 maxLength: 256,
56885692 },
56895693 artists: {
56905690- type: 'array',
56915691- description: 'The artists of the song with MusicBrainz IDs.',
56945694+ type: "array",
56955695+ description: "The artists of the song with MusicBrainz IDs.",
56925696 items: {
56935693- type: 'ref',
56945694- ref: 'lex:app.rocksky.artist.defs#artistMbid',
56975697+ type: "ref",
56985698+ ref: "lex:app.rocksky.artist.defs#artistMbid",
56955699 },
56965700 },
56975701 albumArtist: {
56985698- type: 'string',
56995699- description: 'The album artist of the song.',
57025702+ type: "string",
57035703+ description: "The album artist of the song.",
57005704 minLength: 1,
57015705 maxLength: 256,
57025706 },
57035707 album: {
57045704- type: 'string',
57055705- description: 'The album of the song.',
57085708+ type: "string",
57095709+ description: "The album of the song.",
57065710 minLength: 1,
57075711 maxLength: 256,
57085712 },
57095713 duration: {
57105710- type: 'integer',
57115711- description: 'The duration of the song in seconds.',
57145714+ type: "integer",
57155715+ description: "The duration of the song in seconds.",
57125716 minimum: 1,
57135717 },
57145718 trackNumber: {
57155715- type: 'integer',
57165716- description: 'The track number of the song in the album.',
57195719+ type: "integer",
57205720+ description: "The track number of the song in the album.",
57175721 minimum: 1,
57185722 },
57195723 discNumber: {
57205720- type: 'integer',
57215721- description: 'The disc number of the song in the album.',
57245724+ type: "integer",
57255725+ description: "The disc number of the song in the album.",
57225726 minimum: 1,
57235727 },
57245728 releaseDate: {
57255725- type: 'string',
57265726- description: 'The release date of the song.',
57275727- format: 'datetime',
57295729+ type: "string",
57305730+ description: "The release date of the song.",
57315731+ format: "datetime",
57285732 },
57295733 year: {
57305730- type: 'integer',
57315731- description: 'The year the song was released.',
57345734+ type: "integer",
57355735+ description: "The year the song was released.",
57325736 },
57335737 genre: {
57345734- type: 'string',
57355735- description: 'The genre of the song.',
57385738+ type: "string",
57395739+ description: "The genre of the song.",
57365740 minLength: 1,
57375741 maxLength: 256,
57385742 },
57395743 tags: {
57405740- type: 'array',
57415741- description: 'The tags of the song.',
57445744+ type: "array",
57455745+ description: "The tags of the song.",
57425746 items: {
57435743- type: 'string',
57475747+ type: "string",
57445748 minLength: 1,
57455749 maxLength: 256,
57465750 },
57475751 },
57485752 composer: {
57495749- type: 'string',
57505750- description: 'The composer of the song.',
57535753+ type: "string",
57545754+ description: "The composer of the song.",
57515755 maxLength: 256,
57525756 },
57535757 lyrics: {
57545754- type: 'string',
57555755- description: 'The lyrics of the song.',
57585758+ type: "string",
57595759+ description: "The lyrics of the song.",
57565760 maxLength: 10000,
57575761 },
57585762 copyrightMessage: {
57595759- type: 'string',
57605760- description: 'The copyright message of the song.',
57635763+ type: "string",
57645764+ description: "The copyright message of the song.",
57615765 maxLength: 256,
57625766 },
57635767 wiki: {
57645764- type: 'string',
57655765- description: 'Informations about the song',
57685768+ type: "string",
57695769+ description: "Informations about the song",
57665770 maxLength: 10000,
57675771 },
57685772 albumArt: {
57695769- type: 'blob',
57705770- description: 'The album art of the song.',
57715771- accept: ['image/png', 'image/jpeg'],
57735773+ type: "blob",
57745774+ description: "The album art of the song.",
57755775+ accept: ["image/png", "image/jpeg"],
57725776 maxSize: 2000000,
57735777 },
57745778 albumArtUrl: {
57755775- type: 'string',
57765776- description: 'The URL of the album art of the song.',
57775777- format: 'uri',
57795779+ type: "string",
57805780+ description: "The URL of the album art of the song.",
57815781+ format: "uri",
57785782 },
57795783 youtubeLink: {
57805780- type: 'string',
57815781- description: 'The YouTube link of the song.',
57825782- format: 'uri',
57845784+ type: "string",
57855785+ description: "The YouTube link of the song.",
57865786+ format: "uri",
57835787 },
57845788 spotifyLink: {
57855785- type: 'string',
57865786- description: 'The Spotify link of the song.',
57875787- format: 'uri',
57895789+ type: "string",
57905790+ description: "The Spotify link of the song.",
57915791+ format: "uri",
57885792 },
57895793 tidalLink: {
57905790- type: 'string',
57915791- description: 'The Tidal link of the song.',
57925792- format: 'uri',
57945794+ type: "string",
57955795+ description: "The Tidal link of the song.",
57965796+ format: "uri",
57935797 },
57945798 appleMusicLink: {
57955795- type: 'string',
57965796- description: 'The Apple Music link of the song.',
57975797- format: 'uri',
57995799+ type: "string",
58005800+ description: "The Apple Music link of the song.",
58015801+ format: "uri",
57985802 },
57995803 createdAt: {
58005800- type: 'string',
58015801- description: 'The date when the song was created.',
58025802- format: 'datetime',
58045804+ type: "string",
58055805+ description: "The date when the song was created.",
58065806+ format: "datetime",
58035807 },
58045808 mbid: {
58055805- type: 'string',
58065806- description: 'The MusicBrainz ID of the song.',
58095809+ type: "string",
58105810+ description: "The MusicBrainz ID of the song.",
58075811 },
58085812 label: {
58095809- type: 'string',
58105810- description: 'The label of the song.',
58135813+ type: "string",
58145814+ description: "The label of the song.",
58115815 maxLength: 256,
58125816 },
58135817 },
···58175821 },
58185822 AppRockskySpotifyDefs: {
58195823 lexicon: 1,
58205820- id: 'app.rocksky.spotify.defs',
58245824+ id: "app.rocksky.spotify.defs",
58215825 defs: {
58225826 spotifyTrackView: {
58235823- type: 'object',
58275827+ type: "object",
58245828 properties: {
58255829 id: {
58265826- type: 'string',
58275827- description: 'The unique identifier of the Spotify track.',
58305830+ type: "string",
58315831+ description: "The unique identifier of the Spotify track.",
58285832 },
58295833 name: {
58305830- type: 'string',
58315831- description: 'The name of the track.',
58345834+ type: "string",
58355835+ description: "The name of the track.",
58325836 },
58335837 artist: {
58345834- type: 'string',
58355835- description: 'The name of the artist.',
58385838+ type: "string",
58395839+ description: "The name of the artist.",
58365840 },
58375841 album: {
58385838- type: 'string',
58395839- description: 'The name of the album.',
58425842+ type: "string",
58435843+ description: "The name of the album.",
58405844 },
58415845 duration: {
58425842- type: 'integer',
58435843- description: 'The duration of the track in milliseconds.',
58465846+ type: "integer",
58475847+ description: "The duration of the track in milliseconds.",
58445848 },
58455849 previewUrl: {
58465846- type: 'string',
58475847- description: 'A URL to a preview of the track.',
58505850+ type: "string",
58515851+ description: "A URL to a preview of the track.",
58485852 },
58495853 },
58505854 },
···58525856 },
58535857 AppRockskySpotifyGetCurrentlyPlaying: {
58545858 lexicon: 1,
58555855- id: 'app.rocksky.spotify.getCurrentlyPlaying',
58595859+ id: "app.rocksky.spotify.getCurrentlyPlaying",
58565860 defs: {
58575861 main: {
58585858- type: 'query',
58595859- description: 'Get the currently playing track',
58625862+ type: "query",
58635863+ description: "Get the currently playing track",
58605864 parameters: {
58615861- type: 'params',
58655865+ type: "params",
58625866 properties: {
58635867 actor: {
58645864- type: 'string',
58685868+ type: "string",
58655869 description:
58665866- 'Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.',
58675867- format: 'at-identifier',
58705870+ "Handle or DID of the actor to retrieve the currently playing track for. If not provided, defaults to the current user.",
58715871+ format: "at-identifier",
58685872 },
58695873 },
58705874 },
58715875 output: {
58725872- encoding: 'application/json',
58765876+ encoding: "application/json",
58735877 schema: {
58745874- type: 'ref',
58755875- ref: 'lex:app.rocksky.player.defs#currentlyPlayingViewDetailed',
58785878+ type: "ref",
58795879+ ref: "lex:app.rocksky.player.defs#currentlyPlayingViewDetailed",
58765880 },
58775881 },
58785882 },
···58805884 },
58815885 AppRockskySpotifyNext: {
58825886 lexicon: 1,
58835883- id: 'app.rocksky.spotify.next',
58875887+ id: "app.rocksky.spotify.next",
58845888 defs: {
58855889 main: {
58865886- type: 'procedure',
58875887- description: 'Play the next track in the queue',
58905890+ type: "procedure",
58915891+ description: "Play the next track in the queue",
58885892 },
58895893 },
58905894 },
58915895 AppRockskySpotifyPause: {
58925896 lexicon: 1,
58935893- id: 'app.rocksky.spotify.pause',
58975897+ id: "app.rocksky.spotify.pause",
58945898 defs: {
58955899 main: {
58965896- type: 'procedure',
58975897- description: 'Pause the currently playing track',
59005900+ type: "procedure",
59015901+ description: "Pause the currently playing track",
58985902 },
58995903 },
59005904 },
59015905 AppRockskySpotifyPlay: {
59025906 lexicon: 1,
59035903- id: 'app.rocksky.spotify.play',
59075907+ id: "app.rocksky.spotify.play",
59045908 defs: {
59055909 main: {
59065906- type: 'procedure',
59075907- description: 'Resume playback of the currently paused track',
59105910+ type: "procedure",
59115911+ description: "Resume playback of the currently paused track",
59085912 },
59095913 },
59105914 },
59115915 AppRockskySpotifyPrevious: {
59125916 lexicon: 1,
59135913- id: 'app.rocksky.spotify.previous',
59175917+ id: "app.rocksky.spotify.previous",
59145918 defs: {
59155919 main: {
59165916- type: 'procedure',
59175917- description: 'Play the previous track in the queue',
59205920+ type: "procedure",
59215921+ description: "Play the previous track in the queue",
59185922 },
59195923 },
59205924 },
59215925 AppRockskySpotifySeek: {
59225926 lexicon: 1,
59235923- id: 'app.rocksky.spotify.seek',
59275927+ id: "app.rocksky.spotify.seek",
59245928 defs: {
59255929 main: {
59265926- type: 'procedure',
59305930+ type: "procedure",
59275931 description:
59285928- 'Seek to a specific position in the currently playing track',
59325932+ "Seek to a specific position in the currently playing track",
59295933 parameters: {
59305930- type: 'params',
59315931- required: ['position'],
59345934+ type: "params",
59355935+ required: ["position"],
59325936 properties: {
59335937 position: {
59345934- type: 'integer',
59355935- description: 'The position in seconds to seek to',
59385938+ type: "integer",
59395939+ description: "The position in seconds to seek to",
59365940 },
59375941 },
59385942 },
···59415945 },
59425946 AppRockskyStatsDefs: {
59435947 lexicon: 1,
59445944- id: 'app.rocksky.stats.defs',
59485948+ id: "app.rocksky.stats.defs",
59455949 defs: {
59465950 statsView: {
59475947- type: 'object',
59515951+ type: "object",
59485952 properties: {
59495953 scrobbles: {
59505950- type: 'integer',
59515951- description: 'The total number of scrobbles.',
59545954+ type: "integer",
59555955+ description: "The total number of scrobbles.",
59525956 },
59535957 artists: {
59545954- type: 'integer',
59555955- description: 'The total number of unique artists scrobbled.',
59585958+ type: "integer",
59595959+ description: "The total number of unique artists scrobbled.",
59565960 },
59575961 lovedTracks: {
59585958- type: 'integer',
59595959- description: 'The total number of tracks marked as loved.',
59625962+ type: "integer",
59635963+ description: "The total number of tracks marked as loved.",
59605964 },
59615965 albums: {
59625962- type: 'integer',
59635963- description: 'The total number of unique albums scrobbled.',
59665966+ type: "integer",
59675967+ description: "The total number of unique albums scrobbled.",
59645968 },
59655969 tracks: {
59665966- type: 'integer',
59675967- description: 'The total number of unique tracks scrobbled.',
59705970+ type: "integer",
59715971+ description: "The total number of unique tracks scrobbled.",
59685972 },
59695973 },
59705974 },
···59725976 },
59735977 AppRockskyStatsGetStats: {
59745978 lexicon: 1,
59755975- id: 'app.rocksky.stats.getStats',
59795979+ id: "app.rocksky.stats.getStats",
59765980 defs: {
59775981 main: {
59785978- type: 'query',
59825982+ type: "query",
59795983 parameters: {
59805980- type: 'params',
59815981- required: ['did'],
59845984+ type: "params",
59855985+ required: ["did"],
59825986 properties: {
59835987 did: {
59845984- type: 'string',
59855985- description: 'The DID or handle of the user to get stats for.',
59865986- format: 'at-identifier',
59885988+ type: "string",
59895989+ description: "The DID or handle of the user to get stats for.",
59905990+ format: "at-identifier",
59875991 },
59885992 },
59895993 },
59905994 output: {
59915991- encoding: 'application/json',
59955995+ encoding: "application/json",
59925996 schema: {
59935993- type: 'ref',
59945994- ref: 'lex:app.rocksky.stats.defs#statsView',
59975997+ type: "ref",
59985998+ ref: "lex:app.rocksky.stats.defs#statsView",
59955999 },
59966000 },
59976001 },
···59996003 },
60006004 ComAtprotoRepoStrongRef: {
60016005 lexicon: 1,
60026002- id: 'com.atproto.repo.strongRef',
60036003- description: 'A URI with a content-hash fingerprint.',
60066006+ id: "com.atproto.repo.strongRef",
60076007+ description: "A URI with a content-hash fingerprint.",
60046008 defs: {
60056009 main: {
60066006- type: 'object',
60076007- required: ['uri', 'cid'],
60106010+ type: "object",
60116011+ required: ["uri", "cid"],
60086012 properties: {
60096013 uri: {
60106010- type: 'string',
60116011- format: 'at-uri',
60146014+ type: "string",
60156015+ format: "at-uri",
60126016 },
60136017 cid: {
60146014- type: 'string',
60156015- format: 'cid',
60186018+ type: "string",
60196019+ format: "cid",
60166020 },
60176021 },
60186022 },
60196023 },
60206024 },
60216021-} as const satisfies Record<string, LexiconDoc>
60256025+} as const satisfies Record<string, LexiconDoc>;
6022602660236023-export const schemas = Object.values(schemaDict)
60246024-export const lexicons: Lexicons = new Lexicons(schemas)
60276027+export const schemas = Object.values(schemaDict);
60286028+export const lexicons: Lexicons = new Lexicons(schemas);
60256029export const ids = {
60266026- FmTealAlphaActorDefs: 'fm.teal.alpha.actor.defs',
60276027- FmTealAlphaActorGetProfile: 'fm.teal.alpha.actor.getProfile',
60286028- FmTealAlphaActorGetProfiles: 'fm.teal.alpha.actor.getProfiles',
60296029- FmTealAlphaActorProfile: 'fm.teal.alpha.actor.profile',
60306030- FmTealAlphaActorSearchActors: 'fm.teal.alpha.actor.searchActors',
60316031- FmTealAlphaActorStatus: 'fm.teal.alpha.actor.status',
60326032- FmTealAlphaFeedDefs: 'fm.teal.alpha.feed.defs',
60336033- FmTealAlphaFeedGetActorFeed: 'fm.teal.alpha.feed.getActorFeed',
60346034- FmTealAlphaFeedGetPlay: 'fm.teal.alpha.feed.getPlay',
60356035- FmTealAlphaFeedPlay: 'fm.teal.alpha.feed.play',
60366036- AppRockskyActorDefs: 'app.rocksky.actor.defs',
60376037- AppRockskyActorGetActorAlbums: 'app.rocksky.actor.getActorAlbums',
60386038- AppRockskyActorGetActorArtists: 'app.rocksky.actor.getActorArtists',
60306030+ FmTealAlphaActorDefs: "fm.teal.alpha.actor.defs",
60316031+ FmTealAlphaActorGetProfile: "fm.teal.alpha.actor.getProfile",
60326032+ FmTealAlphaActorGetProfiles: "fm.teal.alpha.actor.getProfiles",
60336033+ FmTealAlphaActorProfile: "fm.teal.alpha.actor.profile",
60346034+ FmTealAlphaActorSearchActors: "fm.teal.alpha.actor.searchActors",
60356035+ FmTealAlphaActorStatus: "fm.teal.alpha.actor.status",
60366036+ FmTealAlphaFeedDefs: "fm.teal.alpha.feed.defs",
60376037+ FmTealAlphaFeedGetActorFeed: "fm.teal.alpha.feed.getActorFeed",
60386038+ FmTealAlphaFeedGetPlay: "fm.teal.alpha.feed.getPlay",
60396039+ FmTealAlphaFeedPlay: "fm.teal.alpha.feed.play",
60406040+ AppRockskyActorDefs: "app.rocksky.actor.defs",
60416041+ AppRockskyActorGetActorAlbums: "app.rocksky.actor.getActorAlbums",
60426042+ AppRockskyActorGetActorArtists: "app.rocksky.actor.getActorArtists",
60396043 AppRockskyActorGetActorCompatibility:
60406040- 'app.rocksky.actor.getActorCompatibility',
60416041- AppRockskyActorGetActorLovedSongs: 'app.rocksky.actor.getActorLovedSongs',
60426042- AppRockskyActorGetActorNeighbours: 'app.rocksky.actor.getActorNeighbours',
60436043- AppRockskyActorGetActorPlaylists: 'app.rocksky.actor.getActorPlaylists',
60446044- AppRockskyActorGetActorScrobbles: 'app.rocksky.actor.getActorScrobbles',
60456045- AppRockskyActorGetActorSongs: 'app.rocksky.actor.getActorSongs',
60466046- AppRockskyActorGetProfile: 'app.rocksky.actor.getProfile',
60476047- AppBskyActorProfile: 'app.bsky.actor.profile',
60486048- AppRockskyAlbum: 'app.rocksky.album',
60496049- AppRockskyAlbumDefs: 'app.rocksky.album.defs',
60506050- AppRockskyAlbumGetAlbum: 'app.rocksky.album.getAlbum',
60516051- AppRockskyAlbumGetAlbums: 'app.rocksky.album.getAlbums',
60526052- AppRockskyAlbumGetAlbumTracks: 'app.rocksky.album.getAlbumTracks',
60536053- AppRockskyApikeyCreateApikey: 'app.rocksky.apikey.createApikey',
60546054- AppRockskyApikeyDefs: 'app.rocksky.apikey.defs',
60556055- AppRockskyApikeysDefs: 'app.rocksky.apikeys.defs',
60566056- AppRockskyApikeyGetApikeys: 'app.rocksky.apikey.getApikeys',
60576057- AppRockskyApikeyRemoveApikey: 'app.rocksky.apikey.removeApikey',
60586058- AppRockskyApikeyUpdateApikey: 'app.rocksky.apikey.updateApikey',
60596059- AppRockskyArtist: 'app.rocksky.artist',
60606060- AppRockskyArtistDefs: 'app.rocksky.artist.defs',
60616061- AppRockskyArtistGetArtist: 'app.rocksky.artist.getArtist',
60626062- AppRockskyArtistGetArtistAlbums: 'app.rocksky.artist.getArtistAlbums',
60636063- AppRockskyArtistGetArtistListeners: 'app.rocksky.artist.getArtistListeners',
60646064- AppRockskyArtistGetArtists: 'app.rocksky.artist.getArtists',
60656065- AppRockskyArtistGetArtistTracks: 'app.rocksky.artist.getArtistTracks',
60666066- AppRockskyChartsDefs: 'app.rocksky.charts.defs',
60676067- AppRockskyChartsGetScrobblesChart: 'app.rocksky.charts.getScrobblesChart',
60686068- AppRockskyDropboxDefs: 'app.rocksky.dropbox.defs',
60696069- AppRockskyDropboxDownloadFile: 'app.rocksky.dropbox.downloadFile',
60706070- AppRockskyDropboxGetFiles: 'app.rocksky.dropbox.getFiles',
60716071- AppRockskyDropboxGetMetadata: 'app.rocksky.dropbox.getMetadata',
60726072- AppRockskyDropboxGetTemporaryLink: 'app.rocksky.dropbox.getTemporaryLink',
60736073- AppRockskyFeedDefs: 'app.rocksky.feed.defs',
60746074- AppRockskyFeedDescribeFeedGenerator: 'app.rocksky.feed.describeFeedGenerator',
60756075- AppRockskyFeedGenerator: 'app.rocksky.feed.generator',
60766076- AppRockskyFeedGetFeed: 'app.rocksky.feed.getFeed',
60776077- AppRockskyFeedGetFeedGenerator: 'app.rocksky.feed.getFeedGenerator',
60786078- AppRockskyFeedGetFeedGenerators: 'app.rocksky.feed.getFeedGenerators',
60796079- AppRockskyFeedGetFeedSkeleton: 'app.rocksky.feed.getFeedSkeleton',
60806080- AppRockskyFeedGetNowPlayings: 'app.rocksky.feed.getNowPlayings',
60816081- AppRockskyFeedSearch: 'app.rocksky.feed.search',
60826082- AppRockskyGoogledriveDefs: 'app.rocksky.googledrive.defs',
60836083- AppRockskyGoogledriveDownloadFile: 'app.rocksky.googledrive.downloadFile',
60846084- AppRockskyGoogledriveGetFile: 'app.rocksky.googledrive.getFile',
60856085- AppRockskyGoogledriveGetFiles: 'app.rocksky.googledrive.getFiles',
60866086- AppRockskyGraphDefs: 'app.rocksky.graph.defs',
60876087- AppRockskyGraphFollow: 'app.rocksky.graph.follow',
60886088- AppRockskyGraphFollowAccount: 'app.rocksky.graph.followAccount',
60896089- AppRockskyGraphGetFollowers: 'app.rocksky.graph.getFollowers',
60906090- AppRockskyGraphGetFollows: 'app.rocksky.graph.getFollows',
60916091- AppRockskyGraphGetKnownFollowers: 'app.rocksky.graph.getKnownFollowers',
60926092- AppRockskyGraphUnfollowAccount: 'app.rocksky.graph.unfollowAccount',
60936093- AppRockskyLikeDislikeShout: 'app.rocksky.like.dislikeShout',
60946094- AppRockskyLikeDislikeSong: 'app.rocksky.like.dislikeSong',
60956095- AppRockskyLike: 'app.rocksky.like',
60966096- AppRockskyLikeLikeShout: 'app.rocksky.like.likeShout',
60976097- AppRockskyLikeLikeSong: 'app.rocksky.like.likeSong',
60986098- AppRockskyPlayerAddDirectoryToQueue: 'app.rocksky.player.addDirectoryToQueue',
60996099- AppRockskyPlayerAddItemsToQueue: 'app.rocksky.player.addItemsToQueue',
61006100- AppRockskyPlayerDefs: 'app.rocksky.player.defs',
61016101- AppRockskyPlayerGetCurrentlyPlaying: 'app.rocksky.player.getCurrentlyPlaying',
61026102- AppRockskyPlayerGetPlaybackQueue: 'app.rocksky.player.getPlaybackQueue',
61036103- AppRockskyPlayerNext: 'app.rocksky.player.next',
61046104- AppRockskyPlayerPause: 'app.rocksky.player.pause',
61056105- AppRockskyPlayerPlay: 'app.rocksky.player.play',
61066106- AppRockskyPlayerPlayDirectory: 'app.rocksky.player.playDirectory',
61076107- AppRockskyPlayerPlayFile: 'app.rocksky.player.playFile',
61086108- AppRockskyPlayerPrevious: 'app.rocksky.player.previous',
61096109- AppRockskyPlayerSeek: 'app.rocksky.player.seek',
61106110- AppRockskyPlaylistCreatePlaylist: 'app.rocksky.playlist.createPlaylist',
61116111- AppRockskyPlaylistDefs: 'app.rocksky.playlist.defs',
61126112- AppRockskyPlaylistGetPlaylist: 'app.rocksky.playlist.getPlaylist',
61136113- AppRockskyPlaylistGetPlaylists: 'app.rocksky.playlist.getPlaylists',
61146114- AppRockskyPlaylistInsertDirectory: 'app.rocksky.playlist.insertDirectory',
61156115- AppRockskyPlaylistInsertFiles: 'app.rocksky.playlist.insertFiles',
61166116- AppRockskyPlaylist: 'app.rocksky.playlist',
61176117- AppRockskyPlaylistItem: 'app.rocksky.playlistItem',
61186118- AppRockskyPlaylistRemovePlaylist: 'app.rocksky.playlist.removePlaylist',
61196119- AppRockskyPlaylistRemoveTrack: 'app.rocksky.playlist.removeTrack',
61206120- AppRockskyPlaylistStartPlaylist: 'app.rocksky.playlist.startPlaylist',
61216121- AppRockskyRadioDefs: 'app.rocksky.radio.defs',
61226122- AppRockskyRadio: 'app.rocksky.radio',
61236123- AppRockskyScrobbleCreateScrobble: 'app.rocksky.scrobble.createScrobble',
61246124- AppRockskyScrobbleDefs: 'app.rocksky.scrobble.defs',
61256125- AppRockskyScrobbleGetScrobble: 'app.rocksky.scrobble.getScrobble',
61266126- AppRockskyScrobbleGetScrobbles: 'app.rocksky.scrobble.getScrobbles',
61276127- AppRockskyScrobble: 'app.rocksky.scrobble',
61286128- AppRockskyShoutCreateShout: 'app.rocksky.shout.createShout',
61296129- AppRockskyShoutDefs: 'app.rocksky.shout.defs',
61306130- AppRockskyShoutGetAlbumShouts: 'app.rocksky.shout.getAlbumShouts',
61316131- AppRockskyShoutGetArtistShouts: 'app.rocksky.shout.getArtistShouts',
61326132- AppRockskyShoutGetProfileShouts: 'app.rocksky.shout.getProfileShouts',
61336133- AppRockskyShoutGetShoutReplies: 'app.rocksky.shout.getShoutReplies',
61346134- AppRockskyShoutGetTrackShouts: 'app.rocksky.shout.getTrackShouts',
61356135- AppRockskyShoutRemoveShout: 'app.rocksky.shout.removeShout',
61366136- AppRockskyShoutReplyShout: 'app.rocksky.shout.replyShout',
61376137- AppRockskyShoutReportShout: 'app.rocksky.shout.reportShout',
61386138- AppRockskyShout: 'app.rocksky.shout',
61396139- AppRockskySongCreateSong: 'app.rocksky.song.createSong',
61406140- AppRockskySongDefs: 'app.rocksky.song.defs',
61416141- AppRockskySongGetSong: 'app.rocksky.song.getSong',
61426142- AppRockskySongGetSongs: 'app.rocksky.song.getSongs',
61436143- AppRockskySongMatchSong: 'app.rocksky.song.matchSong',
61446144- AppRockskySong: 'app.rocksky.song',
61456145- AppRockskySpotifyDefs: 'app.rocksky.spotify.defs',
60446044+ "app.rocksky.actor.getActorCompatibility",
60456045+ AppRockskyActorGetActorLovedSongs: "app.rocksky.actor.getActorLovedSongs",
60466046+ AppRockskyActorGetActorNeighbours: "app.rocksky.actor.getActorNeighbours",
60476047+ AppRockskyActorGetActorPlaylists: "app.rocksky.actor.getActorPlaylists",
60486048+ AppRockskyActorGetActorScrobbles: "app.rocksky.actor.getActorScrobbles",
60496049+ AppRockskyActorGetActorSongs: "app.rocksky.actor.getActorSongs",
60506050+ AppRockskyActorGetProfile: "app.rocksky.actor.getProfile",
60516051+ AppBskyActorProfile: "app.bsky.actor.profile",
60526052+ AppRockskyAlbum: "app.rocksky.album",
60536053+ AppRockskyAlbumDefs: "app.rocksky.album.defs",
60546054+ AppRockskyAlbumGetAlbum: "app.rocksky.album.getAlbum",
60556055+ AppRockskyAlbumGetAlbums: "app.rocksky.album.getAlbums",
60566056+ AppRockskyAlbumGetAlbumTracks: "app.rocksky.album.getAlbumTracks",
60576057+ AppRockskyApikeyCreateApikey: "app.rocksky.apikey.createApikey",
60586058+ AppRockskyApikeyDefs: "app.rocksky.apikey.defs",
60596059+ AppRockskyApikeysDefs: "app.rocksky.apikeys.defs",
60606060+ AppRockskyApikeyGetApikeys: "app.rocksky.apikey.getApikeys",
60616061+ AppRockskyApikeyRemoveApikey: "app.rocksky.apikey.removeApikey",
60626062+ AppRockskyApikeyUpdateApikey: "app.rocksky.apikey.updateApikey",
60636063+ AppRockskyArtist: "app.rocksky.artist",
60646064+ AppRockskyArtistDefs: "app.rocksky.artist.defs",
60656065+ AppRockskyArtistGetArtist: "app.rocksky.artist.getArtist",
60666066+ AppRockskyArtistGetArtistAlbums: "app.rocksky.artist.getArtistAlbums",
60676067+ AppRockskyArtistGetArtistListeners: "app.rocksky.artist.getArtistListeners",
60686068+ AppRockskyArtistGetArtists: "app.rocksky.artist.getArtists",
60696069+ AppRockskyArtistGetArtistTracks: "app.rocksky.artist.getArtistTracks",
60706070+ AppRockskyChartsDefs: "app.rocksky.charts.defs",
60716071+ AppRockskyChartsGetScrobblesChart: "app.rocksky.charts.getScrobblesChart",
60726072+ AppRockskyDropboxDefs: "app.rocksky.dropbox.defs",
60736073+ AppRockskyDropboxDownloadFile: "app.rocksky.dropbox.downloadFile",
60746074+ AppRockskyDropboxGetFiles: "app.rocksky.dropbox.getFiles",
60756075+ AppRockskyDropboxGetMetadata: "app.rocksky.dropbox.getMetadata",
60766076+ AppRockskyDropboxGetTemporaryLink: "app.rocksky.dropbox.getTemporaryLink",
60776077+ AppRockskyFeedDefs: "app.rocksky.feed.defs",
60786078+ AppRockskyFeedDescribeFeedGenerator: "app.rocksky.feed.describeFeedGenerator",
60796079+ AppRockskyFeedGenerator: "app.rocksky.feed.generator",
60806080+ AppRockskyFeedGetFeed: "app.rocksky.feed.getFeed",
60816081+ AppRockskyFeedGetFeedGenerator: "app.rocksky.feed.getFeedGenerator",
60826082+ AppRockskyFeedGetFeedGenerators: "app.rocksky.feed.getFeedGenerators",
60836083+ AppRockskyFeedGetFeedSkeleton: "app.rocksky.feed.getFeedSkeleton",
60846084+ AppRockskyFeedGetNowPlayings: "app.rocksky.feed.getNowPlayings",
60856085+ AppRockskyFeedSearch: "app.rocksky.feed.search",
60866086+ AppRockskyGoogledriveDefs: "app.rocksky.googledrive.defs",
60876087+ AppRockskyGoogledriveDownloadFile: "app.rocksky.googledrive.downloadFile",
60886088+ AppRockskyGoogledriveGetFile: "app.rocksky.googledrive.getFile",
60896089+ AppRockskyGoogledriveGetFiles: "app.rocksky.googledrive.getFiles",
60906090+ AppRockskyGraphDefs: "app.rocksky.graph.defs",
60916091+ AppRockskyGraphFollow: "app.rocksky.graph.follow",
60926092+ AppRockskyGraphFollowAccount: "app.rocksky.graph.followAccount",
60936093+ AppRockskyGraphGetFollowers: "app.rocksky.graph.getFollowers",
60946094+ AppRockskyGraphGetFollows: "app.rocksky.graph.getFollows",
60956095+ AppRockskyGraphGetKnownFollowers: "app.rocksky.graph.getKnownFollowers",
60966096+ AppRockskyGraphUnfollowAccount: "app.rocksky.graph.unfollowAccount",
60976097+ AppRockskyLikeDislikeShout: "app.rocksky.like.dislikeShout",
60986098+ AppRockskyLikeDislikeSong: "app.rocksky.like.dislikeSong",
60996099+ AppRockskyLike: "app.rocksky.like",
61006100+ AppRockskyLikeLikeShout: "app.rocksky.like.likeShout",
61016101+ AppRockskyLikeLikeSong: "app.rocksky.like.likeSong",
61026102+ AppRockskyPlayerAddDirectoryToQueue: "app.rocksky.player.addDirectoryToQueue",
61036103+ AppRockskyPlayerAddItemsToQueue: "app.rocksky.player.addItemsToQueue",
61046104+ AppRockskyPlayerDefs: "app.rocksky.player.defs",
61056105+ AppRockskyPlayerGetCurrentlyPlaying: "app.rocksky.player.getCurrentlyPlaying",
61066106+ AppRockskyPlayerGetPlaybackQueue: "app.rocksky.player.getPlaybackQueue",
61076107+ AppRockskyPlayerNext: "app.rocksky.player.next",
61086108+ AppRockskyPlayerPause: "app.rocksky.player.pause",
61096109+ AppRockskyPlayerPlay: "app.rocksky.player.play",
61106110+ AppRockskyPlayerPlayDirectory: "app.rocksky.player.playDirectory",
61116111+ AppRockskyPlayerPlayFile: "app.rocksky.player.playFile",
61126112+ AppRockskyPlayerPrevious: "app.rocksky.player.previous",
61136113+ AppRockskyPlayerSeek: "app.rocksky.player.seek",
61146114+ AppRockskyPlaylistCreatePlaylist: "app.rocksky.playlist.createPlaylist",
61156115+ AppRockskyPlaylistDefs: "app.rocksky.playlist.defs",
61166116+ AppRockskyPlaylistGetPlaylist: "app.rocksky.playlist.getPlaylist",
61176117+ AppRockskyPlaylistGetPlaylists: "app.rocksky.playlist.getPlaylists",
61186118+ AppRockskyPlaylistInsertDirectory: "app.rocksky.playlist.insertDirectory",
61196119+ AppRockskyPlaylistInsertFiles: "app.rocksky.playlist.insertFiles",
61206120+ AppRockskyPlaylist: "app.rocksky.playlist",
61216121+ AppRockskyPlaylistItem: "app.rocksky.playlistItem",
61226122+ AppRockskyPlaylistRemovePlaylist: "app.rocksky.playlist.removePlaylist",
61236123+ AppRockskyPlaylistRemoveTrack: "app.rocksky.playlist.removeTrack",
61246124+ AppRockskyPlaylistStartPlaylist: "app.rocksky.playlist.startPlaylist",
61256125+ AppRockskyRadioDefs: "app.rocksky.radio.defs",
61266126+ AppRockskyRadio: "app.rocksky.radio",
61276127+ AppRockskyScrobbleCreateScrobble: "app.rocksky.scrobble.createScrobble",
61286128+ AppRockskyScrobbleDefs: "app.rocksky.scrobble.defs",
61296129+ AppRockskyScrobbleGetScrobble: "app.rocksky.scrobble.getScrobble",
61306130+ AppRockskyScrobbleGetScrobbles: "app.rocksky.scrobble.getScrobbles",
61316131+ AppRockskyScrobble: "app.rocksky.scrobble",
61326132+ AppRockskyShoutCreateShout: "app.rocksky.shout.createShout",
61336133+ AppRockskyShoutDefs: "app.rocksky.shout.defs",
61346134+ AppRockskyShoutGetAlbumShouts: "app.rocksky.shout.getAlbumShouts",
61356135+ AppRockskyShoutGetArtistShouts: "app.rocksky.shout.getArtistShouts",
61366136+ AppRockskyShoutGetProfileShouts: "app.rocksky.shout.getProfileShouts",
61376137+ AppRockskyShoutGetShoutReplies: "app.rocksky.shout.getShoutReplies",
61386138+ AppRockskyShoutGetTrackShouts: "app.rocksky.shout.getTrackShouts",
61396139+ AppRockskyShoutRemoveShout: "app.rocksky.shout.removeShout",
61406140+ AppRockskyShoutReplyShout: "app.rocksky.shout.replyShout",
61416141+ AppRockskyShoutReportShout: "app.rocksky.shout.reportShout",
61426142+ AppRockskyShout: "app.rocksky.shout",
61436143+ AppRockskySongCreateSong: "app.rocksky.song.createSong",
61446144+ AppRockskySongDefs: "app.rocksky.song.defs",
61456145+ AppRockskySongGetSong: "app.rocksky.song.getSong",
61466146+ AppRockskySongGetSongs: "app.rocksky.song.getSongs",
61476147+ AppRockskySongMatchSong: "app.rocksky.song.matchSong",
61486148+ AppRockskySong: "app.rocksky.song",
61496149+ AppRockskySpotifyDefs: "app.rocksky.spotify.defs",
61466150 AppRockskySpotifyGetCurrentlyPlaying:
61476147- 'app.rocksky.spotify.getCurrentlyPlaying',
61486148- AppRockskySpotifyNext: 'app.rocksky.spotify.next',
61496149- AppRockskySpotifyPause: 'app.rocksky.spotify.pause',
61506150- AppRockskySpotifyPlay: 'app.rocksky.spotify.play',
61516151- AppRockskySpotifyPrevious: 'app.rocksky.spotify.previous',
61526152- AppRockskySpotifySeek: 'app.rocksky.spotify.seek',
61536153- AppRockskyStatsDefs: 'app.rocksky.stats.defs',
61546154- AppRockskyStatsGetStats: 'app.rocksky.stats.getStats',
61556155- ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef',
61566156-}
61516151+ "app.rocksky.spotify.getCurrentlyPlaying",
61526152+ AppRockskySpotifyNext: "app.rocksky.spotify.next",
61536153+ AppRockskySpotifyPause: "app.rocksky.spotify.pause",
61546154+ AppRockskySpotifyPlay: "app.rocksky.spotify.play",
61556155+ AppRockskySpotifyPrevious: "app.rocksky.spotify.previous",
61566156+ AppRockskySpotifySeek: "app.rocksky.spotify.seek",
61576157+ AppRockskyStatsDefs: "app.rocksky.stats.defs",
61586158+ AppRockskyStatsGetStats: "app.rocksky.stats.getStats",
61596159+ ComAtprotoRepoStrongRef: "com.atproto.repo.strongRef",
61606160+};
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type express from 'express'
55-import { ValidationResult, BlobRef } from '@atproto/lexicon'
66-import { lexicons } from '../../../../lexicons'
77-import { isObj, hasProp } from '../../../../util'
88-import { CID } from 'multiformats/cid'
99-import type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
1010-import type * as AppRockskyActorDefs from './defs'
44+import type express from "express";
55+import { ValidationResult, BlobRef } from "@atproto/lexicon";
66+import { lexicons } from "../../../../lexicons";
77+import { isObj, hasProp } from "../../../../util";
88+import { CID } from "multiformats/cid";
99+import type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server";
1010+import type * as AppRockskyActorDefs from "./defs";
11111212export interface QueryParams {
1313 /** The DID or handle of the actor */
1414- did?: string
1414+ did?: string;
1515}
16161717-export type InputSchema = undefined
1818-export type OutputSchema = AppRockskyActorDefs.ProfileViewDetailed
1919-export type HandlerInput = undefined
1717+export type InputSchema = undefined;
1818+export type OutputSchema = AppRockskyActorDefs.ProfileViewDetailed;
1919+export type HandlerInput = undefined;
20202121export interface HandlerSuccess {
2222- encoding: 'application/json'
2323- body: OutputSchema
2424- headers?: { [key: string]: string }
2222+ encoding: "application/json";
2323+ body: OutputSchema;
2424+ headers?: { [key: string]: string };
2525}
26262727export interface HandlerError {
2828- status: number
2929- message?: string
2828+ status: number;
2929+ message?: string;
3030}
31313232-export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
3232+export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
3333export type HandlerReqCtx<HA extends HandlerAuth = never> = {
3434- auth: HA
3535- params: QueryParams
3636- input: HandlerInput
3737- req: express.Request
3838- res: express.Response
3939- resetRouteRateLimits: () => Promise<void>
4040-}
3434+ auth: HA;
3535+ params: QueryParams;
3636+ input: HandlerInput;
3737+ req: express.Request;
3838+ res: express.Response;
3939+ resetRouteRateLimits: () => Promise<void>;
4040+};
4141export type Handler<HA extends HandlerAuth = never> = (
4242 ctx: HandlerReqCtx<HA>,
4343-) => Promise<HandlerOutput> | HandlerOutput
4343+) => Promise<HandlerOutput> | HandlerOutput;
+23-23
apps/api/src/lexicon/types/app/rocksky/album.ts
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type { ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../lexicons'
66-import { isObj, hasProp } from '../../../util'
77-import { CID } from 'multiformats/cid'
44+import type { ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../lexicons";
66+import { isObj, hasProp } from "../../../util";
77+import { CID } from "multiformats/cid";
8899export interface Record {
1010 /** The title of the album. */
1111- title: string
1111+ title: string;
1212 /** The artist of the album. */
1313- artist: string
1313+ artist: string;
1414 /** The duration of the album in seconds. */
1515- duration?: number
1515+ duration?: number;
1616 /** The release date of the album. */
1717- releaseDate?: string
1717+ releaseDate?: string;
1818 /** The year the album was released. */
1919- year?: number
1919+ year?: number;
2020 /** The genre of the album. */
2121- genre?: string
2121+ genre?: string;
2222 /** The album art of the album. */
2323- albumArt?: BlobRef
2323+ albumArt?: BlobRef;
2424 /** The URL of the album art of the album. */
2525- albumArtUrl?: string
2525+ albumArtUrl?: string;
2626 /** The tags of the album. */
2727- tags?: string[]
2727+ tags?: string[];
2828 /** The YouTube link of the album. */
2929- youtubeLink?: string
2929+ youtubeLink?: string;
3030 /** The Spotify link of the album. */
3131- spotifyLink?: string
3131+ spotifyLink?: string;
3232 /** The tidal link of the album. */
3333- tidalLink?: string
3333+ tidalLink?: string;
3434 /** The Apple Music link of the album. */
3535- appleMusicLink?: string
3535+ appleMusicLink?: string;
3636 /** The date and time when the album was created. */
3737- createdAt: string
3838- [k: string]: unknown
3737+ createdAt: string;
3838+ [k: string]: unknown;
3939}
40404141export function isRecord(v: unknown): v is Record {
4242 return (
4343 isObj(v) &&
4444- hasProp(v, '$type') &&
4545- (v.$type === 'app.rocksky.album#main' || v.$type === 'app.rocksky.album')
4646- )
4444+ hasProp(v, "$type") &&
4545+ (v.$type === "app.rocksky.album#main" || v.$type === "app.rocksky.album")
4646+ );
4747}
48484949export function validateRecord(v: unknown): ValidationResult {
5050- return lexicons.validate('app.rocksky.album#main', v)
5050+ return lexicons.validate("app.rocksky.album#main", v);
5151}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../lexicons'
66-import { isObj, hasProp } from '../../../../util'
77-import { CID } from 'multiformats/cid'
88-import type * as AppRockskySongDefsSongViewBasic from '../song/defs/songViewBasic'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../lexicons";
66+import { isObj, hasProp } from "../../../../util";
77+import { CID } from "multiformats/cid";
88+import type * as AppRockskySongDefsSongViewBasic from "../song/defs/songViewBasic";
991010export interface AlbumViewBasic {
1111 /** The unique identifier of the album. */
1212- id?: string
1212+ id?: string;
1313 /** The URI of the album. */
1414- uri?: string
1414+ uri?: string;
1515 /** The title of the album. */
1616- title?: string
1616+ title?: string;
1717 /** The artist of the album. */
1818- artist?: string
1818+ artist?: string;
1919 /** The URI of the album's artist. */
2020- artistUri?: string
2020+ artistUri?: string;
2121 /** The year the album was released. */
2222- year?: number
2222+ year?: number;
2323 /** The URL of the album art image. */
2424- albumArt?: string
2424+ albumArt?: string;
2525 /** The release date of the album. */
2626- releaseDate?: string
2626+ releaseDate?: string;
2727 /** The SHA256 hash of the album. */
2828- sha256?: string
2828+ sha256?: string;
2929 /** The number of times the album has been played. */
3030- playCount?: number
3030+ playCount?: number;
3131 /** The number of unique listeners who have played the album. */
3232- uniqueListeners?: number
3333- [k: string]: unknown
3232+ uniqueListeners?: number;
3333+ [k: string]: unknown;
3434}
35353636export function isAlbumViewBasic(v: unknown): v is AlbumViewBasic {
3737 return (
3838 isObj(v) &&
3939- hasProp(v, '$type') &&
4040- v.$type === 'app.rocksky.album.defs#albumViewBasic'
4141- )
3939+ hasProp(v, "$type") &&
4040+ v.$type === "app.rocksky.album.defs#albumViewBasic"
4141+ );
4242}
43434444export function validateAlbumViewBasic(v: unknown): ValidationResult {
4545- return lexicons.validate('app.rocksky.album.defs#albumViewBasic', v)
4545+ return lexicons.validate("app.rocksky.album.defs#albumViewBasic", v);
4646}
47474848export interface AlbumViewDetailed {
4949 /** The unique identifier of the album. */
5050- id?: string
5050+ id?: string;
5151 /** The URI of the album. */
5252- uri?: string
5252+ uri?: string;
5353 /** The title of the album. */
5454- title?: string
5454+ title?: string;
5555 /** The artist of the album. */
5656- artist?: string
5656+ artist?: string;
5757 /** The URI of the album's artist. */
5858- artistUri?: string
5858+ artistUri?: string;
5959 /** The year the album was released. */
6060- year?: number
6060+ year?: number;
6161 /** The URL of the album art image. */
6262- albumArt?: string
6262+ albumArt?: string;
6363 /** The release date of the album. */
6464- releaseDate?: string
6464+ releaseDate?: string;
6565 /** The SHA256 hash of the album. */
6666- sha256?: string
6666+ sha256?: string;
6767 /** The number of times the album has been played. */
6868- playCount?: number
6868+ playCount?: number;
6969 /** The number of unique listeners who have played the album. */
7070- uniqueListeners?: number
7171- tags?: string[]
7272- tracks?: AppRockskySongDefsSongViewBasic.Main[]
7373- [k: string]: unknown
7070+ uniqueListeners?: number;
7171+ tags?: string[];
7272+ tracks?: AppRockskySongDefsSongViewBasic.Main[];
7373+ [k: string]: unknown;
7474}
75757676export function isAlbumViewDetailed(v: unknown): v is AlbumViewDetailed {
7777 return (
7878 isObj(v) &&
7979- hasProp(v, '$type') &&
8080- v.$type === 'app.rocksky.album.defs#albumViewDetailed'
8181- )
7979+ hasProp(v, "$type") &&
8080+ v.$type === "app.rocksky.album.defs#albumViewDetailed"
8181+ );
8282}
83838484export function validateAlbumViewDetailed(v: unknown): ValidationResult {
8585- return lexicons.validate('app.rocksky.album.defs#albumViewDetailed', v)
8585+ return lexicons.validate("app.rocksky.album.defs#albumViewDetailed", v);
8686}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../lexicons'
66-import { isObj, hasProp } from '../../../../util'
77-import { CID } from 'multiformats/cid'
44+import { ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../lexicons";
66+import { isObj, hasProp } from "../../../../util";
77+import { CID } from "multiformats/cid";
+18-18
apps/api/src/lexicon/types/app/rocksky/artist.ts
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type { ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../lexicons'
66-import { isObj, hasProp } from '../../../util'
77-import { CID } from 'multiformats/cid'
44+import type { ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../lexicons";
66+import { isObj, hasProp } from "../../../util";
77+import { CID } from "multiformats/cid";
8899export interface Record {
1010 /** The name of the artist. */
1111- name: string
1111+ name: string;
1212 /** The biography of the artist. */
1313- bio?: string
1313+ bio?: string;
1414 /** The picture of the artist. */
1515- picture?: BlobRef
1515+ picture?: BlobRef;
1616 /** The URL of the picture of the artist. */
1717- pictureUrl?: string
1717+ pictureUrl?: string;
1818 /** The tags of the artist. */
1919- tags?: string[]
1919+ tags?: string[];
2020 /** The birth date of the artist. */
2121- born?: string
2121+ born?: string;
2222 /** The death date of the artist. */
2323- died?: string
2323+ died?: string;
2424 /** The birth place of the artist. */
2525- bornIn?: string
2525+ bornIn?: string;
2626 /** The date when the artist was created. */
2727- createdAt: string
2828- [k: string]: unknown
2727+ createdAt: string;
2828+ [k: string]: unknown;
2929}
30303131export function isRecord(v: unknown): v is Record {
3232 return (
3333 isObj(v) &&
3434- hasProp(v, '$type') &&
3535- (v.$type === 'app.rocksky.artist#main' || v.$type === 'app.rocksky.artist')
3636- )
3434+ hasProp(v, "$type") &&
3535+ (v.$type === "app.rocksky.artist#main" || v.$type === "app.rocksky.artist")
3636+ );
3737}
38383939export function validateRecord(v: unknown): ValidationResult {
4040- return lexicons.validate('app.rocksky.artist#main', v)
4040+ return lexicons.validate("app.rocksky.artist#main", v);
4141}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../lexicons'
66-import { isObj, hasProp } from '../../../../util'
77-import { CID } from 'multiformats/cid'
88-import type * as AppRockskySongDefs from '../song/defs'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../lexicons";
66+import { isObj, hasProp } from "../../../../util";
77+import { CID } from "multiformats/cid";
88+import type * as AppRockskySongDefs from "../song/defs";
991010/** Detailed view of a playlist, including its tracks and metadata */
1111export interface PlaylistViewDetailed {
1212 /** The unique identifier of the playlist. */
1313- id?: string
1313+ id?: string;
1414 /** The title of the playlist. */
1515- title?: string
1515+ title?: string;
1616 /** The URI of the playlist. */
1717- uri?: string
1717+ uri?: string;
1818 /** The DID of the curator of the playlist. */
1919- curatorDid?: string
1919+ curatorDid?: string;
2020 /** The handle of the curator of the playlist. */
2121- curatorHandle?: string
2121+ curatorHandle?: string;
2222 /** The name of the curator of the playlist. */
2323- curatorName?: string
2323+ curatorName?: string;
2424 /** The URL of the avatar image of the curator. */
2525- curatorAvatarUrl?: string
2525+ curatorAvatarUrl?: string;
2626 /** A description of the playlist. */
2727- description?: string
2727+ description?: string;
2828 /** The URL of the cover image for the playlist. */
2929- coverImageUrl?: string
2929+ coverImageUrl?: string;
3030 /** The date and time when the playlist was created. */
3131- createdAt?: string
3131+ createdAt?: string;
3232 /** A list of tracks in the playlist. */
3333- tracks?: AppRockskySongDefs.SongViewBasic[]
3434- [k: string]: unknown
3333+ tracks?: AppRockskySongDefs.SongViewBasic[];
3434+ [k: string]: unknown;
3535}
36363737export function isPlaylistViewDetailed(v: unknown): v is PlaylistViewDetailed {
3838 return (
3939 isObj(v) &&
4040- hasProp(v, '$type') &&
4141- v.$type === 'app.rocksky.playlist.defs#playlistViewDetailed'
4242- )
4040+ hasProp(v, "$type") &&
4141+ v.$type === "app.rocksky.playlist.defs#playlistViewDetailed"
4242+ );
4343}
44444545export function validatePlaylistViewDetailed(v: unknown): ValidationResult {
4646- return lexicons.validate('app.rocksky.playlist.defs#playlistViewDetailed', v)
4646+ return lexicons.validate("app.rocksky.playlist.defs#playlistViewDetailed", v);
4747}
48484949/** Basic view of a playlist, including its metadata */
5050export interface PlaylistViewBasic {
5151 /** The unique identifier of the playlist. */
5252- id?: string
5252+ id?: string;
5353 /** The title of the playlist. */
5454- title?: string
5454+ title?: string;
5555 /** The URI of the playlist. */
5656- uri?: string
5656+ uri?: string;
5757 /** The DID of the curator of the playlist. */
5858- curatorDid?: string
5858+ curatorDid?: string;
5959 /** The handle of the curator of the playlist. */
6060- curatorHandle?: string
6060+ curatorHandle?: string;
6161 /** The name of the curator of the playlist. */
6262- curatorName?: string
6262+ curatorName?: string;
6363 /** The URL of the avatar image of the curator. */
6464- curatorAvatarUrl?: string
6464+ curatorAvatarUrl?: string;
6565 /** A description of the playlist. */
6666- description?: string
6666+ description?: string;
6767 /** The URL of the cover image for the playlist. */
6868- coverImageUrl?: string
6868+ coverImageUrl?: string;
6969 /** The date and time when the playlist was created. */
7070- createdAt?: string
7070+ createdAt?: string;
7171 /** The number of tracks in the playlist. */
7272- trackCount?: number
7373- [k: string]: unknown
7272+ trackCount?: number;
7373+ [k: string]: unknown;
7474}
75757676export function isPlaylistViewBasic(v: unknown): v is PlaylistViewBasic {
7777 return (
7878 isObj(v) &&
7979- hasProp(v, '$type') &&
8080- v.$type === 'app.rocksky.playlist.defs#playlistViewBasic'
8181- )
7979+ hasProp(v, "$type") &&
8080+ v.$type === "app.rocksky.playlist.defs#playlistViewBasic"
8181+ );
8282}
83838484export function validatePlaylistViewBasic(v: unknown): ValidationResult {
8585- return lexicons.validate('app.rocksky.playlist.defs#playlistViewBasic', v)
8585+ return lexicons.validate("app.rocksky.playlist.defs#playlistViewBasic", v);
8686}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../lexicons'
66-import { isObj, hasProp } from '../../../util'
77-import { CID } from 'multiformats/cid'
88-import type * as ComAtprotoRepoStrongRef from '../../com/atproto/repo/strongRef'
99-import type * as AppRockskySongDefs from './song/defs'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../lexicons";
66+import { isObj, hasProp } from "../../../util";
77+import { CID } from "multiformats/cid";
88+import type * as ComAtprotoRepoStrongRef from "../../com/atproto/repo/strongRef";
99+import type * as AppRockskySongDefs from "./song/defs";
10101111export interface Record {
1212- subject: ComAtprotoRepoStrongRef.Main
1212+ subject: ComAtprotoRepoStrongRef.Main;
1313 /** The date the playlist was created. */
1414- createdAt: string
1515- track: AppRockskySongDefs.SongViewBasic
1414+ createdAt: string;
1515+ track: AppRockskySongDefs.SongViewBasic;
1616 /** The order of the item in the playlist. */
1717- order: number
1818- [k: string]: unknown
1717+ order: number;
1818+ [k: string]: unknown;
1919}
20202121export function isRecord(v: unknown): v is Record {
2222 return (
2323 isObj(v) &&
2424- hasProp(v, '$type') &&
2525- (v.$type === 'app.rocksky.playlistItem#main' ||
2626- v.$type === 'app.rocksky.playlistItem')
2727- )
2424+ hasProp(v, "$type") &&
2525+ (v.$type === "app.rocksky.playlistItem#main" ||
2626+ v.$type === "app.rocksky.playlistItem")
2727+ );
2828}
29293030export function validateRecord(v: unknown): ValidationResult {
3131- return lexicons.validate('app.rocksky.playlistItem#main', v)
3131+ return lexicons.validate("app.rocksky.playlistItem#main", v);
3232}
+16-16
apps/api/src/lexicon/types/app/rocksky/radio.ts
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type { ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../lexicons'
66-import { isObj, hasProp } from '../../../util'
77-import { CID } from 'multiformats/cid'
44+import type { ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../lexicons";
66+import { isObj, hasProp } from "../../../util";
77+import { CID } from "multiformats/cid";
8899export interface Record {
1010 /** The name of the radio station. */
1111- name: string
1111+ name: string;
1212 /** The URL of the radio station. */
1313- url: string
1313+ url: string;
1414 /** A description of the radio station. */
1515- description?: string
1515+ description?: string;
1616 /** The genre of the radio station. */
1717- genre?: string
1717+ genre?: string;
1818 /** The logo of the radio station. */
1919- logo?: BlobRef
1919+ logo?: BlobRef;
2020 /** The website of the radio station. */
2121- website?: string
2121+ website?: string;
2222 /** The date when the radio station was created. */
2323- createdAt: string
2424- [k: string]: unknown
2323+ createdAt: string;
2424+ [k: string]: unknown;
2525}
26262727export function isRecord(v: unknown): v is Record {
2828 return (
2929 isObj(v) &&
3030- hasProp(v, '$type') &&
3131- (v.$type === 'app.rocksky.radio#main' || v.$type === 'app.rocksky.radio')
3232- )
3030+ hasProp(v, "$type") &&
3131+ (v.$type === "app.rocksky.radio#main" || v.$type === "app.rocksky.radio")
3232+ );
3333}
34343535export function validateRecord(v: unknown): ValidationResult {
3636- return lexicons.validate('app.rocksky.radio#main', v)
3636+ return lexicons.validate("app.rocksky.radio#main", v);
3737}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type { ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../lexicons'
66-import { isObj, hasProp } from '../../../util'
77-import { CID } from 'multiformats/cid'
88-import type * as AppRockskyArtistDefs from './artist/defs'
44+import type { ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../lexicons";
66+import { isObj, hasProp } from "../../../util";
77+import { CID } from "multiformats/cid";
88+import type * as AppRockskyArtistDefs from "./artist/defs";
991010export interface Record {
1111 /** The title of the song. */
1212- title: string
1212+ title: string;
1313 /** The artist of the song. */
1414- artist: string
1414+ artist: string;
1515 /** The artists of the song with MusicBrainz IDs. */
1616- artists?: AppRockskyArtistDefs.ArtistMbid[]
1616+ artists?: AppRockskyArtistDefs.ArtistMbid[];
1717 /** The album artist of the song. */
1818- albumArtist: string
1818+ albumArtist: string;
1919 /** The album of the song. */
2020- album: string
2020+ album: string;
2121 /** The duration of the song in seconds. */
2222- duration: number
2222+ duration: number;
2323 /** The track number of the song in the album. */
2424- trackNumber?: number
2424+ trackNumber?: number;
2525 /** The disc number of the song in the album. */
2626- discNumber?: number
2626+ discNumber?: number;
2727 /** The release date of the song. */
2828- releaseDate?: string
2828+ releaseDate?: string;
2929 /** The year the song was released. */
3030- year?: number
3030+ year?: number;
3131 /** The genre of the song. */
3232- genre?: string
3232+ genre?: string;
3333 /** The tags of the song. */
3434- tags?: string[]
3434+ tags?: string[];
3535 /** The composer of the song. */
3636- composer?: string
3636+ composer?: string;
3737 /** The lyrics of the song. */
3838- lyrics?: string
3838+ lyrics?: string;
3939 /** The copyright message of the song. */
4040- copyrightMessage?: string
4040+ copyrightMessage?: string;
4141 /** Informations about the song */
4242- wiki?: string
4242+ wiki?: string;
4343 /** The album art of the song. */
4444- albumArt?: BlobRef
4444+ albumArt?: BlobRef;
4545 /** The URL of the album art of the song. */
4646- albumArtUrl?: string
4646+ albumArtUrl?: string;
4747 /** The YouTube link of the song. */
4848- youtubeLink?: string
4848+ youtubeLink?: string;
4949 /** The Spotify link of the song. */
5050- spotifyLink?: string
5050+ spotifyLink?: string;
5151 /** The Tidal link of the song. */
5252- tidalLink?: string
5252+ tidalLink?: string;
5353 /** The Apple Music link of the song. */
5454- appleMusicLink?: string
5454+ appleMusicLink?: string;
5555 /** The date when the song was created. */
5656- createdAt: string
5656+ createdAt: string;
5757 /** The MusicBrainz ID of the song. */
5858- mbid?: string
5858+ mbid?: string;
5959 /** The label of the song. */
6060- label?: string
6161- [k: string]: unknown
6060+ label?: string;
6161+ [k: string]: unknown;
6262}
63636464export function isRecord(v: unknown): v is Record {
6565 return (
6666 isObj(v) &&
6767- hasProp(v, '$type') &&
6868- (v.$type === 'app.rocksky.scrobble#main' ||
6969- v.$type === 'app.rocksky.scrobble')
7070- )
6767+ hasProp(v, "$type") &&
6868+ (v.$type === "app.rocksky.scrobble#main" ||
6969+ v.$type === "app.rocksky.scrobble")
7070+ );
7171}
72727373export function validateRecord(v: unknown): ValidationResult {
7474- return lexicons.validate('app.rocksky.scrobble#main', v)
7474+ return lexicons.validate("app.rocksky.scrobble#main", v);
7575}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type express from 'express'
55-import { ValidationResult, BlobRef } from '@atproto/lexicon'
66-import { lexicons } from '../../../../lexicons'
77-import { isObj, hasProp } from '../../../../util'
88-import { CID } from 'multiformats/cid'
99-import type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
1010-import type * as AppRockskyScrobbleDefs from './defs'
44+import type express from "express";
55+import { ValidationResult, BlobRef } from "@atproto/lexicon";
66+import { lexicons } from "../../../../lexicons";
77+import { isObj, hasProp } from "../../../../util";
88+import { CID } from "multiformats/cid";
99+import type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server";
1010+import type * as AppRockskyScrobbleDefs from "./defs";
11111212-export type QueryParams = {}
1212+export type QueryParams = {};
13131414export interface InputSchema {
1515 /** The title of the track being scrobbled */
1616- title: string
1616+ title: string;
1717 /** The artist of the track being scrobbled */
1818- artist: string
1818+ artist: string;
1919 /** The album of the track being scrobbled */
2020- album?: string
2020+ album?: string;
2121 /** The duration of the track in seconds */
2222- duration?: number
2222+ duration?: number;
2323 /** The MusicBrainz ID of the track, if available */
2424- mbId?: string
2424+ mbId?: string;
2525 /** The URL of the album art for the track */
2626- albumArt?: string
2626+ albumArt?: string;
2727 /** The track number of the track in the album */
2828- trackNumber?: number
2828+ trackNumber?: number;
2929 /** The release date of the track, formatted as YYYY-MM-DD */
3030- releaseDate?: string
3030+ releaseDate?: string;
3131 /** The year the track was released */
3232- year?: number
3232+ year?: number;
3333 /** The disc number of the track in the album, if applicable */
3434- discNumber?: number
3434+ discNumber?: number;
3535 /** The lyrics of the track, if available */
3636- lyrics?: string
3636+ lyrics?: string;
3737 /** The composer of the track, if available */
3838- composer?: string
3838+ composer?: string;
3939 /** The copyright message for the track, if available */
4040- copyrightMessage?: string
4040+ copyrightMessage?: string;
4141 /** The record label of the track, if available */
4242- label?: string
4242+ label?: string;
4343 /** The URL of the artist's picture, if available */
4444- artistPicture?: string
4444+ artistPicture?: string;
4545 /** The Spotify link for the track, if available */
4646- spotifyLink?: string
4646+ spotifyLink?: string;
4747 /** The Last.fm link for the track, if available */
4848- lastfmLink?: string
4848+ lastfmLink?: string;
4949 /** The Tidal link for the track, if available */
5050- tidalLink?: string
5050+ tidalLink?: string;
5151 /** The Apple Music link for the track, if available */
5252- appleMusicLink?: string
5252+ appleMusicLink?: string;
5353 /** The Youtube link for the track, if available */
5454- youtubeLink?: string
5454+ youtubeLink?: string;
5555 /** The Deezer link for the track, if available */
5656- deezerLink?: string
5656+ deezerLink?: string;
5757 /** The timestamp of the scrobble in milliseconds since epoch */
5858- timestamp?: number
5959- [k: string]: unknown
5858+ timestamp?: number;
5959+ [k: string]: unknown;
6060}
61616262-export type OutputSchema = AppRockskyScrobbleDefs.ScrobbleViewBasic
6262+export type OutputSchema = AppRockskyScrobbleDefs.ScrobbleViewBasic;
63636464export interface HandlerInput {
6565- encoding: 'application/json'
6666- body: InputSchema
6565+ encoding: "application/json";
6666+ body: InputSchema;
6767}
68686969export interface HandlerSuccess {
7070- encoding: 'application/json'
7171- body: OutputSchema
7272- headers?: { [key: string]: string }
7070+ encoding: "application/json";
7171+ body: OutputSchema;
7272+ headers?: { [key: string]: string };
7373}
74747575export interface HandlerError {
7676- status: number
7777- message?: string
7676+ status: number;
7777+ message?: string;
7878}
79798080-export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
8080+export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
8181export type HandlerReqCtx<HA extends HandlerAuth = never> = {
8282- auth: HA
8383- params: QueryParams
8484- input: HandlerInput
8585- req: express.Request
8686- res: express.Response
8787- resetRouteRateLimits: () => Promise<void>
8888-}
8282+ auth: HA;
8383+ params: QueryParams;
8484+ input: HandlerInput;
8585+ req: express.Request;
8686+ res: express.Response;
8787+ resetRouteRateLimits: () => Promise<void>;
8888+};
8989export type Handler<HA extends HandlerAuth = never> = (
9090 ctx: HandlerReqCtx<HA>,
9191-) => Promise<HandlerOutput> | HandlerOutput
9191+) => Promise<HandlerOutput> | HandlerOutput;
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../lexicons'
66-import { isObj, hasProp } from '../../../../util'
77-import { CID } from 'multiformats/cid'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../lexicons";
66+import { isObj, hasProp } from "../../../../util";
77+import { CID } from "multiformats/cid";
8899export interface ScrobbleViewBasic {
1010 /** The unique identifier of the scrobble. */
1111- id?: string
1111+ id?: string;
1212 /** The handle of the user who created the scrobble. */
1313- user?: string
1313+ user?: string;
1414 /** The display name of the user who created the scrobble. */
1515- userDisplayName?: string
1515+ userDisplayName?: string;
1616 /** The avatar URL of the user who created the scrobble. */
1717- userAvatar?: string
1717+ userAvatar?: string;
1818 /** The title of the scrobble. */
1919- title?: string
1919+ title?: string;
2020 /** The artist of the song. */
2121- artist?: string
2121+ artist?: string;
2222 /** The URI of the artist. */
2323- artistUri?: string
2323+ artistUri?: string;
2424 /** The album of the song. */
2525- album?: string
2525+ album?: string;
2626 /** The URI of the album. */
2727- albumUri?: string
2727+ albumUri?: string;
2828 /** The album art URL of the song. */
2929- cover?: string
2929+ cover?: string;
3030 /** The timestamp when the scrobble was created. */
3131- date?: string
3131+ date?: string;
3232 /** The URI of the scrobble. */
3333- uri?: string
3333+ uri?: string;
3434 /** The SHA256 hash of the scrobble data. */
3535- sha256?: string
3636- liked?: boolean
3737- likesCount?: number
3838- [k: string]: unknown
3535+ sha256?: string;
3636+ liked?: boolean;
3737+ likesCount?: number;
3838+ [k: string]: unknown;
3939}
40404141export function isScrobbleViewBasic(v: unknown): v is ScrobbleViewBasic {
4242 return (
4343 isObj(v) &&
4444- hasProp(v, '$type') &&
4545- v.$type === 'app.rocksky.scrobble.defs#scrobbleViewBasic'
4646- )
4444+ hasProp(v, "$type") &&
4545+ v.$type === "app.rocksky.scrobble.defs#scrobbleViewBasic"
4646+ );
4747}
48484949export function validateScrobbleViewBasic(v: unknown): ValidationResult {
5050- return lexicons.validate('app.rocksky.scrobble.defs#scrobbleViewBasic', v)
5050+ return lexicons.validate("app.rocksky.scrobble.defs#scrobbleViewBasic", v);
5151}
52525353export interface ScrobbleViewDetailed {
5454 /** The unique identifier of the scrobble. */
5555- id?: string
5555+ id?: string;
5656 /** The handle of the user who created the scrobble. */
5757- user?: string
5757+ user?: string;
5858 /** The title of the scrobble. */
5959- title?: string
5959+ title?: string;
6060 /** The artist of the song. */
6161- artist?: string
6161+ artist?: string;
6262 /** The URI of the artist. */
6363- artistUri?: string
6363+ artistUri?: string;
6464 /** The album of the song. */
6565- album?: string
6565+ album?: string;
6666 /** The URI of the album. */
6767- albumUri?: string
6767+ albumUri?: string;
6868 /** The album art URL of the song. */
6969- cover?: string
6969+ cover?: string;
7070 /** The timestamp when the scrobble was created. */
7171- date?: string
7171+ date?: string;
7272 /** The URI of the scrobble. */
7373- uri?: string
7373+ uri?: string;
7474 /** The SHA256 hash of the scrobble data. */
7575- sha256?: string
7575+ sha256?: string;
7676 /** The number of listeners */
7777- listeners?: number
7777+ listeners?: number;
7878 /** The number of scrobbles for this song */
7979- scrobbles?: number
8080- [k: string]: unknown
7979+ scrobbles?: number;
8080+ [k: string]: unknown;
8181}
82828383export function isScrobbleViewDetailed(v: unknown): v is ScrobbleViewDetailed {
8484 return (
8585 isObj(v) &&
8686- hasProp(v, '$type') &&
8787- v.$type === 'app.rocksky.scrobble.defs#scrobbleViewDetailed'
8888- )
8686+ hasProp(v, "$type") &&
8787+ v.$type === "app.rocksky.scrobble.defs#scrobbleViewDetailed"
8888+ );
8989}
90909191export function validateScrobbleViewDetailed(v: unknown): ValidationResult {
9292- return lexicons.validate('app.rocksky.scrobble.defs#scrobbleViewDetailed', v)
9292+ return lexicons.validate("app.rocksky.scrobble.defs#scrobbleViewDetailed", v);
9393}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type express from 'express'
55-import { ValidationResult, BlobRef } from '@atproto/lexicon'
66-import { lexicons } from '../../../../lexicons'
77-import { isObj, hasProp } from '../../../../util'
88-import { CID } from 'multiformats/cid'
99-import type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
1010-import type * as AppRockskyShoutDefs from './defs'
44+import type express from "express";
55+import { ValidationResult, BlobRef } from "@atproto/lexicon";
66+import { lexicons } from "../../../../lexicons";
77+import { isObj, hasProp } from "../../../../util";
88+import { CID } from "multiformats/cid";
99+import type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server";
1010+import type * as AppRockskyShoutDefs from "./defs";
11111212-export type QueryParams = {}
1212+export type QueryParams = {};
13131414export interface InputSchema {
1515 /** The unique identifier of the shout to report */
1616- shoutId: string
1616+ shoutId: string;
1717 /** The reason for reporting the shout */
1818- reason?: string
1919- [k: string]: unknown
1818+ reason?: string;
1919+ [k: string]: unknown;
2020}
21212222-export type OutputSchema = AppRockskyShoutDefs.ShoutView
2222+export type OutputSchema = AppRockskyShoutDefs.ShoutView;
23232424export interface HandlerInput {
2525- encoding: 'application/json'
2626- body: InputSchema
2525+ encoding: "application/json";
2626+ body: InputSchema;
2727}
28282929export interface HandlerSuccess {
3030- encoding: 'application/json'
3131- body: OutputSchema
3232- headers?: { [key: string]: string }
3030+ encoding: "application/json";
3131+ body: OutputSchema;
3232+ headers?: { [key: string]: string };
3333}
34343535export interface HandlerError {
3636- status: number
3737- message?: string
3636+ status: number;
3737+ message?: string;
3838}
39394040-export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
4040+export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
4141export type HandlerReqCtx<HA extends HandlerAuth = never> = {
4242- auth: HA
4343- params: QueryParams
4444- input: HandlerInput
4545- req: express.Request
4646- res: express.Response
4747- resetRouteRateLimits: () => Promise<void>
4848-}
4242+ auth: HA;
4343+ params: QueryParams;
4444+ input: HandlerInput;
4545+ req: express.Request;
4646+ res: express.Response;
4747+ resetRouteRateLimits: () => Promise<void>;
4848+};
4949export type Handler<HA extends HandlerAuth = never> = (
5050 ctx: HandlerReqCtx<HA>,
5151-) => Promise<HandlerOutput> | HandlerOutput
5151+) => Promise<HandlerOutput> | HandlerOutput;
+35-35
apps/api/src/lexicon/types/app/rocksky/song.ts
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type { ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../lexicons'
66-import { isObj, hasProp } from '../../../util'
77-import { CID } from 'multiformats/cid'
88-import type * as AppRockskyArtistDefs from './artist/defs'
44+import type { ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../lexicons";
66+import { isObj, hasProp } from "../../../util";
77+import { CID } from "multiformats/cid";
88+import type * as AppRockskyArtistDefs from "./artist/defs";
991010export interface Record {
1111 /** The title of the song. */
1212- title: string
1212+ title: string;
1313 /** The artist of the song. */
1414- artist: string
1414+ artist: string;
1515 /** The artists of the song with MusicBrainz IDs. */
1616- artists?: AppRockskyArtistDefs.ArtistMbid[]
1616+ artists?: AppRockskyArtistDefs.ArtistMbid[];
1717 /** The album artist of the song. */
1818- albumArtist: string
1818+ albumArtist: string;
1919 /** The album of the song. */
2020- album: string
2020+ album: string;
2121 /** The duration of the song in seconds. */
2222- duration: number
2222+ duration: number;
2323 /** The track number of the song in the album. */
2424- trackNumber?: number
2424+ trackNumber?: number;
2525 /** The disc number of the song in the album. */
2626- discNumber?: number
2626+ discNumber?: number;
2727 /** The release date of the song. */
2828- releaseDate?: string
2828+ releaseDate?: string;
2929 /** The year the song was released. */
3030- year?: number
3030+ year?: number;
3131 /** The genre of the song. */
3232- genre?: string
3232+ genre?: string;
3333 /** The tags of the song. */
3434- tags?: string[]
3434+ tags?: string[];
3535 /** The composer of the song. */
3636- composer?: string
3636+ composer?: string;
3737 /** The lyrics of the song. */
3838- lyrics?: string
3838+ lyrics?: string;
3939 /** The copyright message of the song. */
4040- copyrightMessage?: string
4040+ copyrightMessage?: string;
4141 /** Informations about the song */
4242- wiki?: string
4242+ wiki?: string;
4343 /** The album art of the song. */
4444- albumArt?: BlobRef
4444+ albumArt?: BlobRef;
4545 /** The URL of the album art of the song. */
4646- albumArtUrl?: string
4646+ albumArtUrl?: string;
4747 /** The YouTube link of the song. */
4848- youtubeLink?: string
4848+ youtubeLink?: string;
4949 /** The Spotify link of the song. */
5050- spotifyLink?: string
5050+ spotifyLink?: string;
5151 /** The Tidal link of the song. */
5252- tidalLink?: string
5252+ tidalLink?: string;
5353 /** The Apple Music link of the song. */
5454- appleMusicLink?: string
5454+ appleMusicLink?: string;
5555 /** The date when the song was created. */
5656- createdAt: string
5656+ createdAt: string;
5757 /** The MusicBrainz ID of the song. */
5858- mbid?: string
5858+ mbid?: string;
5959 /** The label of the song. */
6060- label?: string
6161- [k: string]: unknown
6060+ label?: string;
6161+ [k: string]: unknown;
6262}
63636464export function isRecord(v: unknown): v is Record {
6565 return (
6666 isObj(v) &&
6767- hasProp(v, '$type') &&
6868- (v.$type === 'app.rocksky.song#main' || v.$type === 'app.rocksky.song')
6969- )
6767+ hasProp(v, "$type") &&
6868+ (v.$type === "app.rocksky.song#main" || v.$type === "app.rocksky.song")
6969+ );
7070}
71717272export function validateRecord(v: unknown): ValidationResult {
7373- return lexicons.validate('app.rocksky.song#main', v)
7373+ return lexicons.validate("app.rocksky.song#main", v);
7474}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import type express from 'express'
55-import { ValidationResult, BlobRef } from '@atproto/lexicon'
66-import { lexicons } from '../../../../lexicons'
77-import { isObj, hasProp } from '../../../../util'
88-import { CID } from 'multiformats/cid'
99-import type { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server'
1010-import type * as AppRockskySongDefs from './defs'
44+import type express from "express";
55+import { ValidationResult, BlobRef } from "@atproto/lexicon";
66+import { lexicons } from "../../../../lexicons";
77+import { isObj, hasProp } from "../../../../util";
88+import { CID } from "multiformats/cid";
99+import type { HandlerAuth, HandlerPipeThrough } from "@atproto/xrpc-server";
1010+import type * as AppRockskySongDefs from "./defs";
11111212-export type QueryParams = {}
1212+export type QueryParams = {};
13131414export interface InputSchema {
1515 /** The title of the song */
1616- title: string
1616+ title: string;
1717 /** The artist of the song */
1818- artist: string
1818+ artist: string;
1919 /** The album artist of the song, if different from the main artist */
2020- albumArtist: string
2020+ albumArtist: string;
2121 /** The album of the song, if applicable */
2222- album: string
2222+ album: string;
2323 /** The duration of the song in seconds */
2424- duration?: number
2424+ duration?: number;
2525 /** The MusicBrainz ID of the song, if available */
2626- mbId?: string
2626+ mbId?: string;
2727 /** The URL of the album art for the song */
2828- albumArt?: string
2828+ albumArt?: string;
2929 /** The track number of the song in the album, if applicable */
3030- trackNumber?: number
3030+ trackNumber?: number;
3131 /** The release date of the song, formatted as YYYY-MM-DD */
3232- releaseDate?: string
3232+ releaseDate?: string;
3333 /** The year the song was released */
3434- year?: number
3434+ year?: number;
3535 /** The disc number of the song in the album, if applicable */
3636- discNumber?: number
3636+ discNumber?: number;
3737 /** The lyrics of the song, if available */
3838- lyrics?: string
3939- [k: string]: unknown
3838+ lyrics?: string;
3939+ [k: string]: unknown;
4040}
41414242-export type OutputSchema = AppRockskySongDefs.SongViewDetailed
4242+export type OutputSchema = AppRockskySongDefs.SongViewDetailed;
43434444export interface HandlerInput {
4545- encoding: 'application/json'
4646- body: InputSchema
4545+ encoding: "application/json";
4646+ body: InputSchema;
4747}
48484949export interface HandlerSuccess {
5050- encoding: 'application/json'
5151- body: OutputSchema
5252- headers?: { [key: string]: string }
5050+ encoding: "application/json";
5151+ body: OutputSchema;
5252+ headers?: { [key: string]: string };
5353}
54545555export interface HandlerError {
5656- status: number
5757- message?: string
5656+ status: number;
5757+ message?: string;
5858}
59596060-export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough
6060+export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
6161export type HandlerReqCtx<HA extends HandlerAuth = never> = {
6262- auth: HA
6363- params: QueryParams
6464- input: HandlerInput
6565- req: express.Request
6666- res: express.Response
6767- resetRouteRateLimits: () => Promise<void>
6868-}
6262+ auth: HA;
6363+ params: QueryParams;
6464+ input: HandlerInput;
6565+ req: express.Request;
6666+ res: express.Response;
6767+ resetRouteRateLimits: () => Promise<void>;
6868+};
6969export type Handler<HA extends HandlerAuth = never> = (
7070 ctx: HandlerReqCtx<HA>,
7171-) => Promise<HandlerOutput> | HandlerOutput
7171+) => Promise<HandlerOutput> | HandlerOutput;
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../lexicons'
66-import { isObj, hasProp } from '../../../../util'
77-import { CID } from 'multiformats/cid'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../lexicons";
66+import { isObj, hasProp } from "../../../../util";
77+import { CID } from "multiformats/cid";
8899export interface SongViewBasic {
1010 /** The unique identifier of the song. */
1111- id?: string
1111+ id?: string;
1212 /** The title of the song. */
1313- title?: string
1313+ title?: string;
1414 /** The artist of the song. */
1515- artist?: string
1515+ artist?: string;
1616 /** The artist of the album the song belongs to. */
1717- albumArtist?: string
1717+ albumArtist?: string;
1818 /** The URL of the album art image. */
1919- albumArt?: string
1919+ albumArt?: string;
2020 /** The URI of the song. */
2121- uri?: string
2121+ uri?: string;
2222 /** The album of the song. */
2323- album?: string
2323+ album?: string;
2424 /** The duration of the song in milliseconds. */
2525- duration?: number
2525+ duration?: number;
2626 /** The track number of the song in the album. */
2727- trackNumber?: number
2727+ trackNumber?: number;
2828 /** The disc number of the song in the album. */
2929- discNumber?: number
2929+ discNumber?: number;
3030 /** The number of times the song has been played. */
3131- playCount?: number
3131+ playCount?: number;
3232 /** The number of unique listeners who have played the song. */
3333- uniqueListeners?: number
3333+ uniqueListeners?: number;
3434 /** The URI of the album the song belongs to. */
3535- albumUri?: string
3535+ albumUri?: string;
3636 /** The URI of the artist of the song. */
3737- artistUri?: string
3737+ artistUri?: string;
3838 /** The SHA256 hash of the song. */
3939- sha256?: string
4040- tags?: string[]
3939+ sha256?: string;
4040+ tags?: string[];
4141 /** The timestamp when the song was created. */
4242- createdAt?: string
4343- [k: string]: unknown
4242+ createdAt?: string;
4343+ [k: string]: unknown;
4444}
45454646export function isSongViewBasic(v: unknown): v is SongViewBasic {
4747 return (
4848 isObj(v) &&
4949- hasProp(v, '$type') &&
5050- v.$type === 'app.rocksky.song.defs#songViewBasic'
5151- )
4949+ hasProp(v, "$type") &&
5050+ v.$type === "app.rocksky.song.defs#songViewBasic"
5151+ );
5252}
53535454export function validateSongViewBasic(v: unknown): ValidationResult {
5555- return lexicons.validate('app.rocksky.song.defs#songViewBasic', v)
5555+ return lexicons.validate("app.rocksky.song.defs#songViewBasic", v);
5656}
57575858export interface SongViewDetailed {
5959 /** The unique identifier of the song. */
6060- id?: string
6060+ id?: string;
6161 /** The title of the song. */
6262- title?: string
6262+ title?: string;
6363 /** The artist of the song. */
6464- artist?: string
6464+ artist?: string;
6565 /** The artist of the album the song belongs to. */
6666- albumArtist?: string
6666+ albumArtist?: string;
6767 /** The URL of the album art image. */
6868- albumArt?: string
6868+ albumArt?: string;
6969 /** The URI of the song. */
7070- uri?: string
7070+ uri?: string;
7171 /** The album of the song. */
7272- album?: string
7272+ album?: string;
7373 /** The duration of the song in milliseconds. */
7474- duration?: number
7474+ duration?: number;
7575 /** The track number of the song in the album. */
7676- trackNumber?: number
7676+ trackNumber?: number;
7777 /** The disc number of the song in the album. */
7878- discNumber?: number
7878+ discNumber?: number;
7979 /** The number of times the song has been played. */
8080- playCount?: number
8080+ playCount?: number;
8181 /** The number of unique listeners who have played the song. */
8282- uniqueListeners?: number
8282+ uniqueListeners?: number;
8383 /** The URI of the album the song belongs to. */
8484- albumUri?: string
8484+ albumUri?: string;
8585 /** The URI of the artist of the song. */
8686- artistUri?: string
8686+ artistUri?: string;
8787 /** The SHA256 hash of the song. */
8888- sha256?: string
8989- tags?: string[]
8888+ sha256?: string;
8989+ tags?: string[];
9090 /** The timestamp when the song was created. */
9191- createdAt?: string
9292- [k: string]: unknown
9191+ createdAt?: string;
9292+ [k: string]: unknown;
9393}
94949595export function isSongViewDetailed(v: unknown): v is SongViewDetailed {
9696 return (
9797 isObj(v) &&
9898- hasProp(v, '$type') &&
9999- v.$type === 'app.rocksky.song.defs#songViewDetailed'
100100- )
9898+ hasProp(v, "$type") &&
9999+ v.$type === "app.rocksky.song.defs#songViewDetailed"
100100+ );
101101}
102102103103export function validateSongViewDetailed(v: unknown): ValidationResult {
104104- return lexicons.validate('app.rocksky.song.defs#songViewDetailed', v)
104104+ return lexicons.validate("app.rocksky.song.defs#songViewDetailed", v);
105105}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../lexicons'
66-import { isObj, hasProp } from '../../../../util'
77-import { CID } from 'multiformats/cid'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../lexicons";
66+import { isObj, hasProp } from "../../../../util";
77+import { CID } from "multiformats/cid";
8899export interface StatsView {
1010 /** The total number of scrobbles. */
1111- scrobbles?: number
1111+ scrobbles?: number;
1212 /** The total number of unique artists scrobbled. */
1313- artists?: number
1313+ artists?: number;
1414 /** The total number of tracks marked as loved. */
1515- lovedTracks?: number
1515+ lovedTracks?: number;
1616 /** The total number of unique albums scrobbled. */
1717- albums?: number
1717+ albums?: number;
1818 /** The total number of unique tracks scrobbled. */
1919- tracks?: number
2020- [k: string]: unknown
1919+ tracks?: number;
2020+ [k: string]: unknown;
2121}
22222323export function isStatsView(v: unknown): v is StatsView {
2424 return (
2525 isObj(v) &&
2626- hasProp(v, '$type') &&
2727- v.$type === 'app.rocksky.stats.defs#statsView'
2828- )
2626+ hasProp(v, "$type") &&
2727+ v.$type === "app.rocksky.stats.defs#statsView"
2828+ );
2929}
30303131export function validateStatsView(v: unknown): ValidationResult {
3232- return lexicons.validate('app.rocksky.stats.defs#statsView', v)
3232+ return lexicons.validate("app.rocksky.stats.defs#statsView", v);
3333}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../../lexicons'
66-import { isObj, hasProp } from '../../../../../util'
77-import { CID } from 'multiformats/cid'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../../lexicons";
66+import { isObj, hasProp } from "../../../../../util";
77+import { CID } from "multiformats/cid";
8899export interface PlayView {
1010 /** The name of the track */
1111- trackName: string
1111+ trackName: string;
1212 /** The Musicbrainz ID of the track */
1313- trackMbId?: string
1313+ trackMbId?: string;
1414 /** The Musicbrainz recording ID of the track */
1515- recordingMbId?: string
1515+ recordingMbId?: string;
1616 /** The length of the track in seconds */
1717- duration?: number
1717+ duration?: number;
1818 /** Array of artists in order of original appearance. */
1919- artists: Artist[]
1919+ artists: Artist[];
2020 /** The name of the release/album */
2121- releaseName?: string
2121+ releaseName?: string;
2222 /** The Musicbrainz release ID */
2323- releaseMbId?: string
2323+ releaseMbId?: string;
2424 /** The ISRC code associated with the recording */
2525- isrc?: string
2525+ isrc?: string;
2626 /** The URL associated with this track */
2727- originUrl?: string
2727+ originUrl?: string;
2828 /** The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if not provided. */
2929- musicServiceBaseDomain?: string
2929+ musicServiceBaseDomain?: string;
3030 /** A user-agent style string specifying the user agent. e.g. tealtracker/0.0.1b (Linux; Android 13; SM-A715F). Defaults to 'manual/unknown' if not provided. */
3131- submissionClientAgent?: string
3131+ submissionClientAgent?: string;
3232 /** The unix timestamp of when the track was played */
3333- playedTime?: string
3434- [k: string]: unknown
3333+ playedTime?: string;
3434+ [k: string]: unknown;
3535}
36363737export function isPlayView(v: unknown): v is PlayView {
3838 return (
3939 isObj(v) &&
4040- hasProp(v, '$type') &&
4141- v.$type === 'fm.teal.alpha.feed.defs#playView'
4242- )
4040+ hasProp(v, "$type") &&
4141+ v.$type === "fm.teal.alpha.feed.defs#playView"
4242+ );
4343}
44444545export function validatePlayView(v: unknown): ValidationResult {
4646- return lexicons.validate('fm.teal.alpha.feed.defs#playView', v)
4646+ return lexicons.validate("fm.teal.alpha.feed.defs#playView", v);
4747}
48484949export interface Artist {
5050 /** The name of the artist */
5151- artistName: string
5151+ artistName: string;
5252 /** The Musicbrainz ID of the artist */
5353- artistMbId?: string
5454- [k: string]: unknown
5353+ artistMbId?: string;
5454+ [k: string]: unknown;
5555}
56565757export function isArtist(v: unknown): v is Artist {
5858 return (
5959 isObj(v) &&
6060- hasProp(v, '$type') &&
6161- v.$type === 'fm.teal.alpha.feed.defs#artist'
6262- )
6060+ hasProp(v, "$type") &&
6161+ v.$type === "fm.teal.alpha.feed.defs#artist"
6262+ );
6363}
64646565export function validateArtist(v: unknown): ValidationResult {
6666- return lexicons.validate('fm.teal.alpha.feed.defs#artist', v)
6666+ return lexicons.validate("fm.teal.alpha.feed.defs#artist", v);
6767}
···11/**
22 * GENERATED CODE - DO NOT MODIFY
33 */
44-import { type ValidationResult, BlobRef } from '@atproto/lexicon'
55-import { lexicons } from '../../../../../lexicons'
66-import { isObj, hasProp } from '../../../../../util'
77-import { CID } from 'multiformats/cid'
88-import type * as FmTealAlphaFeedDefs from './defs'
44+import { type ValidationResult, BlobRef } from "@atproto/lexicon";
55+import { lexicons } from "../../../../../lexicons";
66+import { isObj, hasProp } from "../../../../../util";
77+import { CID } from "multiformats/cid";
88+import type * as FmTealAlphaFeedDefs from "./defs";
991010export interface Record {
1111 /** The name of the track */
1212- trackName: string
1212+ trackName: string;
1313 /** The Musicbrainz ID of the track */
1414- trackMbId?: string
1414+ trackMbId?: string;
1515 /** The Musicbrainz recording ID of the track */
1616- recordingMbId?: string
1616+ recordingMbId?: string;
1717 /** The length of the track in seconds */
1818- duration?: number
1818+ duration?: number;
1919 /** Array of artist names in order of original appearance. Prefer using 'artists'. */
2020- artistNames?: string[]
2020+ artistNames?: string[];
2121 /** Array of Musicbrainz artist IDs. Prefer using 'artists'. */
2222- artistMbIds?: string[]
2222+ artistMbIds?: string[];
2323 /** Array of artists in order of original appearance. */
2424- artists?: FmTealAlphaFeedDefs.Artist[]
2424+ artists?: FmTealAlphaFeedDefs.Artist[];
2525 /** The name of the release/album */
2626- releaseName?: string
2626+ releaseName?: string;
2727 /** The Musicbrainz release ID */
2828- releaseMbId?: string
2828+ releaseMbId?: string;
2929 /** The ISRC code associated with the recording */
3030- isrc?: string
3030+ isrc?: string;
3131 /** The URL associated with this track */
3232- originUrl?: string
3232+ originUrl?: string;
3333 /** The base domain of the music service. e.g. music.apple.com, tidal.com, spotify.com. Defaults to 'local' if unavailable or not provided. */
3434- musicServiceBaseDomain?: string
3434+ musicServiceBaseDomain?: string;
3535 /** A metadata string specifying the user agent where the format is `<app-identifier>/<version> (<kernel/OS-base>; <platform/OS-version>; <device-model>)`. If string is provided, only `app-identifier` and `version` are required. `app-identifier` is recommended to be in reverse dns format. Defaults to 'manual/unknown' if unavailable or not provided. */
3636- submissionClientAgent?: string
3636+ submissionClientAgent?: string;
3737 /** The unix timestamp of when the track was played */
3838- playedTime?: string
3939- [k: string]: unknown
3838+ playedTime?: string;
3939+ [k: string]: unknown;
4040}
41414242export function isRecord(v: unknown): v is Record {
4343 return (
4444 isObj(v) &&
4545- hasProp(v, '$type') &&
4646- (v.$type === 'fm.teal.alpha.feed.play#main' ||
4747- v.$type === 'fm.teal.alpha.feed.play')
4848- )
4545+ hasProp(v, "$type") &&
4646+ (v.$type === "fm.teal.alpha.feed.play#main" ||
4747+ v.$type === "fm.teal.alpha.feed.play")
4848+ );
4949}
50505151export function validateRecord(v: unknown): ValidationResult {
5252- return lexicons.validate('fm.teal.alpha.feed.play#main', v)
5252+ return lexicons.validate("fm.teal.alpha.feed.play#main", v);
5353}
+2-2
apps/api/src/lexicon/util.ts
···22 * GENERATED CODE - DO NOT MODIFY
33 */
44export function isObj(v: unknown): v is Record<string, unknown> {
55- return typeof v === 'object' && v !== null
55+ return typeof v === "object" && v !== null;
66}
7788export function hasProp<K extends PropertyKey>(
99 data: object,
1010 prop: K,
1111): data is Record<K, unknown> {
1212- return prop in data
1212+ return prop in data;
1313}