@checkleaked/spotify-api 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4068 @@
1
+ /**
2
+ * Core shared types for the Spotify Data API client.
3
+ */
4
+ /** Built-in base-URL presets. */
5
+ type Provider = 'rapidapi' | 'proxy';
6
+ /** Minimal `fetch` shape the client depends on (injectable for tests / custom runtimes). */
7
+ type FetchLike = (input: string, init?: RequestInit) => Promise<Response>;
8
+ /**
9
+ * The standard success envelope every endpoint returns.
10
+ * `data` holds the useful payload; SDK methods return it unwrapped.
11
+ */
12
+ interface SuccessEnvelope<T = unknown> {
13
+ success: boolean;
14
+ data: T;
15
+ metadata?: Record<string, unknown>;
16
+ }
17
+ /** The standard error envelope returned on failure. */
18
+ interface ErrorEnvelope {
19
+ success: boolean;
20
+ error?: string;
21
+ message?: string;
22
+ }
23
+ /** A value acceptable in a query string. Arrays are serialized as comma-separated. */
24
+ type QueryValue = string | number | boolean | null | undefined | ReadonlyArray<string | number>;
25
+ /** A bag of query parameters. `undefined`/`null` entries are dropped. */
26
+ type QueryParams$1 = Record<string, QueryValue>;
27
+ /**
28
+ * Anywhere an ID list is accepted you may pass a comma-separated string, or an
29
+ * array of IDs / URIs / URLs — all are normalized to bare comma-joined IDs.
30
+ */
31
+ type IdList = string | ReadonlyArray<string>;
32
+ /** Lifecycle info passed to the retry hook. */
33
+ interface RetryInfo {
34
+ attempt: number;
35
+ method: string;
36
+ url: string;
37
+ status?: number;
38
+ error?: unknown;
39
+ delayMs: number;
40
+ }
41
+ /** Per-request overrides shared by every verb helper. */
42
+ interface RequestOverrides {
43
+ /** Abort the request from the caller side. */
44
+ signal?: AbortSignal;
45
+ /** Extra headers merged over the defaults for this request only. */
46
+ headers?: Record<string, string>;
47
+ }
48
+ /** Full description of a single HTTP request. */
49
+ interface RequestOptions extends RequestOverrides {
50
+ method?: string;
51
+ path: string;
52
+ query?: QueryParams$1;
53
+ body?: unknown;
54
+ }
55
+ /** User-facing client configuration. */
56
+ interface ClientConfig {
57
+ /**
58
+ * API key sent as `x-rapidapi-key`. If omitted, the client falls back to the
59
+ * `SPOTIFY_API_KEY` or `RAPIDAPI_KEY` environment variable (Node only).
60
+ */
61
+ apiKey?: string;
62
+ /**
63
+ * Base-URL preset. `rapidapi` (default) targets `https://spotify81.p.rapidapi.com`
64
+ * and adds the `x-rapidapi-host` header; `proxy` targets the direct proxy.
65
+ */
66
+ provider?: Provider;
67
+ /** Override the base URL entirely (takes precedence over `provider`). */
68
+ baseUrl?: string;
69
+ /** Override the `x-rapidapi-host` header (takes precedence over `provider`). */
70
+ host?: string;
71
+ /** Per-request timeout in milliseconds. Default `30000`. */
72
+ timeoutMs?: number;
73
+ /** Number of retries on 429 / 5xx / network errors. Default `2`. */
74
+ retries?: number;
75
+ /** Base backoff delay in milliseconds (exponential w/ jitter). Default `500`. */
76
+ retryDelayMs?: number;
77
+ /** Extra headers merged into every request. */
78
+ headers?: Record<string, string>;
79
+ /** Custom `fetch` implementation. Defaults to the global `fetch`. */
80
+ fetch?: FetchLike;
81
+ /** Value for the `user-agent` header. */
82
+ userAgent?: string;
83
+ /** Log every request/response/retry to the console (or the provided logger). */
84
+ debug?: boolean | ((message: string, detail?: unknown) => void);
85
+ /** Called just before each request goes out. */
86
+ onRequest?: (info: {
87
+ method: string;
88
+ url: string;
89
+ headers: Record<string, string>;
90
+ }) => void;
91
+ /** Called after each response is received. */
92
+ onResponse?: (info: {
93
+ method: string;
94
+ url: string;
95
+ status: number;
96
+ durationMs: number;
97
+ }) => void;
98
+ /** Called before each retry (429 / 5xx / network). */
99
+ onRetry?: (info: RetryInfo) => void;
100
+ }
101
+
102
+ /** Base-URL / host presets for each provider. */
103
+ declare const PROVIDERS: {
104
+ rapidapi: {
105
+ baseUrl: string;
106
+ host: string;
107
+ };
108
+ proxy: {
109
+ baseUrl: string;
110
+ host: undefined;
111
+ };
112
+ };
113
+ declare const DEFAULT_USER_AGENT = "@checkleaked/spotify-api";
114
+ declare const DEFAULT_TIMEOUT_MS = 30000;
115
+ declare const DEFAULT_RETRIES = 2;
116
+ declare const DEFAULT_RETRY_DELAY_MS = 500;
117
+ /** Fully-resolved configuration used internally by the client. */
118
+ interface ResolvedConfig {
119
+ apiKey: string;
120
+ baseUrl: string;
121
+ host?: string;
122
+ timeoutMs: number;
123
+ retries: number;
124
+ retryDelayMs: number;
125
+ headers: Record<string, string>;
126
+ fetch: FetchLike;
127
+ userAgent: string;
128
+ debug?: (message: string, detail?: unknown) => void;
129
+ onRequest?: (info: {
130
+ method: string;
131
+ url: string;
132
+ headers: Record<string, string>;
133
+ }) => void;
134
+ onResponse?: (info: {
135
+ method: string;
136
+ url: string;
137
+ status: number;
138
+ durationMs: number;
139
+ }) => void;
140
+ onRetry?: (info: RetryInfo) => void;
141
+ }
142
+ /** Validate and normalize user config into a {@link ResolvedConfig}. */
143
+ declare function resolveConfig(config?: ClientConfig): ResolvedConfig;
144
+
145
+ /**
146
+ * Low-level HTTP transport for the Spotify Data API.
147
+ *
148
+ * Handles URL/query building, header injection (`x-rapidapi-key` + host),
149
+ * timeouts, retries with backoff (429 / 5xx / network, honoring `Retry-After`),
150
+ * envelope unwrapping and uniform error mapping.
151
+ *
152
+ * The high-level {@link SpotifyApiClient} extends this and adds the typed
153
+ * resource namespaces.
154
+ */
155
+ declare class SpotifyHttpClient {
156
+ readonly config: ResolvedConfig;
157
+ constructor(config: ClientConfig);
158
+ /** Perform a request and return the full {@link SuccessEnvelope}. */
159
+ request<T = unknown>(options: RequestOptions): Promise<SuccessEnvelope<T>>;
160
+ /** GET a path and return the unwrapped `data` payload. */
161
+ get<T = unknown>(path: string, query?: QueryParams$1, options?: RequestOverrides): Promise<T>;
162
+ /** POST a JSON body and return the unwrapped `data` payload. */
163
+ post<T = unknown>(path: string, body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<T>;
164
+ /** DELETE a path and return the unwrapped `data` payload. */
165
+ delete<T = unknown>(path: string, query?: QueryParams$1, options?: RequestOverrides): Promise<T>;
166
+ private buildUrl;
167
+ private backoff;
168
+ }
169
+
170
+ /**
171
+ * Base class for every resource namespace. Holds a reference to the transport
172
+ * client so resource methods can call `this.client.get/post/delete`.
173
+ */
174
+ declare abstract class Resource {
175
+ protected readonly client: SpotifyHttpClient;
176
+ constructor(client: SpotifyHttpClient);
177
+ }
178
+ /**
179
+ * Interpolate `{name}` placeholders in a path template, URL-encoding each value.
180
+ * `id`-like params accept a Spotify ID, URI, or URL (reduced to the bare ID).
181
+ */
182
+ declare function buildPath(template: string, params: Record<string, string | number>): string;
183
+
184
+ /**
185
+ * AI-powered analysis endpoints.
186
+ *
187
+ * Every analysis endpoint accepts a free-form JSON body (the subject to
188
+ * analyze plus any options), so these methods take an untyped `body`.
189
+ * Responses are not part of the generated type set and are returned as
190
+ * `unknown`.
191
+ */
192
+ declare class AiResource extends Resource {
193
+ /** AI module health. */
194
+ health(query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
195
+ /** List the supported AI analysis types. */
196
+ types(query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
197
+ /** Run a generic AI analysis. */
198
+ analyze(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
199
+ /** Analyze chart trends. */
200
+ chartTrends(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
201
+ /** Generate an AI artist summary. */
202
+ artistSummary(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
203
+ /** Generate an AI album review. */
204
+ albumReview(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
205
+ /** Generate an AI track deep dive. */
206
+ trackDeepDive(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
207
+ /** Curate a playlist with AI. */
208
+ playlistCurator(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
209
+ /** Generate an AI market comparison. */
210
+ marketComparison(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
211
+ /** Generate an AI genre landscape. */
212
+ genreLandscape(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
213
+ /** Generate an AI mood profile. */
214
+ moodProfile(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
215
+ /** Assess viral potential with AI. */
216
+ viralPotential(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
217
+ /** Run a custom AI prompt. */
218
+ custom(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
219
+ }
220
+
221
+ type GetAlbumMetadataData = GetAlbumMetadataDataClass;
222
+ type GetArtistAppearsOnData = GetArtistData;
223
+ type GetArtistDiscographyOverviewData = GetArtistData;
224
+ type GetArtistDiscoveredOnData = GetArtistData;
225
+ type GetArtistFeaturingData = GetArtistData;
226
+ type GetArtistTopTracksData = GetTracksData;
227
+ type GetBrowseCategoriesIdData = GetBrowseCategoriesidData;
228
+ type GetBrowseRecommendationsData = string;
229
+ type GetShowsIdData = GetShowsidData;
230
+ type GetTop200TracksData = GetTop200TracksDatum[];
231
+ type GetTop20ByFollowersData = GetTop20ByFollowersDatum[];
232
+ type GetTop20ByMonthlyListenersData = GetTop20ByMonthlyListenersDatum[];
233
+ type GetTopAlbumsData = GetSDatum[];
234
+ type GetTopArtistsData = GetSDatum[];
235
+ type GetTrackLyricsData = GetSearchLyricsData;
236
+ type GetViralTracksData = GetSDatum[];
237
+ interface GetAlbumMetadataBatchData {
238
+ results: GetAlbumMetadataBatchDataResult[];
239
+ }
240
+ interface GetAlbumMetadataBatchDataResult {
241
+ id: string;
242
+ metadata: Metadata;
243
+ error: null;
244
+ }
245
+ interface Metadata {
246
+ data: GetAlbumMetadataDataClass;
247
+ }
248
+ interface GetAlbumMetadataDataClass {
249
+ album: GetAlbumMetadataDataAlbum;
250
+ }
251
+ interface GetAlbumMetadataDataAlbum {
252
+ uri: string;
253
+ name: string;
254
+ artists: ReleasesClass;
255
+ coverArt: CoverArt;
256
+ discs: Discs;
257
+ tracks: PurpleTracks;
258
+ releases: ReleasesClass;
259
+ type: LatestType;
260
+ date: ReleaseDateClass;
261
+ playability: LatestPlayability;
262
+ label: string;
263
+ copyright: AlbumCopyright;
264
+ courtesyLine: string;
265
+ sharingInfo: AlbumSharingInfo;
266
+ moreAlbumsByArtist: AlbumMoreAlbumsByArtist;
267
+ }
268
+ interface ReleasesClass {
269
+ totalCount: number;
270
+ items: ItemClass[];
271
+ }
272
+ interface ItemClass {
273
+ id: string;
274
+ uri: string;
275
+ profile: UserLocationClass;
276
+ visuals?: ItemVisuals;
277
+ sharingInfo?: PurpleSharingInfo;
278
+ relatedContent?: ItemRelatedContent;
279
+ }
280
+ interface UserLocationClass {
281
+ name: string;
282
+ }
283
+ interface ItemRelatedContent {
284
+ relatedArtists: RelatedArtists;
285
+ }
286
+ interface RelatedArtists {
287
+ totalCount: number;
288
+ items: RelatedArtistsItem[];
289
+ }
290
+ interface RelatedArtistsItem {
291
+ id: string;
292
+ uri: string;
293
+ profile: UserLocationClass;
294
+ visuals: ItemVisuals;
295
+ }
296
+ interface ItemVisuals {
297
+ avatarImage: AvatarImageElement;
298
+ }
299
+ interface AvatarImageElement {
300
+ sources: Icon[];
301
+ }
302
+ interface Icon {
303
+ url: string;
304
+ height: number | null;
305
+ width: number | null;
306
+ }
307
+ interface PurpleSharingInfo {
308
+ shareUrl: string;
309
+ }
310
+ interface AlbumCopyright {
311
+ totalCount: number;
312
+ items: BiographyElement[];
313
+ }
314
+ interface BiographyElement {
315
+ type: BiographyType;
316
+ text: string;
317
+ }
318
+ declare enum BiographyType {
319
+ Autobiography = "AUTOBIOGRAPHY",
320
+ C = "C",
321
+ P = "P"
322
+ }
323
+ interface CoverArt {
324
+ extractedColors: PurpleExtractedColors;
325
+ sources: Icon[];
326
+ }
327
+ interface PurpleExtractedColors {
328
+ colorRaw: Color;
329
+ colorLight: Color;
330
+ colorDark: Color;
331
+ }
332
+ interface Color {
333
+ hex: string;
334
+ }
335
+ interface ReleaseDateClass {
336
+ isoString: Date;
337
+ precision: Precision;
338
+ }
339
+ declare enum Precision {
340
+ Day = "DAY",
341
+ Minute = "MINUTE"
342
+ }
343
+ interface Discs {
344
+ totalCount: number;
345
+ items: DiscsItem[];
346
+ }
347
+ interface DiscsItem {
348
+ number: number;
349
+ tracks: AlbumsV2;
350
+ }
351
+ interface AlbumsV2 {
352
+ totalCount: number;
353
+ }
354
+ interface AlbumMoreAlbumsByArtist {
355
+ items: PurpleItem[];
356
+ }
357
+ interface PurpleItem {
358
+ discography: PurpleDiscography;
359
+ }
360
+ interface PurpleDiscography {
361
+ popularReleases: PopularReleases;
362
+ }
363
+ interface PopularReleases {
364
+ items: FluffyItem[];
365
+ }
366
+ interface FluffyItem {
367
+ releases: PurplePopularReleasesAlbums;
368
+ }
369
+ interface PurplePopularReleasesAlbums {
370
+ items: TentacledItem[];
371
+ }
372
+ interface TentacledItem {
373
+ id: string;
374
+ uri: string;
375
+ name: string;
376
+ date: PurpleDate;
377
+ coverArt: AvatarImageElement;
378
+ playability?: LatestPlayability;
379
+ sharingInfo: AlbumSharingInfo;
380
+ artists?: ItemArtists;
381
+ type?: LatestType;
382
+ }
383
+ interface ItemArtists {
384
+ items: StickyItem[];
385
+ }
386
+ interface StickyItem {
387
+ uri: string;
388
+ profile: UserLocationClass;
389
+ }
390
+ interface PurpleDate {
391
+ year: number;
392
+ }
393
+ interface LatestPlayability {
394
+ playable: boolean;
395
+ reason: PurpleReason;
396
+ }
397
+ declare enum PurpleReason {
398
+ CountryRestricted = "COUNTRY_RESTRICTED",
399
+ Playable = "PLAYABLE"
400
+ }
401
+ interface AlbumSharingInfo {
402
+ shareId: string;
403
+ shareUrl: string;
404
+ }
405
+ declare enum LatestType {
406
+ Album = "ALBUM",
407
+ Compilation = "COMPILATION",
408
+ Ep = "EP",
409
+ Single = "SINGLE"
410
+ }
411
+ interface PurpleTracks {
412
+ totalCount: number;
413
+ items: IndigoItem[];
414
+ }
415
+ interface IndigoItem {
416
+ track: PurpleTrack;
417
+ }
418
+ interface PurpleTrack {
419
+ playability: LatestPlayability;
420
+ duration: TrackDurationClass;
421
+ }
422
+ interface TrackDurationClass {
423
+ totalMilliseconds: number;
424
+ }
425
+ interface GetAlbumTracksData {
426
+ album: GetAlbumTracksDataAlbum;
427
+ }
428
+ interface GetAlbumTracksDataAlbum {
429
+ playability: AlbumOfTrackPlayability;
430
+ tracks: FluffyTracks;
431
+ }
432
+ interface AlbumOfTrackPlayability {
433
+ playable: boolean;
434
+ }
435
+ interface FluffyTracks {
436
+ totalCount: number;
437
+ items: IndecentItem[];
438
+ }
439
+ interface IndecentItem {
440
+ uid: string;
441
+ track: FluffyTrack;
442
+ }
443
+ interface FluffyTrack {
444
+ uri: string;
445
+ name: string;
446
+ playcount: string;
447
+ discNumber: number;
448
+ trackNumber: number;
449
+ contentRating: ContentRating;
450
+ relinkingInformation: PurpleRelinkingInformation;
451
+ duration: TrackDurationClass;
452
+ playability: AlbumOfTrackPlayability;
453
+ artists: ItemArtists;
454
+ }
455
+ interface ContentRating {
456
+ label: Label;
457
+ }
458
+ declare enum Label {
459
+ Explicit = "EXPLICIT",
460
+ None = "NONE"
461
+ }
462
+ interface PurpleRelinkingInformation {
463
+ uri: string;
464
+ isRelinked: boolean;
465
+ }
466
+ interface GetAlbumsData {
467
+ albums: GetAlbumsDataAlbum[];
468
+ }
469
+ interface GetAlbumsDataAlbum {
470
+ album_type: AlbumAlbumType;
471
+ total_tracks: number;
472
+ available_markets: any[];
473
+ external_urls: ExternalUrls;
474
+ href: string;
475
+ id: string;
476
+ images: Icon[];
477
+ name: string;
478
+ release_date: Date;
479
+ release_date_precision: ReleaseDatePrecision;
480
+ type: AlbumAlbumType;
481
+ uri: string;
482
+ artists: Owner[];
483
+ tracks: AlbumsClass;
484
+ copyrights: BiographyElement[];
485
+ external_ids: AlbumExternalids;
486
+ genres: any[];
487
+ label: string;
488
+ popularity: number;
489
+ }
490
+ declare enum AlbumAlbumType {
491
+ Album = "album",
492
+ Compilation = "compilation",
493
+ Ep = "ep",
494
+ Single = "single"
495
+ }
496
+ interface Owner {
497
+ external_urls: ExternalUrls;
498
+ href: string;
499
+ id: string;
500
+ name?: string;
501
+ type: OwnerType;
502
+ uri: string;
503
+ display_name?: OwnerEnum;
504
+ }
505
+ declare enum OwnerEnum {
506
+ Spotify = "Spotify"
507
+ }
508
+ interface ExternalUrls {
509
+ spotify: string;
510
+ }
511
+ declare enum OwnerType {
512
+ Artist = "artist",
513
+ User = "user"
514
+ }
515
+ interface AlbumExternalids {
516
+ upc: string;
517
+ }
518
+ declare enum ReleaseDatePrecision {
519
+ Day = "day",
520
+ Empty = ""
521
+ }
522
+ interface AlbumsClass {
523
+ href: string;
524
+ limit: number;
525
+ next: null;
526
+ offset: number;
527
+ previous: null;
528
+ total: number;
529
+ items: TracksTrack[];
530
+ }
531
+ interface TracksTrack {
532
+ artists: Owner[];
533
+ disc_number: number;
534
+ track_number: number;
535
+ duration_ms: number;
536
+ explicit: boolean;
537
+ external_urls: ExternalUrls;
538
+ href: string;
539
+ id: string;
540
+ is_local: boolean;
541
+ name: string;
542
+ preview_url: null;
543
+ type: TrackType;
544
+ uri: string;
545
+ external_ids: ItemExternalids;
546
+ album?: ItemElement;
547
+ is_playable?: boolean;
548
+ popularity?: number;
549
+ available_markets?: Market[];
550
+ }
551
+ interface ItemElement {
552
+ album_type: AlbumAlbumType;
553
+ artists: Owner[];
554
+ external_urls: ExternalUrls;
555
+ href: string;
556
+ id: string;
557
+ images: Icon[];
558
+ is_playable?: boolean;
559
+ name: string;
560
+ release_date: string;
561
+ release_date_precision: ReleaseDatePrecision;
562
+ total_tracks: number | null;
563
+ type: AlbumAlbumType;
564
+ uri: string;
565
+ available_markets?: Market[];
566
+ restrictions?: PlayabilityClass;
567
+ }
568
+ declare enum Market {
569
+ AE = "AE",
570
+ Ad = "AD",
571
+ Ag = "AG",
572
+ Al = "AL",
573
+ Am = "AM",
574
+ Ao = "AO",
575
+ Ar = "AR",
576
+ At = "AT",
577
+ Au = "AU",
578
+ Az = "AZ",
579
+ BI = "BI",
580
+ BT = "BT",
581
+ BW = "BW",
582
+ Ba = "BA",
583
+ Bb = "BB",
584
+ Bd = "BD",
585
+ Be = "BE",
586
+ Bf = "BF",
587
+ Bg = "BG",
588
+ Bh = "BH",
589
+ Bj = "BJ",
590
+ Bn = "BN",
591
+ Bo = "BO",
592
+ Br = "BR",
593
+ Bs = "BS",
594
+ By = "BY",
595
+ Bz = "BZ",
596
+ CA = "CA",
597
+ CD = "CD",
598
+ CG = "CG",
599
+ CM = "CM",
600
+ CR = "CR",
601
+ Ch = "CH",
602
+ Ci = "CI",
603
+ Cl = "CL",
604
+ Co = "CO",
605
+ Cv = "CV",
606
+ Cw = "CW",
607
+ Cy = "CY",
608
+ Cz = "CZ",
609
+ De = "DE",
610
+ Dj = "DJ",
611
+ Dk = "DK",
612
+ Dm = "DM",
613
+ Do = "DO",
614
+ Dz = "DZ",
615
+ Ec = "EC",
616
+ Ee = "EE",
617
+ Eg = "EG",
618
+ Es = "ES",
619
+ Et = "ET",
620
+ Fi = "FI",
621
+ Fj = "FJ",
622
+ Fm = "FM",
623
+ Fr = "FR",
624
+ GB = "GB",
625
+ Ga = "GA",
626
+ Gd = "GD",
627
+ Ge = "GE",
628
+ Gh = "GH",
629
+ Gm = "GM",
630
+ Gn = "GN",
631
+ Gq = "GQ",
632
+ Gr = "GR",
633
+ Gt = "GT",
634
+ Gw = "GW",
635
+ Gy = "GY",
636
+ HT = "HT",
637
+ Hk = "HK",
638
+ Hn = "HN",
639
+ Hr = "HR",
640
+ Hu = "HU",
641
+ ID = "ID",
642
+ IL = "IL",
643
+ Ie = "IE",
644
+ In = "IN",
645
+ Iq = "IQ",
646
+ Is = "IS",
647
+ It = "IT",
648
+ Jm = "JM",
649
+ Jo = "JO",
650
+ Jp = "JP",
651
+ KM = "KM",
652
+ Ke = "KE",
653
+ Kg = "KG",
654
+ Kh = "KH",
655
+ Ki = "KI",
656
+ Kn = "KN",
657
+ Kr = "KR",
658
+ Kw = "KW",
659
+ Kz = "KZ",
660
+ LB = "LB",
661
+ LV = "LV",
662
+ La = "LA",
663
+ Lc = "LC",
664
+ Li = "LI",
665
+ Lk = "LK",
666
+ Lr = "LR",
667
+ Ls = "LS",
668
+ Lt = "LT",
669
+ Lu = "LU",
670
+ Ly = "LY",
671
+ MT = "MT",
672
+ MX = "MX",
673
+ Ma = "MA",
674
+ Mc = "MC",
675
+ Md = "MD",
676
+ Me = "ME",
677
+ Mg = "MG",
678
+ Mh = "MH",
679
+ Mk = "MK",
680
+ Ml = "ML",
681
+ Mn = "MN",
682
+ Mo = "MO",
683
+ Mr = "MR",
684
+ Mu = "MU",
685
+ Mv = "MV",
686
+ Mw = "MW",
687
+ My = "MY",
688
+ Mz = "MZ",
689
+ NI = "NI",
690
+ NP = "NP",
691
+ Na = "NA",
692
+ Ne = "NE",
693
+ Ng = "NG",
694
+ Nl = "NL",
695
+ No = "NO",
696
+ Nr = "NR",
697
+ Nz = "NZ",
698
+ Om = "OM",
699
+ PE = "PE",
700
+ PG = "PG",
701
+ PR = "PR",
702
+ PS = "PS",
703
+ Pa = "PA",
704
+ Ph = "PH",
705
+ Pk = "PK",
706
+ Pl = "PL",
707
+ Pt = "PT",
708
+ Pw = "PW",
709
+ Py = "PY",
710
+ QA = "QA",
711
+ Ro = "RO",
712
+ Rs = "RS",
713
+ Rw = "RW",
714
+ SE = "SE",
715
+ Sa = "SA",
716
+ Sb = "SB",
717
+ Sc = "SC",
718
+ Sg = "SG",
719
+ Si = "SI",
720
+ Sk = "SK",
721
+ Sl = "SL",
722
+ Sm = "SM",
723
+ Sn = "SN",
724
+ Sr = "SR",
725
+ St = "ST",
726
+ Sv = "SV",
727
+ Sz = "SZ",
728
+ Td = "TD",
729
+ Tg = "TG",
730
+ Th = "TH",
731
+ Tj = "TJ",
732
+ Tl = "TL",
733
+ Tn = "TN",
734
+ To = "TO",
735
+ Tr = "TR",
736
+ Tt = "TT",
737
+ Tv = "TV",
738
+ Tw = "TW",
739
+ Tz = "TZ",
740
+ Ua = "UA",
741
+ Ug = "UG",
742
+ Us = "US",
743
+ Uy = "UY",
744
+ Uz = "UZ",
745
+ Vc = "VC",
746
+ Ve = "VE",
747
+ Vn = "VN",
748
+ Vu = "VU",
749
+ Ws = "WS",
750
+ Xk = "XK",
751
+ Za = "ZA",
752
+ Zm = "ZM",
753
+ Zw = "ZW"
754
+ }
755
+ interface PlayabilityClass {
756
+ reason: RestrictionsReason;
757
+ }
758
+ declare enum RestrictionsReason {
759
+ Empty = "",
760
+ Playable = "PLAYABLE"
761
+ }
762
+ interface ItemExternalids {
763
+ isrc: string;
764
+ }
765
+ declare enum TrackType {
766
+ Track = "track"
767
+ }
768
+ interface GetArtistAlbumsData {
769
+ artist: GetArtistAlbumsDataArtist;
770
+ }
771
+ interface GetArtistAlbumsDataArtist {
772
+ discography: FluffyDiscography;
773
+ }
774
+ interface FluffyDiscography {
775
+ albums: PurpleAlbums;
776
+ }
777
+ interface PurpleAlbums {
778
+ totalCount: number;
779
+ items: HilariousItem[];
780
+ }
781
+ interface HilariousItem {
782
+ releases: PurpleReleases;
783
+ }
784
+ interface PurpleReleases {
785
+ items: AmbitiousItem[];
786
+ }
787
+ interface AmbitiousItem {
788
+ id: string;
789
+ uri: string;
790
+ name: string;
791
+ type: LatestType;
792
+ date: FluffyDate;
793
+ coverArt: AvatarImageElement;
794
+ playability: LatestPlayability;
795
+ sharingInfo: AlbumSharingInfo;
796
+ tracks: AlbumsV2;
797
+ }
798
+ interface FluffyDate {
799
+ year: number;
800
+ isoString: Date;
801
+ }
802
+ interface GetArtistData {
803
+ artist: GetArtistAppearsOnDataArtist;
804
+ }
805
+ interface GetArtistAppearsOnDataArtist {
806
+ id: string;
807
+ uri: string;
808
+ profile: UserLocationClass;
809
+ relatedContent?: PurpleRelatedContent;
810
+ discography?: TentacledDiscography;
811
+ visuals?: ItemVisuals;
812
+ }
813
+ interface TentacledDiscography {
814
+ albums: AlbumsV2;
815
+ singles: AlbumsV2;
816
+ compilations: AlbumsV2;
817
+ all: AlbumsV2;
818
+ }
819
+ interface PurpleRelatedContent {
820
+ appearsOn?: PurpleAppearsOn;
821
+ discoveredOn?: DiscoveredOn;
822
+ featuring?: DiscoveredOn;
823
+ }
824
+ interface PurpleAppearsOn {
825
+ totalCount: number;
826
+ items: CunningItem[];
827
+ }
828
+ interface CunningItem {
829
+ releases: FluffyReleases;
830
+ }
831
+ interface FluffyReleases {
832
+ totalCount: number;
833
+ items: MagentaItem[];
834
+ }
835
+ interface MagentaItem {
836
+ uri: string;
837
+ id: string;
838
+ name: string;
839
+ artists: ItemArtists;
840
+ coverArt: AvatarImageElement;
841
+ sharingInfo: AlbumSharingInfo;
842
+ type?: LatestType;
843
+ date?: PurpleDate;
844
+ }
845
+ interface DiscoveredOn {
846
+ totalCount: number;
847
+ items: DiscoveredOnItem[];
848
+ }
849
+ interface DiscoveredOnItem {
850
+ uri: string;
851
+ id: string;
852
+ owner: UserLocationClass;
853
+ name: string;
854
+ description: string;
855
+ images: ItemImages;
856
+ }
857
+ interface ItemImages {
858
+ totalCount: number;
859
+ items: AvatarImageElement[];
860
+ }
861
+ interface GetArtistCompareData {
862
+ artists: GetArtistCompareDataArtist[];
863
+ comparison: Comparison;
864
+ }
865
+ interface GetArtistCompareDataArtist {
866
+ id: string;
867
+ name: string;
868
+ popularity: number;
869
+ followers: number;
870
+ genres: string[];
871
+ images: Icon[];
872
+ topTracks: TopTrack[];
873
+ }
874
+ interface TopTrack {
875
+ id: string;
876
+ name: string;
877
+ popularity: number;
878
+ album: string;
879
+ }
880
+ interface Comparison {
881
+ genreOverlap: any[];
882
+ relatedArtistOverlap: any[];
883
+ followerRatios: FollowerRatio[];
884
+ }
885
+ interface FollowerRatio {
886
+ id: string;
887
+ name: string;
888
+ ratio: number;
889
+ }
890
+ interface GetArtistOverviewBatchData {
891
+ results: GetArtistOverviewBatchDataResult[];
892
+ }
893
+ interface GetArtistOverviewBatchDataResult {
894
+ id: string;
895
+ overview: Overview;
896
+ error: null;
897
+ }
898
+ interface Overview {
899
+ data: OverviewData;
900
+ }
901
+ interface OverviewData {
902
+ artist: DataArtist;
903
+ }
904
+ interface DataArtist {
905
+ id: string;
906
+ uri: string;
907
+ following: boolean;
908
+ sharingInfo: AlbumSharingInfo;
909
+ profile: PurpleProfile;
910
+ visuals: PurpleVisuals;
911
+ discography: StickyDiscography;
912
+ stats: ArtistStats;
913
+ relatedContent: FluffyRelatedContent;
914
+ goods: ArtistGoods;
915
+ }
916
+ interface StickyDiscography {
917
+ latest: PurpleLatest;
918
+ popularReleases: CompilationsClass;
919
+ singles: CompilationsClass;
920
+ albums: CompilationsClass;
921
+ compilations: CompilationsClass;
922
+ topTracks: PurpleTopTracks;
923
+ }
924
+ interface CompilationsClass {
925
+ totalCount: number;
926
+ items: CompilationsItem[];
927
+ }
928
+ interface CompilationsItem {
929
+ releases: TentacledReleases;
930
+ }
931
+ interface TentacledReleases {
932
+ items: LatestElement[];
933
+ }
934
+ interface LatestElement {
935
+ id: string;
936
+ uri: string;
937
+ name: string;
938
+ type: LatestType;
939
+ copyright: LatestCopyright;
940
+ date: TentacledDate;
941
+ coverArt: AvatarImageElement;
942
+ tracks: AlbumsV2;
943
+ label: LabelEnum;
944
+ playability: LatestPlayability;
945
+ sharingInfo: AlbumSharingInfo;
946
+ }
947
+ interface LatestCopyright {
948
+ items: BiographyElement[];
949
+ }
950
+ interface TentacledDate {
951
+ year: number;
952
+ month: number;
953
+ day: number;
954
+ precision: Precision;
955
+ }
956
+ declare enum LabelEnum {
957
+ CashMoneyDrakeLP6 = "Cash Money/Drake LP6",
958
+ CashMoneyRecordsYoungMoneyEntUniversalRec = "Cash Money Records/Young Money Ent./Universal Rec.",
959
+ OVORepublic = "OVO/Republic",
960
+ OVORepublicRecords = "OVO / Republic Records",
961
+ OVOSound = "OVO Sound",
962
+ Ovo = "OVO",
963
+ TaylorSwift = "Taylor Swift",
964
+ The4BatzOVOSound = "4batz / OVO Sound",
965
+ UltraRecordsLLC = "Ultra Records, LLC",
966
+ WaltDisneyRecordsPixar = "Walt Disney Records / Pixar"
967
+ }
968
+ interface PurpleLatest {
969
+ id: string;
970
+ uri: string;
971
+ name: string;
972
+ type: LatestType;
973
+ copyright: LatestCopyright;
974
+ date: PurpleDate;
975
+ coverArt: AvatarImageElement;
976
+ tracks: AlbumsV2;
977
+ label: LabelEnum;
978
+ playability: LatestPlayability;
979
+ }
980
+ interface PurpleTopTracks {
981
+ items: FriskyItem[];
982
+ }
983
+ interface FriskyItem {
984
+ uid: string;
985
+ track: TentacledTrack;
986
+ }
987
+ interface TentacledTrack {
988
+ id: string;
989
+ uri: string;
990
+ name: string;
991
+ playcount: string;
992
+ discNumber: number;
993
+ duration: TrackDurationClass;
994
+ playability: LatestPlayability;
995
+ contentRating: ContentRating;
996
+ artists: ItemArtists;
997
+ album?: AlbumOfTrackClass;
998
+ albumOfTrack?: AlbumOfTrackClass;
999
+ associationsV3?: PurpleAssociationsV3;
1000
+ }
1001
+ interface AlbumOfTrackClass {
1002
+ uri: string;
1003
+ coverArt: BackgroundImageClass;
1004
+ }
1005
+ interface BackgroundImageClass {
1006
+ sources: VideoThumbnail[];
1007
+ }
1008
+ interface VideoThumbnail {
1009
+ url: null | string;
1010
+ }
1011
+ interface PurpleAssociationsV3 {
1012
+ videoAssociations: AlbumsV2;
1013
+ }
1014
+ interface ArtistGoods {
1015
+ events: Events;
1016
+ merch: PurpleMerch;
1017
+ }
1018
+ interface Events {
1019
+ userLocation: UserLocationClass;
1020
+ concerts: EventsConcerts;
1021
+ }
1022
+ interface EventsConcerts {
1023
+ totalCount: number;
1024
+ items: any[];
1025
+ pagingInfo: ConcertsPagingInfo;
1026
+ }
1027
+ interface ConcertsPagingInfo {
1028
+ limit: number;
1029
+ }
1030
+ interface PurpleMerch {
1031
+ items: MischievousItem[];
1032
+ }
1033
+ interface MischievousItem {
1034
+ uri: string;
1035
+ description: string;
1036
+ imageUri: string;
1037
+ name: string;
1038
+ url: string;
1039
+ }
1040
+ interface PurpleProfile {
1041
+ name: string;
1042
+ verified: boolean;
1043
+ pinnedItem: PurplePinnedItem;
1044
+ biography: SignifierClass;
1045
+ externalLinks: ExternalLinks;
1046
+ playlists: ProfilePlaylists;
1047
+ }
1048
+ interface SignifierClass {
1049
+ text: string;
1050
+ }
1051
+ interface ExternalLinks {
1052
+ items: ExternalLinksItem[];
1053
+ }
1054
+ interface ExternalLinksItem {
1055
+ name: string;
1056
+ url: string;
1057
+ }
1058
+ interface PurplePinnedItem {
1059
+ comment: string;
1060
+ type: string;
1061
+ item: ArtistElement;
1062
+ }
1063
+ interface ArtistElement {
1064
+ uri: string;
1065
+ name: string;
1066
+ coverArt?: AvatarImageElement;
1067
+ type?: PurpleType;
1068
+ images?: ImagesClass;
1069
+ artists?: ItemArtists;
1070
+ id?: string;
1071
+ }
1072
+ interface ImagesClass {
1073
+ items: AvatarImageElement[];
1074
+ }
1075
+ declare enum PurpleType {
1076
+ Artist = "artist",
1077
+ Single = "SINGLE"
1078
+ }
1079
+ interface ProfilePlaylists {
1080
+ totalCount: number;
1081
+ items: BraggadociousItem[];
1082
+ }
1083
+ interface BraggadociousItem {
1084
+ uri: string;
1085
+ name: string;
1086
+ description: string;
1087
+ owner: UserLocationClass;
1088
+ images: ImagesClass;
1089
+ }
1090
+ interface FluffyRelatedContent {
1091
+ appearsOn: FluffyAppearsOn;
1092
+ featuring: DiscoveredOn;
1093
+ discoveredOn: DiscoveredOn;
1094
+ relatedArtists: RelatedArtists;
1095
+ }
1096
+ interface FluffyAppearsOn {
1097
+ totalCount: number;
1098
+ items: Item1[];
1099
+ }
1100
+ interface Item1 {
1101
+ releases: StickyReleases;
1102
+ }
1103
+ interface StickyReleases {
1104
+ totalCount: number;
1105
+ items: TentacledItem[];
1106
+ }
1107
+ interface ArtistStats {
1108
+ followers: number;
1109
+ monthlyListeners: number;
1110
+ worldRank: number;
1111
+ topCities: TopCities;
1112
+ }
1113
+ interface TopCities {
1114
+ items: TopCitiesItem[];
1115
+ }
1116
+ interface TopCitiesItem {
1117
+ numberOfListeners: number;
1118
+ city: string;
1119
+ country: Market;
1120
+ region: string;
1121
+ }
1122
+ interface PurpleVisuals {
1123
+ gallery: ImagesClass;
1124
+ avatarImage: HeaderImageClass;
1125
+ headerImage: HeaderImageClass;
1126
+ }
1127
+ interface HeaderImageClass {
1128
+ sources: Icon[];
1129
+ extractedColors: HeaderImageExtractedColors;
1130
+ }
1131
+ interface HeaderImageExtractedColors {
1132
+ colorRaw: Color;
1133
+ }
1134
+ interface GetArtistOverviewData {
1135
+ artistUnion: GetArtistOverviewDataArtistUnion;
1136
+ }
1137
+ interface GetArtistOverviewDataArtistUnion {
1138
+ __typename: ArtistUnionTypename;
1139
+ id: string;
1140
+ uri: string;
1141
+ sharingInfo: AlbumSharingInfo;
1142
+ profile: FluffyProfile;
1143
+ visuals: PurpleVisuals;
1144
+ discography: IndigoDiscography;
1145
+ stats: ArtistStats;
1146
+ relatedContent: ArtistUnionRelatedContent;
1147
+ goods: PurpleGoods;
1148
+ }
1149
+ declare enum ArtistUnionTypename {
1150
+ Album = "Album",
1151
+ Artist = "Artist",
1152
+ Playlist = "Playlist",
1153
+ Track = "Track",
1154
+ User = "User"
1155
+ }
1156
+ interface IndigoDiscography {
1157
+ latest: LatestElement;
1158
+ popularReleasesAlbums: PopularReleasesAlbums;
1159
+ singles: CompilationsClass;
1160
+ albums: CompilationsClass;
1161
+ compilations: CompilationsClass;
1162
+ topTracks: PurpleTopTracks;
1163
+ }
1164
+ interface PopularReleasesAlbums {
1165
+ totalCount: number;
1166
+ items: LatestElement[];
1167
+ }
1168
+ interface PurpleGoods {
1169
+ events: Events;
1170
+ merch: FluffyMerch;
1171
+ }
1172
+ interface FluffyMerch {
1173
+ items: Item2[];
1174
+ }
1175
+ interface Item2 {
1176
+ image: BackgroundImageClass;
1177
+ name?: string;
1178
+ description: string;
1179
+ price: string;
1180
+ uri: string;
1181
+ url: string;
1182
+ nameV2?: string;
1183
+ }
1184
+ interface FluffyProfile {
1185
+ name: LabelEnum;
1186
+ verified: boolean;
1187
+ pinnedItem: FluffyPinnedItem;
1188
+ biography: BiographyElement;
1189
+ externalLinks: ExternalLinks;
1190
+ playlistsV2: PlaylistsV2;
1191
+ }
1192
+ interface FluffyPinnedItem {
1193
+ comment: string;
1194
+ type: LatestType;
1195
+ backgroundImage: BackgroundImageClass;
1196
+ itemV2: SearchTests;
1197
+ item: ArtistElement;
1198
+ }
1199
+ interface SearchTests {
1200
+ }
1201
+ interface PlaylistsV2 {
1202
+ totalCount: number;
1203
+ items: PlaylistsV2Item[];
1204
+ }
1205
+ interface PlaylistsV2Item {
1206
+ data: PurpleData;
1207
+ }
1208
+ interface PurpleData {
1209
+ __typename: ArtistUnionTypename;
1210
+ uri: string;
1211
+ name: string;
1212
+ description: string;
1213
+ ownerV2: PurpleOwnerV2;
1214
+ images: ImagesClass;
1215
+ }
1216
+ interface PurpleOwnerV2 {
1217
+ data: FluffyData;
1218
+ }
1219
+ interface FluffyData {
1220
+ __typename: ArtistUnionTypename;
1221
+ name: string;
1222
+ }
1223
+ interface ArtistUnionRelatedContent {
1224
+ appearsOn: PurpleAppearsOn;
1225
+ featuringV2: V2;
1226
+ discoveredOnV2: V2;
1227
+ relatedArtists: RelatedArtists;
1228
+ }
1229
+ interface V2 {
1230
+ totalCount: number;
1231
+ items: DiscoveredOnV2Item[];
1232
+ }
1233
+ interface DiscoveredOnV2Item {
1234
+ data: TentacledData;
1235
+ }
1236
+ interface TentacledData {
1237
+ __typename: PurpleTypename;
1238
+ uri?: string;
1239
+ id?: string;
1240
+ ownerV2?: PurpleOwnerV2;
1241
+ name?: string;
1242
+ description?: string;
1243
+ images?: ItemImages;
1244
+ }
1245
+ declare enum PurpleTypename {
1246
+ GenericError = "GenericError",
1247
+ Playlist = "Playlist"
1248
+ }
1249
+ interface GetArtistRelatedData {
1250
+ artist: ItemClass;
1251
+ }
1252
+ interface GetArtistSinglesData {
1253
+ artistUnion: GetArtistSinglesDataArtistUnion;
1254
+ }
1255
+ interface GetArtistSinglesDataArtistUnion {
1256
+ __typename: ArtistUnionTypename;
1257
+ discography: IndecentDiscography;
1258
+ }
1259
+ interface IndecentDiscography {
1260
+ singles: Singles;
1261
+ }
1262
+ interface Singles {
1263
+ items: AllItem[];
1264
+ totalCount: number;
1265
+ }
1266
+ interface AllItem {
1267
+ releases: IndigoReleases;
1268
+ }
1269
+ interface IndigoReleases {
1270
+ items: Item3[];
1271
+ }
1272
+ interface Item3 {
1273
+ coverArt: AvatarImageElement;
1274
+ date: AlbumOfTrackDate;
1275
+ id: string;
1276
+ name: string;
1277
+ playability: LatestPlayability;
1278
+ sharingInfo: AlbumSharingInfo;
1279
+ tracks: AlbumsV2;
1280
+ type: LatestType;
1281
+ uri: string;
1282
+ }
1283
+ interface AlbumOfTrackDate {
1284
+ isoString: Date;
1285
+ precision: Precision;
1286
+ year: number;
1287
+ }
1288
+ interface GetTracksData {
1289
+ tracks: TracksTrack[];
1290
+ }
1291
+ interface GetArtistsData {
1292
+ artists: GetArtistsDataArtist[];
1293
+ }
1294
+ interface GetArtistsDataArtist {
1295
+ external_urls: ExternalUrls;
1296
+ followers: Followers;
1297
+ genres: any[];
1298
+ href: string;
1299
+ id: string;
1300
+ images: Icon[];
1301
+ name: string;
1302
+ popularity: number;
1303
+ type: OwnerType;
1304
+ uri: string;
1305
+ }
1306
+ interface Followers {
1307
+ href: null | string;
1308
+ total: number | null;
1309
+ }
1310
+ interface GetAudiobooksData {
1311
+ audiobooks: null[];
1312
+ }
1313
+ interface GetBrowseCategoriesData {
1314
+ categories: Categories;
1315
+ }
1316
+ interface Categories {
1317
+ href: string;
1318
+ items: GetBrowseCategoriesidData[];
1319
+ limit: number;
1320
+ next: string;
1321
+ offset: number;
1322
+ previous: null;
1323
+ total: number;
1324
+ }
1325
+ interface GetBrowseCategoriesidData {
1326
+ href: string;
1327
+ id: string;
1328
+ icons: Icon[];
1329
+ name: string;
1330
+ }
1331
+ interface GetBrowseFeaturedPlaylistsData {
1332
+ message: string;
1333
+ playlists: GetBrowseFeaturedPlaylistsDataPlaylists;
1334
+ }
1335
+ interface GetBrowseFeaturedPlaylistsDataPlaylists {
1336
+ href: string;
1337
+ items: Item4[];
1338
+ limit: number;
1339
+ next: string;
1340
+ offset: number;
1341
+ previous: null;
1342
+ total: number;
1343
+ }
1344
+ interface Item4 {
1345
+ collaborative: boolean;
1346
+ description: string;
1347
+ external_urls: ExternalUrls;
1348
+ href: string;
1349
+ id: string;
1350
+ images: Icon[];
1351
+ name: string;
1352
+ owner: Owner;
1353
+ primary_color: PrimaryColor | null;
1354
+ public: boolean;
1355
+ snapshot_id: string;
1356
+ tracks: Followers;
1357
+ items: Followers;
1358
+ type: GetPlaylistDataType;
1359
+ uri: string;
1360
+ }
1361
+ declare enum PrimaryColor {
1362
+ Eb1E32 = "#eb1e32",
1363
+ Ffffff = "#ffffff",
1364
+ PrimaryColorFFFFFF = "#FFFFFF",
1365
+ The509Bf5 = "#509BF5"
1366
+ }
1367
+ declare enum GetPlaylistDataType {
1368
+ Playlist = "playlist"
1369
+ }
1370
+ interface GetBrowseNewReleasesData {
1371
+ albums: GetBrowseNewReleasesDataAlbums;
1372
+ }
1373
+ interface GetBrowseNewReleasesDataAlbums {
1374
+ href: string;
1375
+ items: ItemElement[];
1376
+ limit: number;
1377
+ next: string;
1378
+ offset: number;
1379
+ previous: null;
1380
+ total: number;
1381
+ }
1382
+ interface GetCacheStatsData {
1383
+ hits: number;
1384
+ misses: number;
1385
+ bypasses: number;
1386
+ errors: number;
1387
+ hitRate: string;
1388
+ }
1389
+ interface GetCookiesRedisData {
1390
+ status: string;
1391
+ instance: string;
1392
+ timestamp: Date;
1393
+ redis: Redis;
1394
+ stats: GetCookiesRedisDataStats;
1395
+ usage: GetCookiesRedisDataUsage;
1396
+ }
1397
+ interface Redis {
1398
+ connected: boolean;
1399
+ useRedis: boolean;
1400
+ }
1401
+ interface GetCookiesRedisDataStats {
1402
+ totalCookies: number;
1403
+ rotationIndex: number;
1404
+ removedCookies: number;
1405
+ validationAttempts: number;
1406
+ successfulValidations: number;
1407
+ failedValidations: number;
1408
+ validationSuccessRate: string;
1409
+ }
1410
+ interface GetCookiesRedisDataUsage {
1411
+ examples: PurpleExamples;
1412
+ notes: string[];
1413
+ }
1414
+ interface PurpleExamples {
1415
+ basic: string;
1416
+ showCookies: string;
1417
+ withMetadata: string;
1418
+ limited: string;
1419
+ }
1420
+ interface GetCredentialsStatusData {
1421
+ status: string;
1422
+ instance: string;
1423
+ timestamp: Date;
1424
+ primary: Dev;
1425
+ dev: Dev;
1426
+ redisKeys: RedisKeys;
1427
+ state: StateClass;
1428
+ chartsOAuth: OAuth;
1429
+ primaryOAuth: OAuth;
1430
+ usage: GetCredentialsStatusDataUsage;
1431
+ }
1432
+ interface OAuth {
1433
+ hasToken: boolean;
1434
+ hasRefreshToken: boolean;
1435
+ isExpired: boolean;
1436
+ expiresIn: number;
1437
+ scope: string;
1438
+ storageType: string;
1439
+ status?: Status;
1440
+ rotation?: Rotation;
1441
+ }
1442
+ interface Rotation {
1443
+ enabled: boolean;
1444
+ totalFiles: number;
1445
+ availableFiles: number;
1446
+ permanentlyRevokedFiles: number;
1447
+ assignedFile: string;
1448
+ currentFile: string;
1449
+ files: File[];
1450
+ }
1451
+ interface File {
1452
+ name: string;
1453
+ available: boolean;
1454
+ failureCount: number;
1455
+ assigned: boolean;
1456
+ permanentlyRevoked: boolean;
1457
+ }
1458
+ declare enum Status {
1459
+ Healthy = "healthy"
1460
+ }
1461
+ interface Dev {
1462
+ hasCookie: boolean;
1463
+ cookieLength: number;
1464
+ cookiePreview: string;
1465
+ cookieSource: string;
1466
+ hasToken: boolean;
1467
+ tokenLength: number;
1468
+ tokenPreview: string;
1469
+ tokenSource: string;
1470
+ cookieValid: null;
1471
+ }
1472
+ interface RedisKeys {
1473
+ cookies: string;
1474
+ devCookies: string;
1475
+ token: string;
1476
+ devToken: string;
1477
+ }
1478
+ interface StateClass {
1479
+ usingDevCredentials: boolean;
1480
+ isRefreshingCredentials: boolean;
1481
+ }
1482
+ interface GetCredentialsStatusDataUsage {
1483
+ examples: FluffyExamples;
1484
+ notes: string[];
1485
+ }
1486
+ interface FluffyExamples {
1487
+ basic: string;
1488
+ showSecrets: string;
1489
+ testCookies: string;
1490
+ full: string;
1491
+ }
1492
+ interface GetEpisodesData {
1493
+ episodes: null[];
1494
+ }
1495
+ interface GetHealthClusterData {
1496
+ clusterStatus: Status;
1497
+ totalInstances: number;
1498
+ healthyInstances: number;
1499
+ degradedInstances: number;
1500
+ unhealthyInstances: number;
1501
+ instances: GetHealthClusterDataInstance[];
1502
+ aggregatedMetrics: Metrics;
1503
+ timestamp: Date;
1504
+ diagnosticInfo: null;
1505
+ }
1506
+ interface Metrics {
1507
+ totalRequests: number;
1508
+ successCount: number;
1509
+ errorCount: number;
1510
+ successRate: number;
1511
+ averageResponseTime: number;
1512
+ }
1513
+ interface GetHealthClusterDataInstance {
1514
+ instanceId: string;
1515
+ instanceName: InstanceName;
1516
+ pid: number;
1517
+ uptime: number;
1518
+ lastHeartbeat: Date;
1519
+ metrics: Metrics;
1520
+ lastRequests: LastRequest[];
1521
+ status: Status;
1522
+ isClusterMode: boolean;
1523
+ }
1524
+ declare enum InstanceName {
1525
+ Trustpilot = "trustpilot",
1526
+ Trustpilotiso = "trustpilot_iso"
1527
+ }
1528
+ interface LastRequest {
1529
+ timestamp: Date;
1530
+ statusCode: number;
1531
+ endpoint: string;
1532
+ responseTime: number;
1533
+ success: boolean;
1534
+ }
1535
+ interface GetHealthClusterStrictData {
1536
+ healthy: boolean;
1537
+ status: Status;
1538
+ clusterStatus: Status;
1539
+ totalInstances: number;
1540
+ healthyInstances: number;
1541
+ degradedInstances: number;
1542
+ unhealthyInstances: number;
1543
+ instances: GetHealthClusterDataInstance[];
1544
+ aggregatedMetrics: Metrics;
1545
+ timestamp: Date;
1546
+ oauthTokenStatus: OauthTokenStatus;
1547
+ searchTests: SearchTests;
1548
+ lastRequestsTracking: LastRequestsTracking;
1549
+ note: string;
1550
+ }
1551
+ interface LastRequestsTracking {
1552
+ allHealthy: boolean;
1553
+ totalInstances: number;
1554
+ healthyInstances: number;
1555
+ unhealthyInstances: number;
1556
+ instances: LastRequestsTrackingInstance[];
1557
+ timestamp: number;
1558
+ }
1559
+ interface LastRequestsTrackingInstance {
1560
+ instanceId: string;
1561
+ healthy: boolean;
1562
+ lastRequests: Request[];
1563
+ failedRequests: Request[];
1564
+ lastUpdateTimestamp: number;
1565
+ }
1566
+ interface Request {
1567
+ endpoint: string;
1568
+ statusCode: number;
1569
+ duration: number;
1570
+ timestamp: number;
1571
+ success: boolean;
1572
+ queryParams?: QueryParams;
1573
+ }
1574
+ interface QueryParams {
1575
+ videoId: string;
1576
+ }
1577
+ interface OauthTokenStatus {
1578
+ chartsOAuth: OAuth;
1579
+ primaryOAuth: OAuth;
1580
+ }
1581
+ interface GetHealthInstanceData {
1582
+ status: Status;
1583
+ instance: string;
1584
+ timestamp: Date;
1585
+ windowSeconds: number;
1586
+ totalRequests: number;
1587
+ successCount: number;
1588
+ errorCount: number;
1589
+ successRate: number;
1590
+ averageResponseTime: number;
1591
+ statusCodeDistribution: StatusCodeDistribution;
1592
+ endpoints: {
1593
+ [key: string]: Endpoint;
1594
+ };
1595
+ lastRequests: LastRequest[];
1596
+ }
1597
+ interface Endpoint {
1598
+ count: number;
1599
+ successRate: number;
1600
+ }
1601
+ interface StatusCodeDistribution {
1602
+ '200': number;
1603
+ }
1604
+ interface GetHealthProxiesData {
1605
+ success: boolean;
1606
+ stats: GetHealthProxiesDataStats;
1607
+ instance: string;
1608
+ timestamp: Date;
1609
+ }
1610
+ interface GetHealthProxiesDataStats {
1611
+ totalCached: number;
1612
+ healthyCached: number;
1613
+ badProxies: number;
1614
+ avgLatencyMs: number;
1615
+ }
1616
+ interface GetIsrcLookupData {
1617
+ tracks: AlbumsClass;
1618
+ }
1619
+ interface GetMarketsData {
1620
+ markets: Market[];
1621
+ }
1622
+ interface GetPartnerAlbumData {
1623
+ albumUnion: AlbumUnion;
1624
+ }
1625
+ interface AlbumUnion {
1626
+ __typename: ArtistUnionTypename;
1627
+ copyright: AlbumCopyright;
1628
+ courtesyLine: string;
1629
+ date: ReleaseDateClass;
1630
+ isPreRelease: boolean;
1631
+ label: string;
1632
+ name: string;
1633
+ playability: LatestPlayability;
1634
+ preReleaseEndDateTime: null;
1635
+ sharingInfo: AlbumSharingInfo;
1636
+ tracksV2: TracksV2;
1637
+ type: LatestType;
1638
+ uri: string;
1639
+ visualIdentity: AlbumUnionVisualIdentity;
1640
+ watchFeedEntrypoint: WatchFeedEntrypoint;
1641
+ artists: ReleasesClass;
1642
+ coverArt: CoverArt;
1643
+ discs: Discs;
1644
+ releases: ReleasesClass;
1645
+ moreAlbumsByArtist: AlbumUnionMoreAlbumsByArtist;
1646
+ }
1647
+ interface AlbumUnionMoreAlbumsByArtist {
1648
+ items: Item5[];
1649
+ }
1650
+ interface Item5 {
1651
+ discography: HilariousDiscography;
1652
+ }
1653
+ interface HilariousDiscography {
1654
+ popularReleasesAlbums: PurplePopularReleasesAlbums;
1655
+ }
1656
+ interface TracksV2 {
1657
+ items: TracksV2Item[];
1658
+ totalCount: number;
1659
+ }
1660
+ interface TracksV2Item {
1661
+ track: StickyTrack;
1662
+ uid: string;
1663
+ }
1664
+ interface StickyTrack {
1665
+ artists: ItemArtists;
1666
+ associationsV3: PurpleAssociationsV3;
1667
+ contentRating: ContentRating;
1668
+ discNumber: number;
1669
+ duration: TrackDurationClass;
1670
+ name: string;
1671
+ playability: AlbumOfTrackPlayability;
1672
+ playcount: string;
1673
+ relinkingInformation: FluffyRelinkingInformation | null;
1674
+ trackNumber: number;
1675
+ uri: string;
1676
+ }
1677
+ interface FluffyRelinkingInformation {
1678
+ linkedTrack: LinkedTrack;
1679
+ }
1680
+ interface LinkedTrack {
1681
+ __typename: ArtistUnionTypename;
1682
+ uri: string;
1683
+ }
1684
+ interface AlbumUnionVisualIdentity {
1685
+ squareCoverImage: SquareCoverImageClass;
1686
+ }
1687
+ interface SquareCoverImageClass {
1688
+ __typename: SquareCoverImageTypename;
1689
+ extractedColorSet: ExtractedColorSet;
1690
+ }
1691
+ declare enum SquareCoverImageTypename {
1692
+ VisualIdentityImage = "VisualIdentityImage"
1693
+ }
1694
+ interface ExtractedColorSet {
1695
+ encoreBaseSetTextColor: EncoreBaseSetTextColor;
1696
+ highContrast: Contrast;
1697
+ higherContrast: Contrast;
1698
+ minContrast: Contrast;
1699
+ }
1700
+ interface EncoreBaseSetTextColor {
1701
+ alpha: number;
1702
+ blue: number;
1703
+ green: number;
1704
+ red: number;
1705
+ }
1706
+ interface Contrast {
1707
+ backgroundBase: EncoreBaseSetTextColor;
1708
+ backgroundTintedBase: EncoreBaseSetTextColor;
1709
+ textBase: EncoreBaseSetTextColor;
1710
+ textBrightAccent: EncoreBaseSetTextColor;
1711
+ textSubdued: EncoreBaseSetTextColor;
1712
+ }
1713
+ interface WatchFeedEntrypoint {
1714
+ entrypointUri: string;
1715
+ thumbnailImage: ThumbnailImage;
1716
+ video: Video | null;
1717
+ }
1718
+ interface ThumbnailImage {
1719
+ data: StickyData;
1720
+ }
1721
+ interface StickyData {
1722
+ __typename: FluffyTypename;
1723
+ imageId: string;
1724
+ imageIdType: string;
1725
+ sources: Source[];
1726
+ }
1727
+ declare enum FluffyTypename {
1728
+ ImageV2 = "ImageV2"
1729
+ }
1730
+ interface Source {
1731
+ imageFormat?: string;
1732
+ maxHeight: number;
1733
+ maxWidth: number;
1734
+ url: string;
1735
+ }
1736
+ interface Video {
1737
+ endTime: number;
1738
+ fileId: string;
1739
+ startTime: number;
1740
+ videoType: string;
1741
+ }
1742
+ interface GetPartnerArtistConcertsData {
1743
+ artistUnion: GetPartnerArtistConcertsDataArtistUnion;
1744
+ nearby: Nearby;
1745
+ concerts: GetPartnerArtistConcertsDataConcerts;
1746
+ }
1747
+ interface GetPartnerArtistConcertsDataArtistUnion {
1748
+ headerImage: ThumbnailImageClass;
1749
+ profile: UserLocationClass;
1750
+ uri: string;
1751
+ visuals: FluffyVisuals;
1752
+ }
1753
+ interface ThumbnailImageClass {
1754
+ data: BackgroundImageClass;
1755
+ }
1756
+ interface FluffyVisuals {
1757
+ avatarImage: AvatarImage;
1758
+ }
1759
+ interface AvatarImage {
1760
+ extractedColors: FluffyExtractedColors;
1761
+ }
1762
+ interface FluffyExtractedColors {
1763
+ colorDark: Color;
1764
+ }
1765
+ interface GetPartnerArtistConcertsDataConcerts {
1766
+ concerts: ImagesClass;
1767
+ }
1768
+ interface Nearby {
1769
+ concerts: ImagesClass;
1770
+ locationName: string;
1771
+ }
1772
+ interface GetPartnerArtistDiscographyData {
1773
+ artistUnion: GetPartnerArtistDiscographyDataArtistUnion;
1774
+ }
1775
+ interface GetPartnerArtistDiscographyDataArtistUnion {
1776
+ __typename: ArtistUnionTypename;
1777
+ discography: AmbitiousDiscography;
1778
+ }
1779
+ interface AmbitiousDiscography {
1780
+ all: Singles;
1781
+ }
1782
+ interface GetPartnerArtistOverviewData {
1783
+ artistUnion: GetPartnerArtistOverviewDataArtistUnion;
1784
+ }
1785
+ interface GetPartnerArtistOverviewDataArtistUnion {
1786
+ __typename: ArtistUnionTypename;
1787
+ discography: IndigoDiscography;
1788
+ goods: FluffyGoods;
1789
+ headerImage: HeaderImage;
1790
+ id: string;
1791
+ onPlatformReputationTrait: OnPlatformReputationTrait;
1792
+ preRelease: null;
1793
+ profile: TentacledProfile;
1794
+ relatedContent: ArtistUnionRelatedContent;
1795
+ relatedMusicVideos: RelatedMusicVideosClass;
1796
+ sharingInfo: AlbumSharingInfo;
1797
+ stats: ArtistStats;
1798
+ unmappedMusicVideosV2: RelatedMusicVideosClass;
1799
+ uri: string;
1800
+ visualIdentity: ArtistUnionVisualIdentity;
1801
+ visuals: TentacledVisuals;
1802
+ watchFeedEntrypoint: WatchFeedEntrypoint;
1803
+ }
1804
+ interface FluffyGoods {
1805
+ concerts: ReleasesClass;
1806
+ merch: FluffyMerch;
1807
+ }
1808
+ interface HeaderImage {
1809
+ data: ImageData;
1810
+ }
1811
+ interface ImageData {
1812
+ __typename: FluffyTypename;
1813
+ sources: Source[];
1814
+ }
1815
+ interface OnPlatformReputationTrait {
1816
+ verification: Verification;
1817
+ }
1818
+ interface Verification {
1819
+ isRegistered: boolean;
1820
+ isVerified: boolean;
1821
+ }
1822
+ interface TentacledProfile {
1823
+ biography: BiographyElement;
1824
+ externalLinks: ExternalLinks;
1825
+ name: LabelEnum;
1826
+ pinnedItem: TentacledPinnedItem;
1827
+ playlistsV2: PlaylistsV2;
1828
+ }
1829
+ interface TentacledPinnedItem {
1830
+ backgroundImageV2: null;
1831
+ comment: string;
1832
+ itemV2: PinnedItemItemV2;
1833
+ subtitle: string;
1834
+ thumbnailImage: ThumbnailImageClass;
1835
+ title: string;
1836
+ type: LatestType;
1837
+ uri: string;
1838
+ }
1839
+ interface PinnedItemItemV2 {
1840
+ __typename: ItemV2Typename;
1841
+ data: IndigoData;
1842
+ }
1843
+ declare enum ItemV2Typename {
1844
+ AlbumResponseWrapper = "AlbumResponseWrapper",
1845
+ ArtistResponseWrapper = "ArtistResponseWrapper",
1846
+ PlaylistResponseWrapper = "PlaylistResponseWrapper",
1847
+ SearchAutoCompleteEntity = "SearchAutoCompleteEntity",
1848
+ TrackResponseWrapper = "TrackResponseWrapper",
1849
+ UserResponseWrapper = "UserResponseWrapper"
1850
+ }
1851
+ interface IndigoData {
1852
+ __typename: ArtistUnionTypename;
1853
+ coverArt: AvatarImageElement;
1854
+ name: string;
1855
+ preReleaseEndDateTime: null;
1856
+ type: LatestType;
1857
+ uri: string;
1858
+ }
1859
+ interface RelatedMusicVideosClass {
1860
+ __typename?: string;
1861
+ items: RelatedMusicVideosItem[];
1862
+ pagingInfo?: AlbumsPagingInfo;
1863
+ totalCount: number;
1864
+ }
1865
+ interface RelatedMusicVideosItem {
1866
+ __typename: ItemV2Typename;
1867
+ data: IndecentData;
1868
+ }
1869
+ interface IndecentData {
1870
+ __typename: null;
1871
+ artists: ItemArtists;
1872
+ coverArt: CoverArtElement;
1873
+ date: PurpleDate;
1874
+ name: string;
1875
+ playability: LatestPlayability;
1876
+ type: LatestType;
1877
+ uri: string;
1878
+ visualIdentity: AlbumUnionVisualIdentity;
1879
+ }
1880
+ interface CoverArtElement {
1881
+ extractedColors: ImageExtractedColors;
1882
+ sources: Icon[];
1883
+ }
1884
+ interface ImageExtractedColors {
1885
+ colorDark: ColorDark;
1886
+ }
1887
+ interface ColorDark {
1888
+ hex: string;
1889
+ isFallback: boolean;
1890
+ }
1891
+ interface AlbumsPagingInfo {
1892
+ nextOffset: null;
1893
+ }
1894
+ interface ArtistUnionVisualIdentity {
1895
+ wideFullBleedImage: SquareCoverImageClass;
1896
+ }
1897
+ interface TentacledVisuals {
1898
+ avatarImage: HeaderImageClass;
1899
+ gallery: ImagesClass;
1900
+ }
1901
+ interface GetPartnerConcertData {
1902
+ concert: Concert;
1903
+ }
1904
+ interface Concert {
1905
+ __typename: string;
1906
+ message: string;
1907
+ }
1908
+ interface GetPartnerConcertLocationsData {
1909
+ concertLocations: ConcertLocations;
1910
+ }
1911
+ interface ConcertLocations {
1912
+ items: ConcertLocationsItem[];
1913
+ }
1914
+ interface ConcertLocationsItem {
1915
+ country: Market;
1916
+ fullName: string;
1917
+ geoHash: string;
1918
+ geonameId: string;
1919
+ name: string;
1920
+ }
1921
+ interface GetPartnerPlaylistData {
1922
+ playlistV2: PlaylistV2;
1923
+ }
1924
+ interface PlaylistV2 {
1925
+ __typename: ArtistUnionTypename;
1926
+ content: Content;
1927
+ attributes: Attribute[];
1928
+ basePermission: string;
1929
+ currentUserCapabilities: CurrentUserCapabilities;
1930
+ description: string;
1931
+ followers: number;
1932
+ following: boolean;
1933
+ format: Format;
1934
+ images: ImagesClass;
1935
+ members: Members;
1936
+ name: string;
1937
+ ownerV2: OwnerV2;
1938
+ revisionId: string;
1939
+ sharingInfo: AlbumSharingInfo;
1940
+ uri: string;
1941
+ visualIdentity: AlbumUnionVisualIdentity;
1942
+ watchFeedEntrypoint: WatchFeedEntrypoint;
1943
+ }
1944
+ interface Attribute {
1945
+ key: string;
1946
+ value: string;
1947
+ }
1948
+ interface Content {
1949
+ __typename: string;
1950
+ items: ContentItem[];
1951
+ pagingInfo: ContentPagingInfo;
1952
+ totalCount: number;
1953
+ }
1954
+ interface ContentItem {
1955
+ addedAt: AddedAt;
1956
+ addedBy: null;
1957
+ attributes: Attribute[];
1958
+ itemV2: ItemItemV2;
1959
+ uid: string;
1960
+ }
1961
+ interface AddedAt {
1962
+ isoString: Date;
1963
+ }
1964
+ interface ItemItemV2 {
1965
+ __typename: ItemV2Typename;
1966
+ data: HilariousData;
1967
+ }
1968
+ interface HilariousData {
1969
+ __typename: ArtistUnionTypename;
1970
+ albumOfTrack: ArtistElement;
1971
+ artists: ItemArtists;
1972
+ associationsV3: TrackUnionAssociationsV3;
1973
+ contentRating: ContentRating;
1974
+ discNumber: number;
1975
+ trackDuration: TrackDurationClass;
1976
+ mediaType: MediaType;
1977
+ name: string;
1978
+ playability: LatestPlayability;
1979
+ playcount: string;
1980
+ trackNumber: number;
1981
+ uri: string;
1982
+ }
1983
+ interface TrackUnionAssociationsV3 {
1984
+ audioAssociations: AudioAssociations;
1985
+ videoAssociations: AlbumsV2;
1986
+ }
1987
+ interface AudioAssociations {
1988
+ __typename: AudioAssociationsTypename;
1989
+ items: any[];
1990
+ }
1991
+ declare enum AudioAssociationsTypename {
1992
+ TrackAudioAssociationPage = "TrackAudioAssociationPage"
1993
+ }
1994
+ declare enum MediaType {
1995
+ Audio = "AUDIO",
1996
+ Video = "VIDEO"
1997
+ }
1998
+ interface ContentPagingInfo {
1999
+ limit: number;
2000
+ offset: number;
2001
+ }
2002
+ interface CurrentUserCapabilities {
2003
+ canAdministratePermissions: boolean;
2004
+ canCancelMembership: boolean;
2005
+ canEditItems: boolean;
2006
+ canView: boolean;
2007
+ }
2008
+ declare enum Format {
2009
+ ArtistMixReader = "artist-mix-reader",
2010
+ Editorial = "editorial",
2011
+ Empty = "",
2012
+ FormatShowsShuffle = "format-shows-shuffle",
2013
+ InspiredbyMix = "inspiredby-mix"
2014
+ }
2015
+ interface Members {
2016
+ items: MembersItem[];
2017
+ totalCount: number;
2018
+ }
2019
+ interface MembersItem {
2020
+ isOwner: boolean;
2021
+ permissionLevel: string;
2022
+ user: OwnerV2;
2023
+ }
2024
+ interface OwnerV2 {
2025
+ data: UserData;
2026
+ }
2027
+ interface UserData {
2028
+ __typename: ArtistUnionTypename;
2029
+ avatar: AvatarImageElement | null;
2030
+ name: string;
2031
+ uri: string;
2032
+ username: string;
2033
+ }
2034
+ interface GetPartnerSearchConcertArtistsData {
2035
+ artist: GetPartnerSearchConcertArtistsDataArtist;
2036
+ concerts: GetPartnerArtistConcertsData;
2037
+ detailsEnriched: null;
2038
+ error: null;
2039
+ }
2040
+ interface GetPartnerSearchConcertArtistsDataArtist {
2041
+ id: string;
2042
+ uri: string;
2043
+ name: string;
2044
+ imageUrl: string;
2045
+ followers: null;
2046
+ genres: null;
2047
+ }
2048
+ interface GetPartnerTrackCountData {
2049
+ result: string;
2050
+ message: string;
2051
+ spotify_track_id: string;
2052
+ isrc: string;
2053
+ streams: number;
2054
+ }
2055
+ interface GetPartnerTrackData {
2056
+ trackUnion: TrackUnion;
2057
+ }
2058
+ interface TrackUnion {
2059
+ __typename: ArtistUnionTypename;
2060
+ associationsV3: TrackUnionAssociationsV3;
2061
+ contentRating: ContentRating;
2062
+ duration: TrackDurationClass;
2063
+ id: string;
2064
+ mediaType: MediaType;
2065
+ name: string;
2066
+ playability: LatestPlayability;
2067
+ playcount: string;
2068
+ sharingInfo: AlbumSharingInfo;
2069
+ trackNumber: number;
2070
+ uri: string;
2071
+ visualIdentity: AlbumUnionVisualIdentity;
2072
+ albumOfTrack: TrackUnionAlbumOfTrack;
2073
+ firstArtist: FirstArtist;
2074
+ otherArtists: ImagesClass;
2075
+ }
2076
+ interface TrackUnionAlbumOfTrack {
2077
+ copyright: AlbumCopyright;
2078
+ courtesyLine: string;
2079
+ id: string;
2080
+ date: AlbumOfTrackDate;
2081
+ name: string;
2082
+ playability: AlbumOfTrackPlayability;
2083
+ sharingInfo: AlbumSharingInfo;
2084
+ tracks: AlbumOfTrackTracks;
2085
+ type: LatestType;
2086
+ uri: string;
2087
+ coverArt: HeaderImageClass;
2088
+ }
2089
+ interface AlbumOfTrackTracks {
2090
+ items: Item6[];
2091
+ totalCount: number;
2092
+ }
2093
+ interface Item6 {
2094
+ track: IndigoTrack;
2095
+ }
2096
+ interface IndigoTrack {
2097
+ trackNumber: number;
2098
+ uri: string;
2099
+ }
2100
+ interface FirstArtist {
2101
+ items: FirstArtistItem[];
2102
+ totalCount: number;
2103
+ }
2104
+ interface FirstArtistItem {
2105
+ discography: CunningDiscography;
2106
+ id: string;
2107
+ profile: UserLocationClass;
2108
+ relatedContent: ItemRelatedContent;
2109
+ uri: string;
2110
+ visuals: ItemVisuals;
2111
+ }
2112
+ interface CunningDiscography {
2113
+ albums: FluffyAlbums;
2114
+ popularReleasesAlbums: FluffyPopularReleasesAlbums;
2115
+ singles: FluffyAlbums;
2116
+ topTracks: FluffyTopTracks;
2117
+ }
2118
+ interface FluffyAlbums {
2119
+ items: Item7[];
2120
+ totalCount: number;
2121
+ }
2122
+ interface Item7 {
2123
+ releases: FluffyPopularReleasesAlbums;
2124
+ }
2125
+ interface FluffyPopularReleasesAlbums {
2126
+ items: Item8[];
2127
+ }
2128
+ interface Item8 {
2129
+ date: AlbumOfTrackDate;
2130
+ name: string;
2131
+ playability: AlbumOfTrackPlayability;
2132
+ sharingInfo: AlbumSharingInfo;
2133
+ tracks: AlbumOfTrackTracks;
2134
+ type: LatestType;
2135
+ uri: string;
2136
+ coverArt: HeaderImageClass;
2137
+ }
2138
+ interface FluffyTopTracks {
2139
+ items: Item9[];
2140
+ }
2141
+ interface Item9 {
2142
+ track: IndecentTrack;
2143
+ }
2144
+ interface IndecentTrack {
2145
+ albumOfTrack: TrackAlbumOfTrack;
2146
+ artists: ItemArtists;
2147
+ associationsV3: TrackUnionAssociationsV3;
2148
+ contentRating: ContentRating;
2149
+ duration: TrackDurationClass;
2150
+ id: string;
2151
+ name: string;
2152
+ playability: AlbumOfTrackPlayability;
2153
+ playcount: string;
2154
+ previews: Previews;
2155
+ uri: string;
2156
+ }
2157
+ interface TrackAlbumOfTrack {
2158
+ name: string;
2159
+ uri: string;
2160
+ coverArt: HeaderImageClass;
2161
+ }
2162
+ interface Previews {
2163
+ audioPreviews: AudioPreviews;
2164
+ }
2165
+ interface AudioPreviews {
2166
+ items: VideoThumbnail[];
2167
+ }
2168
+ interface GetPingData {
2169
+ request_id: string;
2170
+ status: string;
2171
+ message: string;
2172
+ timestamp: Date;
2173
+ instance: string;
2174
+ }
2175
+ interface GetPlaylistAnalysisData {
2176
+ playlist: Playlist;
2177
+ trackCount: number;
2178
+ audioFeatures: AudioFeatures;
2179
+ decadeDistribution: SearchTests;
2180
+ explicitPercentage: number;
2181
+ duration: GetPlaylistAnalysisDataDuration;
2182
+ }
2183
+ interface AudioFeatures {
2184
+ analyzed: number;
2185
+ aggregates: SearchTests;
2186
+ }
2187
+ interface GetPlaylistAnalysisDataDuration {
2188
+ totalMs: number;
2189
+ totalFormatted: string;
2190
+ averageMs: number;
2191
+ averageFormatted: string;
2192
+ }
2193
+ interface Playlist {
2194
+ id: string;
2195
+ name: string;
2196
+ description: string;
2197
+ owner: OwnerEnum;
2198
+ followers: number;
2199
+ totalTracks: number;
2200
+ snapshotId: string;
2201
+ images: Icon[];
2202
+ }
2203
+ interface GetPlaylistData {
2204
+ collaborative: boolean;
2205
+ description: string;
2206
+ external_urls: ExternalUrls;
2207
+ followers: Followers;
2208
+ href: string;
2209
+ id: string;
2210
+ images: Icon[];
2211
+ name: string;
2212
+ owner: Owner;
2213
+ primary_color: PrimaryColor;
2214
+ public: boolean;
2215
+ snapshot_id: string;
2216
+ tracks: Items;
2217
+ items: Items;
2218
+ type: GetPlaylistDataType;
2219
+ uri: string;
2220
+ }
2221
+ interface Items {
2222
+ href: string;
2223
+ items: ItemsItem[];
2224
+ limit: number;
2225
+ next: null;
2226
+ offset: number;
2227
+ previous: null;
2228
+ total: number;
2229
+ }
2230
+ interface ItemsItem {
2231
+ added_at: Date;
2232
+ added_by: Owner;
2233
+ is_local: boolean;
2234
+ primary_color: null;
2235
+ track: TrackClass;
2236
+ item: TrackClass;
2237
+ video_thumbnail: VideoThumbnail;
2238
+ }
2239
+ interface TrackClass {
2240
+ preview_url: null | string;
2241
+ available_markets: Market[];
2242
+ explicit: boolean;
2243
+ type: TrackType;
2244
+ episode: boolean;
2245
+ track: boolean;
2246
+ album: ItemElement;
2247
+ artists: Owner[];
2248
+ disc_number: number;
2249
+ track_number: number;
2250
+ duration_ms: number;
2251
+ external_ids: ItemExternalids;
2252
+ external_urls: ExternalUrls;
2253
+ href: string;
2254
+ id: string;
2255
+ name: string;
2256
+ popularity: number;
2257
+ uri: string;
2258
+ is_local: boolean;
2259
+ }
2260
+ interface GetPlaylistSnapshotData {
2261
+ playlistId: string;
2262
+ total: number;
2263
+ offset: number;
2264
+ limit: number;
2265
+ snapshots: Snapshot[];
2266
+ }
2267
+ interface Snapshot {
2268
+ _id: Id;
2269
+ playlistId: string;
2270
+ snapshotId: string;
2271
+ name: string;
2272
+ description: string;
2273
+ owner: OwnerEnum;
2274
+ isPublic: boolean;
2275
+ collaborative: boolean;
2276
+ followerCount: number;
2277
+ totalTracks: number;
2278
+ tracks: SnapshotTrack[];
2279
+ imageUrl: string;
2280
+ capturedBy: string;
2281
+ diff: Diff | null;
2282
+ capturedAt: SearchTests;
2283
+ __v: number;
2284
+ }
2285
+ interface Id {
2286
+ buffer: {
2287
+ [key: string]: number;
2288
+ };
2289
+ }
2290
+ interface Diff {
2291
+ added: any[];
2292
+ removed: any[];
2293
+ reordered: boolean;
2294
+ metadataChanged: boolean;
2295
+ }
2296
+ interface SnapshotTrack {
2297
+ trackId: string;
2298
+ name: string;
2299
+ artists: string[];
2300
+ album: string;
2301
+ duration_ms: number;
2302
+ position: number;
2303
+ addedAt: Date;
2304
+ addedBy: null;
2305
+ }
2306
+ interface GetPlaylistTracksData {
2307
+ href: string;
2308
+ items: GetPlaylistTracksDataItem[];
2309
+ limit: number;
2310
+ offset: number;
2311
+ total: number;
2312
+ source: string;
2313
+ }
2314
+ interface GetPlaylistTracksDataItem {
2315
+ added_at: Date;
2316
+ added_by: null;
2317
+ track: HilariousTrack;
2318
+ }
2319
+ interface HilariousTrack {
2320
+ id: string;
2321
+ uri: string;
2322
+ type: TrackType;
2323
+ name: string;
2324
+ duration_ms: number;
2325
+ explicit: boolean;
2326
+ disc_number: number;
2327
+ track_number: number;
2328
+ playcount: string;
2329
+ is_playable: boolean;
2330
+ artists: ArtistElement[];
2331
+ album: PurpleAlbum;
2332
+ }
2333
+ interface PurpleAlbum {
2334
+ name: string;
2335
+ uri: string;
2336
+ id: string;
2337
+ type: AlbumAlbumType;
2338
+ images: Icon[];
2339
+ artists: ArtistElement[];
2340
+ }
2341
+ interface GetRecommendationsData {
2342
+ seeds: Seed[];
2343
+ tracks: GetRecommendationsDataTrack[];
2344
+ }
2345
+ interface Seed {
2346
+ afterFilteringSize: number;
2347
+ afterRelinkingSize: number;
2348
+ href: string;
2349
+ id: string;
2350
+ initialPoolSize: number;
2351
+ type: string;
2352
+ }
2353
+ interface GetRecommendationsDataTrack {
2354
+ album: ItemElement;
2355
+ artists: Owner[];
2356
+ available_markets: Market[];
2357
+ disc_number: number;
2358
+ duration_ms: number;
2359
+ explicit: boolean;
2360
+ external_ids: PurpleExternalids;
2361
+ external_urls: ExternalUrls;
2362
+ href: string;
2363
+ id: string;
2364
+ is_playable: boolean;
2365
+ linked_from: SearchTests;
2366
+ restrictions: PlayabilityClass;
2367
+ name: string;
2368
+ popularity: number;
2369
+ preview_url: string;
2370
+ track_number: number;
2371
+ type: TrackType;
2372
+ uri: string;
2373
+ is_local: boolean;
2374
+ }
2375
+ interface PurpleExternalids {
2376
+ isrc: string;
2377
+ ean: string;
2378
+ upc: string;
2379
+ }
2380
+ interface GetSearchData {
2381
+ albums: RelatedMusicVideosClass;
2382
+ artists: GetSearchDataArtists;
2383
+ episodes: GetSearchDataEpisodes;
2384
+ genres: Genres;
2385
+ playlists: GetSearchDataPlaylists;
2386
+ podcasts: Podcasts;
2387
+ topResults: TopResults;
2388
+ tracks: GetSearchDataTrack[];
2389
+ users: Users;
2390
+ }
2391
+ interface GetSearchDataArtists {
2392
+ items: Item10[];
2393
+ totalCount: number;
2394
+ }
2395
+ interface Item10 {
2396
+ __typename: ItemV2Typename;
2397
+ data: AmbitiousData;
2398
+ }
2399
+ interface AmbitiousData {
2400
+ __typename: null;
2401
+ profile: UserLocationClass;
2402
+ uri: string;
2403
+ visualIdentity: AlbumUnionVisualIdentity | null;
2404
+ visuals: DataVisuals;
2405
+ }
2406
+ interface DataVisuals {
2407
+ avatarImage: CoverArtElement | null;
2408
+ }
2409
+ interface GetSearchDataEpisodes {
2410
+ items: Item11[];
2411
+ totalCount: number;
2412
+ }
2413
+ interface Item11 {
2414
+ __typename: RelatedEntityTypename;
2415
+ data: CunningData;
2416
+ }
2417
+ declare enum RelatedEntityTypename {
2418
+ EpisodeResponseWrapper = "EpisodeResponseWrapper"
2419
+ }
2420
+ interface CunningData {
2421
+ __typename: null;
2422
+ contentRating: ContentRating;
2423
+ coverArt: CoverArtElement;
2424
+ description: string;
2425
+ duration: TrackDurationClass;
2426
+ gatedEntityRelations: GatedEntityRelation[];
2427
+ mediaTypes: MediaType[];
2428
+ name: string;
2429
+ playability: PlayabilityClass;
2430
+ playedState: PlayedState;
2431
+ podcastV2: FluffyPodcastV2;
2432
+ releaseDate: ReleaseDateClass;
2433
+ restrictions: PurpleRestrictions;
2434
+ uri: string;
2435
+ videoPreviewThumbnail: VideoPreviewThumbnail | null;
2436
+ visualIdentity: AlbumUnionVisualIdentity;
2437
+ }
2438
+ interface GatedEntityRelation {
2439
+ badges: Badge[];
2440
+ fallbackGatedEntity: null;
2441
+ relatedEntity: RelatedEntity;
2442
+ summary: Summary;
2443
+ }
2444
+ interface Badge {
2445
+ displayText: string;
2446
+ }
2447
+ interface RelatedEntity {
2448
+ __typename: RelatedEntityTypename;
2449
+ _uri: string;
2450
+ data: RelatedEntityData;
2451
+ }
2452
+ interface RelatedEntityData {
2453
+ __typename: string;
2454
+ podcastV2: PurplePodcastV2;
2455
+ }
2456
+ interface PurplePodcastV2 {
2457
+ data: MagentaData;
2458
+ }
2459
+ interface MagentaData {
2460
+ __typename: TentacledTypename;
2461
+ accessInfo: AccessInfo;
2462
+ coverArt: AvatarImageElement;
2463
+ }
2464
+ declare enum TentacledTypename {
2465
+ Podcast = "Podcast"
2466
+ }
2467
+ interface AccessInfo {
2468
+ accessExplanation: AccessExplanation;
2469
+ isUserMemberOfAtLeastOneGroup: boolean;
2470
+ signifier: SignifierClass;
2471
+ unlockedBy: any[];
2472
+ }
2473
+ interface AccessExplanation {
2474
+ __typename: string;
2475
+ actionText: string;
2476
+ body: string;
2477
+ title: string;
2478
+ url: string;
2479
+ }
2480
+ interface Summary {
2481
+ forUserWithAccess: string;
2482
+ forUserWithoutAccess: string;
2483
+ }
2484
+ interface PlayedState {
2485
+ playPositionMilliseconds: number;
2486
+ state: StateEnum;
2487
+ }
2488
+ declare enum StateEnum {
2489
+ NotStarted = "NOT_STARTED"
2490
+ }
2491
+ interface FluffyPodcastV2 {
2492
+ __typename: PodcastV2Typename;
2493
+ data: FriskyData;
2494
+ }
2495
+ declare enum PodcastV2Typename {
2496
+ PodcastResponseWrapper = "PodcastResponseWrapper"
2497
+ }
2498
+ interface FriskyData {
2499
+ __typename: TentacledTypename;
2500
+ coverArt: AvatarImageElement;
2501
+ mediaType: PurpleMediaType;
2502
+ name: string;
2503
+ publisher: UserLocationClass;
2504
+ uri: string;
2505
+ }
2506
+ declare enum PurpleMediaType {
2507
+ Audio = "AUDIO",
2508
+ Mixed = "MIXED"
2509
+ }
2510
+ interface PurpleRestrictions {
2511
+ paywallContent: boolean;
2512
+ }
2513
+ interface VideoPreviewThumbnail {
2514
+ __typename: string;
2515
+ imagePreview: HeaderImage;
2516
+ }
2517
+ interface Genres {
2518
+ items: GenresItem[];
2519
+ totalCount: number;
2520
+ }
2521
+ interface GenresItem {
2522
+ __typename: StickyTypename;
2523
+ data: MischievousData;
2524
+ }
2525
+ declare enum StickyTypename {
2526
+ GenreResponseWrapper = "GenreResponseWrapper"
2527
+ }
2528
+ interface MischievousData {
2529
+ __typename: null;
2530
+ image: CoverArtElement;
2531
+ name: string;
2532
+ uri: string;
2533
+ }
2534
+ interface GetSearchDataPlaylists {
2535
+ items: Item12[];
2536
+ totalCount: number;
2537
+ }
2538
+ interface Item12 {
2539
+ __typename: ItemV2Typename;
2540
+ data: FeaturedData;
2541
+ }
2542
+ interface FeaturedData {
2543
+ __typename: null;
2544
+ attributes: Attribute[];
2545
+ description: string;
2546
+ format: Format;
2547
+ images: PurpleImages;
2548
+ name: string;
2549
+ ownerV2: FluffyOwnerV2;
2550
+ uri: string;
2551
+ visualIdentity: AlbumUnionVisualIdentity;
2552
+ }
2553
+ interface PurpleImages {
2554
+ items: CoverArtElement[];
2555
+ }
2556
+ interface FluffyOwnerV2 {
2557
+ __typename: ItemV2Typename;
2558
+ data: UserData;
2559
+ }
2560
+ interface Podcasts {
2561
+ items: PodcastsItem[];
2562
+ totalCount: number;
2563
+ }
2564
+ interface PodcastsItem {
2565
+ __typename: PodcastV2Typename;
2566
+ data: BraggadociousData;
2567
+ }
2568
+ interface BraggadociousData {
2569
+ __typename: null;
2570
+ coverArt: CoverArtElement;
2571
+ mediaType: PurpleMediaType;
2572
+ name: string;
2573
+ publisher: UserLocationClass;
2574
+ topics: Topics;
2575
+ uri: string;
2576
+ visualIdentity: AlbumUnionVisualIdentity;
2577
+ }
2578
+ interface Topics {
2579
+ items: TopicsItem[];
2580
+ }
2581
+ interface TopicsItem {
2582
+ __typename: string;
2583
+ title: string;
2584
+ uri: string;
2585
+ }
2586
+ interface TopResults {
2587
+ items: TopResultsItem[];
2588
+ featured: Featured[];
2589
+ }
2590
+ interface Featured {
2591
+ data: FeaturedData;
2592
+ }
2593
+ interface TopResultsItem {
2594
+ __typename: ItemV2Typename;
2595
+ data: Data1;
2596
+ }
2597
+ interface Data1 {
2598
+ __typename: null;
2599
+ attributes?: any[];
2600
+ description?: string;
2601
+ format?: string;
2602
+ images?: PurpleImages;
2603
+ name?: string;
2604
+ ownerV2?: FluffyOwnerV2;
2605
+ uri: string;
2606
+ visualIdentity: PurpleVisualIdentity;
2607
+ profile?: UserLocationClass;
2608
+ visuals?: DataVisuals;
2609
+ albumOfTrack?: DataAlbumOfTrack;
2610
+ artists?: ItemArtists;
2611
+ associationsV3?: FluffyAssociationsV3;
2612
+ contentRating?: ContentRating;
2613
+ duration?: TrackDurationClass;
2614
+ id?: string;
2615
+ trackMediaType?: MediaType;
2616
+ playability?: LatestPlayability;
2617
+ }
2618
+ interface DataAlbumOfTrack {
2619
+ coverArt: CoverArtElement;
2620
+ id: string;
2621
+ name: string;
2622
+ uri: string;
2623
+ visualIdentity: AlbumUnionVisualIdentity;
2624
+ }
2625
+ interface FluffyAssociationsV3 {
2626
+ audioAssociations: AlbumsV2;
2627
+ videoAssociations: AlbumsV2;
2628
+ }
2629
+ interface PurpleVisualIdentity {
2630
+ squareCoverImage?: SquareCoverImageClass;
2631
+ sixteenByNineCoverImage?: SixteenByNineCoverImage | null;
2632
+ }
2633
+ interface SixteenByNineCoverImage {
2634
+ image: HeaderImage;
2635
+ }
2636
+ interface GetSearchDataTrack {
2637
+ __typename: ItemV2Typename;
2638
+ data: TrackData;
2639
+ }
2640
+ interface TrackData {
2641
+ __typename: null;
2642
+ albumOfTrack: DataAlbumOfTrack;
2643
+ artists: ItemArtists;
2644
+ associationsV3: FluffyAssociationsV3;
2645
+ contentRating: ContentRating;
2646
+ duration: TrackDurationClass;
2647
+ id: string;
2648
+ trackMediaType: MediaType;
2649
+ name: string;
2650
+ playability: LatestPlayability;
2651
+ uri: string;
2652
+ visualIdentity: FluffyVisualIdentity;
2653
+ }
2654
+ interface FluffyVisualIdentity {
2655
+ sixteenByNineCoverImage: SixteenByNineCoverImage;
2656
+ }
2657
+ interface Users {
2658
+ items: UsersItem[];
2659
+ totalCount: number;
2660
+ }
2661
+ interface UsersItem {
2662
+ __typename: ItemV2Typename;
2663
+ data: Data2;
2664
+ }
2665
+ interface Data2 {
2666
+ __typename: null;
2667
+ avatar: CoverArtElement;
2668
+ id: string;
2669
+ displayName: string;
2670
+ uri: string;
2671
+ username: string;
2672
+ }
2673
+ interface GetSearchLyricsData {
2674
+ error: boolean;
2675
+ track?: GetSearchLyricsDataTrack;
2676
+ syncType: string;
2677
+ lines: Line[];
2678
+ }
2679
+ interface Line {
2680
+ startTimeMs: string;
2681
+ words: string;
2682
+ syllables: any[];
2683
+ endTimeMs: string;
2684
+ }
2685
+ interface GetSearchLyricsDataTrack {
2686
+ id: string;
2687
+ name: string;
2688
+ artists: TrackArtist[];
2689
+ album: FluffyAlbum;
2690
+ duration_ms: number;
2691
+ uri: string;
2692
+ }
2693
+ interface FluffyAlbum {
2694
+ id: string;
2695
+ name: string;
2696
+ images: Icon[];
2697
+ }
2698
+ interface TrackArtist {
2699
+ id: string;
2700
+ name: string;
2701
+ }
2702
+ interface GetSearchSuggestionsData {
2703
+ searchV2: GetSearchSuggestionsDataSearchV2;
2704
+ }
2705
+ interface GetSearchSuggestionsDataSearchV2 {
2706
+ __typename: string;
2707
+ query: string;
2708
+ topResultsV2: PurpleTopResultsV2;
2709
+ }
2710
+ interface PurpleTopResultsV2 {
2711
+ itemsV2: PurpleItemsV2[];
2712
+ }
2713
+ interface PurpleItemsV2 {
2714
+ __typename: ItemsV2Typename;
2715
+ item: Item13;
2716
+ }
2717
+ declare enum ItemsV2Typename {
2718
+ TopResultHit = "TopResultHit"
2719
+ }
2720
+ interface Item13 {
2721
+ __typename: ItemV2Typename;
2722
+ data: Data3;
2723
+ }
2724
+ interface Data3 {
2725
+ text?: string;
2726
+ uri: string;
2727
+ __typename?: ArtistUnionTypename;
2728
+ attributes?: any[];
2729
+ description?: string;
2730
+ format?: string;
2731
+ images?: PurpleImages;
2732
+ name?: string;
2733
+ ownerV2?: FluffyOwnerV2;
2734
+ visualIdentity?: PurpleVisualIdentity;
2735
+ profile?: UserLocationClass;
2736
+ visuals?: DataVisuals;
2737
+ albumOfTrack?: DataAlbumOfTrack;
2738
+ artists?: ItemArtists;
2739
+ associationsV3?: FluffyAssociationsV3;
2740
+ contentRating?: ContentRating;
2741
+ duration?: TrackDurationClass;
2742
+ id?: string;
2743
+ trackMediaType?: MediaType;
2744
+ playability?: LatestPlayability;
2745
+ coverArt?: CoverArtElement;
2746
+ date?: PurpleDate;
2747
+ type?: LatestType;
2748
+ avatar?: CoverArtElement;
2749
+ displayName?: string;
2750
+ username?: string;
2751
+ }
2752
+ interface GetSearchTopResultsData {
2753
+ searchV2: GetSearchTopResultsDataSearchV2;
2754
+ }
2755
+ interface GetSearchTopResultsDataSearchV2 {
2756
+ __typename: string;
2757
+ albumsV2: AlbumsV2;
2758
+ artists: AlbumsV2;
2759
+ chipOrder: ChipOrder;
2760
+ episodes: AlbumsV2;
2761
+ genres: AlbumsV2;
2762
+ playlists: AlbumsV2;
2763
+ podcasts: AlbumsV2;
2764
+ query: string;
2765
+ topResultsV2: FluffyTopResultsV2;
2766
+ tracksV2: AlbumsV2;
2767
+ users: AlbumsV2;
2768
+ }
2769
+ interface ChipOrder {
2770
+ items: ChipOrderItem[];
2771
+ }
2772
+ interface ChipOrderItem {
2773
+ typeName: string;
2774
+ }
2775
+ interface FluffyTopResultsV2 {
2776
+ itemsV2: FluffyItemsV2[];
2777
+ }
2778
+ interface FluffyItemsV2 {
2779
+ __typename: ItemsV2Typename;
2780
+ item: Item14;
2781
+ matchedFields: any[];
2782
+ }
2783
+ interface Item14 {
2784
+ __typename: ItemV2Typename;
2785
+ data: Data4;
2786
+ }
2787
+ interface Data4 {
2788
+ __typename: ArtistUnionTypename;
2789
+ attributes?: Attribute[];
2790
+ description?: string;
2791
+ format?: Format;
2792
+ images?: PurpleImages;
2793
+ name?: string;
2794
+ ownerV2?: FluffyOwnerV2;
2795
+ uri: string;
2796
+ visualIdentity?: AlbumUnionVisualIdentity;
2797
+ profile?: UserLocationClass;
2798
+ visuals?: DataVisuals;
2799
+ albumOfTrack?: DataAlbumOfTrack;
2800
+ artists?: ItemArtists;
2801
+ associationsV3?: FluffyAssociationsV3;
2802
+ contentRating?: ContentRating;
2803
+ duration?: TrackDurationClass;
2804
+ id?: string;
2805
+ trackMediaType?: MediaType;
2806
+ playability?: LatestPlayability;
2807
+ coverArt?: CoverArtElement;
2808
+ date?: PurpleDate;
2809
+ type?: LatestType;
2810
+ avatar?: CoverArtElement;
2811
+ displayName?: string;
2812
+ username?: string;
2813
+ }
2814
+ interface GetSeedToPlaylistData {
2815
+ total: number;
2816
+ mediaItems: MediaItem[];
2817
+ }
2818
+ interface MediaItem {
2819
+ uri: string;
2820
+ }
2821
+ interface GetShowsData {
2822
+ shows: GetShowsidData[];
2823
+ }
2824
+ interface GetShowsidData {
2825
+ copyrights: any[];
2826
+ description: string;
2827
+ html_description: string;
2828
+ explicit: boolean;
2829
+ external_urls: ExternalUrls;
2830
+ href: string;
2831
+ id: string;
2832
+ images: Icon[];
2833
+ is_externally_hosted: boolean;
2834
+ languages: Language[];
2835
+ media_type: string;
2836
+ name: string;
2837
+ publisher: string;
2838
+ type: string;
2839
+ uri: string;
2840
+ total_episodes: number;
2841
+ episodes?: GetShowsIdDataEpisodes;
2842
+ }
2843
+ interface GetShowsIdDataEpisodes {
2844
+ href: string;
2845
+ limit: number;
2846
+ next: string;
2847
+ offset: number;
2848
+ previous: null;
2849
+ total: number;
2850
+ items: Item15[];
2851
+ }
2852
+ interface Item15 {
2853
+ audio_preview_url: string;
2854
+ description: string;
2855
+ html_description: string;
2856
+ duration_ms: number;
2857
+ explicit: boolean;
2858
+ external_urls: ExternalUrls;
2859
+ href: string;
2860
+ id: string;
2861
+ images: Icon[];
2862
+ is_externally_hosted: boolean;
2863
+ is_playable: boolean;
2864
+ language: Language;
2865
+ languages: Language[];
2866
+ name: string;
2867
+ release_date: Date;
2868
+ release_date_precision: ReleaseDatePrecision;
2869
+ type: FluffyType;
2870
+ uri: string;
2871
+ }
2872
+ declare enum Language {
2873
+ En = "en"
2874
+ }
2875
+ declare enum FluffyType {
2876
+ Episode = "episode"
2877
+ }
2878
+ interface GetTop200TracksDatum {
2879
+ chartEntryData: ChartEntryData;
2880
+ missingRequiredFields: boolean;
2881
+ trackMetadata: TrackMetadata;
2882
+ chartDate?: string;
2883
+ requestedDate?: string;
2884
+ daysBack?: number;
2885
+ }
2886
+ interface ChartEntryData {
2887
+ currentRank: number;
2888
+ previousRank: number;
2889
+ peakRank: number;
2890
+ appearancesOnChart: number;
2891
+ consecutiveAppearancesOnChart: number;
2892
+ rankingMetric?: RankingMetric;
2893
+ entryStatus: EntryStatus;
2894
+ peakDate: Date;
2895
+ entryRank: number;
2896
+ entryDate: Date;
2897
+ }
2898
+ declare enum EntryStatus {
2899
+ MovedDown = "MOVED_DOWN",
2900
+ MovedUp = "MOVED_UP",
2901
+ NewEntry = "NEW_ENTRY",
2902
+ NoChange = "NO_CHANGE",
2903
+ ReEntry = "RE_ENTRY"
2904
+ }
2905
+ interface RankingMetric {
2906
+ value: string;
2907
+ type: RankingMetricType;
2908
+ }
2909
+ declare enum RankingMetricType {
2910
+ Streams = "STREAMS"
2911
+ }
2912
+ interface TrackMetadata {
2913
+ trackName: string;
2914
+ trackUri: string;
2915
+ displayImageUri: string;
2916
+ artists: LabelElement[];
2917
+ producers: any[];
2918
+ labels: LabelElement[];
2919
+ songWriters: any[];
2920
+ releaseDate: string;
2921
+ }
2922
+ interface LabelElement {
2923
+ name: string;
2924
+ spotifyUri: string;
2925
+ externalUrl: string;
2926
+ }
2927
+ interface GetTop20ByFollowersDatum {
2928
+ rank: number;
2929
+ artist: string;
2930
+ followers: number;
2931
+ followersMillions: number;
2932
+ }
2933
+ interface GetTop20ByMonthlyListenersDatum {
2934
+ rank: number;
2935
+ artist: string;
2936
+ monthlyListeners: number;
2937
+ }
2938
+ interface GetSDatum {
2939
+ chartEntryData: ChartEntryData;
2940
+ missingRequiredFields: boolean;
2941
+ albumMetadata?: AlbumMetadata;
2942
+ chartDate?: string;
2943
+ requestedDate?: string;
2944
+ daysBack?: number;
2945
+ artistMetadata?: ArtistMetadata;
2946
+ trackMetadata?: TrackMetadata;
2947
+ }
2948
+ interface AlbumMetadata {
2949
+ albumName: string;
2950
+ albumUri: string;
2951
+ displayImageUri: string;
2952
+ artists: LabelElement[];
2953
+ labels: LabelElement[];
2954
+ releaseDate: string;
2955
+ }
2956
+ interface ArtistMetadata {
2957
+ artistName: string;
2958
+ artistUri: string;
2959
+ displayImageUri: string;
2960
+ socialMedia: any[];
2961
+ }
2962
+ interface GetTrackCreditsBatchData {
2963
+ results: GetTrackCreditsBatchDataResult[];
2964
+ }
2965
+ interface GetTrackCreditsBatchDataResult {
2966
+ id: string;
2967
+ credits: GetTrackCreditsData;
2968
+ error: null;
2969
+ }
2970
+ interface GetTrackCreditsData {
2971
+ trackUri: string;
2972
+ trackTitle: string;
2973
+ roleCredits: RoleCredit[];
2974
+ extendedCredits: any[];
2975
+ sourceNames: string[];
2976
+ }
2977
+ interface RoleCredit {
2978
+ roleTitle: string;
2979
+ artists: RoleCreditArtist[];
2980
+ }
2981
+ interface RoleCreditArtist {
2982
+ uri?: string;
2983
+ name: string;
2984
+ imageUri?: string;
2985
+ subroles: Subrole[];
2986
+ weight: number;
2987
+ externalUrl?: string;
2988
+ creatorUri?: string;
2989
+ }
2990
+ declare enum Subrole {
2991
+ MainArtist = "main artist",
2992
+ Producer = "producer",
2993
+ Writer = "writer"
2994
+ }
2995
+ interface GetTrackLyricsBatchData {
2996
+ results: GetTrackLyricsBatchDataResult[];
2997
+ }
2998
+ interface GetTrackLyricsBatchDataResult {
2999
+ id: string;
3000
+ lyrics: GetSearchLyricsData;
3001
+ error: null;
3002
+ }
3003
+ interface GetTrackPopularityBatchData {
3004
+ results: GetTrackPopularityBatchDataResult[];
3005
+ }
3006
+ interface GetTrackPopularityBatchDataResult {
3007
+ id: string;
3008
+ name: string;
3009
+ popularity: number;
3010
+ album: string;
3011
+ artists: string[];
3012
+ explicit: boolean;
3013
+ duration_ms: number;
3014
+ }
3015
+ interface GetTrackingHealthData {
3016
+ success: boolean;
3017
+ service: string;
3018
+ status: string;
3019
+ stats: GetTrackingHealthDataStats;
3020
+ }
3021
+ interface GetTrackingHealthDataStats {
3022
+ totalTrackedItems: number;
3023
+ activeTrackedItems: number;
3024
+ totalSubscriptions: number;
3025
+ recentChanges: number;
3026
+ }
3027
+ interface GetTrackingItemsData {
3028
+ success: boolean;
3029
+ count: number;
3030
+ limit: number;
3031
+ authSource: string;
3032
+ subscriptionTier: null;
3033
+ items: any[];
3034
+ }
3035
+ interface GetTrackingLogsData {
3036
+ success: boolean;
3037
+ total: number;
3038
+ returned: number;
3039
+ logs: any[];
3040
+ }
3041
+ interface GetTrackingStatsData {
3042
+ success: boolean;
3043
+ authSource: string;
3044
+ subscriptionTier: null;
3045
+ totalTrackedItems: number;
3046
+ activeTrackedItems: number;
3047
+ totalSubscriptions: number;
3048
+ userSubscriptions: number;
3049
+ userItemLimit: number;
3050
+ recentChanges: number;
3051
+ workerStatus: string;
3052
+ }
3053
+ interface GetUpcLookupData {
3054
+ albums: AlbumsClass;
3055
+ }
3056
+ interface GetUserFollowersData {
3057
+ profiles: ProfileElement[];
3058
+ }
3059
+ interface ProfileElement {
3060
+ uri: string;
3061
+ name: string;
3062
+ followers_count: number;
3063
+ color: number;
3064
+ account_id: string;
3065
+ image_url?: string;
3066
+ }
3067
+ interface GetUserProfileData {
3068
+ uri: Uri;
3069
+ name: OwnerEnum;
3070
+ image_url: string;
3071
+ followers_count: number;
3072
+ following_count: number;
3073
+ public_playlists: PublicPlaylist[];
3074
+ total_public_playlists_count: number;
3075
+ is_verified: boolean;
3076
+ report_abuse_disabled: boolean;
3077
+ has_spotify_name: boolean;
3078
+ has_spotify_image: boolean;
3079
+ color: number;
3080
+ allow_follows: boolean;
3081
+ show_follows: boolean;
3082
+ account_id: string;
3083
+ }
3084
+ interface PublicPlaylist {
3085
+ uri: string;
3086
+ name: string;
3087
+ image_url: string;
3088
+ followers_count: number;
3089
+ owner_name: OwnerEnum;
3090
+ owner_uri: Uri;
3091
+ }
3092
+ declare enum Uri {
3093
+ SpotifyUserSpotify = "spotify:user:spotify"
3094
+ }
3095
+
3096
+ /** Parameters for {@link AlbumsResource.get}. */
3097
+ interface AlbumsGetParams {
3098
+ /** Comma-separated Spotify album IDs. */
3099
+ ids: string | readonly string[];
3100
+ /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */
3101
+ contrast?: string;
3102
+ }
3103
+ /** Parameters for {@link AlbumsResource.tracks}. */
3104
+ interface AlbumTracksParams {
3105
+ /** Spotify album ID. */
3106
+ id: string;
3107
+ offset?: number;
3108
+ limit?: number;
3109
+ }
3110
+ /** Parameters for {@link AlbumsResource.metadata}. */
3111
+ interface AlbumMetadataParams {
3112
+ /** Spotify album ID. */
3113
+ id: string;
3114
+ contrast?: string;
3115
+ }
3116
+ /** Album endpoints. */
3117
+ declare class AlbumsResource extends Resource {
3118
+ /** Get one or more albums by ID. */
3119
+ get(params: AlbumsGetParams, options?: RequestOverrides): Promise<GetAlbumsData>;
3120
+ /** Get an album's tracks (paginated). */
3121
+ tracks(params: AlbumTracksParams, options?: RequestOverrides): Promise<GetAlbumTracksData>;
3122
+ /** Get extended album metadata. */
3123
+ metadata(params: AlbumMetadataParams, options?: RequestOverrides): Promise<GetAlbumMetadataData>;
3124
+ }
3125
+
3126
+ /** Parameters for {@link AnalysisResource.artistCompare}. */
3127
+ interface AnalysisArtistCompareParams {
3128
+ /** Comma-separated artist IDs (2–10). */
3129
+ ids: string | readonly string[];
3130
+ }
3131
+ /** Parameters for {@link AnalysisResource.audioFeatures}. */
3132
+ interface AnalysisAudioFeaturesParams {
3133
+ /** Spotify track ID. */
3134
+ id: string;
3135
+ }
3136
+ /** Parameters for {@link AnalysisResource.playlistAnalysis}. */
3137
+ interface AnalysisPlaylistAnalysisParams {
3138
+ /** Spotify playlist ID. */
3139
+ id: string;
3140
+ }
3141
+ /** Analysis endpoints. */
3142
+ declare class AnalysisResource extends Resource {
3143
+ /** Compare artists side by side. */
3144
+ artistCompare(params: AnalysisArtistCompareParams, options?: RequestOverrides): Promise<GetArtistCompareData>;
3145
+ /** Get audio features for a track. */
3146
+ audioFeatures(params: AnalysisAudioFeaturesParams, options?: RequestOverrides): Promise<unknown>;
3147
+ /** Get analysis for a playlist. */
3148
+ playlistAnalysis(params: AnalysisPlaylistAnalysisParams, options?: RequestOverrides): Promise<GetPlaylistAnalysisData>;
3149
+ }
3150
+
3151
+ /** Parameters for {@link ArtistsResource.get}. */
3152
+ interface ArtistsGetParams {
3153
+ /** Comma-separated artist IDs. */
3154
+ ids: string | readonly string[];
3155
+ /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */
3156
+ contrast?: string;
3157
+ }
3158
+ /** Parameters for {@link ArtistsResource.overview}. */
3159
+ interface ArtistsOverviewParams {
3160
+ /** Spotify artist ID. */
3161
+ id: string;
3162
+ /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */
3163
+ contrast?: string;
3164
+ }
3165
+ /** Parameters for {@link ArtistsResource.discographyOverview}. */
3166
+ interface ArtistsDiscographyOverviewParams {
3167
+ /** Spotify artist ID. */
3168
+ id: string;
3169
+ }
3170
+ /** Parameters for {@link ArtistsResource.albums}. */
3171
+ interface ArtistsAlbumsParams {
3172
+ /** Spotify artist ID. */
3173
+ id: string;
3174
+ offset?: number;
3175
+ limit?: number;
3176
+ }
3177
+ /** Parameters for {@link ArtistsResource.singles}. */
3178
+ interface ArtistsSinglesParams {
3179
+ /** Spotify artist ID. */
3180
+ id: string;
3181
+ offset?: number;
3182
+ limit?: number;
3183
+ }
3184
+ /** Parameters for {@link ArtistsResource.appearsOn}. */
3185
+ interface ArtistsAppearsOnParams {
3186
+ /** Spotify artist ID. */
3187
+ id: string;
3188
+ }
3189
+ /** Parameters for {@link ArtistsResource.discoveredOn}. */
3190
+ interface ArtistsDiscoveredOnParams {
3191
+ /** Spotify artist ID. */
3192
+ id: string;
3193
+ }
3194
+ /** Parameters for {@link ArtistsResource.featuring}. */
3195
+ interface ArtistsFeaturingParams {
3196
+ /** Spotify artist ID. */
3197
+ id: string;
3198
+ }
3199
+ /** Parameters for {@link ArtistsResource.related}. */
3200
+ interface ArtistsRelatedParams {
3201
+ /** Spotify artist ID. */
3202
+ id: string;
3203
+ }
3204
+ /** Parameters for {@link ArtistsResource.topTracks}. */
3205
+ interface ArtistsTopTracksParams {
3206
+ /** Spotify artist ID. */
3207
+ id: string;
3208
+ /** Market (country) code to localize results, e.g. `US`. */
3209
+ market?: string;
3210
+ }
3211
+ /** Artist endpoints. */
3212
+ declare class ArtistsResource extends Resource {
3213
+ /** Get one or more artists by ID. */
3214
+ get(params: ArtistsGetParams, options?: RequestOverrides): Promise<GetArtistsData>;
3215
+ /** Get an artist overview. */
3216
+ overview(params: ArtistsOverviewParams, options?: RequestOverrides): Promise<GetArtistOverviewData>;
3217
+ /** Get an artist's discography overview. */
3218
+ discographyOverview(params: ArtistsDiscographyOverviewParams, options?: RequestOverrides): Promise<GetArtistDiscographyOverviewData>;
3219
+ /** Get an artist's albums (paginated). */
3220
+ albums(params: ArtistsAlbumsParams, options?: RequestOverrides): Promise<GetArtistAlbumsData>;
3221
+ /** Get an artist's singles (paginated). */
3222
+ singles(params: ArtistsSinglesParams, options?: RequestOverrides): Promise<GetArtistSinglesData>;
3223
+ /** Get releases an artist appears on. */
3224
+ appearsOn(params: ArtistsAppearsOnParams, options?: RequestOverrides): Promise<GetArtistAppearsOnData>;
3225
+ /** Get playlists an artist was discovered on. */
3226
+ discoveredOn(params: ArtistsDiscoveredOnParams, options?: RequestOverrides): Promise<GetArtistDiscoveredOnData>;
3227
+ /** Get tracks featuring an artist. */
3228
+ featuring(params: ArtistsFeaturingParams, options?: RequestOverrides): Promise<GetArtistFeaturingData>;
3229
+ /** Get artists related to an artist. */
3230
+ related(params: ArtistsRelatedParams, options?: RequestOverrides): Promise<GetArtistRelatedData>;
3231
+ /** Get an artist's top tracks. */
3232
+ topTracks(params: ArtistsTopTracksParams, options?: RequestOverrides): Promise<GetArtistTopTracksData>;
3233
+ }
3234
+
3235
+ /** Parameters for {@link AudiobooksResource.get}. */
3236
+ interface AudiobooksGetParams {
3237
+ /** Comma-separated Spotify audiobook IDs. */
3238
+ ids: string | readonly string[];
3239
+ /** An ISO 3166-1 alpha-2 country code to filter availability. */
3240
+ market?: string;
3241
+ }
3242
+ /** Parameters for {@link AudiobooksResource.getById}. */
3243
+ interface AudiobooksGetByIdParams {
3244
+ /** Spotify audiobook ID. */
3245
+ id: string;
3246
+ /** An ISO 3166-1 alpha-2 country code to filter availability. */
3247
+ market?: string;
3248
+ }
3249
+ /** Parameters for {@link AudiobooksResource.chapters}. */
3250
+ interface AudiobooksChaptersParams {
3251
+ /** Spotify audiobook ID. */
3252
+ id: string;
3253
+ /** The index of the first chapter to return. */
3254
+ offset?: number;
3255
+ /** The maximum number of chapters to return. */
3256
+ limit?: number;
3257
+ }
3258
+ /** Audiobook endpoints. */
3259
+ declare class AudiobooksResource extends Resource {
3260
+ /** Get one or more audiobooks by ID. */
3261
+ get(params: AudiobooksGetParams, options?: RequestOverrides): Promise<GetAudiobooksData>;
3262
+ /** Get a single audiobook by ID. */
3263
+ getById(params: AudiobooksGetByIdParams, options?: RequestOverrides): Promise<unknown>;
3264
+ /** Get an audiobook's chapters (paginated). */
3265
+ chapters(params: AudiobooksChaptersParams, options?: RequestOverrides): Promise<unknown>;
3266
+ }
3267
+
3268
+ /** Parameters for {@link BatchResource.albumMetadata}. */
3269
+ interface BatchAlbumMetadataParams {
3270
+ /** Comma-separated album IDs (max 25). */
3271
+ ids: string | readonly string[];
3272
+ }
3273
+ /** Parameters for {@link BatchResource.artistOverview}. */
3274
+ interface BatchArtistOverviewParams {
3275
+ /** Comma-separated artist IDs (max 25). */
3276
+ ids: string | readonly string[];
3277
+ }
3278
+ /** Parameters for {@link BatchResource.trackCredits}. */
3279
+ interface BatchTrackCreditsParams {
3280
+ /** Comma-separated track IDs (max 25). */
3281
+ ids: string | readonly string[];
3282
+ }
3283
+ /** Parameters for {@link BatchResource.trackLyrics}. */
3284
+ interface BatchTrackLyricsParams {
3285
+ /** Comma-separated track IDs. */
3286
+ ids: string | readonly string[];
3287
+ /** Lyrics output format. Default `json`. */
3288
+ format?: 'json' | 'lrc' | 'srt' | 'raw';
3289
+ }
3290
+ /** Parameters for {@link BatchResource.trackPopularity}. */
3291
+ interface BatchTrackPopularityParams {
3292
+ /** Comma-separated track IDs. */
3293
+ ids: string | readonly string[];
3294
+ }
3295
+ /** Batch endpoints — fetch metadata for many IDs in one call. */
3296
+ declare class BatchResource extends Resource {
3297
+ /** Get extended album metadata for many albums at once. */
3298
+ albumMetadata(params: BatchAlbumMetadataParams, options?: RequestOverrides): Promise<GetAlbumMetadataBatchData>;
3299
+ /** Get artist overviews for many artists at once. */
3300
+ artistOverview(params: BatchArtistOverviewParams, options?: RequestOverrides): Promise<GetArtistOverviewBatchData>;
3301
+ /** Get credits for many tracks at once. */
3302
+ trackCredits(params: BatchTrackCreditsParams, options?: RequestOverrides): Promise<GetTrackCreditsBatchData>;
3303
+ /** Get synced lyrics for many tracks at once. */
3304
+ trackLyrics(params: BatchTrackLyricsParams, options?: RequestOverrides): Promise<GetTrackLyricsBatchData>;
3305
+ /** Get popularity scores for many tracks at once. */
3306
+ trackPopularity(params: BatchTrackPopularityParams, options?: RequestOverrides): Promise<GetTrackPopularityBatchData>;
3307
+ }
3308
+
3309
+ /** Parameters for {@link BrowseResource.categories}. */
3310
+ interface BrowseCategoriesParams {
3311
+ /** ISO country code (e.g. `US`). */
3312
+ country?: string;
3313
+ /** Locale (e.g. `en_US`). */
3314
+ locale?: string;
3315
+ limit?: number;
3316
+ offset?: number;
3317
+ }
3318
+ /** Parameters for {@link BrowseResource.category}. */
3319
+ interface BrowseCategoryParams {
3320
+ /** Spotify category ID. */
3321
+ id: string;
3322
+ /** ISO country code (e.g. `US`). */
3323
+ country?: string;
3324
+ /** Locale (e.g. `en_US`). */
3325
+ locale?: string;
3326
+ }
3327
+ /** Parameters for {@link BrowseResource.featuredPlaylists}. */
3328
+ interface BrowseFeaturedPlaylistsParams {
3329
+ /** ISO country code (e.g. `US`). */
3330
+ country?: string;
3331
+ /** Locale (e.g. `en_US`). */
3332
+ locale?: string;
3333
+ limit?: number;
3334
+ offset?: number;
3335
+ }
3336
+ /** Parameters for {@link BrowseResource.newReleases}. */
3337
+ interface BrowseNewReleasesParams {
3338
+ /** ISO country code (e.g. `US`). */
3339
+ country?: string;
3340
+ limit?: number;
3341
+ offset?: number;
3342
+ }
3343
+ /** Parameters for {@link BrowseResource.recommendations}. */
3344
+ interface BrowseRecommendationsParams {
3345
+ /** Comma-separated seed track IDs. */
3346
+ seed_tracks?: string | readonly string[];
3347
+ /** Comma-separated seed artist IDs. */
3348
+ seed_artists?: string | readonly string[];
3349
+ /** Comma-separated seed genres. */
3350
+ seed_genres?: string;
3351
+ limit?: number;
3352
+ }
3353
+ /** Browse endpoints. */
3354
+ declare class BrowseResource extends Resource {
3355
+ /** List browse categories. */
3356
+ categories(params?: BrowseCategoriesParams, options?: RequestOverrides): Promise<GetBrowseCategoriesData>;
3357
+ /** Get a single browse category by ID. */
3358
+ category(params: BrowseCategoryParams, options?: RequestOverrides): Promise<GetBrowseCategoriesIdData>;
3359
+ /** Get featured playlists. */
3360
+ featuredPlaylists(params?: BrowseFeaturedPlaylistsParams, options?: RequestOverrides): Promise<GetBrowseFeaturedPlaylistsData>;
3361
+ /** Get new album releases. */
3362
+ newReleases(params?: BrowseNewReleasesParams, options?: RequestOverrides): Promise<GetBrowseNewReleasesData>;
3363
+ /** Get track recommendations from seed tracks, artists, and/or genres. */
3364
+ recommendations(params?: BrowseRecommendationsParams, options?: RequestOverrides): Promise<GetBrowseRecommendationsData>;
3365
+ }
3366
+
3367
+ /** Parameters for {@link CacheResource.invalidate}. */
3368
+ interface CacheInvalidateParams {
3369
+ /** Exact cache key to invalidate. */
3370
+ key?: string;
3371
+ /** Glob/prefix pattern matching multiple cache keys to invalidate. */
3372
+ pattern?: string;
3373
+ }
3374
+ /** Cache administration endpoints. */
3375
+ declare class CacheResource extends Resource {
3376
+ /** Get cache statistics (hits, misses, size, etc.). */
3377
+ stats(query?: QueryParams$1, options?: RequestOverrides): Promise<GetCacheStatsData>;
3378
+ /** Invalidate cached entries by exact key or by matching pattern. */
3379
+ invalidate(params: CacheInvalidateParams, options?: RequestOverrides): Promise<unknown>;
3380
+ }
3381
+
3382
+ /** Parameters for {@link ChartsResource.top200Tracks}. */
3383
+ interface ChartsTop200TracksParams {
3384
+ /** Chart period, e.g. `daily` or `weekly`. Default `daily`. */
3385
+ period?: string;
3386
+ /** Country code or `global`. Default `global`. */
3387
+ country?: string;
3388
+ /** Chart date (`YYYY-MM-DD`). Defaults to the latest available. */
3389
+ date?: string;
3390
+ }
3391
+ /** Parameters for {@link ChartsResource.topArtists}. */
3392
+ interface ChartsTopArtistsParams {
3393
+ /** Chart period, e.g. `daily` or `weekly`. Default `daily`. */
3394
+ period?: string;
3395
+ /** Country code or `global`. Default `global`. */
3396
+ country?: string;
3397
+ }
3398
+ /** Parameters for {@link ChartsResource.topAlbums}. */
3399
+ interface ChartsTopAlbumsParams {
3400
+ /** Chart period, e.g. `daily` or `weekly`. Default `daily`. */
3401
+ period?: string;
3402
+ /** Country code or `global`. Default `global`. */
3403
+ country?: string;
3404
+ }
3405
+ /** Parameters for {@link ChartsResource.viralTracks}. */
3406
+ interface ChartsViralTracksParams {
3407
+ /** Country code or `global`. Default `global`. */
3408
+ country?: string;
3409
+ }
3410
+ /** Spotify Charts endpoints. */
3411
+ declare class ChartsResource extends Resource {
3412
+ /** Top 20 artists by monthly listeners. */
3413
+ topByMonthlyListeners(query?: QueryParams$1, options?: RequestOverrides): Promise<GetTop20ByMonthlyListenersData>;
3414
+ /** Top 200 tracks chart. */
3415
+ top200Tracks(params: ChartsTop200TracksParams, options?: RequestOverrides): Promise<GetTop200TracksData>;
3416
+ /** Top artists chart. */
3417
+ topArtists(params: ChartsTopArtistsParams, options?: RequestOverrides): Promise<GetTopArtistsData>;
3418
+ /** Top albums chart. */
3419
+ topAlbums(params: ChartsTopAlbumsParams, options?: RequestOverrides): Promise<GetTopAlbumsData>;
3420
+ /** Viral tracks chart. */
3421
+ viralTracks(params: ChartsViralTracksParams, options?: RequestOverrides): Promise<GetViralTracksData>;
3422
+ /** Top 20 artists by followers. */
3423
+ topByFollowers(query?: QueryParams$1, options?: RequestOverrides): Promise<GetTop20ByFollowersData>;
3424
+ }
3425
+
3426
+ /** Parameters for {@link ConcertsResource.locations}. */
3427
+ interface ConcertsLocationsParams {
3428
+ /** City, venue, or place name. */
3429
+ query: string;
3430
+ }
3431
+ /** Parameters for {@link ConcertsResource.feed}. */
3432
+ interface ConcertsFeedParams {
3433
+ /** Spotify geohash (from `/partner/concert-locations`). */
3434
+ geoHash: string;
3435
+ /** Geoname ID (from `/partner/concert-locations`). */
3436
+ geonameId: string;
3437
+ /** Start of date range (YYYY-MM-DD). */
3438
+ from?: string;
3439
+ /** End of date range (YYYY-MM-DD). */
3440
+ to?: string;
3441
+ radiusInKm?: number;
3442
+ /** Comma-separated Spotify concept URIs (e.g. `spotify:concept:rock,spotify:concept:pop`). */
3443
+ conceptUris?: string;
3444
+ /** Pass back the `paginationKey` from a prior response. */
3445
+ paginationKey?: string;
3446
+ /** Enrich each concert with full concert details in parallel. */
3447
+ details?: boolean;
3448
+ /** Max concerts to enrich per request (max 50). */
3449
+ detailsLimit?: number;
3450
+ /** Return a flat, normalized concert shape instead of raw GraphQL. */
3451
+ parsed?: boolean;
3452
+ }
3453
+ /** Parameters for {@link ConcertsResource.get}. */
3454
+ interface ConcertsGetParams {
3455
+ /** Concert ID, `spotify:concert:URI`, or `open.spotify.com/concert/<id>` URL. */
3456
+ id: string;
3457
+ /** Return a flat, normalized concert shape instead of raw GraphQL. */
3458
+ parsed?: boolean;
3459
+ /** Set `false` to query as anonymous user (omits `me.profile` block). */
3460
+ authenticated?: boolean;
3461
+ }
3462
+ /** Parameters for {@link ConcertsResource.byArtist}. */
3463
+ interface ConcertsByArtistParams {
3464
+ /** Artist ID, URI, or open.spotify.com URL. */
3465
+ id: string;
3466
+ /** Geohash for nearby-concert prioritization. `0` = global. */
3467
+ geoHash?: string;
3468
+ includeNearby?: boolean;
3469
+ /** Enrich each concert with full concert details in parallel. */
3470
+ details?: boolean;
3471
+ /** Max concerts to enrich per request (max 50). */
3472
+ detailsLimit?: number;
3473
+ /** Return a flat, normalized concert shape instead of raw GraphQL. */
3474
+ parsed?: boolean;
3475
+ }
3476
+ /** Parameters for {@link ConcertsResource.searchArtists}. */
3477
+ interface ConcertsSearchArtistsParams {
3478
+ /** Artist name to search. */
3479
+ query: string;
3480
+ geoHash?: string;
3481
+ includeNearby?: boolean;
3482
+ /** Number of artist matches to return concerts for. */
3483
+ limit?: number;
3484
+ /** Enrich each concert with full concert details in parallel. */
3485
+ details?: boolean;
3486
+ /** Max concerts to enrich per request (max 50). */
3487
+ detailsLimit?: number;
3488
+ /** Return a flat, normalized concert shape instead of raw GraphQL. */
3489
+ parsed?: boolean;
3490
+ }
3491
+ /** Concert endpoints. */
3492
+ declare class ConcertsResource extends Resource {
3493
+ /** Search concert locations by city, venue, or place name. */
3494
+ locations(params: ConcertsLocationsParams, options?: RequestOverrides): Promise<GetPartnerConcertLocationsData>;
3495
+ /** Get the concert feed for a location. */
3496
+ feed(params: ConcertsFeedParams, options?: RequestOverrides): Promise<unknown>;
3497
+ /** Get details for a single concert. */
3498
+ get(params: ConcertsGetParams, options?: RequestOverrides): Promise<GetPartnerConcertData>;
3499
+ /** Get an artist's upcoming concerts. */
3500
+ byArtist(params: ConcertsByArtistParams, options?: RequestOverrides): Promise<GetPartnerArtistConcertsData>;
3501
+ /** Search concerts by artist name. */
3502
+ searchArtists(params: ConcertsSearchArtistsParams, options?: RequestOverrides): Promise<GetPartnerSearchConcertArtistsData>;
3503
+ }
3504
+
3505
+ /** Credentials / cookie-pool status endpoints. */
3506
+ declare class CredentialsResource extends Resource {
3507
+ /** Get the current credentials status. */
3508
+ status(query?: QueryParams$1, options?: RequestOverrides): Promise<GetCredentialsStatusData>;
3509
+ /** Get the Redis-backed cookie pool status. */
3510
+ redisCookies(query?: QueryParams$1, options?: RequestOverrides): Promise<GetCookiesRedisData>;
3511
+ }
3512
+
3513
+ /** Parameters for {@link DownloadsResource.track}. */
3514
+ interface DownloadsTrackParams {
3515
+ /** Track query — a Spotify track URL/ID or a free-text search string. */
3516
+ q: string;
3517
+ }
3518
+ /** Parameters for {@link DownloadsResource.soundcloud}. */
3519
+ interface DownloadsSoundcloudParams {
3520
+ /** Track query — a SoundCloud track URL or a free-text search string. */
3521
+ q: string;
3522
+ }
3523
+ /** Track download endpoints. */
3524
+ declare class DownloadsResource extends Resource {
3525
+ /** Download a track. */
3526
+ track(params: DownloadsTrackParams, options?: RequestOverrides): Promise<unknown>;
3527
+ /** Download a track from SoundCloud. */
3528
+ soundcloud(params: DownloadsSoundcloudParams, options?: RequestOverrides): Promise<unknown>;
3529
+ }
3530
+
3531
+ /** Parameters for {@link EpisodesResource.get}. */
3532
+ interface EpisodesGetParams {
3533
+ /** Comma-separated Spotify episode IDs. */
3534
+ ids: string | readonly string[];
3535
+ /** ISO 3166-1 alpha-2 market code. */
3536
+ market?: string;
3537
+ }
3538
+ /** Parameters for {@link EpisodesResource.byId}. */
3539
+ interface EpisodesByIdParams {
3540
+ /** Spotify episode ID. */
3541
+ id: string;
3542
+ /** ISO 3166-1 alpha-2 market code. */
3543
+ market?: string;
3544
+ }
3545
+ /** Episode endpoints. */
3546
+ declare class EpisodesResource extends Resource {
3547
+ /** Get one or more episodes by ID. */
3548
+ get(params: EpisodesGetParams, options?: RequestOverrides): Promise<GetEpisodesData>;
3549
+ /** Get a single episode by ID. */
3550
+ byId(params: EpisodesByIdParams, options?: RequestOverrides): Promise<unknown>;
3551
+ }
3552
+
3553
+ /** Health, readiness and diagnostics endpoints. */
3554
+ declare class HealthResource extends Resource {
3555
+ /** Lightweight liveness probe. */
3556
+ ping(query?: QueryParams$1, options?: RequestOverrides): Promise<GetPingData>;
3557
+ /** Overall cluster health summary. */
3558
+ get(query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
3559
+ /** Health of the individual instance serving the request. */
3560
+ instance(query?: QueryParams$1, options?: RequestOverrides): Promise<GetHealthInstanceData>;
3561
+ /** Cluster-wide health overview. */
3562
+ cluster(query?: QueryParams$1, options?: RequestOverrides): Promise<GetHealthClusterData>;
3563
+ /** Strict cluster health check (fails unless every instance is healthy). */
3564
+ clusterStrict(query?: QueryParams$1, options?: RequestOverrides): Promise<GetHealthClusterStrictData>;
3565
+ /** Health and statistics for the proxy pool. */
3566
+ proxies(query?: QueryParams$1, options?: RequestOverrides): Promise<GetHealthProxiesData>;
3567
+ /** Clear accumulated proxy statistics. */
3568
+ clearProxies(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
3569
+ /** Clear accumulated error counters. */
3570
+ clearErrors(body?: unknown, query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
3571
+ }
3572
+
3573
+ /** Parameters for {@link LookupsResource.isrc}. */
3574
+ interface LookupsIsrcParams {
3575
+ /** International Standard Recording Code identifying the track. */
3576
+ isrc: string;
3577
+ }
3578
+ /** Parameters for {@link LookupsResource.upc}. */
3579
+ interface LookupsUpcParams {
3580
+ /** Universal Product Code identifying the album. */
3581
+ upc: string;
3582
+ }
3583
+ /** Identifier lookup endpoints (ISRC / UPC). */
3584
+ declare class LookupsResource extends Resource {
3585
+ /** Lookup a track by its ISRC. */
3586
+ isrc(params: LookupsIsrcParams, options?: RequestOverrides): Promise<GetIsrcLookupData>;
3587
+ /** Lookup an album by its UPC. */
3588
+ upc(params: LookupsUpcParams, options?: RequestOverrides): Promise<GetUpcLookupData>;
3589
+ }
3590
+
3591
+ /** Markets endpoints. */
3592
+ declare class MarketsResource extends Resource {
3593
+ /** List the markets (countries) where Spotify is available. */
3594
+ get(query?: QueryParams$1, options?: RequestOverrides): Promise<GetMarketsData>;
3595
+ }
3596
+
3597
+ /** Parameters for {@link PartnerResource.playlist}. */
3598
+ interface PartnerPlaylistParams {
3599
+ /** 22-character Spotify playlist ID. */
3600
+ id: string;
3601
+ offset?: number;
3602
+ limit?: number;
3603
+ }
3604
+ /** Parameters for {@link PartnerResource.track}. */
3605
+ interface PartnerTrackParams {
3606
+ /** Spotify track ID. */
3607
+ id: string;
3608
+ }
3609
+ /** Parameters for {@link PartnerResource.trackCount}. */
3610
+ interface PartnerTrackCountParams {
3611
+ /** Spotify track ID. */
3612
+ spotify_track_id?: string;
3613
+ /** ISRC to look the track up by. */
3614
+ isrc?: string;
3615
+ }
3616
+ /** Parameters for {@link PartnerResource.album}. */
3617
+ interface PartnerAlbumParams {
3618
+ /** Spotify album ID. */
3619
+ id: string;
3620
+ /** Locale, e.g. `intl-es`. */
3621
+ locale?: string;
3622
+ offset?: number;
3623
+ limit?: number;
3624
+ }
3625
+ /** Parameters for {@link PartnerResource.artistOverview}. */
3626
+ interface PartnerArtistOverviewParams {
3627
+ /** Spotify artist ID. */
3628
+ id: string;
3629
+ /** Locale, e.g. `en`. */
3630
+ locale?: string;
3631
+ /** Include prerelease content. */
3632
+ includePrerelease?: boolean;
3633
+ }
3634
+ /** Parameters for {@link PartnerResource.artistDiscography}. */
3635
+ interface PartnerArtistDiscographyParams {
3636
+ /** Spotify artist ID. */
3637
+ id: string;
3638
+ offset?: number;
3639
+ limit?: number;
3640
+ }
3641
+ /** Spotify Partner (internal GraphQL) endpoints. */
3642
+ declare class PartnerResource extends Resource {
3643
+ /** Get partner playlist data (paginated). */
3644
+ playlist(params: PartnerPlaylistParams, options?: RequestOverrides): Promise<GetPartnerPlaylistData>;
3645
+ /** Get partner track data. */
3646
+ track(params: PartnerTrackParams, options?: RequestOverrides): Promise<GetPartnerTrackData>;
3647
+ /** Get a track's play count by Spotify ID or ISRC. */
3648
+ trackCount(params: PartnerTrackCountParams, options?: RequestOverrides): Promise<GetPartnerTrackCountData>;
3649
+ /** Get partner album data (paginated). */
3650
+ album(params: PartnerAlbumParams, options?: RequestOverrides): Promise<GetPartnerAlbumData>;
3651
+ /** Get partner artist overview. */
3652
+ artistOverview(params: PartnerArtistOverviewParams, options?: RequestOverrides): Promise<GetPartnerArtistOverviewData>;
3653
+ /** Get partner artist discography (paginated). */
3654
+ artistDiscography(params: PartnerArtistDiscographyParams, options?: RequestOverrides): Promise<GetPartnerArtistDiscographyData>;
3655
+ }
3656
+
3657
+ /** Parameters for {@link PlaylistsResource.get}. */
3658
+ interface PlaylistsGetParams {
3659
+ /** Spotify playlist ID. */
3660
+ id: string;
3661
+ }
3662
+ /** Parameters for {@link PlaylistsResource.tracks}. */
3663
+ interface PlaylistsTracksParams {
3664
+ /** Spotify playlist ID. */
3665
+ id: string;
3666
+ offset?: number;
3667
+ limit?: number;
3668
+ }
3669
+ /** Parameters for {@link PlaylistsResource.fromSeed}. */
3670
+ interface PlaylistsFromSeedParams {
3671
+ /** Spotify URI to seed the generated playlist from. */
3672
+ uri: string;
3673
+ }
3674
+ /** Playlist endpoints. */
3675
+ declare class PlaylistsResource extends Resource {
3676
+ /** Get a playlist by ID. */
3677
+ get(params: PlaylistsGetParams, options?: RequestOverrides): Promise<GetPlaylistData>;
3678
+ /** Get a playlist's tracks (paginated). */
3679
+ tracks(params: PlaylistsTracksParams, options?: RequestOverrides): Promise<GetPlaylistTracksData>;
3680
+ /** Generate a playlist from a seed URI. */
3681
+ fromSeed(params: PlaylistsFromSeedParams, options?: RequestOverrides): Promise<GetSeedToPlaylistData>;
3682
+ }
3683
+
3684
+ /** Parameters for {@link SearchResource.search}. */
3685
+ interface SearchParams {
3686
+ /** Search query. */
3687
+ q: string;
3688
+ /** Search type: `multi`, `tracks`, `albums`, `artists`, `playlists`, etc. Default `multi`. */
3689
+ type?: string;
3690
+ offset?: number;
3691
+ limit?: number;
3692
+ numberOfTopResults?: number;
3693
+ /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */
3694
+ contrast?: string;
3695
+ }
3696
+ /** Parameters for {@link SearchResource.topResults}. */
3697
+ interface SearchTopResultsParams {
3698
+ q: string;
3699
+ numberOfTopResults?: number;
3700
+ contrast?: string;
3701
+ }
3702
+ /** Parameters for {@link SearchResource.lyrics}. */
3703
+ interface SearchLyricsParams {
3704
+ q: string;
3705
+ /** Lyrics output format. */
3706
+ format?: 'json' | 'lrc' | 'srt' | 'raw';
3707
+ }
3708
+ /** Parameters for {@link SearchResource.suggestions}. */
3709
+ interface SearchSuggestionsParams {
3710
+ q: string;
3711
+ offset?: number;
3712
+ limit?: number;
3713
+ numberOfTopResults?: number;
3714
+ includeAuthors?: boolean;
3715
+ debug?: boolean;
3716
+ timeout?: number;
3717
+ contrast?: string;
3718
+ }
3719
+ /** Parameters for {@link SearchResource.multiMarket}. */
3720
+ interface SearchMultiMarketParams {
3721
+ q: string;
3722
+ type?: string;
3723
+ markets?: string;
3724
+ limit?: number;
3725
+ }
3726
+ /** Search endpoints. */
3727
+ declare class SearchResource extends Resource {
3728
+ /** Search Spotify across one or more types. */
3729
+ search(params: SearchParams, options?: RequestOverrides): Promise<GetSearchData>;
3730
+ /** Search returning only the top results. */
3731
+ topResults(params: SearchTopResultsParams, options?: RequestOverrides): Promise<GetSearchTopResultsData>;
3732
+ /** Search and return synced lyrics for the best match. */
3733
+ lyrics(params: SearchLyricsParams, options?: RequestOverrides): Promise<GetSearchLyricsData>;
3734
+ /** Search suggestions / autocomplete. */
3735
+ suggestions(params: SearchSuggestionsParams, options?: RequestOverrides): Promise<GetSearchSuggestionsData>;
3736
+ /** Search across multiple markets at once. */
3737
+ multiMarket(params: SearchMultiMarketParams, options?: RequestOverrides): Promise<unknown>;
3738
+ }
3739
+
3740
+ /** Parameters for {@link ShowsResource.get}. */
3741
+ interface ShowsGetParams {
3742
+ /** Comma-separated Spotify show IDs. */
3743
+ ids: string | readonly string[];
3744
+ /** ISO market code. */
3745
+ market?: string;
3746
+ }
3747
+ /** Parameters for {@link ShowsResource.getById}. */
3748
+ interface ShowsGetByIdParams {
3749
+ /** Spotify show ID. */
3750
+ id: string;
3751
+ /** ISO market code. */
3752
+ market?: string;
3753
+ }
3754
+ /** Parameters for {@link ShowsResource.episodes}. */
3755
+ interface ShowsEpisodesParams {
3756
+ /** Spotify show ID. */
3757
+ id: string;
3758
+ offset?: number;
3759
+ limit?: number;
3760
+ }
3761
+ /** Show (podcast) endpoints. */
3762
+ declare class ShowsResource extends Resource {
3763
+ /** Get one or more shows by ID. */
3764
+ get(params: ShowsGetParams, options?: RequestOverrides): Promise<GetShowsData>;
3765
+ /** Get a single show by ID. */
3766
+ getById(params: ShowsGetByIdParams, options?: RequestOverrides): Promise<GetShowsIdData>;
3767
+ /** Get a show's episodes (paginated). */
3768
+ episodes(params: ShowsEpisodesParams, options?: RequestOverrides): Promise<unknown>;
3769
+ }
3770
+
3771
+ /** Parameters for {@link SnapshotsResource.list}. */
3772
+ interface SnapshotsListParams {
3773
+ /** Spotify playlist ID. */
3774
+ id: string;
3775
+ }
3776
+ /** Parameters for {@link SnapshotsResource.create}. */
3777
+ interface SnapshotsCreateParams {
3778
+ /** Spotify playlist ID to snapshot. */
3779
+ id?: string;
3780
+ /** Webhook URL notified when the snapshot completes. */
3781
+ webhook?: string;
3782
+ }
3783
+ /** Playlist snapshot endpoints. */
3784
+ declare class SnapshotsResource extends Resource {
3785
+ /** List the snapshots taken for a playlist. */
3786
+ list(params: SnapshotsListParams, options?: RequestOverrides): Promise<GetPlaylistSnapshotData>;
3787
+ /** Create a new snapshot of a playlist. */
3788
+ create(params: SnapshotsCreateParams, options?: RequestOverrides): Promise<GetPlaylistSnapshotData>;
3789
+ }
3790
+
3791
+ /** Parameters for {@link TrackingResource.track}. */
3792
+ interface TrackingTrackParams {
3793
+ /** Kind of Spotify entity to track. */
3794
+ type: 'track' | 'album' | 'artist' | 'playlist';
3795
+ /** Spotify ID of the entity to track. */
3796
+ id: string;
3797
+ }
3798
+ /** Parameters for {@link TrackingResource.untrack}. */
3799
+ interface TrackingUntrackParams {
3800
+ /** Kind of Spotify entity to untrack. */
3801
+ type: string;
3802
+ /** Spotify ID of the entity to untrack. */
3803
+ id: string;
3804
+ }
3805
+ /** Parameters for {@link TrackingResource.items}. */
3806
+ interface TrackingItemsParams {
3807
+ offset?: number;
3808
+ limit?: number;
3809
+ }
3810
+ /** Parameters for {@link TrackingResource.item}. */
3811
+ interface TrackingItemParams {
3812
+ /** Kind of Spotify entity. */
3813
+ spotifyType: string;
3814
+ /** Spotify ID of the tracked entity. */
3815
+ spotifyId: string;
3816
+ }
3817
+ /** Parameters for {@link TrackingResource.logs}. */
3818
+ interface TrackingLogsParams {
3819
+ offset?: number;
3820
+ limit?: number;
3821
+ }
3822
+ /** Tracking endpoints. */
3823
+ declare class TrackingResource extends Resource {
3824
+ /** Start tracking a Spotify item. */
3825
+ track(params: TrackingTrackParams, options?: RequestOverrides): Promise<unknown>;
3826
+ /** Stop tracking a Spotify item. */
3827
+ untrack(params: TrackingUntrackParams, options?: RequestOverrides): Promise<unknown>;
3828
+ /** List tracked items (paginated). */
3829
+ items(params: TrackingItemsParams, options?: RequestOverrides): Promise<GetTrackingItemsData>;
3830
+ /** Get the detail of a single tracked item. */
3831
+ item(params: TrackingItemParams, options?: RequestOverrides): Promise<unknown>;
3832
+ /** Get the tracking change log (paginated). */
3833
+ logs(params: TrackingLogsParams, options?: RequestOverrides): Promise<GetTrackingLogsData>;
3834
+ /** Get tracking statistics. */
3835
+ stats(query?: QueryParams$1, options?: RequestOverrides): Promise<GetTrackingStatsData>;
3836
+ /** Get tracking subsystem health. */
3837
+ health(query?: QueryParams$1, options?: RequestOverrides): Promise<GetTrackingHealthData>;
3838
+ }
3839
+
3840
+ /** Parameters for {@link TracksResource.get}. */
3841
+ interface TracksGetParams {
3842
+ /** Comma-separated track IDs. */
3843
+ ids: string | readonly string[];
3844
+ /**
3845
+ * Comma-separated list of streaming providers to contrast against.
3846
+ * Appends a `_contrast` field to the response with cross-platform matching data.
3847
+ * Available providers: `ytmusic`, `applemusic`, `amazonmusic`, `tencentmusic`, `pandora`, `gaana`.
3848
+ */
3849
+ contrast?: string;
3850
+ }
3851
+ /** Parameters for {@link TracksResource.credits}. */
3852
+ interface TracksCreditsParams {
3853
+ /** Spotify track ID. */
3854
+ id: string;
3855
+ }
3856
+ /** Parameters for {@link TracksResource.lyrics}. */
3857
+ interface TracksLyricsParams {
3858
+ /** Spotify track ID. */
3859
+ id: string;
3860
+ /** Lyrics output format. Default `json`. */
3861
+ format?: 'json' | 'lrc' | 'srt' | 'raw';
3862
+ /** Whether to request the vocal-removal (instrumental) variant. Default `false`. */
3863
+ vocalRemoval?: boolean;
3864
+ }
3865
+ /** Parameters for {@link TracksResource.recommendations}. */
3866
+ interface TracksRecommendationsParams {
3867
+ /** Number of recommended tracks to return. */
3868
+ limit?: number;
3869
+ /** Comma-separated seed track IDs. */
3870
+ seed_tracks?: string | readonly string[];
3871
+ /** Comma-separated seed artist IDs. */
3872
+ seed_artists?: string | readonly string[];
3873
+ /** Comma-separated seed genres. */
3874
+ seed_genres?: string;
3875
+ }
3876
+ /** Track endpoints. */
3877
+ declare class TracksResource extends Resource {
3878
+ /** Get one or more tracks by ID. */
3879
+ get(params: TracksGetParams, options?: RequestOverrides): Promise<GetTracksData>;
3880
+ /** Get a track's credits (writers, producers, performers). */
3881
+ credits(params: TracksCreditsParams, options?: RequestOverrides): Promise<GetTrackCreditsData>;
3882
+ /** Get a track's lyrics. */
3883
+ lyrics(params: TracksLyricsParams, options?: RequestOverrides): Promise<GetTrackLyricsData>;
3884
+ /** Get track recommendations from seed tracks, artists and/or genres. */
3885
+ recommendations(params: TracksRecommendationsParams, options?: RequestOverrides): Promise<GetRecommendationsData>;
3886
+ }
3887
+
3888
+ /** Parameters for {@link UsersResource.profile}. */
3889
+ interface UsersProfileParams {
3890
+ /** Spotify user ID. */
3891
+ id: string;
3892
+ /** Max number of playlists to include. Default `10`. */
3893
+ playlistLimit?: number;
3894
+ /** Max number of artists to include. Default `100`. */
3895
+ artistLimit?: number;
3896
+ /** Max number of episodes to include. Default `100`. */
3897
+ episodeLimit?: number;
3898
+ }
3899
+ /** Parameters for {@link UsersResource.followers}. */
3900
+ interface UsersFollowersParams {
3901
+ /** Spotify user ID. */
3902
+ id: string;
3903
+ }
3904
+ /** User endpoints. */
3905
+ declare class UsersResource extends Resource {
3906
+ /** Get a public user profile, including their playlists, artists and episodes. */
3907
+ profile(params: UsersProfileParams, options?: RequestOverrides): Promise<GetUserProfileData>;
3908
+ /** Get a user's followers. */
3909
+ followers(params: UsersFollowersParams, options?: RequestOverrides): Promise<GetUserFollowersData>;
3910
+ }
3911
+
3912
+ /** Parameters for {@link WebhooksResource.register}. */
3913
+ interface WebhooksRegisterParams {
3914
+ /** Destination URL that delivery payloads are POSTed to. */
3915
+ url?: string;
3916
+ /** Event names to subscribe this webhook to. */
3917
+ events?: string[];
3918
+ }
3919
+ /** Parameters for {@link WebhooksResource.delete}. */
3920
+ interface WebhooksDeleteParams {
3921
+ /** Webhook ID. */
3922
+ id: string;
3923
+ }
3924
+ /** Parameters for {@link WebhooksResource.test}. */
3925
+ interface WebhooksTestParams {
3926
+ /** Webhook ID. */
3927
+ id: string;
3928
+ }
3929
+ /** Parameters for {@link WebhooksResource.deliveries}. */
3930
+ interface WebhooksDeliveriesParams {
3931
+ /** Webhook ID. */
3932
+ id: string;
3933
+ }
3934
+ /** Webhook management endpoints. */
3935
+ declare class WebhooksResource extends Resource {
3936
+ /** List registered webhooks. */
3937
+ get(query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
3938
+ /** Register a new webhook. */
3939
+ register(params: WebhooksRegisterParams, options?: RequestOverrides): Promise<unknown>;
3940
+ /** Get aggregate webhook delivery statistics. */
3941
+ stats(query?: QueryParams$1, options?: RequestOverrides): Promise<unknown>;
3942
+ /** Delete a webhook by ID. */
3943
+ delete(params: WebhooksDeleteParams, options?: RequestOverrides): Promise<unknown>;
3944
+ /** Trigger a test delivery for a webhook. */
3945
+ test(params: WebhooksTestParams, options?: RequestOverrides): Promise<unknown>;
3946
+ /** Get the delivery log for a webhook. */
3947
+ deliveries(params: WebhooksDeliveriesParams, options?: RequestOverrides): Promise<unknown>;
3948
+ }
3949
+
3950
+ /**
3951
+ * The Spotify Data API client. Every endpoint is reachable through a typed
3952
+ * resource namespace, e.g. `client.search.search({ q: 'daft punk' })`.
3953
+ */
3954
+ declare class SpotifyApiClient extends SpotifyHttpClient {
3955
+ readonly ai: AiResource;
3956
+ readonly albums: AlbumsResource;
3957
+ readonly analysis: AnalysisResource;
3958
+ readonly artists: ArtistsResource;
3959
+ readonly audiobooks: AudiobooksResource;
3960
+ readonly batch: BatchResource;
3961
+ readonly browse: BrowseResource;
3962
+ readonly cache: CacheResource;
3963
+ readonly charts: ChartsResource;
3964
+ readonly concerts: ConcertsResource;
3965
+ readonly credentials: CredentialsResource;
3966
+ readonly downloads: DownloadsResource;
3967
+ readonly episodes: EpisodesResource;
3968
+ readonly health: HealthResource;
3969
+ readonly lookups: LookupsResource;
3970
+ readonly markets: MarketsResource;
3971
+ readonly partner: PartnerResource;
3972
+ readonly playlists: PlaylistsResource;
3973
+ readonly search: SearchResource;
3974
+ readonly shows: ShowsResource;
3975
+ readonly snapshots: SnapshotsResource;
3976
+ readonly tracking: TrackingResource;
3977
+ readonly tracks: TracksResource;
3978
+ readonly users: UsersResource;
3979
+ readonly webhooks: WebhooksResource;
3980
+ constructor(config: ClientConfig);
3981
+ }
3982
+ /** Convenience factory equivalent to `new SpotifyApiClient(config)`. */
3983
+ declare function createClient(config: ClientConfig): SpotifyApiClient;
3984
+
3985
+ /** Options used to construct a {@link SpotifyApiError}. */
3986
+ interface SpotifyApiErrorInit {
3987
+ message: string;
3988
+ /** HTTP status code, when the failure came from a response. */
3989
+ status?: number;
3990
+ /** Machine-readable code: upstream `error` field, or `TIMEOUT`/`NETWORK`/`ABORTED`/`CONFIG`. */
3991
+ code?: string;
3992
+ /** The request URL that failed. */
3993
+ url?: string;
3994
+ /** Parsed response body (or raw text), when available. */
3995
+ body?: unknown;
3996
+ /** Underlying error, if any. */
3997
+ cause?: unknown;
3998
+ }
3999
+ /**
4000
+ * Every failure thrown by the client is a `SpotifyApiError`, giving uniform access
4001
+ * to `status`, `code`, `url` and the parsed `body`.
4002
+ */
4003
+ declare class SpotifyApiError extends Error {
4004
+ readonly status?: number;
4005
+ readonly code?: string;
4006
+ readonly url?: string;
4007
+ readonly body?: unknown;
4008
+ constructor(init: SpotifyApiErrorInit);
4009
+ /** True when the server returned HTTP 429. */
4010
+ get isRateLimit(): boolean;
4011
+ /** True for HTTP 5xx responses. */
4012
+ get isServerError(): boolean;
4013
+ /** True when the request timed out client-side. */
4014
+ get isTimeout(): boolean;
4015
+ }
4016
+
4017
+ /**
4018
+ * Spotify ID normalization helpers.
4019
+ *
4020
+ * Every endpoint that takes an `id` / `ids` accepts a bare Spotify ID, a URI
4021
+ * (`spotify:artist:…`), or an open.spotify.com URL — these helpers reduce any of
4022
+ * those to the bare ID. Non-Spotify values (category slugs, webhook UUIDs, etc.)
4023
+ * pass through unchanged, so normalization is always safe to apply.
4024
+ */
4025
+ /** Reduce a Spotify ID / URI / URL to its bare ID. Unknown formats pass through. */
4026
+ declare function normalizeId(input: string | number): string;
4027
+ /** Accept a comma-separated string or an array of IDs/URIs/URLs → comma-joined bare IDs. */
4028
+ declare function normalizeIds(input: string | number | ReadonlyArray<string | number>): string;
4029
+
4030
+ /**
4031
+ * Pagination helpers for the many `offset`/`limit` endpoints.
4032
+ *
4033
+ * Because each endpoint nests its items differently, you supply a `getItems`
4034
+ * function that extracts the current page's array. Iteration stops when a page
4035
+ * returns fewer items than `limit` (or when `maxItems` is reached).
4036
+ */
4037
+ interface PaginateOptions<T> {
4038
+ /** Extract the array of items from a page (default: the page itself if it is an array). */
4039
+ getItems?: (page: T) => ReadonlyArray<unknown>;
4040
+ /** Starting offset. Default `0`. */
4041
+ offset?: number;
4042
+ /** Page size. Default `50`. */
4043
+ limit?: number;
4044
+ /** Stop after collecting this many items. */
4045
+ maxItems?: number;
4046
+ /** Hard cap on page requests (safety). Default `100`. */
4047
+ maxPages?: number;
4048
+ }
4049
+ /** A page fetcher: given `{ offset, limit }`, return that page. */
4050
+ type PageFetcher<T> = (params: {
4051
+ offset: number;
4052
+ limit: number;
4053
+ }) => Promise<T>;
4054
+ /**
4055
+ * Async-iterate pages of a paginated endpoint.
4056
+ *
4057
+ * @example
4058
+ * for await (const page of paginate((p) => spotify.artists.albums({ id, ...p }), {
4059
+ * getItems: (p) => p?.data?.artist?.discography?.albums?.items ?? [],
4060
+ * })) {
4061
+ * // handle page
4062
+ * }
4063
+ */
4064
+ declare function paginate<T>(fetcher: PageFetcher<T>, options?: PaginateOptions<T>): AsyncGenerator<T>;
4065
+ /** Collect all items across pages into a single flat array (bounded by `maxItems`/`maxPages`). */
4066
+ declare function collect<T, I = unknown>(fetcher: PageFetcher<T>, options?: PaginateOptions<T>): Promise<I[]>;
4067
+
4068
+ export { type AccessExplanation, type AccessInfo, type AddedAt, AiResource, AlbumAlbumType, type AlbumCopyright, type AlbumExternalids, type AlbumMetadata, type AlbumMetadataParams, type AlbumMoreAlbumsByArtist, type AlbumOfTrackClass, type AlbumOfTrackDate, type AlbumOfTrackPlayability, type AlbumOfTrackTracks, type AlbumSharingInfo, type AlbumTracksParams, type AlbumUnion, type AlbumUnionMoreAlbumsByArtist, type AlbumUnionVisualIdentity, type AlbumsClass, type AlbumsGetParams, type AlbumsPagingInfo, AlbumsResource, type AlbumsV2, type AllItem, type AmbitiousData, type AmbitiousDiscography, type AmbitiousItem, type AnalysisArtistCompareParams, type AnalysisAudioFeaturesParams, type AnalysisPlaylistAnalysisParams, AnalysisResource, type ArtistElement, type ArtistGoods, type ArtistMetadata, type ArtistStats, type ArtistUnionRelatedContent, ArtistUnionTypename, type ArtistUnionVisualIdentity, type ArtistsAlbumsParams, type ArtistsAppearsOnParams, type ArtistsDiscographyOverviewParams, type ArtistsDiscoveredOnParams, type ArtistsFeaturingParams, type ArtistsGetParams, type ArtistsOverviewParams, type ArtistsRelatedParams, ArtistsResource, type ArtistsSinglesParams, type ArtistsTopTracksParams, type Attribute, type AudioAssociations, AudioAssociationsTypename, type AudioFeatures, type AudioPreviews, type AudiobooksChaptersParams, type AudiobooksGetByIdParams, type AudiobooksGetParams, AudiobooksResource, type AvatarImage, type AvatarImageElement, type BackgroundImageClass, type Badge, type BatchAlbumMetadataParams, type BatchArtistOverviewParams, BatchResource, type BatchTrackCreditsParams, type BatchTrackLyricsParams, type BatchTrackPopularityParams, type BiographyElement, BiographyType, type BraggadociousData, type BraggadociousItem, type BrowseCategoriesParams, type BrowseCategoryParams, type BrowseFeaturedPlaylistsParams, type BrowseNewReleasesParams, type BrowseRecommendationsParams, BrowseResource, type CacheInvalidateParams, CacheResource, type Categories, type ChartEntryData, ChartsResource, type ChartsTop200TracksParams, type ChartsTopAlbumsParams, type ChartsTopArtistsParams, type ChartsViralTracksParams, type ChipOrder, type ChipOrderItem, type ClientConfig, type Color, type ColorDark, type Comparison, type CompilationsClass, type CompilationsItem, type Concert, type ConcertLocations, type ConcertLocationsItem, type ConcertsByArtistParams, type ConcertsFeedParams, type ConcertsGetParams, type ConcertsLocationsParams, type ConcertsPagingInfo, ConcertsResource, type ConcertsSearchArtistsParams, type Content, type ContentItem, type ContentPagingInfo, type ContentRating, type Contrast, type CoverArt, type CoverArtElement, CredentialsResource, type CunningData, type CunningDiscography, type CunningItem, type CurrentUserCapabilities, DEFAULT_RETRIES, DEFAULT_RETRY_DELAY_MS, DEFAULT_TIMEOUT_MS, DEFAULT_USER_AGENT, type Data1, type Data2, type Data3, type Data4, type DataAlbumOfTrack, type DataArtist, type DataVisuals, type Dev, type Diff, type DiscoveredOn, type DiscoveredOnItem, type DiscoveredOnV2Item, type Discs, type DiscsItem, DownloadsResource, type DownloadsSoundcloudParams, type DownloadsTrackParams, type EncoreBaseSetTextColor, type Endpoint, EntryStatus, type EpisodesByIdParams, type EpisodesGetParams, EpisodesResource, type ErrorEnvelope, type Events, type EventsConcerts, type ExternalLinks, type ExternalLinksItem, type ExternalUrls, type ExtractedColorSet, type Featured, type FeaturedData, type FetchLike, type File, type FirstArtist, type FirstArtistItem, type FluffyAlbum, type FluffyAlbums, type FluffyAppearsOn, type FluffyAssociationsV3, type FluffyData, type FluffyDate, type FluffyDiscography, type FluffyExamples, type FluffyExtractedColors, type FluffyGoods, type FluffyItem, type FluffyItemsV2, type FluffyMerch, type FluffyOwnerV2, type FluffyPinnedItem, type FluffyPodcastV2, type FluffyPopularReleasesAlbums, type FluffyProfile, type FluffyRelatedContent, type FluffyReleases, type FluffyRelinkingInformation, type FluffyTopResultsV2, type FluffyTopTracks, type FluffyTrack, type FluffyTracks, FluffyType, FluffyTypename, type FluffyVisualIdentity, type FluffyVisuals, type FollowerRatio, type Followers, Format, type FriskyData, type FriskyItem, type GatedEntityRelation, type Genres, type GenresItem, type GetAlbumMetadataBatchData, type GetAlbumMetadataBatchDataResult, type GetAlbumMetadataData, type GetAlbumMetadataDataAlbum, type GetAlbumMetadataDataClass, type GetAlbumTracksData, type GetAlbumTracksDataAlbum, type GetAlbumsData, type GetAlbumsDataAlbum, type GetArtistAlbumsData, type GetArtistAlbumsDataArtist, type GetArtistAppearsOnData, type GetArtistAppearsOnDataArtist, type GetArtistCompareData, type GetArtistCompareDataArtist, type GetArtistData, type GetArtistDiscographyOverviewData, type GetArtistDiscoveredOnData, type GetArtistFeaturingData, type GetArtistOverviewBatchData, type GetArtistOverviewBatchDataResult, type GetArtistOverviewData, type GetArtistOverviewDataArtistUnion, type GetArtistRelatedData, type GetArtistSinglesData, type GetArtistSinglesDataArtistUnion, type GetArtistTopTracksData, type GetArtistsData, type GetArtistsDataArtist, type GetAudiobooksData, type GetBrowseCategoriesData, type GetBrowseCategoriesIdData, type GetBrowseCategoriesidData, type GetBrowseFeaturedPlaylistsData, type GetBrowseFeaturedPlaylistsDataPlaylists, type GetBrowseNewReleasesData, type GetBrowseNewReleasesDataAlbums, type GetBrowseRecommendationsData, type GetCacheStatsData, type GetCookiesRedisData, type GetCookiesRedisDataStats, type GetCookiesRedisDataUsage, type GetCredentialsStatusData, type GetCredentialsStatusDataUsage, type GetEpisodesData, type GetHealthClusterData, type GetHealthClusterDataInstance, type GetHealthClusterStrictData, type GetHealthInstanceData, type GetHealthProxiesData, type GetHealthProxiesDataStats, type GetIsrcLookupData, type GetMarketsData, type GetPartnerAlbumData, type GetPartnerArtistConcertsData, type GetPartnerArtistConcertsDataArtistUnion, type GetPartnerArtistConcertsDataConcerts, type GetPartnerArtistDiscographyData, type GetPartnerArtistDiscographyDataArtistUnion, type GetPartnerArtistOverviewData, type GetPartnerArtistOverviewDataArtistUnion, type GetPartnerConcertData, type GetPartnerConcertLocationsData, type GetPartnerPlaylistData, type GetPartnerSearchConcertArtistsData, type GetPartnerSearchConcertArtistsDataArtist, type GetPartnerTrackCountData, type GetPartnerTrackData, type GetPingData, type GetPlaylistAnalysisData, type GetPlaylistAnalysisDataDuration, type GetPlaylistData, GetPlaylistDataType, type GetPlaylistSnapshotData, type GetPlaylistTracksData, type GetPlaylistTracksDataItem, type GetRecommendationsData, type GetRecommendationsDataTrack, type GetSDatum, type GetSearchData, type GetSearchDataArtists, type GetSearchDataEpisodes, type GetSearchDataPlaylists, type GetSearchDataTrack, type GetSearchLyricsData, type GetSearchLyricsDataTrack, type GetSearchSuggestionsData, type GetSearchSuggestionsDataSearchV2, type GetSearchTopResultsData, type GetSearchTopResultsDataSearchV2, type GetSeedToPlaylistData, type GetShowsData, type GetShowsIdData, type GetShowsIdDataEpisodes, type GetShowsidData, type GetTop200TracksData, type GetTop200TracksDatum, type GetTop20ByFollowersData, type GetTop20ByFollowersDatum, type GetTop20ByMonthlyListenersData, type GetTop20ByMonthlyListenersDatum, type GetTopAlbumsData, type GetTopArtistsData, type GetTrackCreditsBatchData, type GetTrackCreditsBatchDataResult, type GetTrackCreditsData, type GetTrackLyricsBatchData, type GetTrackLyricsBatchDataResult, type GetTrackLyricsData, type GetTrackPopularityBatchData, type GetTrackPopularityBatchDataResult, type GetTrackingHealthData, type GetTrackingHealthDataStats, type GetTrackingItemsData, type GetTrackingLogsData, type GetTrackingStatsData, type GetTracksData, type GetUpcLookupData, type GetUserFollowersData, type GetUserProfileData, type GetViralTracksData, type HeaderImage, type HeaderImageClass, type HeaderImageExtractedColors, HealthResource, type HilariousData, type HilariousDiscography, type HilariousItem, type HilariousTrack, type Icon, type Id, type IdList, type ImageData, type ImageExtractedColors, type ImagesClass, type IndecentData, type IndecentDiscography, type IndecentItem, type IndecentTrack, type IndigoData, type IndigoDiscography, type IndigoItem, type IndigoReleases, type IndigoTrack, InstanceName, type Item1, type Item10, type Item11, type Item12, type Item13, type Item14, type Item15, type Item2, type Item3, type Item4, type Item5, type Item6, type Item7, type Item8, type Item9, type ItemArtists, type ItemClass, type ItemElement, type ItemExternalids, type ItemImages, type ItemItemV2, type ItemRelatedContent, ItemV2Typename, type ItemVisuals, type Items, type ItemsItem, ItemsV2Typename, Label, type LabelElement, LabelEnum, Language, type LastRequest, type LastRequestsTracking, type LastRequestsTrackingInstance, type LatestCopyright, type LatestElement, type LatestPlayability, LatestType, type Line, type LinkedTrack, type LookupsIsrcParams, LookupsResource, type LookupsUpcParams, type MagentaData, type MagentaItem, Market, MarketsResource, type MediaItem, MediaType, type Members, type MembersItem, type Metadata, type Metrics, type MischievousData, type MischievousItem, type Nearby, type OAuth, type OauthTokenStatus, type OnPlatformReputationTrait, type Overview, type OverviewData, type Owner, OwnerEnum, OwnerType, type OwnerV2, PROVIDERS, type PageFetcher, type PaginateOptions, type PartnerAlbumParams, type PartnerArtistDiscographyParams, type PartnerArtistOverviewParams, type PartnerPlaylistParams, PartnerResource, type PartnerTrackCountParams, type PartnerTrackParams, type PinnedItemItemV2, type PlayabilityClass, type PlayedState, type Playlist, type PlaylistV2, type PlaylistsFromSeedParams, type PlaylistsGetParams, PlaylistsResource, type PlaylistsTracksParams, type PlaylistsV2, type PlaylistsV2Item, PodcastV2Typename, type Podcasts, type PodcastsItem, type PopularReleases, type PopularReleasesAlbums, Precision, type Previews, PrimaryColor, type ProfileElement, type ProfilePlaylists, type Provider, type PublicPlaylist, type PurpleAlbum, type PurpleAlbums, type PurpleAppearsOn, type PurpleAssociationsV3, type PurpleData, type PurpleDate, type PurpleDiscography, type PurpleExamples, type PurpleExternalids, type PurpleExtractedColors, type PurpleGoods, type PurpleImages, type PurpleItem, type PurpleItemsV2, type PurpleLatest, PurpleMediaType, type PurpleMerch, type PurpleOwnerV2, type PurplePinnedItem, type PurplePodcastV2, type PurplePopularReleasesAlbums, type PurpleProfile, PurpleReason, type PurpleRelatedContent, type PurpleReleases, type PurpleRelinkingInformation, type PurpleRestrictions, type PurpleSharingInfo, type PurpleTopResultsV2, type PurpleTopTracks, type PurpleTrack, type PurpleTracks, PurpleType, PurpleTypename, type PurpleVisualIdentity, type PurpleVisuals, type QueryParams$1 as QueryParams, type QueryValue, type RankingMetric, RankingMetricType, type Redis, type RedisKeys, type RelatedArtists, type RelatedArtistsItem, type RelatedEntity, type RelatedEntityData, RelatedEntityTypename, type RelatedMusicVideosClass, type RelatedMusicVideosItem, type ReleaseDateClass, ReleaseDatePrecision, type ReleasesClass, type Request, type RequestOptions, type RequestOverrides, type ResolvedConfig, RestrictionsReason, type RetryInfo, type RoleCredit, type RoleCreditArtist, type Rotation, type SearchLyricsParams, type SearchMultiMarketParams, type SearchParams, SearchResource, type SearchSuggestionsParams, type SearchTests, type SearchTopResultsParams, type Seed, type ShowsEpisodesParams, type ShowsGetByIdParams, type ShowsGetParams, ShowsResource, type SignifierClass, type Singles, type SixteenByNineCoverImage, type Snapshot, type SnapshotTrack, type SnapshotsCreateParams, type SnapshotsListParams, SnapshotsResource, type Source, SpotifyApiClient, SpotifyApiError, type SpotifyApiErrorInit, SpotifyHttpClient, type SquareCoverImageClass, SquareCoverImageTypename, type StateClass, StateEnum, Status, type StatusCodeDistribution, type StickyData, type StickyDiscography, type StickyItem, type StickyReleases, type StickyTrack, StickyTypename, Subrole, type SuccessEnvelope, type Summary, type TentacledData, type TentacledDate, type TentacledDiscography, type TentacledItem, type TentacledPinnedItem, type TentacledProfile, type TentacledReleases, type TentacledTrack, TentacledTypename, type TentacledVisuals, type ThumbnailImage, type ThumbnailImageClass, type TopCities, type TopCitiesItem, type TopResults, type TopResultsItem, type TopTrack, type Topics, type TopicsItem, type TrackAlbumOfTrack, type TrackArtist, type TrackClass, type TrackData, type TrackDurationClass, type TrackMetadata, TrackType, type TrackUnion, type TrackUnionAlbumOfTrack, type TrackUnionAssociationsV3, type TrackingItemParams, type TrackingItemsParams, type TrackingLogsParams, TrackingResource, type TrackingTrackParams, type TrackingUntrackParams, type TracksCreditsParams, type TracksGetParams, type TracksLyricsParams, type TracksRecommendationsParams, TracksResource, type TracksTrack, type TracksV2, type TracksV2Item, Uri, type UserData, type UserLocationClass, type Users, type UsersFollowersParams, type UsersItem, type UsersProfileParams, UsersResource, type V2, type Verification, type Video, type VideoPreviewThumbnail, type VideoThumbnail, type WatchFeedEntrypoint, type WebhooksDeleteParams, type WebhooksDeliveriesParams, type WebhooksRegisterParams, WebhooksResource, type WebhooksTestParams, buildPath, collect, createClient, normalizeId, normalizeIds, paginate, resolveConfig };