@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 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/config.ts","../src/ids.ts","../src/core.ts","../src/resources/base.ts","../src/resources/ai.ts","../src/resources/albums.ts","../src/resources/analysis.ts","../src/resources/artists.ts","../src/resources/audiobooks.ts","../src/resources/batch.ts","../src/resources/browse.ts","../src/resources/cache.ts","../src/resources/charts.ts","../src/resources/concerts.ts","../src/resources/credentials.ts","../src/resources/downloads.ts","../src/resources/episodes.ts","../src/resources/health.ts","../src/resources/lookups.ts","../src/resources/markets.ts","../src/resources/partner.ts","../src/resources/playlists.ts","../src/resources/search.ts","../src/resources/shows.ts","../src/resources/snapshots.ts","../src/resources/tracking.ts","../src/resources/tracks.ts","../src/resources/users.ts","../src/resources/webhooks.ts","../src/client.ts","../src/pagination.ts","../src/generated/responses.ts"],"names":["BiographyType","Precision","PurpleReason","LatestType","Label","AlbumAlbumType","OwnerEnum","OwnerType","ReleaseDatePrecision","Market","RestrictionsReason","TrackType","LabelEnum","PurpleType","ArtistUnionTypename","PurpleTypename","PrimaryColor","GetPlaylistDataType","Status","InstanceName","SquareCoverImageTypename","FluffyTypename","ItemV2Typename","AudioAssociationsTypename","MediaType","Format","RelatedEntityTypename","TentacledTypename","StateEnum","PodcastV2Typename","PurpleMediaType","StickyTypename","ItemsV2Typename","Language","FluffyType","EntryStatus","RankingMetricType","Subrole","Uri"],"mappings":"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,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;AACL,EAAAA,QAAA,IAAA,CAAA,GAAK,IAAA;A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","file":"index.cjs","sourcesContent":["/** Options used to construct a {@link SpotifyApiError}. */\r\nexport interface SpotifyApiErrorInit {\r\n message: string;\r\n /** HTTP status code, when the failure came from a response. */\r\n status?: number;\r\n /** Machine-readable code: upstream `error` field, or `TIMEOUT`/`NETWORK`/`ABORTED`/`CONFIG`. */\r\n code?: string;\r\n /** The request URL that failed. */\r\n url?: string;\r\n /** Parsed response body (or raw text), when available. */\r\n body?: unknown;\r\n /** Underlying error, if any. */\r\n cause?: unknown;\r\n}\r\n\r\n/**\r\n * Every failure thrown by the client is a `SpotifyApiError`, giving uniform access\r\n * to `status`, `code`, `url` and the parsed `body`.\r\n */\r\nexport class SpotifyApiError extends Error {\r\n readonly status?: number;\r\n readonly code?: string;\r\n readonly url?: string;\r\n readonly body?: unknown;\r\n\r\n constructor(init: SpotifyApiErrorInit) {\r\n super(init.message);\r\n this.name = 'SpotifyApiError';\r\n this.status = init.status;\r\n this.code = init.code;\r\n this.url = init.url;\r\n this.body = init.body;\r\n if (init.cause !== undefined) {\r\n (this as { cause?: unknown }).cause = init.cause;\r\n }\r\n // Restore prototype chain when compiled down to ES5-ish targets.\r\n Object.setPrototypeOf(this, new.target.prototype);\r\n }\r\n\r\n /** True when the server returned HTTP 429. */\r\n get isRateLimit(): boolean {\r\n return this.status === 429;\r\n }\r\n\r\n /** True for HTTP 5xx responses. */\r\n get isServerError(): boolean {\r\n return typeof this.status === 'number' && this.status >= 500;\r\n }\r\n\r\n /** True when the request timed out client-side. */\r\n get isTimeout(): boolean {\r\n return this.code === 'TIMEOUT';\r\n }\r\n}\r\n","import { SpotifyApiError } from './errors';\r\nimport type { ClientConfig, FetchLike, Provider, RetryInfo } from './types/common';\r\n\r\n/** Base-URL / host presets for each provider. */\r\nexport const PROVIDERS = {\r\n rapidapi: { baseUrl: 'https://spotify81.p.rapidapi.com', host: 'spotify81.p.rapidapi.com' },\r\n proxy: { baseUrl: 'https://spotify-proxy.checkleaked.cc/spotify-data', host: undefined },\r\n} satisfies Record<Provider, { baseUrl: string; host: string | undefined }>;\r\n\r\nexport const DEFAULT_USER_AGENT = '@checkleaked/spotify-api';\r\nexport const DEFAULT_TIMEOUT_MS = 30_000;\r\nexport const DEFAULT_RETRIES = 2;\r\nexport const DEFAULT_RETRY_DELAY_MS = 500;\r\n\r\n/** Fully-resolved configuration used internally by the client. */\r\nexport interface ResolvedConfig {\r\n apiKey: string;\r\n baseUrl: string;\r\n host?: string;\r\n timeoutMs: number;\r\n retries: number;\r\n retryDelayMs: number;\r\n headers: Record<string, string>;\r\n fetch: FetchLike;\r\n userAgent: string;\r\n debug?: (message: string, detail?: unknown) => void;\r\n onRequest?: (info: { method: string; url: string; headers: Record<string, string> }) => void;\r\n onResponse?: (info: { method: string; url: string; status: number; durationMs: number }) => void;\r\n onRetry?: (info: RetryInfo) => void;\r\n}\r\n\r\nfunction readEnvKey(): string | undefined {\r\n if (typeof process === 'undefined' || !process.env) return undefined;\r\n return process.env.SPOTIFY_API_KEY || process.env.RAPIDAPI_KEY || process.env.SPOTIFY_RAPIDAPI_KEY || undefined;\r\n}\r\n\r\n/** Validate and normalize user config into a {@link ResolvedConfig}. */\r\nexport function resolveConfig(config: ClientConfig = {}): ResolvedConfig {\r\n const apiKey = config.apiKey || readEnvKey();\r\n if (typeof apiKey !== 'string' || apiKey.length === 0) {\r\n throw new SpotifyApiError({\r\n message: 'A non-empty `apiKey` is required (or set SPOTIFY_API_KEY / RAPIDAPI_KEY).',\r\n code: 'CONFIG',\r\n });\r\n }\r\n\r\n const provider: Provider = config.provider ?? 'rapidapi';\r\n const preset = PROVIDERS[provider];\r\n if (!preset) {\r\n throw new SpotifyApiError({\r\n message: `Unknown provider \"${provider}\". Use \"rapidapi\" or \"proxy\".`,\r\n code: 'CONFIG',\r\n });\r\n }\r\n\r\n const baseUrl = (config.baseUrl ?? preset.baseUrl).replace(/\\/+$/, '');\r\n const host = config.host ?? preset.host;\r\n\r\n const fetchImpl = config.fetch ?? (globalThis.fetch as FetchLike | undefined);\r\n if (typeof fetchImpl !== 'function') {\r\n throw new SpotifyApiError({\r\n message: 'No global `fetch` found. Provide `config.fetch` or run on Node >= 18.',\r\n code: 'CONFIG',\r\n });\r\n }\r\n\r\n const debug =\r\n config.debug === true\r\n ? (msg: string, detail?: unknown) => console.error(`[spotify-api] ${msg}`, detail ?? '')\r\n : typeof config.debug === 'function'\r\n ? config.debug\r\n : undefined;\r\n\r\n return {\r\n apiKey,\r\n baseUrl,\r\n host,\r\n timeoutMs: config.timeoutMs ?? DEFAULT_TIMEOUT_MS,\r\n retries: config.retries ?? DEFAULT_RETRIES,\r\n retryDelayMs: config.retryDelayMs ?? DEFAULT_RETRY_DELAY_MS,\r\n headers: config.headers ?? {},\r\n fetch: fetchImpl,\r\n userAgent: config.userAgent ?? DEFAULT_USER_AGENT,\r\n debug,\r\n onRequest: config.onRequest,\r\n onResponse: config.onResponse,\r\n onRetry: config.onRetry,\r\n };\r\n}\r\n","/**\r\n * Spotify ID normalization helpers.\r\n *\r\n * Every endpoint that takes an `id` / `ids` accepts a bare Spotify ID, a URI\r\n * (`spotify:artist:…`), or an open.spotify.com URL — these helpers reduce any of\r\n * those to the bare ID. Non-Spotify values (category slugs, webhook UUIDs, etc.)\r\n * pass through unchanged, so normalization is always safe to apply.\r\n */\r\n\r\nconst URI_RE = /^spotify:[a-z0-9]+:([A-Za-z0-9]+)$/i;\r\nconst URL_RE = /open\\.spotify\\.com\\/(?:intl-[a-z-]+\\/)?[a-z-]+\\/([A-Za-z0-9]+)/i;\r\n\r\n/** Reduce a Spotify ID / URI / URL to its bare ID. Unknown formats pass through. */\r\nexport function normalizeId(input: string | number): string {\r\n const s = String(input).trim();\r\n const uri = URI_RE.exec(s);\r\n if (uri) return uri[1];\r\n const url = URL_RE.exec(s);\r\n if (url) return url[1];\r\n return s;\r\n}\r\n\r\n/** Accept a comma-separated string or an array of IDs/URIs/URLs → comma-joined bare IDs. */\r\nexport function normalizeIds(input: string | number | ReadonlyArray<string | number>): string {\r\n const arr = Array.isArray(input) ? input : String(input).split(',');\r\n return (arr as ReadonlyArray<string | number>)\r\n .map((x) => normalizeId(x))\r\n .filter((x) => x.length > 0)\r\n .join(',');\r\n}\r\n","import { resolveConfig, type ResolvedConfig } from './config';\r\nimport { SpotifyApiError } from './errors';\r\nimport { normalizeId, normalizeIds } from './ids';\r\nimport type { ClientConfig, QueryParams, RequestOptions, RequestOverrides, SuccessEnvelope } from './types/common';\r\n\r\n/**\r\n * Low-level HTTP transport for the Spotify Data API.\r\n *\r\n * Handles URL/query building, header injection (`x-rapidapi-key` + host),\r\n * timeouts, retries with backoff (429 / 5xx / network, honoring `Retry-After`),\r\n * envelope unwrapping and uniform error mapping.\r\n *\r\n * The high-level {@link SpotifyApiClient} extends this and adds the typed\r\n * resource namespaces.\r\n */\r\nexport class SpotifyHttpClient {\r\n readonly config: ResolvedConfig;\r\n\r\n constructor(config: ClientConfig) {\r\n this.config = resolveConfig(config);\r\n }\r\n\r\n /** Perform a request and return the full {@link SuccessEnvelope}. */\r\n async request<T = unknown>(options: RequestOptions): Promise<SuccessEnvelope<T>> {\r\n const method = options.method ?? 'GET';\r\n const url = this.buildUrl(options.path, options.query);\r\n const cfg = this.config;\r\n\r\n const headers: Record<string, string> = {\r\n 'x-rapidapi-key': cfg.apiKey,\r\n accept: 'application/json',\r\n 'user-agent': cfg.userAgent,\r\n ...cfg.headers,\r\n ...options.headers,\r\n };\r\n if (cfg.host) headers['x-rapidapi-host'] = cfg.host;\r\n\r\n let bodyInit: string | undefined;\r\n if (options.body !== undefined && options.body !== null) {\r\n bodyInit = typeof options.body === 'string' ? options.body : JSON.stringify(options.body);\r\n if (!('content-type' in headers)) headers['content-type'] = 'application/json';\r\n }\r\n\r\n cfg.onRequest?.({ method, url, headers });\r\n cfg.debug?.(`→ ${method} ${url}`);\r\n\r\n const maxAttempts = Math.max(1, cfg.retries + 1);\r\n let lastError: unknown;\r\n\r\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\r\n const attemptStart = Date.now();\r\n const controller = new AbortController();\r\n const external = options.signal;\r\n const onExternalAbort = () => controller.abort();\r\n if (external) {\r\n if (external.aborted) controller.abort();\r\n else external.addEventListener('abort', onExternalAbort, { once: true });\r\n }\r\n let timedOut = false;\r\n const timer = setTimeout(() => {\r\n timedOut = true;\r\n controller.abort();\r\n }, cfg.timeoutMs);\r\n\r\n let response: Response;\r\n try {\r\n response = await cfg.fetch(url, { method, headers, body: bodyInit, signal: controller.signal });\r\n } catch (err) {\r\n clearTimeout(timer);\r\n external?.removeEventListener('abort', onExternalAbort);\r\n\r\n if (external?.aborted) {\r\n throw new SpotifyApiError({ message: 'Request aborted by caller.', code: 'ABORTED', url, cause: err });\r\n }\r\n lastError = timedOut\r\n ? new SpotifyApiError({\r\n message: `Request timed out after ${cfg.timeoutMs}ms.`,\r\n code: 'TIMEOUT',\r\n url,\r\n cause: err,\r\n })\r\n : new SpotifyApiError({ message: `Network error: ${errMessage(err)}`, code: 'NETWORK', url, cause: err });\r\n\r\n if (attempt < maxAttempts - 1) {\r\n const delayMs = this.backoff(attempt);\r\n cfg.onRetry?.({ attempt: attempt + 1, method, url, error: lastError, delayMs });\r\n cfg.debug?.(`retry ${attempt + 1} after ${delayMs}ms (${(lastError as SpotifyApiError).code})`);\r\n await sleep(delayMs);\r\n continue;\r\n }\r\n throw lastError;\r\n }\r\n clearTimeout(timer);\r\n external?.removeEventListener('abort', onExternalAbort);\r\n\r\n cfg.onResponse?.({ method, url, status: response.status, durationMs: Date.now() - attemptStart });\r\n cfg.debug?.(`← ${response.status} ${method} ${url} (${Date.now() - attemptStart}ms)`);\r\n\r\n // Retryable status codes.\r\n if ((response.status === 429 || response.status >= 500) && attempt < maxAttempts - 1) {\r\n const retryAfter = parseRetryAfter(response.headers.get('retry-after'));\r\n const delayMs = retryAfter ?? this.backoff(attempt);\r\n cfg.onRetry?.({ attempt: attempt + 1, method, url, status: response.status, delayMs });\r\n cfg.debug?.(`retry ${attempt + 1} after ${delayMs}ms (status ${response.status})`);\r\n await sleep(delayMs);\r\n continue;\r\n }\r\n\r\n const raw = await response.text();\r\n let json: unknown;\r\n if (raw.length > 0) {\r\n try {\r\n json = JSON.parse(raw);\r\n } catch {\r\n json = raw;\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n throw new SpotifyApiError({\r\n message: extractMessage(json) ?? `HTTP ${response.status} ${response.statusText}`.trim(),\r\n status: response.status,\r\n code: extractCode(json),\r\n url,\r\n body: json,\r\n });\r\n }\r\n\r\n if (typeof json === 'object' && json !== null) {\r\n const rec = json as Record<string, unknown>;\r\n // A `success: false` body is an upstream failure even at HTTP 200 (and even without `data`).\r\n if (rec.success === false) {\r\n throw new SpotifyApiError({\r\n message: extractMessage(json) ?? 'Upstream reported failure.',\r\n status: response.status,\r\n code: extractCode(json),\r\n url,\r\n body: json,\r\n });\r\n }\r\n if ('success' in rec && 'data' in rec) {\r\n return json as SuccessEnvelope<T>;\r\n }\r\n }\r\n\r\n // Non-enveloped 2xx bodies are wrapped so callers get a consistent shape.\r\n return { success: true, data: json as T };\r\n }\r\n\r\n throw lastError ?? new SpotifyApiError({ message: 'Request failed.', url });\r\n }\r\n\r\n /** GET a path and return the unwrapped `data` payload. */\r\n async get<T = unknown>(path: string, query?: QueryParams, options?: RequestOverrides): Promise<T> {\r\n const env = await this.request<T>({ method: 'GET', path, query, ...options });\r\n return env.data;\r\n }\r\n\r\n /** POST a JSON body and return the unwrapped `data` payload. */\r\n async post<T = unknown>(path: string, body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<T> {\r\n const env = await this.request<T>({ method: 'POST', path, body, query, ...options });\r\n return env.data;\r\n }\r\n\r\n /** DELETE a path and return the unwrapped `data` payload. */\r\n async delete<T = unknown>(path: string, query?: QueryParams, options?: RequestOverrides): Promise<T> {\r\n const env = await this.request<T>({ method: 'DELETE', path, query, ...options });\r\n return env.data;\r\n }\r\n\r\n private buildUrl(path: string, query?: QueryParams): string {\r\n const suffix = path.startsWith('/') ? path : `/${path}`;\r\n const qs = serializeQuery(query);\r\n return `${this.config.baseUrl}${suffix}${qs ? `?${qs}` : ''}`;\r\n }\r\n\r\n private backoff(attempt: number): number {\r\n const base = this.config.retryDelayMs * 2 ** attempt;\r\n return base + Math.floor(Math.random() * this.config.retryDelayMs);\r\n }\r\n}\r\n\r\n// Query keys whose values are Spotify IDs — normalized (URI/URL → bare ID) automatically.\r\nconst ID_SINGLE_KEYS = new Set(['id', 'spotify_track_id']);\r\nconst ID_MULTI_KEYS = new Set(['ids', 'seed_tracks', 'seed_artists']);\r\n\r\nfunction serializeQuery(query?: QueryParams): string {\r\n if (!query) return '';\r\n const params = new URLSearchParams();\r\n for (const [key, value] of Object.entries(query)) {\r\n if (value === undefined || value === null) continue;\r\n if (ID_MULTI_KEYS.has(key)) {\r\n const normalized = normalizeIds(value as string | ReadonlyArray<string | number>);\r\n if (normalized.length > 0) params.append(key, normalized);\r\n } else if (ID_SINGLE_KEYS.has(key) && !Array.isArray(value)) {\r\n params.append(key, normalizeId(value as string | number));\r\n } else if (Array.isArray(value)) {\r\n if (value.length > 0) params.append(key, value.join(','));\r\n } else {\r\n params.append(key, String(value));\r\n }\r\n }\r\n return params.toString();\r\n}\r\n\r\nfunction extractMessage(json: unknown): string | undefined {\r\n if (typeof json === 'object' && json !== null) {\r\n const rec = json as Record<string, unknown>;\r\n if (typeof rec.message === 'string') return rec.message;\r\n if (typeof rec.error === 'string') return rec.error;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction extractCode(json: unknown): string | undefined {\r\n if (typeof json === 'object' && json !== null) {\r\n const rec = json as Record<string, unknown>;\r\n if (typeof rec.error === 'string') return rec.error;\r\n if (typeof rec.code === 'string') return rec.code;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction parseRetryAfter(value: string | null): number | undefined {\r\n if (!value) return undefined;\r\n const seconds = Number(value);\r\n if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);\r\n const date = Date.parse(value);\r\n if (Number.isFinite(date)) return Math.max(0, date - Date.now());\r\n return undefined;\r\n}\r\n\r\nfunction errMessage(err: unknown): string {\r\n return err instanceof Error ? err.message : String(err);\r\n}\r\n\r\nfunction sleep(ms: number): Promise<void> {\r\n return new Promise((resolve) => setTimeout(resolve, ms));\r\n}\r\n","import type { SpotifyHttpClient } from '../core';\r\nimport { normalizeId } from '../ids';\r\n\r\n/**\r\n * Base class for every resource namespace. Holds a reference to the transport\r\n * client so resource methods can call `this.client.get/post/delete`.\r\n */\r\nexport abstract class Resource {\r\n constructor(protected readonly client: SpotifyHttpClient) {}\r\n}\r\n\r\n/**\r\n * Interpolate `{name}` placeholders in a path template, URL-encoding each value.\r\n * `id`-like params accept a Spotify ID, URI, or URL (reduced to the bare ID).\r\n */\r\nexport function buildPath(template: string, params: Record<string, string | number>): string {\r\n return template.replace(/\\{([^}]+)\\}/g, (_, key: string) => {\r\n const value = params[key];\r\n if (value === undefined || value === null) {\r\n throw new Error(`Missing path parameter \"${key}\" for \"${template}\".`);\r\n }\r\n const normalized = /id$/i.test(key) ? normalizeId(value) : String(value);\r\n return encodeURIComponent(normalized);\r\n });\r\n}\r\n","import { Resource } from './base';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\n\r\n/**\r\n * AI-powered analysis endpoints.\r\n *\r\n * Every analysis endpoint accepts a free-form JSON body (the subject to\r\n * analyze plus any options), so these methods take an untyped `body`.\r\n * Responses are not part of the generated type set and are returned as\r\n * `unknown`.\r\n */\r\nexport class AiResource extends Resource {\r\n /** AI module health. */\r\n health(query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/ai/health', query, options);\r\n }\r\n\r\n /** List the supported AI analysis types. */\r\n types(query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/ai/types', query, options);\r\n }\r\n\r\n /** Run a generic AI analysis. */\r\n analyze(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/analyze', body, query, options);\r\n }\r\n\r\n /** Analyze chart trends. */\r\n chartTrends(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/chart-trends', body, query, options);\r\n }\r\n\r\n /** Generate an AI artist summary. */\r\n artistSummary(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/artist-summary', body, query, options);\r\n }\r\n\r\n /** Generate an AI album review. */\r\n albumReview(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/album-review', body, query, options);\r\n }\r\n\r\n /** Generate an AI track deep dive. */\r\n trackDeepDive(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/track-deep-dive', body, query, options);\r\n }\r\n\r\n /** Curate a playlist with AI. */\r\n playlistCurator(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/playlist-curator', body, query, options);\r\n }\r\n\r\n /** Generate an AI market comparison. */\r\n marketComparison(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/market-comparison', body, query, options);\r\n }\r\n\r\n /** Generate an AI genre landscape. */\r\n genreLandscape(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/genre-landscape', body, query, options);\r\n }\r\n\r\n /** Generate an AI mood profile. */\r\n moodProfile(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/mood-profile', body, query, options);\r\n }\r\n\r\n /** Assess viral potential with AI. */\r\n viralPotential(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/viral-potential', body, query, options);\r\n }\r\n\r\n /** Run a custom AI prompt. */\r\n custom(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/ai/custom', body, query, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetAlbumsData, GetAlbumTracksData, GetAlbumMetadataData } from '../generated/responses';\r\n\r\n/** Parameters for {@link AlbumsResource.get}. */\r\nexport interface AlbumsGetParams {\r\n /** Comma-separated Spotify album IDs. */\r\n ids: string | readonly string[];\r\n /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link AlbumsResource.tracks}. */\r\nexport interface AlbumTracksParams {\r\n /** Spotify album ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link AlbumsResource.metadata}. */\r\nexport interface AlbumMetadataParams {\r\n /** Spotify album ID. */\r\n id: string;\r\n contrast?: string;\r\n}\r\n\r\n/** Album endpoints. */\r\nexport class AlbumsResource extends Resource {\r\n /** Get one or more albums by ID. */\r\n get(params: AlbumsGetParams, options?: RequestOverrides): Promise<GetAlbumsData> {\r\n return this.client.get<GetAlbumsData>('/albums', { ids: params.ids, contrast: params.contrast }, options);\r\n }\r\n\r\n /** Get an album's tracks (paginated). */\r\n tracks(params: AlbumTracksParams, options?: RequestOverrides): Promise<GetAlbumTracksData> {\r\n return this.client.get<GetAlbumTracksData>(\r\n '/album_tracks',\r\n { id: params.id, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get extended album metadata. */\r\n metadata(params: AlbumMetadataParams, options?: RequestOverrides): Promise<GetAlbumMetadataData> {\r\n return this.client.get<GetAlbumMetadataData>(\r\n '/album_metadata',\r\n { id: params.id, contrast: params.contrast },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetArtistCompareData, GetPlaylistAnalysisData } from '../generated/responses';\r\n\r\n/** Parameters for {@link AnalysisResource.artistCompare}. */\r\nexport interface AnalysisArtistCompareParams {\r\n /** Comma-separated artist IDs (2–10). */\r\n ids: string | readonly string[];\r\n}\r\n\r\n/** Parameters for {@link AnalysisResource.audioFeatures}. */\r\nexport interface AnalysisAudioFeaturesParams {\r\n /** Spotify track ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link AnalysisResource.playlistAnalysis}. */\r\nexport interface AnalysisPlaylistAnalysisParams {\r\n /** Spotify playlist ID. */\r\n id: string;\r\n}\r\n\r\n/** Analysis endpoints. */\r\nexport class AnalysisResource extends Resource {\r\n /** Compare artists side by side. */\r\n artistCompare(params: AnalysisArtistCompareParams, options?: RequestOverrides): Promise<GetArtistCompareData> {\r\n return this.client.get<GetArtistCompareData>('/artist_compare', { ids: params.ids }, options);\r\n }\r\n\r\n /** Get audio features for a track. */\r\n audioFeatures(params: AnalysisAudioFeaturesParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/audio_features', { id: params.id }, options);\r\n }\r\n\r\n /** Get analysis for a playlist. */\r\n playlistAnalysis(\r\n params: AnalysisPlaylistAnalysisParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetPlaylistAnalysisData> {\r\n return this.client.get<GetPlaylistAnalysisData>('/playlist_analysis', { id: params.id }, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type {\r\n GetArtistsData,\r\n GetArtistOverviewData,\r\n GetArtistDiscographyOverviewData,\r\n GetArtistAlbumsData,\r\n GetArtistSinglesData,\r\n GetArtistAppearsOnData,\r\n GetArtistDiscoveredOnData,\r\n GetArtistFeaturingData,\r\n GetArtistRelatedData,\r\n GetArtistTopTracksData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link ArtistsResource.get}. */\r\nexport interface ArtistsGetParams {\r\n /** Comma-separated artist IDs. */\r\n ids: string | readonly string[];\r\n /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.overview}. */\r\nexport interface ArtistsOverviewParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.discographyOverview}. */\r\nexport interface ArtistsDiscographyOverviewParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.albums}. */\r\nexport interface ArtistsAlbumsParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.singles}. */\r\nexport interface ArtistsSinglesParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.appearsOn}. */\r\nexport interface ArtistsAppearsOnParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.discoveredOn}. */\r\nexport interface ArtistsDiscoveredOnParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.featuring}. */\r\nexport interface ArtistsFeaturingParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.related}. */\r\nexport interface ArtistsRelatedParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link ArtistsResource.topTracks}. */\r\nexport interface ArtistsTopTracksParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n /** Market (country) code to localize results, e.g. `US`. */\r\n market?: string;\r\n}\r\n\r\n/** Artist endpoints. */\r\nexport class ArtistsResource extends Resource {\r\n /** Get one or more artists by ID. */\r\n get(params: ArtistsGetParams, options?: RequestOverrides): Promise<GetArtistsData> {\r\n return this.client.get<GetArtistsData>('/artists', { ids: params.ids, contrast: params.contrast }, options);\r\n }\r\n\r\n /** Get an artist overview. */\r\n overview(params: ArtistsOverviewParams, options?: RequestOverrides): Promise<GetArtistOverviewData> {\r\n return this.client.get<GetArtistOverviewData>(\r\n '/artist_overview',\r\n { id: params.id, contrast: params.contrast },\r\n options,\r\n );\r\n }\r\n\r\n /** Get an artist's discography overview. */\r\n discographyOverview(\r\n params: ArtistsDiscographyOverviewParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetArtistDiscographyOverviewData> {\r\n return this.client.get<GetArtistDiscographyOverviewData>(\r\n '/artist_discography_overview',\r\n { id: params.id },\r\n options,\r\n );\r\n }\r\n\r\n /** Get an artist's albums (paginated). */\r\n albums(params: ArtistsAlbumsParams, options?: RequestOverrides): Promise<GetArtistAlbumsData> {\r\n return this.client.get<GetArtistAlbumsData>(\r\n '/artist_albums',\r\n { id: params.id, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get an artist's singles (paginated). */\r\n singles(params: ArtistsSinglesParams, options?: RequestOverrides): Promise<GetArtistSinglesData> {\r\n return this.client.get<GetArtistSinglesData>(\r\n '/artist_singles',\r\n { id: params.id, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get releases an artist appears on. */\r\n appearsOn(params: ArtistsAppearsOnParams, options?: RequestOverrides): Promise<GetArtistAppearsOnData> {\r\n return this.client.get<GetArtistAppearsOnData>('/artist_appears_on', { id: params.id }, options);\r\n }\r\n\r\n /** Get playlists an artist was discovered on. */\r\n discoveredOn(params: ArtistsDiscoveredOnParams, options?: RequestOverrides): Promise<GetArtistDiscoveredOnData> {\r\n return this.client.get<GetArtistDiscoveredOnData>('/artist_discovered_on', { id: params.id }, options);\r\n }\r\n\r\n /** Get tracks featuring an artist. */\r\n featuring(params: ArtistsFeaturingParams, options?: RequestOverrides): Promise<GetArtistFeaturingData> {\r\n return this.client.get<GetArtistFeaturingData>('/artist_featuring', { id: params.id }, options);\r\n }\r\n\r\n /** Get artists related to an artist. */\r\n related(params: ArtistsRelatedParams, options?: RequestOverrides): Promise<GetArtistRelatedData> {\r\n return this.client.get<GetArtistRelatedData>('/artist_related', { id: params.id }, options);\r\n }\r\n\r\n /** Get an artist's top tracks. */\r\n topTracks(params: ArtistsTopTracksParams, options?: RequestOverrides): Promise<GetArtistTopTracksData> {\r\n return this.client.get<GetArtistTopTracksData>(\r\n '/artist_top_tracks',\r\n { id: params.id, market: params.market },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource, buildPath } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetAudiobooksData } from '../generated/responses';\r\n\r\n/** Parameters for {@link AudiobooksResource.get}. */\r\nexport interface AudiobooksGetParams {\r\n /** Comma-separated Spotify audiobook IDs. */\r\n ids: string | readonly string[];\r\n /** An ISO 3166-1 alpha-2 country code to filter availability. */\r\n market?: string;\r\n}\r\n\r\n/** Parameters for {@link AudiobooksResource.getById}. */\r\nexport interface AudiobooksGetByIdParams {\r\n /** Spotify audiobook ID. */\r\n id: string;\r\n /** An ISO 3166-1 alpha-2 country code to filter availability. */\r\n market?: string;\r\n}\r\n\r\n/** Parameters for {@link AudiobooksResource.chapters}. */\r\nexport interface AudiobooksChaptersParams {\r\n /** Spotify audiobook ID. */\r\n id: string;\r\n /** The index of the first chapter to return. */\r\n offset?: number;\r\n /** The maximum number of chapters to return. */\r\n limit?: number;\r\n}\r\n\r\n/** Audiobook endpoints. */\r\nexport class AudiobooksResource extends Resource {\r\n /** Get one or more audiobooks by ID. */\r\n get(params: AudiobooksGetParams, options?: RequestOverrides): Promise<GetAudiobooksData> {\r\n return this.client.get<GetAudiobooksData>('/audiobooks', { ids: params.ids, market: params.market }, options);\r\n }\r\n\r\n /** Get a single audiobook by ID. */\r\n getById(params: AudiobooksGetByIdParams, options?: RequestOverrides): Promise<unknown> {\r\n const path = buildPath('/audiobooks/{id}', { id: params.id });\r\n return this.client.get<unknown>(path, { market: params.market }, options);\r\n }\r\n\r\n /** Get an audiobook's chapters (paginated). */\r\n chapters(params: AudiobooksChaptersParams, options?: RequestOverrides): Promise<unknown> {\r\n const path = buildPath('/audiobooks/{id}/chapters', { id: params.id });\r\n return this.client.get<unknown>(path, { offset: params.offset, limit: params.limit }, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type {\r\n GetAlbumMetadataBatchData,\r\n GetArtistOverviewBatchData,\r\n GetTrackCreditsBatchData,\r\n GetTrackLyricsBatchData,\r\n GetTrackPopularityBatchData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link BatchResource.albumMetadata}. */\r\nexport interface BatchAlbumMetadataParams {\r\n /** Comma-separated album IDs (max 25). */\r\n ids: string | readonly string[];\r\n}\r\n\r\n/** Parameters for {@link BatchResource.artistOverview}. */\r\nexport interface BatchArtistOverviewParams {\r\n /** Comma-separated artist IDs (max 25). */\r\n ids: string | readonly string[];\r\n}\r\n\r\n/** Parameters for {@link BatchResource.trackCredits}. */\r\nexport interface BatchTrackCreditsParams {\r\n /** Comma-separated track IDs (max 25). */\r\n ids: string | readonly string[];\r\n}\r\n\r\n/** Parameters for {@link BatchResource.trackLyrics}. */\r\nexport interface BatchTrackLyricsParams {\r\n /** Comma-separated track IDs. */\r\n ids: string | readonly string[];\r\n /** Lyrics output format. Default `json`. */\r\n format?: 'json' | 'lrc' | 'srt' | 'raw';\r\n}\r\n\r\n/** Parameters for {@link BatchResource.trackPopularity}. */\r\nexport interface BatchTrackPopularityParams {\r\n /** Comma-separated track IDs. */\r\n ids: string | readonly string[];\r\n}\r\n\r\n/** Batch endpoints — fetch metadata for many IDs in one call. */\r\nexport class BatchResource extends Resource {\r\n /** Get extended album metadata for many albums at once. */\r\n albumMetadata(params: BatchAlbumMetadataParams, options?: RequestOverrides): Promise<GetAlbumMetadataBatchData> {\r\n return this.client.get<GetAlbumMetadataBatchData>('/album_metadata_batch', { ids: params.ids }, options);\r\n }\r\n\r\n /** Get artist overviews for many artists at once. */\r\n artistOverview(params: BatchArtistOverviewParams, options?: RequestOverrides): Promise<GetArtistOverviewBatchData> {\r\n return this.client.get<GetArtistOverviewBatchData>('/artist_overview_batch', { ids: params.ids }, options);\r\n }\r\n\r\n /** Get credits for many tracks at once. */\r\n trackCredits(params: BatchTrackCreditsParams, options?: RequestOverrides): Promise<GetTrackCreditsBatchData> {\r\n return this.client.get<GetTrackCreditsBatchData>('/track_credits_batch', { ids: params.ids }, options);\r\n }\r\n\r\n /** Get synced lyrics for many tracks at once. */\r\n trackLyrics(params: BatchTrackLyricsParams, options?: RequestOverrides): Promise<GetTrackLyricsBatchData> {\r\n return this.client.get<GetTrackLyricsBatchData>(\r\n '/track_lyrics_batch',\r\n { ids: params.ids, format: params.format },\r\n options,\r\n );\r\n }\r\n\r\n /** Get popularity scores for many tracks at once. */\r\n trackPopularity(\r\n params: BatchTrackPopularityParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetTrackPopularityBatchData> {\r\n return this.client.get<GetTrackPopularityBatchData>('/track_popularity_batch', { ids: params.ids }, options);\r\n }\r\n}\r\n","import { Resource, buildPath } from './base';\r\nimport type { GetBrowseFeaturedPlaylistsData, GetBrowseRecommendationsData } from '../generated/responses';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type {\r\n GetBrowseCategoriesData,\r\n GetBrowseCategoriesIdData,\r\n GetBrowseNewReleasesData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link BrowseResource.categories}. */\r\nexport interface BrowseCategoriesParams {\r\n /** ISO country code (e.g. `US`). */\r\n country?: string;\r\n /** Locale (e.g. `en_US`). */\r\n locale?: string;\r\n limit?: number;\r\n offset?: number;\r\n}\r\n\r\n/** Parameters for {@link BrowseResource.category}. */\r\nexport interface BrowseCategoryParams {\r\n /** Spotify category ID. */\r\n id: string;\r\n /** ISO country code (e.g. `US`). */\r\n country?: string;\r\n /** Locale (e.g. `en_US`). */\r\n locale?: string;\r\n}\r\n\r\n/** Parameters for {@link BrowseResource.featuredPlaylists}. */\r\nexport interface BrowseFeaturedPlaylistsParams {\r\n /** ISO country code (e.g. `US`). */\r\n country?: string;\r\n /** Locale (e.g. `en_US`). */\r\n locale?: string;\r\n limit?: number;\r\n offset?: number;\r\n}\r\n\r\n/** Parameters for {@link BrowseResource.newReleases}. */\r\nexport interface BrowseNewReleasesParams {\r\n /** ISO country code (e.g. `US`). */\r\n country?: string;\r\n limit?: number;\r\n offset?: number;\r\n}\r\n\r\n/** Parameters for {@link BrowseResource.recommendations}. */\r\nexport interface BrowseRecommendationsParams {\r\n /** Comma-separated seed track IDs. */\r\n seed_tracks?: string | readonly string[];\r\n /** Comma-separated seed artist IDs. */\r\n seed_artists?: string | readonly string[];\r\n /** Comma-separated seed genres. */\r\n seed_genres?: string;\r\n limit?: number;\r\n}\r\n\r\n/** Browse endpoints. */\r\nexport class BrowseResource extends Resource {\r\n /** List browse categories. */\r\n categories(params?: BrowseCategoriesParams, options?: RequestOverrides): Promise<GetBrowseCategoriesData> {\r\n return this.client.get<GetBrowseCategoriesData>(\r\n '/browse/categories',\r\n {\r\n country: params?.country,\r\n locale: params?.locale,\r\n limit: params?.limit,\r\n offset: params?.offset,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Get a single browse category by ID. */\r\n category(params: BrowseCategoryParams, options?: RequestOverrides): Promise<GetBrowseCategoriesIdData> {\r\n const path = buildPath('/browse/categories/{id}', { id: params.id });\r\n return this.client.get<GetBrowseCategoriesIdData>(\r\n path,\r\n { country: params.country, locale: params.locale },\r\n options,\r\n );\r\n }\r\n\r\n /** Get featured playlists. */\r\n featuredPlaylists(\r\n params?: BrowseFeaturedPlaylistsParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetBrowseFeaturedPlaylistsData> {\r\n return this.client.get<GetBrowseFeaturedPlaylistsData>(\r\n '/browse/featured-playlists',\r\n {\r\n country: params?.country,\r\n locale: params?.locale,\r\n limit: params?.limit,\r\n offset: params?.offset,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Get new album releases. */\r\n newReleases(params?: BrowseNewReleasesParams, options?: RequestOverrides): Promise<GetBrowseNewReleasesData> {\r\n return this.client.get<GetBrowseNewReleasesData>(\r\n '/browse/new-releases',\r\n { country: params?.country, limit: params?.limit, offset: params?.offset },\r\n options,\r\n );\r\n }\r\n\r\n /** Get track recommendations from seed tracks, artists, and/or genres. */\r\n recommendations(\r\n params?: BrowseRecommendationsParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetBrowseRecommendationsData> {\r\n return this.client.get<GetBrowseRecommendationsData>(\r\n '/browse/recommendations',\r\n {\r\n seed_tracks: params?.seed_tracks,\r\n seed_artists: params?.seed_artists,\r\n seed_genres: params?.seed_genres,\r\n limit: params?.limit,\r\n },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { GetCacheStatsData } from '../generated/responses';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\n\r\n/** Parameters for {@link CacheResource.invalidate}. */\r\nexport interface CacheInvalidateParams {\r\n /** Exact cache key to invalidate. */\r\n key?: string;\r\n /** Glob/prefix pattern matching multiple cache keys to invalidate. */\r\n pattern?: string;\r\n}\r\n\r\n/** Cache administration endpoints. */\r\nexport class CacheResource extends Resource {\r\n /** Get cache statistics (hits, misses, size, etc.). */\r\n stats(query?: QueryParams, options?: RequestOverrides): Promise<GetCacheStatsData> {\r\n return this.client.get<GetCacheStatsData>('/cache/stats', query, options);\r\n }\r\n\r\n /** Invalidate cached entries by exact key or by matching pattern. */\r\n invalidate(params: CacheInvalidateParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>(\r\n '/cache/invalidate',\r\n { key: params.key, pattern: params.pattern },\r\n undefined,\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\nimport type {\r\n GetTop20ByMonthlyListenersData,\r\n GetTop200TracksData,\r\n GetTopArtistsData,\r\n GetTopAlbumsData,\r\n GetViralTracksData,\r\n GetTop20ByFollowersData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link ChartsResource.top200Tracks}. */\r\nexport interface ChartsTop200TracksParams {\r\n /** Chart period, e.g. `daily` or `weekly`. Default `daily`. */\r\n period?: string;\r\n /** Country code or `global`. Default `global`. */\r\n country?: string;\r\n /** Chart date (`YYYY-MM-DD`). Defaults to the latest available. */\r\n date?: string;\r\n}\r\n\r\n/** Parameters for {@link ChartsResource.topArtists}. */\r\nexport interface ChartsTopArtistsParams {\r\n /** Chart period, e.g. `daily` or `weekly`. Default `daily`. */\r\n period?: string;\r\n /** Country code or `global`. Default `global`. */\r\n country?: string;\r\n}\r\n\r\n/** Parameters for {@link ChartsResource.topAlbums}. */\r\nexport interface ChartsTopAlbumsParams {\r\n /** Chart period, e.g. `daily` or `weekly`. Default `daily`. */\r\n period?: string;\r\n /** Country code or `global`. Default `global`. */\r\n country?: string;\r\n}\r\n\r\n/** Parameters for {@link ChartsResource.viralTracks}. */\r\nexport interface ChartsViralTracksParams {\r\n /** Country code or `global`. Default `global`. */\r\n country?: string;\r\n}\r\n\r\n/** Spotify Charts endpoints. */\r\nexport class ChartsResource extends Resource {\r\n /** Top 20 artists by monthly listeners. */\r\n topByMonthlyListeners(query?: QueryParams, options?: RequestOverrides): Promise<GetTop20ByMonthlyListenersData> {\r\n return this.client.get<GetTop20ByMonthlyListenersData>('/top_20_by_monthly_listeners', query, options);\r\n }\r\n\r\n /** Top 200 tracks chart. */\r\n top200Tracks(params: ChartsTop200TracksParams, options?: RequestOverrides): Promise<GetTop200TracksData> {\r\n return this.client.get<GetTop200TracksData>(\r\n '/top_200_tracks',\r\n { period: params.period, country: params.country, date: params.date },\r\n options,\r\n );\r\n }\r\n\r\n /** Top artists chart. */\r\n topArtists(params: ChartsTopArtistsParams, options?: RequestOverrides): Promise<GetTopArtistsData> {\r\n return this.client.get<GetTopArtistsData>(\r\n '/top_artists',\r\n { period: params.period, country: params.country },\r\n options,\r\n );\r\n }\r\n\r\n /** Top albums chart. */\r\n topAlbums(params: ChartsTopAlbumsParams, options?: RequestOverrides): Promise<GetTopAlbumsData> {\r\n return this.client.get<GetTopAlbumsData>(\r\n '/top_albums',\r\n { period: params.period, country: params.country },\r\n options,\r\n );\r\n }\r\n\r\n /** Viral tracks chart. */\r\n viralTracks(params: ChartsViralTracksParams, options?: RequestOverrides): Promise<GetViralTracksData> {\r\n return this.client.get<GetViralTracksData>('/viral_tracks', { country: params.country }, options);\r\n }\r\n\r\n /** Top 20 artists by followers. */\r\n topByFollowers(query?: QueryParams, options?: RequestOverrides): Promise<GetTop20ByFollowersData> {\r\n return this.client.get<GetTop20ByFollowersData>('/top_20_by_followers', query, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type {\r\n GetPartnerConcertLocationsData,\r\n GetPartnerConcertData,\r\n GetPartnerArtistConcertsData,\r\n GetPartnerSearchConcertArtistsData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link ConcertsResource.locations}. */\r\nexport interface ConcertsLocationsParams {\r\n /** City, venue, or place name. */\r\n query: string;\r\n}\r\n\r\n/** Parameters for {@link ConcertsResource.feed}. */\r\nexport interface ConcertsFeedParams {\r\n /** Spotify geohash (from `/partner/concert-locations`). */\r\n geoHash: string;\r\n /** Geoname ID (from `/partner/concert-locations`). */\r\n geonameId: string;\r\n /** Start of date range (YYYY-MM-DD). */\r\n from?: string;\r\n /** End of date range (YYYY-MM-DD). */\r\n to?: string;\r\n radiusInKm?: number;\r\n /** Comma-separated Spotify concept URIs (e.g. `spotify:concept:rock,spotify:concept:pop`). */\r\n conceptUris?: string;\r\n /** Pass back the `paginationKey` from a prior response. */\r\n paginationKey?: string;\r\n /** Enrich each concert with full concert details in parallel. */\r\n details?: boolean;\r\n /** Max concerts to enrich per request (max 50). */\r\n detailsLimit?: number;\r\n /** Return a flat, normalized concert shape instead of raw GraphQL. */\r\n parsed?: boolean;\r\n}\r\n\r\n/** Parameters for {@link ConcertsResource.get}. */\r\nexport interface ConcertsGetParams {\r\n /** Concert ID, `spotify:concert:URI`, or `open.spotify.com/concert/<id>` URL. */\r\n id: string;\r\n /** Return a flat, normalized concert shape instead of raw GraphQL. */\r\n parsed?: boolean;\r\n /** Set `false` to query as anonymous user (omits `me.profile` block). */\r\n authenticated?: boolean;\r\n}\r\n\r\n/** Parameters for {@link ConcertsResource.byArtist}. */\r\nexport interface ConcertsByArtistParams {\r\n /** Artist ID, URI, or open.spotify.com URL. */\r\n id: string;\r\n /** Geohash for nearby-concert prioritization. `0` = global. */\r\n geoHash?: string;\r\n includeNearby?: boolean;\r\n /** Enrich each concert with full concert details in parallel. */\r\n details?: boolean;\r\n /** Max concerts to enrich per request (max 50). */\r\n detailsLimit?: number;\r\n /** Return a flat, normalized concert shape instead of raw GraphQL. */\r\n parsed?: boolean;\r\n}\r\n\r\n/** Parameters for {@link ConcertsResource.searchArtists}. */\r\nexport interface ConcertsSearchArtistsParams {\r\n /** Artist name to search. */\r\n query: string;\r\n geoHash?: string;\r\n includeNearby?: boolean;\r\n /** Number of artist matches to return concerts for. */\r\n limit?: number;\r\n /** Enrich each concert with full concert details in parallel. */\r\n details?: boolean;\r\n /** Max concerts to enrich per request (max 50). */\r\n detailsLimit?: number;\r\n /** Return a flat, normalized concert shape instead of raw GraphQL. */\r\n parsed?: boolean;\r\n}\r\n\r\n/** Concert endpoints. */\r\nexport class ConcertsResource extends Resource {\r\n /** Search concert locations by city, venue, or place name. */\r\n locations(params: ConcertsLocationsParams, options?: RequestOverrides): Promise<GetPartnerConcertLocationsData> {\r\n return this.client.get<GetPartnerConcertLocationsData>(\r\n '/partner/concert-locations',\r\n { query: params.query },\r\n options,\r\n );\r\n }\r\n\r\n /** Get the concert feed for a location. */\r\n feed(params: ConcertsFeedParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>(\r\n '/partner/concert-feed',\r\n {\r\n geoHash: params.geoHash,\r\n geonameId: params.geonameId,\r\n from: params.from,\r\n to: params.to,\r\n radiusInKm: params.radiusInKm,\r\n conceptUris: params.conceptUris,\r\n paginationKey: params.paginationKey,\r\n details: params.details,\r\n detailsLimit: params.detailsLimit,\r\n parsed: params.parsed,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Get details for a single concert. */\r\n get(params: ConcertsGetParams, options?: RequestOverrides): Promise<GetPartnerConcertData> {\r\n return this.client.get<GetPartnerConcertData>(\r\n '/partner/concert',\r\n { id: params.id, parsed: params.parsed, authenticated: params.authenticated },\r\n options,\r\n );\r\n }\r\n\r\n /** Get an artist's upcoming concerts. */\r\n byArtist(params: ConcertsByArtistParams, options?: RequestOverrides): Promise<GetPartnerArtistConcertsData> {\r\n return this.client.get<GetPartnerArtistConcertsData>(\r\n '/partner/artist-concerts',\r\n {\r\n id: params.id,\r\n geoHash: params.geoHash,\r\n includeNearby: params.includeNearby,\r\n details: params.details,\r\n detailsLimit: params.detailsLimit,\r\n parsed: params.parsed,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Search concerts by artist name. */\r\n searchArtists(\r\n params: ConcertsSearchArtistsParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetPartnerSearchConcertArtistsData> {\r\n return this.client.get<GetPartnerSearchConcertArtistsData>(\r\n '/partner/search-concert-artists',\r\n {\r\n query: params.query,\r\n geoHash: params.geoHash,\r\n includeNearby: params.includeNearby,\r\n limit: params.limit,\r\n details: params.details,\r\n detailsLimit: params.detailsLimit,\r\n parsed: params.parsed,\r\n },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { GetCookiesRedisData, GetCredentialsStatusData } from '../generated/responses';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\n\r\n/** Credentials / cookie-pool status endpoints. */\r\nexport class CredentialsResource extends Resource {\r\n /** Get the current credentials status. */\r\n status(query?: QueryParams, options?: RequestOverrides): Promise<GetCredentialsStatusData> {\r\n return this.client.get<GetCredentialsStatusData>('/credentials/status', query, options);\r\n }\r\n\r\n /** Get the Redis-backed cookie pool status. */\r\n redisCookies(query?: QueryParams, options?: RequestOverrides): Promise<GetCookiesRedisData> {\r\n return this.client.get<GetCookiesRedisData>('/cookies/redis', query, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\n\r\n/** Parameters for {@link DownloadsResource.track}. */\r\nexport interface DownloadsTrackParams {\r\n /** Track query — a Spotify track URL/ID or a free-text search string. */\r\n q: string;\r\n}\r\n\r\n/** Parameters for {@link DownloadsResource.soundcloud}. */\r\nexport interface DownloadsSoundcloudParams {\r\n /** Track query — a SoundCloud track URL or a free-text search string. */\r\n q: string;\r\n}\r\n\r\n/** Track download endpoints. */\r\nexport class DownloadsResource extends Resource {\r\n /** Download a track. */\r\n track(params: DownloadsTrackParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/download_track', { q: params.q }, options);\r\n }\r\n\r\n /** Download a track from SoundCloud. */\r\n soundcloud(params: DownloadsSoundcloudParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/download_track_sc', { q: params.q }, options);\r\n }\r\n}\r\n","import { Resource, buildPath } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetEpisodesData } from '../generated/responses';\r\n\r\n/** Parameters for {@link EpisodesResource.get}. */\r\nexport interface EpisodesGetParams {\r\n /** Comma-separated Spotify episode IDs. */\r\n ids: string | readonly string[];\r\n /** ISO 3166-1 alpha-2 market code. */\r\n market?: string;\r\n}\r\n\r\n/** Parameters for {@link EpisodesResource.byId}. */\r\nexport interface EpisodesByIdParams {\r\n /** Spotify episode ID. */\r\n id: string;\r\n /** ISO 3166-1 alpha-2 market code. */\r\n market?: string;\r\n}\r\n\r\n/** Episode endpoints. */\r\nexport class EpisodesResource extends Resource {\r\n /** Get one or more episodes by ID. */\r\n get(params: EpisodesGetParams, options?: RequestOverrides): Promise<GetEpisodesData> {\r\n return this.client.get<GetEpisodesData>('/episodes', { ids: params.ids, market: params.market }, options);\r\n }\r\n\r\n /** Get a single episode by ID. */\r\n byId(params: EpisodesByIdParams, options?: RequestOverrides): Promise<unknown> {\r\n const path = buildPath('/episodes/{id}', { id: params.id });\r\n return this.client.get<unknown>(path, { market: params.market }, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type {\r\n GetHealthClusterData,\r\n GetHealthClusterStrictData,\r\n GetHealthInstanceData,\r\n GetHealthProxiesData,\r\n GetPingData,\r\n} from '../generated/responses';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\n\r\n/** Health, readiness and diagnostics endpoints. */\r\nexport class HealthResource extends Resource {\r\n /** Lightweight liveness probe. */\r\n ping(query?: QueryParams, options?: RequestOverrides): Promise<GetPingData> {\r\n return this.client.get<GetPingData>('/ping', query, options);\r\n }\r\n\r\n /** Overall cluster health summary. */\r\n get(query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/health', query, options);\r\n }\r\n\r\n /** Health of the individual instance serving the request. */\r\n instance(query?: QueryParams, options?: RequestOverrides): Promise<GetHealthInstanceData> {\r\n return this.client.get<GetHealthInstanceData>('/health/instance', query, options);\r\n }\r\n\r\n /** Cluster-wide health overview. */\r\n cluster(query?: QueryParams, options?: RequestOverrides): Promise<GetHealthClusterData> {\r\n return this.client.get<GetHealthClusterData>('/health/cluster', query, options);\r\n }\r\n\r\n /** Strict cluster health check (fails unless every instance is healthy). */\r\n clusterStrict(query?: QueryParams, options?: RequestOverrides): Promise<GetHealthClusterStrictData> {\r\n return this.client.get<GetHealthClusterStrictData>('/health/cluster/strict', query, options);\r\n }\r\n\r\n /** Health and statistics for the proxy pool. */\r\n proxies(query?: QueryParams, options?: RequestOverrides): Promise<GetHealthProxiesData> {\r\n return this.client.get<GetHealthProxiesData>('/health/proxies', query, options);\r\n }\r\n\r\n /** Clear accumulated proxy statistics. */\r\n clearProxies(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/health/proxies/clear', body, query, options);\r\n }\r\n\r\n /** Clear accumulated error counters. */\r\n clearErrors(body?: unknown, query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/health/clear-errors', body, query, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetIsrcLookupData, GetUpcLookupData } from '../generated/responses';\r\n\r\n/** Parameters for {@link LookupsResource.isrc}. */\r\nexport interface LookupsIsrcParams {\r\n /** International Standard Recording Code identifying the track. */\r\n isrc: string;\r\n}\r\n\r\n/** Parameters for {@link LookupsResource.upc}. */\r\nexport interface LookupsUpcParams {\r\n /** Universal Product Code identifying the album. */\r\n upc: string;\r\n}\r\n\r\n/** Identifier lookup endpoints (ISRC / UPC). */\r\nexport class LookupsResource extends Resource {\r\n /** Lookup a track by its ISRC. */\r\n isrc(params: LookupsIsrcParams, options?: RequestOverrides): Promise<GetIsrcLookupData> {\r\n return this.client.get<GetIsrcLookupData>('/isrc_lookup', { isrc: params.isrc }, options);\r\n }\r\n\r\n /** Lookup an album by its UPC. */\r\n upc(params: LookupsUpcParams, options?: RequestOverrides): Promise<GetUpcLookupData> {\r\n return this.client.get<GetUpcLookupData>('/upc_lookup', { upc: params.upc }, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { GetMarketsData } from '../generated/responses';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\n\r\n/** Markets endpoints. */\r\nexport class MarketsResource extends Resource {\r\n /** List the markets (countries) where Spotify is available. */\r\n get(query?: QueryParams, options?: RequestOverrides): Promise<GetMarketsData> {\r\n return this.client.get<GetMarketsData>('/markets', query, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { GetPartnerArtistDiscographyData, GetPartnerArtistOverviewData } from '../generated/responses';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type {\r\n GetPartnerPlaylistData,\r\n GetPartnerTrackData,\r\n GetPartnerTrackCountData,\r\n GetPartnerAlbumData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link PartnerResource.playlist}. */\r\nexport interface PartnerPlaylistParams {\r\n /** 22-character Spotify playlist ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link PartnerResource.track}. */\r\nexport interface PartnerTrackParams {\r\n /** Spotify track ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link PartnerResource.trackCount}. */\r\nexport interface PartnerTrackCountParams {\r\n /** Spotify track ID. */\r\n spotify_track_id?: string;\r\n /** ISRC to look the track up by. */\r\n isrc?: string;\r\n}\r\n\r\n/** Parameters for {@link PartnerResource.album}. */\r\nexport interface PartnerAlbumParams {\r\n /** Spotify album ID. */\r\n id: string;\r\n /** Locale, e.g. `intl-es`. */\r\n locale?: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link PartnerResource.artistOverview}. */\r\nexport interface PartnerArtistOverviewParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n /** Locale, e.g. `en`. */\r\n locale?: string;\r\n /** Include prerelease content. */\r\n includePrerelease?: boolean;\r\n}\r\n\r\n/** Parameters for {@link PartnerResource.artistDiscography}. */\r\nexport interface PartnerArtistDiscographyParams {\r\n /** Spotify artist ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Spotify Partner (internal GraphQL) endpoints. */\r\nexport class PartnerResource extends Resource {\r\n /** Get partner playlist data (paginated). */\r\n playlist(params: PartnerPlaylistParams, options?: RequestOverrides): Promise<GetPartnerPlaylistData> {\r\n return this.client.get<GetPartnerPlaylistData>(\r\n '/partner/playlist',\r\n { id: params.id, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get partner track data. */\r\n track(params: PartnerTrackParams, options?: RequestOverrides): Promise<GetPartnerTrackData> {\r\n return this.client.get<GetPartnerTrackData>('/partner/track', { id: params.id }, options);\r\n }\r\n\r\n /** Get a track's play count by Spotify ID or ISRC. */\r\n trackCount(params: PartnerTrackCountParams, options?: RequestOverrides): Promise<GetPartnerTrackCountData> {\r\n return this.client.get<GetPartnerTrackCountData>(\r\n '/partner/track/count',\r\n { spotify_track_id: params.spotify_track_id, isrc: params.isrc },\r\n options,\r\n );\r\n }\r\n\r\n /** Get partner album data (paginated). */\r\n album(params: PartnerAlbumParams, options?: RequestOverrides): Promise<GetPartnerAlbumData> {\r\n return this.client.get<GetPartnerAlbumData>(\r\n '/partner/album',\r\n { id: params.id, locale: params.locale, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get partner artist overview. */\r\n artistOverview(\r\n params: PartnerArtistOverviewParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetPartnerArtistOverviewData> {\r\n return this.client.get<GetPartnerArtistOverviewData>(\r\n '/partner/artist-overview',\r\n { id: params.id, locale: params.locale, includePrerelease: params.includePrerelease },\r\n options,\r\n );\r\n }\r\n\r\n /** Get partner artist discography (paginated). */\r\n artistDiscography(\r\n params: PartnerArtistDiscographyParams,\r\n options?: RequestOverrides,\r\n ): Promise<GetPartnerArtistDiscographyData> {\r\n return this.client.get<GetPartnerArtistDiscographyData>(\r\n '/partner/artist-discography',\r\n { id: params.id, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetPlaylistData, GetPlaylistTracksData, GetSeedToPlaylistData } from '../generated/responses';\r\n\r\n/** Parameters for {@link PlaylistsResource.get}. */\r\nexport interface PlaylistsGetParams {\r\n /** Spotify playlist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link PlaylistsResource.tracks}. */\r\nexport interface PlaylistsTracksParams {\r\n /** Spotify playlist ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link PlaylistsResource.fromSeed}. */\r\nexport interface PlaylistsFromSeedParams {\r\n /** Spotify URI to seed the generated playlist from. */\r\n uri: string;\r\n}\r\n\r\n/** Playlist endpoints. */\r\nexport class PlaylistsResource extends Resource {\r\n /** Get a playlist by ID. */\r\n get(params: PlaylistsGetParams, options?: RequestOverrides): Promise<GetPlaylistData> {\r\n return this.client.get<GetPlaylistData>('/playlist', { id: params.id }, options);\r\n }\r\n\r\n /** Get a playlist's tracks (paginated). */\r\n tracks(params: PlaylistsTracksParams, options?: RequestOverrides): Promise<GetPlaylistTracksData> {\r\n return this.client.get<GetPlaylistTracksData>(\r\n '/playlist_tracks',\r\n { id: params.id, offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Generate a playlist from a seed URI. */\r\n fromSeed(params: PlaylistsFromSeedParams, options?: RequestOverrides): Promise<GetSeedToPlaylistData> {\r\n return this.client.get<GetSeedToPlaylistData>('/seed_to_playlist', { uri: params.uri }, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { GetSearchTopResultsData } from '../generated/responses';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetSearchData, GetSearchLyricsData, GetSearchSuggestionsData } from '../generated/responses';\r\n\r\n/** Parameters for {@link SearchResource.search}. */\r\nexport interface SearchParams {\r\n /** Search query. */\r\n q: string;\r\n /** Search type: `multi`, `tracks`, `albums`, `artists`, `playlists`, etc. Default `multi`. */\r\n type?: string;\r\n offset?: number;\r\n limit?: number;\r\n numberOfTopResults?: number;\r\n /** Comma-separated providers to contrast against, e.g. `ytmusic,applemusic`. */\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link SearchResource.topResults}. */\r\nexport interface SearchTopResultsParams {\r\n q: string;\r\n numberOfTopResults?: number;\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link SearchResource.lyrics}. */\r\nexport interface SearchLyricsParams {\r\n q: string;\r\n /** Lyrics output format. */\r\n format?: 'json' | 'lrc' | 'srt' | 'raw';\r\n}\r\n\r\n/** Parameters for {@link SearchResource.suggestions}. */\r\nexport interface SearchSuggestionsParams {\r\n q: string;\r\n offset?: number;\r\n limit?: number;\r\n numberOfTopResults?: number;\r\n includeAuthors?: boolean;\r\n debug?: boolean;\r\n timeout?: number;\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link SearchResource.multiMarket}. */\r\nexport interface SearchMultiMarketParams {\r\n q: string;\r\n type?: string;\r\n markets?: string;\r\n limit?: number;\r\n}\r\n\r\n/** Search endpoints. */\r\nexport class SearchResource extends Resource {\r\n /** Search Spotify across one or more types. */\r\n search(params: SearchParams, options?: RequestOverrides): Promise<GetSearchData> {\r\n return this.client.get<GetSearchData>(\r\n '/search',\r\n {\r\n q: params.q,\r\n type: params.type,\r\n offset: params.offset,\r\n limit: params.limit,\r\n numberOfTopResults: params.numberOfTopResults,\r\n contrast: params.contrast,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Search returning only the top results. */\r\n topResults(params: SearchTopResultsParams, options?: RequestOverrides): Promise<GetSearchTopResultsData> {\r\n return this.client.get<GetSearchTopResultsData>(\r\n '/search_top_results',\r\n { q: params.q, numberOfTopResults: params.numberOfTopResults, contrast: params.contrast },\r\n options,\r\n );\r\n }\r\n\r\n /** Search and return synced lyrics for the best match. */\r\n lyrics(params: SearchLyricsParams, options?: RequestOverrides): Promise<GetSearchLyricsData> {\r\n return this.client.get<GetSearchLyricsData>('/search_lyrics', { q: params.q, format: params.format }, options);\r\n }\r\n\r\n /** Search suggestions / autocomplete. */\r\n suggestions(params: SearchSuggestionsParams, options?: RequestOverrides): Promise<GetSearchSuggestionsData> {\r\n return this.client.get<GetSearchSuggestionsData>(\r\n '/search_suggestions',\r\n {\r\n q: params.q,\r\n offset: params.offset,\r\n limit: params.limit,\r\n numberOfTopResults: params.numberOfTopResults,\r\n includeAuthors: params.includeAuthors,\r\n debug: params.debug,\r\n timeout: params.timeout,\r\n contrast: params.contrast,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Search across multiple markets at once. */\r\n multiMarket(params: SearchMultiMarketParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>(\r\n '/search_multi_market',\r\n { q: params.q, type: params.type, markets: params.markets, limit: params.limit },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource, buildPath } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetShowsData, GetShowsIdData } from '../generated/responses';\r\n\r\n/** Parameters for {@link ShowsResource.get}. */\r\nexport interface ShowsGetParams {\r\n /** Comma-separated Spotify show IDs. */\r\n ids: string | readonly string[];\r\n /** ISO market code. */\r\n market?: string;\r\n}\r\n\r\n/** Parameters for {@link ShowsResource.getById}. */\r\nexport interface ShowsGetByIdParams {\r\n /** Spotify show ID. */\r\n id: string;\r\n /** ISO market code. */\r\n market?: string;\r\n}\r\n\r\n/** Parameters for {@link ShowsResource.episodes}. */\r\nexport interface ShowsEpisodesParams {\r\n /** Spotify show ID. */\r\n id: string;\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Show (podcast) endpoints. */\r\nexport class ShowsResource extends Resource {\r\n /** Get one or more shows by ID. */\r\n get(params: ShowsGetParams, options?: RequestOverrides): Promise<GetShowsData> {\r\n return this.client.get<GetShowsData>('/shows', { ids: params.ids, market: params.market }, options);\r\n }\r\n\r\n /** Get a single show by ID. */\r\n getById(params: ShowsGetByIdParams, options?: RequestOverrides): Promise<GetShowsIdData> {\r\n const path = buildPath('/shows/{id}', { id: params.id });\r\n return this.client.get<GetShowsIdData>(path, { market: params.market }, options);\r\n }\r\n\r\n /** Get a show's episodes (paginated). */\r\n episodes(params: ShowsEpisodesParams, options?: RequestOverrides): Promise<unknown> {\r\n const path = buildPath('/shows/{id}/episodes', { id: params.id });\r\n return this.client.get<unknown>(path, { offset: params.offset, limit: params.limit }, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { GetPlaylistSnapshotData } from '../generated/responses';\r\nimport type { RequestOverrides } from '../types/common';\r\n\r\n/** Parameters for {@link SnapshotsResource.list}. */\r\nexport interface SnapshotsListParams {\r\n /** Spotify playlist ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link SnapshotsResource.create}. */\r\nexport interface SnapshotsCreateParams {\r\n /** Spotify playlist ID to snapshot. */\r\n id?: string;\r\n /** Webhook URL notified when the snapshot completes. */\r\n webhook?: string;\r\n}\r\n\r\n/** Playlist snapshot endpoints. */\r\nexport class SnapshotsResource extends Resource {\r\n /** List the snapshots taken for a playlist. */\r\n list(params: SnapshotsListParams, options?: RequestOverrides): Promise<GetPlaylistSnapshotData> {\r\n return this.client.get<GetPlaylistSnapshotData>('/playlist_snapshot', { id: params.id }, options);\r\n }\r\n\r\n /** Create a new snapshot of a playlist. */\r\n create(params: SnapshotsCreateParams, options?: RequestOverrides): Promise<GetPlaylistSnapshotData> {\r\n return this.client.post<GetPlaylistSnapshotData>(\r\n '/playlist_snapshot',\r\n { id: params.id, webhook: params.webhook },\r\n undefined,\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource, buildPath } from './base';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\nimport type {\r\n GetTrackingItemsData,\r\n GetTrackingLogsData,\r\n GetTrackingStatsData,\r\n GetTrackingHealthData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link TrackingResource.track}. */\r\nexport interface TrackingTrackParams {\r\n /** Kind of Spotify entity to track. */\r\n type: 'track' | 'album' | 'artist' | 'playlist';\r\n /** Spotify ID of the entity to track. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link TrackingResource.untrack}. */\r\nexport interface TrackingUntrackParams {\r\n /** Kind of Spotify entity to untrack. */\r\n type: string;\r\n /** Spotify ID of the entity to untrack. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link TrackingResource.items}. */\r\nexport interface TrackingItemsParams {\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Parameters for {@link TrackingResource.item}. */\r\nexport interface TrackingItemParams {\r\n /** Kind of Spotify entity. */\r\n spotifyType: string;\r\n /** Spotify ID of the tracked entity. */\r\n spotifyId: string;\r\n}\r\n\r\n/** Parameters for {@link TrackingResource.logs}. */\r\nexport interface TrackingLogsParams {\r\n offset?: number;\r\n limit?: number;\r\n}\r\n\r\n/** Tracking endpoints. */\r\nexport class TrackingResource extends Resource {\r\n /** Start tracking a Spotify item. */\r\n track(params: TrackingTrackParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>('/tracking/track', { type: params.type, id: params.id }, undefined, options);\r\n }\r\n\r\n /** Stop tracking a Spotify item. */\r\n untrack(params: TrackingUntrackParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.delete<unknown>('/tracking/untrack', { type: params.type, id: params.id }, options);\r\n }\r\n\r\n /** List tracked items (paginated). */\r\n items(params: TrackingItemsParams, options?: RequestOverrides): Promise<GetTrackingItemsData> {\r\n return this.client.get<GetTrackingItemsData>(\r\n '/tracking/items',\r\n { offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get the detail of a single tracked item. */\r\n item(params: TrackingItemParams, options?: RequestOverrides): Promise<unknown> {\r\n const path = buildPath('/tracking/items/{spotifyType}/{spotifyId}', {\r\n spotifyType: params.spotifyType,\r\n spotifyId: params.spotifyId,\r\n });\r\n return this.client.get<unknown>(path, undefined, options);\r\n }\r\n\r\n /** Get the tracking change log (paginated). */\r\n logs(params: TrackingLogsParams, options?: RequestOverrides): Promise<GetTrackingLogsData> {\r\n return this.client.get<GetTrackingLogsData>(\r\n '/tracking/logs',\r\n { offset: params.offset, limit: params.limit },\r\n options,\r\n );\r\n }\r\n\r\n /** Get tracking statistics. */\r\n stats(query?: QueryParams, options?: RequestOverrides): Promise<GetTrackingStatsData> {\r\n return this.client.get<GetTrackingStatsData>('/tracking/stats', query, options);\r\n }\r\n\r\n /** Get tracking subsystem health. */\r\n health(query?: QueryParams, options?: RequestOverrides): Promise<GetTrackingHealthData> {\r\n return this.client.get<GetTrackingHealthData>('/tracking/health', query, options);\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type {\r\n GetTracksData,\r\n GetTrackCreditsData,\r\n GetTrackLyricsData,\r\n GetRecommendationsData,\r\n} from '../generated/responses';\r\n\r\n/** Parameters for {@link TracksResource.get}. */\r\nexport interface TracksGetParams {\r\n /** Comma-separated track IDs. */\r\n ids: string | readonly string[];\r\n /**\r\n * Comma-separated list of streaming providers to contrast against.\r\n * Appends a `_contrast` field to the response with cross-platform matching data.\r\n * Available providers: `ytmusic`, `applemusic`, `amazonmusic`, `tencentmusic`, `pandora`, `gaana`.\r\n */\r\n contrast?: string;\r\n}\r\n\r\n/** Parameters for {@link TracksResource.credits}. */\r\nexport interface TracksCreditsParams {\r\n /** Spotify track ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link TracksResource.lyrics}. */\r\nexport interface TracksLyricsParams {\r\n /** Spotify track ID. */\r\n id: string;\r\n /** Lyrics output format. Default `json`. */\r\n format?: 'json' | 'lrc' | 'srt' | 'raw';\r\n /** Whether to request the vocal-removal (instrumental) variant. Default `false`. */\r\n vocalRemoval?: boolean;\r\n}\r\n\r\n/** Parameters for {@link TracksResource.recommendations}. */\r\nexport interface TracksRecommendationsParams {\r\n /** Number of recommended tracks to return. */\r\n limit?: number;\r\n /** Comma-separated seed track IDs. */\r\n seed_tracks?: string | readonly string[];\r\n /** Comma-separated seed artist IDs. */\r\n seed_artists?: string | readonly string[];\r\n /** Comma-separated seed genres. */\r\n seed_genres?: string;\r\n}\r\n\r\n/** Track endpoints. */\r\nexport class TracksResource extends Resource {\r\n /** Get one or more tracks by ID. */\r\n get(params: TracksGetParams, options?: RequestOverrides): Promise<GetTracksData> {\r\n return this.client.get<GetTracksData>('/tracks', { ids: params.ids, contrast: params.contrast }, options);\r\n }\r\n\r\n /** Get a track's credits (writers, producers, performers). */\r\n credits(params: TracksCreditsParams, options?: RequestOverrides): Promise<GetTrackCreditsData> {\r\n return this.client.get<GetTrackCreditsData>('/track_credits', { id: params.id }, options);\r\n }\r\n\r\n /** Get a track's lyrics. */\r\n lyrics(params: TracksLyricsParams, options?: RequestOverrides): Promise<GetTrackLyricsData> {\r\n return this.client.get<GetTrackLyricsData>(\r\n '/track_lyrics',\r\n { id: params.id, format: params.format, vocalRemoval: params.vocalRemoval },\r\n options,\r\n );\r\n }\r\n\r\n /** Get track recommendations from seed tracks, artists and/or genres. */\r\n recommendations(params: TracksRecommendationsParams, options?: RequestOverrides): Promise<GetRecommendationsData> {\r\n return this.client.get<GetRecommendationsData>(\r\n '/recommendations',\r\n {\r\n limit: params.limit,\r\n seed_tracks: params.seed_tracks,\r\n seed_artists: params.seed_artists,\r\n seed_genres: params.seed_genres,\r\n },\r\n options,\r\n );\r\n }\r\n}\r\n","import { Resource } from './base';\r\nimport type { RequestOverrides } from '../types/common';\r\nimport type { GetUserProfileData, GetUserFollowersData } from '../generated/responses';\r\n\r\n/** Parameters for {@link UsersResource.profile}. */\r\nexport interface UsersProfileParams {\r\n /** Spotify user ID. */\r\n id: string;\r\n /** Max number of playlists to include. Default `10`. */\r\n playlistLimit?: number;\r\n /** Max number of artists to include. Default `100`. */\r\n artistLimit?: number;\r\n /** Max number of episodes to include. Default `100`. */\r\n episodeLimit?: number;\r\n}\r\n\r\n/** Parameters for {@link UsersResource.followers}. */\r\nexport interface UsersFollowersParams {\r\n /** Spotify user ID. */\r\n id: string;\r\n}\r\n\r\n/** User endpoints. */\r\nexport class UsersResource extends Resource {\r\n /** Get a public user profile, including their playlists, artists and episodes. */\r\n profile(params: UsersProfileParams, options?: RequestOverrides): Promise<GetUserProfileData> {\r\n return this.client.get<GetUserProfileData>(\r\n '/user_profile',\r\n {\r\n id: params.id,\r\n playlistLimit: params.playlistLimit,\r\n artistLimit: params.artistLimit,\r\n episodeLimit: params.episodeLimit,\r\n },\r\n options,\r\n );\r\n }\r\n\r\n /** Get a user's followers. */\r\n followers(params: UsersFollowersParams, options?: RequestOverrides): Promise<GetUserFollowersData> {\r\n return this.client.get<GetUserFollowersData>('/user_followers', { id: params.id }, options);\r\n }\r\n}\r\n","import { Resource, buildPath } from './base';\r\nimport type { QueryParams, RequestOverrides } from '../types/common';\r\n\r\n/** Parameters for {@link WebhooksResource.register}. */\r\nexport interface WebhooksRegisterParams {\r\n /** Destination URL that delivery payloads are POSTed to. */\r\n url?: string;\r\n /** Event names to subscribe this webhook to. */\r\n events?: string[];\r\n}\r\n\r\n/** Parameters for {@link WebhooksResource.delete}. */\r\nexport interface WebhooksDeleteParams {\r\n /** Webhook ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link WebhooksResource.test}. */\r\nexport interface WebhooksTestParams {\r\n /** Webhook ID. */\r\n id: string;\r\n}\r\n\r\n/** Parameters for {@link WebhooksResource.deliveries}. */\r\nexport interface WebhooksDeliveriesParams {\r\n /** Webhook ID. */\r\n id: string;\r\n}\r\n\r\n/** Webhook management endpoints. */\r\nexport class WebhooksResource extends Resource {\r\n /** List registered webhooks. */\r\n get(query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/webhooks', query, options);\r\n }\r\n\r\n /** Register a new webhook. */\r\n register(params: WebhooksRegisterParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>(\r\n '/webhooks/register',\r\n { url: params.url, events: params.events },\r\n undefined,\r\n options,\r\n );\r\n }\r\n\r\n /** Get aggregate webhook delivery statistics. */\r\n stats(query?: QueryParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>('/webhooks/stats', query, options);\r\n }\r\n\r\n /** Delete a webhook by ID. */\r\n delete(params: WebhooksDeleteParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.delete<unknown>(buildPath('/webhooks/{id}', { id: params.id }), undefined, options);\r\n }\r\n\r\n /** Trigger a test delivery for a webhook. */\r\n test(params: WebhooksTestParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.post<unknown>(\r\n buildPath('/webhooks/{id}/test', { id: params.id }),\r\n undefined,\r\n undefined,\r\n options,\r\n );\r\n }\r\n\r\n /** Get the delivery log for a webhook. */\r\n deliveries(params: WebhooksDeliveriesParams, options?: RequestOverrides): Promise<unknown> {\r\n return this.client.get<unknown>(buildPath('/webhooks/{id}/deliveries', { id: params.id }), undefined, options);\r\n }\r\n}\r\n","// AUTO-GENERATED by scripts/gen-client.ts. Do not edit by hand.\r\nimport { SpotifyHttpClient } from './core';\r\nimport type { ClientConfig } from './types/common';\r\nimport { AiResource } from './resources/ai';\r\nimport { AlbumsResource } from './resources/albums';\r\nimport { AnalysisResource } from './resources/analysis';\r\nimport { ArtistsResource } from './resources/artists';\r\nimport { AudiobooksResource } from './resources/audiobooks';\r\nimport { BatchResource } from './resources/batch';\r\nimport { BrowseResource } from './resources/browse';\r\nimport { CacheResource } from './resources/cache';\r\nimport { ChartsResource } from './resources/charts';\r\nimport { ConcertsResource } from './resources/concerts';\r\nimport { CredentialsResource } from './resources/credentials';\r\nimport { DownloadsResource } from './resources/downloads';\r\nimport { EpisodesResource } from './resources/episodes';\r\nimport { HealthResource } from './resources/health';\r\nimport { LookupsResource } from './resources/lookups';\r\nimport { MarketsResource } from './resources/markets';\r\nimport { PartnerResource } from './resources/partner';\r\nimport { PlaylistsResource } from './resources/playlists';\r\nimport { SearchResource } from './resources/search';\r\nimport { ShowsResource } from './resources/shows';\r\nimport { SnapshotsResource } from './resources/snapshots';\r\nimport { TrackingResource } from './resources/tracking';\r\nimport { TracksResource } from './resources/tracks';\r\nimport { UsersResource } from './resources/users';\r\nimport { WebhooksResource } from './resources/webhooks';\r\n\r\n/**\r\n * The Spotify Data API client. Every endpoint is reachable through a typed\r\n * resource namespace, e.g. `client.search.search({ q: 'daft punk' })`.\r\n */\r\nexport class SpotifyApiClient extends SpotifyHttpClient {\r\n readonly ai: AiResource;\r\n readonly albums: AlbumsResource;\r\n readonly analysis: AnalysisResource;\r\n readonly artists: ArtistsResource;\r\n readonly audiobooks: AudiobooksResource;\r\n readonly batch: BatchResource;\r\n readonly browse: BrowseResource;\r\n readonly cache: CacheResource;\r\n readonly charts: ChartsResource;\r\n readonly concerts: ConcertsResource;\r\n readonly credentials: CredentialsResource;\r\n readonly downloads: DownloadsResource;\r\n readonly episodes: EpisodesResource;\r\n readonly health: HealthResource;\r\n readonly lookups: LookupsResource;\r\n readonly markets: MarketsResource;\r\n readonly partner: PartnerResource;\r\n readonly playlists: PlaylistsResource;\r\n readonly search: SearchResource;\r\n readonly shows: ShowsResource;\r\n readonly snapshots: SnapshotsResource;\r\n readonly tracking: TrackingResource;\r\n readonly tracks: TracksResource;\r\n readonly users: UsersResource;\r\n readonly webhooks: WebhooksResource;\r\n\r\n constructor(config: ClientConfig) {\r\n super(config);\r\n this.ai = new AiResource(this);\r\n this.albums = new AlbumsResource(this);\r\n this.analysis = new AnalysisResource(this);\r\n this.artists = new ArtistsResource(this);\r\n this.audiobooks = new AudiobooksResource(this);\r\n this.batch = new BatchResource(this);\r\n this.browse = new BrowseResource(this);\r\n this.cache = new CacheResource(this);\r\n this.charts = new ChartsResource(this);\r\n this.concerts = new ConcertsResource(this);\r\n this.credentials = new CredentialsResource(this);\r\n this.downloads = new DownloadsResource(this);\r\n this.episodes = new EpisodesResource(this);\r\n this.health = new HealthResource(this);\r\n this.lookups = new LookupsResource(this);\r\n this.markets = new MarketsResource(this);\r\n this.partner = new PartnerResource(this);\r\n this.playlists = new PlaylistsResource(this);\r\n this.search = new SearchResource(this);\r\n this.shows = new ShowsResource(this);\r\n this.snapshots = new SnapshotsResource(this);\r\n this.tracking = new TrackingResource(this);\r\n this.tracks = new TracksResource(this);\r\n this.users = new UsersResource(this);\r\n this.webhooks = new WebhooksResource(this);\r\n }\r\n}\r\n\r\n/** Convenience factory equivalent to `new SpotifyApiClient(config)`. */\r\nexport function createClient(config: ClientConfig): SpotifyApiClient {\r\n return new SpotifyApiClient(config);\r\n}\r\n","/**\r\n * Pagination helpers for the many `offset`/`limit` endpoints.\r\n *\r\n * Because each endpoint nests its items differently, you supply a `getItems`\r\n * function that extracts the current page's array. Iteration stops when a page\r\n * returns fewer items than `limit` (or when `maxItems` is reached).\r\n */\r\n\r\nexport interface PaginateOptions<T> {\r\n /** Extract the array of items from a page (default: the page itself if it is an array). */\r\n getItems?: (page: T) => ReadonlyArray<unknown>;\r\n /** Starting offset. Default `0`. */\r\n offset?: number;\r\n /** Page size. Default `50`. */\r\n limit?: number;\r\n /** Stop after collecting this many items. */\r\n maxItems?: number;\r\n /** Hard cap on page requests (safety). Default `100`. */\r\n maxPages?: number;\r\n}\r\n\r\n/** A page fetcher: given `{ offset, limit }`, return that page. */\r\nexport type PageFetcher<T> = (params: { offset: number; limit: number }) => Promise<T>;\r\n\r\nfunction defaultGetItems(page: unknown): ReadonlyArray<unknown> {\r\n return Array.isArray(page) ? page : [];\r\n}\r\n\r\n/**\r\n * Async-iterate pages of a paginated endpoint.\r\n *\r\n * @example\r\n * for await (const page of paginate((p) => spotify.artists.albums({ id, ...p }), {\r\n * getItems: (p) => p?.data?.artist?.discography?.albums?.items ?? [],\r\n * })) {\r\n * // handle page\r\n * }\r\n */\r\nexport async function* paginate<T>(fetcher: PageFetcher<T>, options: PaginateOptions<T> = {}): AsyncGenerator<T> {\r\n const getItems = options.getItems ?? defaultGetItems;\r\n const limit = options.limit ?? 50;\r\n let offset = options.offset ?? 0;\r\n const maxPages = options.maxPages ?? 100;\r\n let seen = 0;\r\n\r\n for (let page = 0; page < maxPages; page++) {\r\n const result = await fetcher({ offset, limit });\r\n const items = getItems(result);\r\n yield result;\r\n seen += items.length;\r\n if (items.length < limit) return;\r\n if (options.maxItems !== undefined && seen >= options.maxItems) return;\r\n offset += limit;\r\n }\r\n}\r\n\r\n/** Collect all items across pages into a single flat array (bounded by `maxItems`/`maxPages`). */\r\nexport async function collect<T, I = unknown>(fetcher: PageFetcher<T>, options: PaginateOptions<T> = {}): Promise<I[]> {\r\n const getItems = options.getItems ?? defaultGetItems;\r\n const out: I[] = [];\r\n for await (const page of paginate(fetcher, options)) {\r\n for (const item of getItems(page)) {\r\n out.push(item as I);\r\n if (options.maxItems !== undefined && out.length >= options.maxItems) return out;\r\n }\r\n }\r\n return out;\r\n}\r\n","/* eslint-disable */\r\n// AUTO-GENERATED by scripts/generate-types.ts (quicktype).\r\n// Response payload types inferred from real sampled API responses.\r\n// Do not edit by hand — re-run `npm run codegen:types`.\r\n\r\n// Endpoints whose response shape is identical to another — aliased to the shared type.\r\nexport type GetAlbumMetadataData = GetAlbumMetadataDataClass;\r\nexport type GetArtistAppearsOnData = GetArtistData;\r\nexport type GetArtistDiscographyOverviewData = GetArtistData;\r\nexport type GetArtistDiscoveredOnData = GetArtistData;\r\nexport type GetArtistFeaturingData = GetArtistData;\r\nexport type GetArtistTopTracksData = GetTracksData;\r\nexport type GetBrowseCategoriesIdData = GetBrowseCategoriesidData;\r\nexport type GetBrowseRecommendationsData = string;\r\nexport type GetShowsIdData = GetShowsidData;\r\nexport type GetTop200TracksData = GetTop200TracksDatum[];\r\nexport type GetTop20ByFollowersData = GetTop20ByFollowersDatum[];\r\nexport type GetTop20ByMonthlyListenersData = GetTop20ByMonthlyListenersDatum[];\r\nexport type GetTopAlbumsData = GetSDatum[];\r\nexport type GetTopArtistsData = GetSDatum[];\r\nexport type GetTrackLyricsData = GetSearchLyricsData;\r\nexport type GetViralTracksData = GetSDatum[];\r\n\r\nexport interface GetAlbumMetadataBatchData {\r\n results: GetAlbumMetadataBatchDataResult[];\r\n}\r\n\r\nexport interface GetAlbumMetadataBatchDataResult {\r\n id: string;\r\n metadata: Metadata;\r\n error: null;\r\n}\r\n\r\nexport interface Metadata {\r\n data: GetAlbumMetadataDataClass;\r\n}\r\n\r\nexport interface GetAlbumMetadataDataClass {\r\n album: GetAlbumMetadataDataAlbum;\r\n}\r\n\r\nexport interface GetAlbumMetadataDataAlbum {\r\n uri: string;\r\n name: string;\r\n artists: ReleasesClass;\r\n coverArt: CoverArt;\r\n discs: Discs;\r\n tracks: PurpleTracks;\r\n releases: ReleasesClass;\r\n type: LatestType;\r\n date: ReleaseDateClass;\r\n playability: LatestPlayability;\r\n label: string;\r\n copyright: AlbumCopyright;\r\n courtesyLine: string;\r\n sharingInfo: AlbumSharingInfo;\r\n moreAlbumsByArtist: AlbumMoreAlbumsByArtist;\r\n}\r\n\r\nexport interface ReleasesClass {\r\n totalCount: number;\r\n items: ItemClass[];\r\n}\r\n\r\nexport interface ItemClass {\r\n id: string;\r\n uri: string;\r\n profile: UserLocationClass;\r\n visuals?: ItemVisuals;\r\n sharingInfo?: PurpleSharingInfo;\r\n relatedContent?: ItemRelatedContent;\r\n}\r\n\r\nexport interface UserLocationClass {\r\n name: string;\r\n}\r\n\r\nexport interface ItemRelatedContent {\r\n relatedArtists: RelatedArtists;\r\n}\r\n\r\nexport interface RelatedArtists {\r\n totalCount: number;\r\n items: RelatedArtistsItem[];\r\n}\r\n\r\nexport interface RelatedArtistsItem {\r\n id: string;\r\n uri: string;\r\n profile: UserLocationClass;\r\n visuals: ItemVisuals;\r\n}\r\n\r\nexport interface ItemVisuals {\r\n avatarImage: AvatarImageElement;\r\n}\r\n\r\nexport interface AvatarImageElement {\r\n sources: Icon[];\r\n}\r\n\r\nexport interface Icon {\r\n url: string;\r\n height: number | null;\r\n width: number | null;\r\n}\r\n\r\nexport interface PurpleSharingInfo {\r\n shareUrl: string;\r\n}\r\n\r\nexport interface AlbumCopyright {\r\n totalCount: number;\r\n items: BiographyElement[];\r\n}\r\n\r\nexport interface BiographyElement {\r\n type: BiographyType;\r\n text: string;\r\n}\r\n\r\nexport enum BiographyType {\r\n Autobiography = 'AUTOBIOGRAPHY',\r\n C = 'C',\r\n P = 'P',\r\n}\r\n\r\nexport interface CoverArt {\r\n extractedColors: PurpleExtractedColors;\r\n sources: Icon[];\r\n}\r\n\r\nexport interface PurpleExtractedColors {\r\n colorRaw: Color;\r\n colorLight: Color;\r\n colorDark: Color;\r\n}\r\n\r\nexport interface Color {\r\n hex: string;\r\n}\r\n\r\nexport interface ReleaseDateClass {\r\n isoString: Date;\r\n precision: Precision;\r\n}\r\n\r\nexport enum Precision {\r\n Day = 'DAY',\r\n Minute = 'MINUTE',\r\n}\r\n\r\nexport interface Discs {\r\n totalCount: number;\r\n items: DiscsItem[];\r\n}\r\n\r\nexport interface DiscsItem {\r\n number: number;\r\n tracks: AlbumsV2;\r\n}\r\n\r\nexport interface AlbumsV2 {\r\n totalCount: number;\r\n}\r\n\r\nexport interface AlbumMoreAlbumsByArtist {\r\n items: PurpleItem[];\r\n}\r\n\r\nexport interface PurpleItem {\r\n discography: PurpleDiscography;\r\n}\r\n\r\nexport interface PurpleDiscography {\r\n popularReleases: PopularReleases;\r\n}\r\n\r\nexport interface PopularReleases {\r\n items: FluffyItem[];\r\n}\r\n\r\nexport interface FluffyItem {\r\n releases: PurplePopularReleasesAlbums;\r\n}\r\n\r\nexport interface PurplePopularReleasesAlbums {\r\n items: TentacledItem[];\r\n}\r\n\r\nexport interface TentacledItem {\r\n id: string;\r\n uri: string;\r\n name: string;\r\n date: PurpleDate;\r\n coverArt: AvatarImageElement;\r\n playability?: LatestPlayability;\r\n sharingInfo: AlbumSharingInfo;\r\n artists?: ItemArtists;\r\n type?: LatestType;\r\n}\r\n\r\nexport interface ItemArtists {\r\n items: StickyItem[];\r\n}\r\n\r\nexport interface StickyItem {\r\n uri: string;\r\n profile: UserLocationClass;\r\n}\r\n\r\nexport interface PurpleDate {\r\n year: number;\r\n}\r\n\r\nexport interface LatestPlayability {\r\n playable: boolean;\r\n reason: PurpleReason;\r\n}\r\n\r\nexport enum PurpleReason {\r\n CountryRestricted = 'COUNTRY_RESTRICTED',\r\n Playable = 'PLAYABLE',\r\n}\r\n\r\nexport interface AlbumSharingInfo {\r\n shareId: string;\r\n shareUrl: string;\r\n}\r\n\r\nexport enum LatestType {\r\n Album = 'ALBUM',\r\n Compilation = 'COMPILATION',\r\n Ep = 'EP',\r\n Single = 'SINGLE',\r\n}\r\n\r\nexport interface PurpleTracks {\r\n totalCount: number;\r\n items: IndigoItem[];\r\n}\r\n\r\nexport interface IndigoItem {\r\n track: PurpleTrack;\r\n}\r\n\r\nexport interface PurpleTrack {\r\n playability: LatestPlayability;\r\n duration: TrackDurationClass;\r\n}\r\n\r\nexport interface TrackDurationClass {\r\n totalMilliseconds: number;\r\n}\r\n\r\nexport interface GetAlbumTracksData {\r\n album: GetAlbumTracksDataAlbum;\r\n}\r\n\r\nexport interface GetAlbumTracksDataAlbum {\r\n playability: AlbumOfTrackPlayability;\r\n tracks: FluffyTracks;\r\n}\r\n\r\nexport interface AlbumOfTrackPlayability {\r\n playable: boolean;\r\n}\r\n\r\nexport interface FluffyTracks {\r\n totalCount: number;\r\n items: IndecentItem[];\r\n}\r\n\r\nexport interface IndecentItem {\r\n uid: string;\r\n track: FluffyTrack;\r\n}\r\n\r\nexport interface FluffyTrack {\r\n uri: string;\r\n name: string;\r\n playcount: string;\r\n discNumber: number;\r\n trackNumber: number;\r\n contentRating: ContentRating;\r\n relinkingInformation: PurpleRelinkingInformation;\r\n duration: TrackDurationClass;\r\n playability: AlbumOfTrackPlayability;\r\n artists: ItemArtists;\r\n}\r\n\r\nexport interface ContentRating {\r\n label: Label;\r\n}\r\n\r\nexport enum Label {\r\n Explicit = 'EXPLICIT',\r\n None = 'NONE',\r\n}\r\n\r\nexport interface PurpleRelinkingInformation {\r\n uri: string;\r\n isRelinked: boolean;\r\n}\r\n\r\nexport interface GetAlbumsData {\r\n albums: GetAlbumsDataAlbum[];\r\n}\r\n\r\nexport interface GetAlbumsDataAlbum {\r\n album_type: AlbumAlbumType;\r\n total_tracks: number;\r\n available_markets: any[];\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n name: string;\r\n release_date: Date;\r\n release_date_precision: ReleaseDatePrecision;\r\n type: AlbumAlbumType;\r\n uri: string;\r\n artists: Owner[];\r\n tracks: AlbumsClass;\r\n copyrights: BiographyElement[];\r\n external_ids: AlbumExternalids;\r\n genres: any[];\r\n label: string;\r\n popularity: number;\r\n}\r\n\r\nexport enum AlbumAlbumType {\r\n Album = 'album',\r\n Compilation = 'compilation',\r\n Ep = 'ep',\r\n Single = 'single',\r\n}\r\n\r\nexport interface Owner {\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n name?: string;\r\n type: OwnerType;\r\n uri: string;\r\n display_name?: OwnerEnum;\r\n}\r\n\r\nexport enum OwnerEnum {\r\n Spotify = 'Spotify',\r\n}\r\n\r\nexport interface ExternalUrls {\r\n spotify: string;\r\n}\r\n\r\nexport enum OwnerType {\r\n Artist = 'artist',\r\n User = 'user',\r\n}\r\n\r\nexport interface AlbumExternalids {\r\n upc: string;\r\n}\r\n\r\nexport enum ReleaseDatePrecision {\r\n Day = 'day',\r\n Empty = '',\r\n}\r\n\r\nexport interface AlbumsClass {\r\n href: string;\r\n limit: number;\r\n next: null;\r\n offset: number;\r\n previous: null;\r\n total: number;\r\n items: TracksTrack[];\r\n}\r\n\r\nexport interface TracksTrack {\r\n artists: Owner[];\r\n disc_number: number;\r\n track_number: number;\r\n duration_ms: number;\r\n explicit: boolean;\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n is_local: boolean;\r\n name: string;\r\n preview_url: null;\r\n type: TrackType;\r\n uri: string;\r\n external_ids: ItemExternalids;\r\n album?: ItemElement;\r\n is_playable?: boolean;\r\n popularity?: number;\r\n available_markets?: Market[];\r\n}\r\n\r\nexport interface ItemElement {\r\n album_type: AlbumAlbumType;\r\n artists: Owner[];\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n is_playable?: boolean;\r\n name: string;\r\n release_date: string;\r\n release_date_precision: ReleaseDatePrecision;\r\n total_tracks: number | null;\r\n type: AlbumAlbumType;\r\n uri: string;\r\n available_markets?: Market[];\r\n restrictions?: PlayabilityClass;\r\n}\r\n\r\nexport enum Market {\r\n AE = 'AE',\r\n Ad = 'AD',\r\n Ag = 'AG',\r\n Al = 'AL',\r\n Am = 'AM',\r\n Ao = 'AO',\r\n Ar = 'AR',\r\n At = 'AT',\r\n Au = 'AU',\r\n Az = 'AZ',\r\n BI = 'BI',\r\n BT = 'BT',\r\n BW = 'BW',\r\n Ba = 'BA',\r\n Bb = 'BB',\r\n Bd = 'BD',\r\n Be = 'BE',\r\n Bf = 'BF',\r\n Bg = 'BG',\r\n Bh = 'BH',\r\n Bj = 'BJ',\r\n Bn = 'BN',\r\n Bo = 'BO',\r\n Br = 'BR',\r\n Bs = 'BS',\r\n By = 'BY',\r\n Bz = 'BZ',\r\n CA = 'CA',\r\n CD = 'CD',\r\n CG = 'CG',\r\n CM = 'CM',\r\n CR = 'CR',\r\n Ch = 'CH',\r\n Ci = 'CI',\r\n Cl = 'CL',\r\n Co = 'CO',\r\n Cv = 'CV',\r\n Cw = 'CW',\r\n Cy = 'CY',\r\n Cz = 'CZ',\r\n De = 'DE',\r\n Dj = 'DJ',\r\n Dk = 'DK',\r\n Dm = 'DM',\r\n Do = 'DO',\r\n Dz = 'DZ',\r\n Ec = 'EC',\r\n Ee = 'EE',\r\n Eg = 'EG',\r\n Es = 'ES',\r\n Et = 'ET',\r\n Fi = 'FI',\r\n Fj = 'FJ',\r\n Fm = 'FM',\r\n Fr = 'FR',\r\n GB = 'GB',\r\n Ga = 'GA',\r\n Gd = 'GD',\r\n Ge = 'GE',\r\n Gh = 'GH',\r\n Gm = 'GM',\r\n Gn = 'GN',\r\n Gq = 'GQ',\r\n Gr = 'GR',\r\n Gt = 'GT',\r\n Gw = 'GW',\r\n Gy = 'GY',\r\n HT = 'HT',\r\n Hk = 'HK',\r\n Hn = 'HN',\r\n Hr = 'HR',\r\n Hu = 'HU',\r\n ID = 'ID',\r\n IL = 'IL',\r\n Ie = 'IE',\r\n In = 'IN',\r\n Iq = 'IQ',\r\n Is = 'IS',\r\n It = 'IT',\r\n Jm = 'JM',\r\n Jo = 'JO',\r\n Jp = 'JP',\r\n KM = 'KM',\r\n Ke = 'KE',\r\n Kg = 'KG',\r\n Kh = 'KH',\r\n Ki = 'KI',\r\n Kn = 'KN',\r\n Kr = 'KR',\r\n Kw = 'KW',\r\n Kz = 'KZ',\r\n LB = 'LB',\r\n LV = 'LV',\r\n La = 'LA',\r\n Lc = 'LC',\r\n Li = 'LI',\r\n Lk = 'LK',\r\n Lr = 'LR',\r\n Ls = 'LS',\r\n Lt = 'LT',\r\n Lu = 'LU',\r\n Ly = 'LY',\r\n MT = 'MT',\r\n MX = 'MX',\r\n Ma = 'MA',\r\n Mc = 'MC',\r\n Md = 'MD',\r\n Me = 'ME',\r\n Mg = 'MG',\r\n Mh = 'MH',\r\n Mk = 'MK',\r\n Ml = 'ML',\r\n Mn = 'MN',\r\n Mo = 'MO',\r\n Mr = 'MR',\r\n Mu = 'MU',\r\n Mv = 'MV',\r\n Mw = 'MW',\r\n My = 'MY',\r\n Mz = 'MZ',\r\n NI = 'NI',\r\n NP = 'NP',\r\n Na = 'NA',\r\n Ne = 'NE',\r\n Ng = 'NG',\r\n Nl = 'NL',\r\n No = 'NO',\r\n Nr = 'NR',\r\n Nz = 'NZ',\r\n Om = 'OM',\r\n PE = 'PE',\r\n PG = 'PG',\r\n PR = 'PR',\r\n PS = 'PS',\r\n Pa = 'PA',\r\n Ph = 'PH',\r\n Pk = 'PK',\r\n Pl = 'PL',\r\n Pt = 'PT',\r\n Pw = 'PW',\r\n Py = 'PY',\r\n QA = 'QA',\r\n Ro = 'RO',\r\n Rs = 'RS',\r\n Rw = 'RW',\r\n SE = 'SE',\r\n Sa = 'SA',\r\n Sb = 'SB',\r\n Sc = 'SC',\r\n Sg = 'SG',\r\n Si = 'SI',\r\n Sk = 'SK',\r\n Sl = 'SL',\r\n Sm = 'SM',\r\n Sn = 'SN',\r\n Sr = 'SR',\r\n St = 'ST',\r\n Sv = 'SV',\r\n Sz = 'SZ',\r\n Td = 'TD',\r\n Tg = 'TG',\r\n Th = 'TH',\r\n Tj = 'TJ',\r\n Tl = 'TL',\r\n Tn = 'TN',\r\n To = 'TO',\r\n Tr = 'TR',\r\n Tt = 'TT',\r\n Tv = 'TV',\r\n Tw = 'TW',\r\n Tz = 'TZ',\r\n Ua = 'UA',\r\n Ug = 'UG',\r\n Us = 'US',\r\n Uy = 'UY',\r\n Uz = 'UZ',\r\n Vc = 'VC',\r\n Ve = 'VE',\r\n Vn = 'VN',\r\n Vu = 'VU',\r\n Ws = 'WS',\r\n Xk = 'XK',\r\n Za = 'ZA',\r\n Zm = 'ZM',\r\n Zw = 'ZW',\r\n}\r\n\r\nexport interface PlayabilityClass {\r\n reason: RestrictionsReason;\r\n}\r\n\r\nexport enum RestrictionsReason {\r\n Empty = '',\r\n Playable = 'PLAYABLE',\r\n}\r\n\r\nexport interface ItemExternalids {\r\n isrc: string;\r\n}\r\n\r\nexport enum TrackType {\r\n Track = 'track',\r\n}\r\n\r\nexport interface GetArtistAlbumsData {\r\n artist: GetArtistAlbumsDataArtist;\r\n}\r\n\r\nexport interface GetArtistAlbumsDataArtist {\r\n discography: FluffyDiscography;\r\n}\r\n\r\nexport interface FluffyDiscography {\r\n albums: PurpleAlbums;\r\n}\r\n\r\nexport interface PurpleAlbums {\r\n totalCount: number;\r\n items: HilariousItem[];\r\n}\r\n\r\nexport interface HilariousItem {\r\n releases: PurpleReleases;\r\n}\r\n\r\nexport interface PurpleReleases {\r\n items: AmbitiousItem[];\r\n}\r\n\r\nexport interface AmbitiousItem {\r\n id: string;\r\n uri: string;\r\n name: string;\r\n type: LatestType;\r\n date: FluffyDate;\r\n coverArt: AvatarImageElement;\r\n playability: LatestPlayability;\r\n sharingInfo: AlbumSharingInfo;\r\n tracks: AlbumsV2;\r\n}\r\n\r\nexport interface FluffyDate {\r\n year: number;\r\n isoString: Date;\r\n}\r\n\r\nexport interface GetArtistData {\r\n artist: GetArtistAppearsOnDataArtist;\r\n}\r\n\r\nexport interface GetArtistAppearsOnDataArtist {\r\n id: string;\r\n uri: string;\r\n profile: UserLocationClass;\r\n relatedContent?: PurpleRelatedContent;\r\n discography?: TentacledDiscography;\r\n visuals?: ItemVisuals;\r\n}\r\n\r\nexport interface TentacledDiscography {\r\n albums: AlbumsV2;\r\n singles: AlbumsV2;\r\n compilations: AlbumsV2;\r\n all: AlbumsV2;\r\n}\r\n\r\nexport interface PurpleRelatedContent {\r\n appearsOn?: PurpleAppearsOn;\r\n discoveredOn?: DiscoveredOn;\r\n featuring?: DiscoveredOn;\r\n}\r\n\r\nexport interface PurpleAppearsOn {\r\n totalCount: number;\r\n items: CunningItem[];\r\n}\r\n\r\nexport interface CunningItem {\r\n releases: FluffyReleases;\r\n}\r\n\r\nexport interface FluffyReleases {\r\n totalCount: number;\r\n items: MagentaItem[];\r\n}\r\n\r\nexport interface MagentaItem {\r\n uri: string;\r\n id: string;\r\n name: string;\r\n artists: ItemArtists;\r\n coverArt: AvatarImageElement;\r\n sharingInfo: AlbumSharingInfo;\r\n type?: LatestType;\r\n date?: PurpleDate;\r\n}\r\n\r\nexport interface DiscoveredOn {\r\n totalCount: number;\r\n items: DiscoveredOnItem[];\r\n}\r\n\r\nexport interface DiscoveredOnItem {\r\n uri: string;\r\n id: string;\r\n owner: UserLocationClass;\r\n name: string;\r\n description: string;\r\n images: ItemImages;\r\n}\r\n\r\nexport interface ItemImages {\r\n totalCount: number;\r\n items: AvatarImageElement[];\r\n}\r\n\r\nexport interface GetArtistCompareData {\r\n artists: GetArtistCompareDataArtist[];\r\n comparison: Comparison;\r\n}\r\n\r\nexport interface GetArtistCompareDataArtist {\r\n id: string;\r\n name: string;\r\n popularity: number;\r\n followers: number;\r\n genres: string[];\r\n images: Icon[];\r\n topTracks: TopTrack[];\r\n}\r\n\r\nexport interface TopTrack {\r\n id: string;\r\n name: string;\r\n popularity: number;\r\n album: string;\r\n}\r\n\r\nexport interface Comparison {\r\n genreOverlap: any[];\r\n relatedArtistOverlap: any[];\r\n followerRatios: FollowerRatio[];\r\n}\r\n\r\nexport interface FollowerRatio {\r\n id: string;\r\n name: string;\r\n ratio: number;\r\n}\r\n\r\nexport interface GetArtistOverviewBatchData {\r\n results: GetArtistOverviewBatchDataResult[];\r\n}\r\n\r\nexport interface GetArtistOverviewBatchDataResult {\r\n id: string;\r\n overview: Overview;\r\n error: null;\r\n}\r\n\r\nexport interface Overview {\r\n data: OverviewData;\r\n}\r\n\r\nexport interface OverviewData {\r\n artist: DataArtist;\r\n}\r\n\r\nexport interface DataArtist {\r\n id: string;\r\n uri: string;\r\n following: boolean;\r\n sharingInfo: AlbumSharingInfo;\r\n profile: PurpleProfile;\r\n visuals: PurpleVisuals;\r\n discography: StickyDiscography;\r\n stats: ArtistStats;\r\n relatedContent: FluffyRelatedContent;\r\n goods: ArtistGoods;\r\n}\r\n\r\nexport interface StickyDiscography {\r\n latest: PurpleLatest;\r\n popularReleases: CompilationsClass;\r\n singles: CompilationsClass;\r\n albums: CompilationsClass;\r\n compilations: CompilationsClass;\r\n topTracks: PurpleTopTracks;\r\n}\r\n\r\nexport interface CompilationsClass {\r\n totalCount: number;\r\n items: CompilationsItem[];\r\n}\r\n\r\nexport interface CompilationsItem {\r\n releases: TentacledReleases;\r\n}\r\n\r\nexport interface TentacledReleases {\r\n items: LatestElement[];\r\n}\r\n\r\nexport interface LatestElement {\r\n id: string;\r\n uri: string;\r\n name: string;\r\n type: LatestType;\r\n copyright: LatestCopyright;\r\n date: TentacledDate;\r\n coverArt: AvatarImageElement;\r\n tracks: AlbumsV2;\r\n label: LabelEnum;\r\n playability: LatestPlayability;\r\n sharingInfo: AlbumSharingInfo;\r\n}\r\n\r\nexport interface LatestCopyright {\r\n items: BiographyElement[];\r\n}\r\n\r\nexport interface TentacledDate {\r\n year: number;\r\n month: number;\r\n day: number;\r\n precision: Precision;\r\n}\r\n\r\nexport enum LabelEnum {\r\n CashMoneyDrakeLP6 = 'Cash Money/Drake LP6',\r\n CashMoneyRecordsYoungMoneyEntUniversalRec = 'Cash Money Records/Young Money Ent./Universal Rec.',\r\n OVORepublic = 'OVO/Republic',\r\n OVORepublicRecords = 'OVO / Republic Records',\r\n OVOSound = 'OVO Sound',\r\n Ovo = 'OVO',\r\n TaylorSwift = 'Taylor Swift',\r\n The4BatzOVOSound = '4batz / OVO Sound',\r\n UltraRecordsLLC = 'Ultra Records, LLC',\r\n WaltDisneyRecordsPixar = 'Walt Disney Records / Pixar',\r\n}\r\n\r\nexport interface PurpleLatest {\r\n id: string;\r\n uri: string;\r\n name: string;\r\n type: LatestType;\r\n copyright: LatestCopyright;\r\n date: PurpleDate;\r\n coverArt: AvatarImageElement;\r\n tracks: AlbumsV2;\r\n label: LabelEnum;\r\n playability: LatestPlayability;\r\n}\r\n\r\nexport interface PurpleTopTracks {\r\n items: FriskyItem[];\r\n}\r\n\r\nexport interface FriskyItem {\r\n uid: string;\r\n track: TentacledTrack;\r\n}\r\n\r\nexport interface TentacledTrack {\r\n id: string;\r\n uri: string;\r\n name: string;\r\n playcount: string;\r\n discNumber: number;\r\n duration: TrackDurationClass;\r\n playability: LatestPlayability;\r\n contentRating: ContentRating;\r\n artists: ItemArtists;\r\n album?: AlbumOfTrackClass;\r\n albumOfTrack?: AlbumOfTrackClass;\r\n associationsV3?: PurpleAssociationsV3;\r\n}\r\n\r\nexport interface AlbumOfTrackClass {\r\n uri: string;\r\n coverArt: BackgroundImageClass;\r\n}\r\n\r\nexport interface BackgroundImageClass {\r\n sources: VideoThumbnail[];\r\n}\r\n\r\nexport interface VideoThumbnail {\r\n url: null | string;\r\n}\r\n\r\nexport interface PurpleAssociationsV3 {\r\n videoAssociations: AlbumsV2;\r\n}\r\n\r\nexport interface ArtistGoods {\r\n events: Events;\r\n merch: PurpleMerch;\r\n}\r\n\r\nexport interface Events {\r\n userLocation: UserLocationClass;\r\n concerts: EventsConcerts;\r\n}\r\n\r\nexport interface EventsConcerts {\r\n totalCount: number;\r\n items: any[];\r\n pagingInfo: ConcertsPagingInfo;\r\n}\r\n\r\nexport interface ConcertsPagingInfo {\r\n limit: number;\r\n}\r\n\r\nexport interface PurpleMerch {\r\n items: MischievousItem[];\r\n}\r\n\r\nexport interface MischievousItem {\r\n uri: string;\r\n description: string;\r\n imageUri: string;\r\n name: string;\r\n url: string;\r\n}\r\n\r\nexport interface PurpleProfile {\r\n name: string;\r\n verified: boolean;\r\n pinnedItem: PurplePinnedItem;\r\n biography: SignifierClass;\r\n externalLinks: ExternalLinks;\r\n playlists: ProfilePlaylists;\r\n}\r\n\r\nexport interface SignifierClass {\r\n text: string;\r\n}\r\n\r\nexport interface ExternalLinks {\r\n items: ExternalLinksItem[];\r\n}\r\n\r\nexport interface ExternalLinksItem {\r\n name: string;\r\n url: string;\r\n}\r\n\r\nexport interface PurplePinnedItem {\r\n comment: string;\r\n type: string;\r\n item: ArtistElement;\r\n}\r\n\r\nexport interface ArtistElement {\r\n uri: string;\r\n name: string;\r\n coverArt?: AvatarImageElement;\r\n type?: PurpleType;\r\n images?: ImagesClass;\r\n artists?: ItemArtists;\r\n id?: string;\r\n}\r\n\r\nexport interface ImagesClass {\r\n items: AvatarImageElement[];\r\n}\r\n\r\nexport enum PurpleType {\r\n Artist = 'artist',\r\n Single = 'SINGLE',\r\n}\r\n\r\nexport interface ProfilePlaylists {\r\n totalCount: number;\r\n items: BraggadociousItem[];\r\n}\r\n\r\nexport interface BraggadociousItem {\r\n uri: string;\r\n name: string;\r\n description: string;\r\n owner: UserLocationClass;\r\n images: ImagesClass;\r\n}\r\n\r\nexport interface FluffyRelatedContent {\r\n appearsOn: FluffyAppearsOn;\r\n featuring: DiscoveredOn;\r\n discoveredOn: DiscoveredOn;\r\n relatedArtists: RelatedArtists;\r\n}\r\n\r\nexport interface FluffyAppearsOn {\r\n totalCount: number;\r\n items: Item1[];\r\n}\r\n\r\nexport interface Item1 {\r\n releases: StickyReleases;\r\n}\r\n\r\nexport interface StickyReleases {\r\n totalCount: number;\r\n items: TentacledItem[];\r\n}\r\n\r\nexport interface ArtistStats {\r\n followers: number;\r\n monthlyListeners: number;\r\n worldRank: number;\r\n topCities: TopCities;\r\n}\r\n\r\nexport interface TopCities {\r\n items: TopCitiesItem[];\r\n}\r\n\r\nexport interface TopCitiesItem {\r\n numberOfListeners: number;\r\n city: string;\r\n country: Market;\r\n region: string;\r\n}\r\n\r\nexport interface PurpleVisuals {\r\n gallery: ImagesClass;\r\n avatarImage: HeaderImageClass;\r\n headerImage: HeaderImageClass;\r\n}\r\n\r\nexport interface HeaderImageClass {\r\n sources: Icon[];\r\n extractedColors: HeaderImageExtractedColors;\r\n}\r\n\r\nexport interface HeaderImageExtractedColors {\r\n colorRaw: Color;\r\n}\r\n\r\nexport interface GetArtistOverviewData {\r\n artistUnion: GetArtistOverviewDataArtistUnion;\r\n}\r\n\r\nexport interface GetArtistOverviewDataArtistUnion {\r\n __typename: ArtistUnionTypename;\r\n id: string;\r\n uri: string;\r\n sharingInfo: AlbumSharingInfo;\r\n profile: FluffyProfile;\r\n visuals: PurpleVisuals;\r\n discography: IndigoDiscography;\r\n stats: ArtistStats;\r\n relatedContent: ArtistUnionRelatedContent;\r\n goods: PurpleGoods;\r\n}\r\n\r\nexport enum ArtistUnionTypename {\r\n Album = 'Album',\r\n Artist = 'Artist',\r\n Playlist = 'Playlist',\r\n Track = 'Track',\r\n User = 'User',\r\n}\r\n\r\nexport interface IndigoDiscography {\r\n latest: LatestElement;\r\n popularReleasesAlbums: PopularReleasesAlbums;\r\n singles: CompilationsClass;\r\n albums: CompilationsClass;\r\n compilations: CompilationsClass;\r\n topTracks: PurpleTopTracks;\r\n}\r\n\r\nexport interface PopularReleasesAlbums {\r\n totalCount: number;\r\n items: LatestElement[];\r\n}\r\n\r\nexport interface PurpleGoods {\r\n events: Events;\r\n merch: FluffyMerch;\r\n}\r\n\r\nexport interface FluffyMerch {\r\n items: Item2[];\r\n}\r\n\r\nexport interface Item2 {\r\n image: BackgroundImageClass;\r\n name?: string;\r\n description: string;\r\n price: string;\r\n uri: string;\r\n url: string;\r\n nameV2?: string;\r\n}\r\n\r\nexport interface FluffyProfile {\r\n name: LabelEnum;\r\n verified: boolean;\r\n pinnedItem: FluffyPinnedItem;\r\n biography: BiographyElement;\r\n externalLinks: ExternalLinks;\r\n playlistsV2: PlaylistsV2;\r\n}\r\n\r\nexport interface FluffyPinnedItem {\r\n comment: string;\r\n type: LatestType;\r\n backgroundImage: BackgroundImageClass;\r\n itemV2: SearchTests;\r\n item: ArtistElement;\r\n}\r\n\r\nexport interface SearchTests {}\r\n\r\nexport interface PlaylistsV2 {\r\n totalCount: number;\r\n items: PlaylistsV2Item[];\r\n}\r\n\r\nexport interface PlaylistsV2Item {\r\n data: PurpleData;\r\n}\r\n\r\nexport interface PurpleData {\r\n __typename: ArtistUnionTypename;\r\n uri: string;\r\n name: string;\r\n description: string;\r\n ownerV2: PurpleOwnerV2;\r\n images: ImagesClass;\r\n}\r\n\r\nexport interface PurpleOwnerV2 {\r\n data: FluffyData;\r\n}\r\n\r\nexport interface FluffyData {\r\n __typename: ArtistUnionTypename;\r\n name: string;\r\n}\r\n\r\nexport interface ArtistUnionRelatedContent {\r\n appearsOn: PurpleAppearsOn;\r\n featuringV2: V2;\r\n discoveredOnV2: V2;\r\n relatedArtists: RelatedArtists;\r\n}\r\n\r\nexport interface V2 {\r\n totalCount: number;\r\n items: DiscoveredOnV2Item[];\r\n}\r\n\r\nexport interface DiscoveredOnV2Item {\r\n data: TentacledData;\r\n}\r\n\r\nexport interface TentacledData {\r\n __typename: PurpleTypename;\r\n uri?: string;\r\n id?: string;\r\n ownerV2?: PurpleOwnerV2;\r\n name?: string;\r\n description?: string;\r\n images?: ItemImages;\r\n}\r\n\r\nexport enum PurpleTypename {\r\n GenericError = 'GenericError',\r\n Playlist = 'Playlist',\r\n}\r\n\r\nexport interface GetArtistRelatedData {\r\n artist: ItemClass;\r\n}\r\n\r\nexport interface GetArtistSinglesData {\r\n artistUnion: GetArtistSinglesDataArtistUnion;\r\n}\r\n\r\nexport interface GetArtistSinglesDataArtistUnion {\r\n __typename: ArtistUnionTypename;\r\n discography: IndecentDiscography;\r\n}\r\n\r\nexport interface IndecentDiscography {\r\n singles: Singles;\r\n}\r\n\r\nexport interface Singles {\r\n items: AllItem[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface AllItem {\r\n releases: IndigoReleases;\r\n}\r\n\r\nexport interface IndigoReleases {\r\n items: Item3[];\r\n}\r\n\r\nexport interface Item3 {\r\n coverArt: AvatarImageElement;\r\n date: AlbumOfTrackDate;\r\n id: string;\r\n name: string;\r\n playability: LatestPlayability;\r\n sharingInfo: AlbumSharingInfo;\r\n tracks: AlbumsV2;\r\n type: LatestType;\r\n uri: string;\r\n}\r\n\r\nexport interface AlbumOfTrackDate {\r\n isoString: Date;\r\n precision: Precision;\r\n year: number;\r\n}\r\n\r\nexport interface GetTracksData {\r\n tracks: TracksTrack[];\r\n}\r\n\r\nexport interface GetArtistsData {\r\n artists: GetArtistsDataArtist[];\r\n}\r\n\r\nexport interface GetArtistsDataArtist {\r\n external_urls: ExternalUrls;\r\n followers: Followers;\r\n genres: any[];\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n name: string;\r\n popularity: number;\r\n type: OwnerType;\r\n uri: string;\r\n}\r\n\r\nexport interface Followers {\r\n href: null | string;\r\n total: number | null;\r\n}\r\n\r\nexport interface GetAudiobooksData {\r\n audiobooks: null[];\r\n}\r\n\r\nexport interface GetBrowseCategoriesData {\r\n categories: Categories;\r\n}\r\n\r\nexport interface Categories {\r\n href: string;\r\n items: GetBrowseCategoriesidData[];\r\n limit: number;\r\n next: string;\r\n offset: number;\r\n previous: null;\r\n total: number;\r\n}\r\n\r\nexport interface GetBrowseCategoriesidData {\r\n href: string;\r\n id: string;\r\n icons: Icon[];\r\n name: string;\r\n}\r\n\r\nexport interface GetBrowseFeaturedPlaylistsData {\r\n message: string;\r\n playlists: GetBrowseFeaturedPlaylistsDataPlaylists;\r\n}\r\n\r\nexport interface GetBrowseFeaturedPlaylistsDataPlaylists {\r\n href: string;\r\n items: Item4[];\r\n limit: number;\r\n next: string;\r\n offset: number;\r\n previous: null;\r\n total: number;\r\n}\r\n\r\nexport interface Item4 {\r\n collaborative: boolean;\r\n description: string;\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n name: string;\r\n owner: Owner;\r\n primary_color: PrimaryColor | null;\r\n public: boolean;\r\n snapshot_id: string;\r\n tracks: Followers;\r\n items: Followers;\r\n type: GetPlaylistDataType;\r\n uri: string;\r\n}\r\n\r\nexport enum PrimaryColor {\r\n Eb1E32 = '#eb1e32',\r\n Ffffff = '#ffffff',\r\n PrimaryColorFFFFFF = '#FFFFFF',\r\n The509Bf5 = '#509BF5',\r\n}\r\n\r\nexport enum GetPlaylistDataType {\r\n Playlist = 'playlist',\r\n}\r\n\r\nexport interface GetBrowseNewReleasesData {\r\n albums: GetBrowseNewReleasesDataAlbums;\r\n}\r\n\r\nexport interface GetBrowseNewReleasesDataAlbums {\r\n href: string;\r\n items: ItemElement[];\r\n limit: number;\r\n next: string;\r\n offset: number;\r\n previous: null;\r\n total: number;\r\n}\r\n\r\nexport interface GetCacheStatsData {\r\n hits: number;\r\n misses: number;\r\n bypasses: number;\r\n errors: number;\r\n hitRate: string;\r\n}\r\n\r\nexport interface GetCookiesRedisData {\r\n status: string;\r\n instance: string;\r\n timestamp: Date;\r\n redis: Redis;\r\n stats: GetCookiesRedisDataStats;\r\n usage: GetCookiesRedisDataUsage;\r\n}\r\n\r\nexport interface Redis {\r\n connected: boolean;\r\n useRedis: boolean;\r\n}\r\n\r\nexport interface GetCookiesRedisDataStats {\r\n totalCookies: number;\r\n rotationIndex: number;\r\n removedCookies: number;\r\n validationAttempts: number;\r\n successfulValidations: number;\r\n failedValidations: number;\r\n validationSuccessRate: string;\r\n}\r\n\r\nexport interface GetCookiesRedisDataUsage {\r\n examples: PurpleExamples;\r\n notes: string[];\r\n}\r\n\r\nexport interface PurpleExamples {\r\n basic: string;\r\n showCookies: string;\r\n withMetadata: string;\r\n limited: string;\r\n}\r\n\r\nexport interface GetCredentialsStatusData {\r\n status: string;\r\n instance: string;\r\n timestamp: Date;\r\n primary: Dev;\r\n dev: Dev;\r\n redisKeys: RedisKeys;\r\n state: StateClass;\r\n chartsOAuth: OAuth;\r\n primaryOAuth: OAuth;\r\n usage: GetCredentialsStatusDataUsage;\r\n}\r\n\r\nexport interface OAuth {\r\n hasToken: boolean;\r\n hasRefreshToken: boolean;\r\n isExpired: boolean;\r\n expiresIn: number;\r\n scope: string;\r\n storageType: string;\r\n status?: Status;\r\n rotation?: Rotation;\r\n}\r\n\r\nexport interface Rotation {\r\n enabled: boolean;\r\n totalFiles: number;\r\n availableFiles: number;\r\n permanentlyRevokedFiles: number;\r\n assignedFile: string;\r\n currentFile: string;\r\n files: File[];\r\n}\r\n\r\nexport interface File {\r\n name: string;\r\n available: boolean;\r\n failureCount: number;\r\n assigned: boolean;\r\n permanentlyRevoked: boolean;\r\n}\r\n\r\nexport enum Status {\r\n Healthy = 'healthy',\r\n}\r\n\r\nexport interface Dev {\r\n hasCookie: boolean;\r\n cookieLength: number;\r\n cookiePreview: string;\r\n cookieSource: string;\r\n hasToken: boolean;\r\n tokenLength: number;\r\n tokenPreview: string;\r\n tokenSource: string;\r\n cookieValid: null;\r\n}\r\n\r\nexport interface RedisKeys {\r\n cookies: string;\r\n devCookies: string;\r\n token: string;\r\n devToken: string;\r\n}\r\n\r\nexport interface StateClass {\r\n usingDevCredentials: boolean;\r\n isRefreshingCredentials: boolean;\r\n}\r\n\r\nexport interface GetCredentialsStatusDataUsage {\r\n examples: FluffyExamples;\r\n notes: string[];\r\n}\r\n\r\nexport interface FluffyExamples {\r\n basic: string;\r\n showSecrets: string;\r\n testCookies: string;\r\n full: string;\r\n}\r\n\r\nexport interface GetEpisodesData {\r\n episodes: null[];\r\n}\r\n\r\nexport interface GetHealthClusterData {\r\n clusterStatus: Status;\r\n totalInstances: number;\r\n healthyInstances: number;\r\n degradedInstances: number;\r\n unhealthyInstances: number;\r\n instances: GetHealthClusterDataInstance[];\r\n aggregatedMetrics: Metrics;\r\n timestamp: Date;\r\n diagnosticInfo: null;\r\n}\r\n\r\nexport interface Metrics {\r\n totalRequests: number;\r\n successCount: number;\r\n errorCount: number;\r\n successRate: number;\r\n averageResponseTime: number;\r\n}\r\n\r\nexport interface GetHealthClusterDataInstance {\r\n instanceId: string;\r\n instanceName: InstanceName;\r\n pid: number;\r\n uptime: number;\r\n lastHeartbeat: Date;\r\n metrics: Metrics;\r\n lastRequests: LastRequest[];\r\n status: Status;\r\n isClusterMode: boolean;\r\n}\r\n\r\nexport enum InstanceName {\r\n Trustpilot = 'trustpilot',\r\n Trustpilotiso = 'trustpilot_iso',\r\n}\r\n\r\nexport interface LastRequest {\r\n timestamp: Date;\r\n statusCode: number;\r\n endpoint: string;\r\n responseTime: number;\r\n success: boolean;\r\n}\r\n\r\nexport interface GetHealthClusterStrictData {\r\n healthy: boolean;\r\n status: Status;\r\n clusterStatus: Status;\r\n totalInstances: number;\r\n healthyInstances: number;\r\n degradedInstances: number;\r\n unhealthyInstances: number;\r\n instances: GetHealthClusterDataInstance[];\r\n aggregatedMetrics: Metrics;\r\n timestamp: Date;\r\n oauthTokenStatus: OauthTokenStatus;\r\n searchTests: SearchTests;\r\n lastRequestsTracking: LastRequestsTracking;\r\n note: string;\r\n}\r\n\r\nexport interface LastRequestsTracking {\r\n allHealthy: boolean;\r\n totalInstances: number;\r\n healthyInstances: number;\r\n unhealthyInstances: number;\r\n instances: LastRequestsTrackingInstance[];\r\n timestamp: number;\r\n}\r\n\r\nexport interface LastRequestsTrackingInstance {\r\n instanceId: string;\r\n healthy: boolean;\r\n lastRequests: Request[];\r\n failedRequests: Request[];\r\n lastUpdateTimestamp: number;\r\n}\r\n\r\nexport interface Request {\r\n endpoint: string;\r\n statusCode: number;\r\n duration: number;\r\n timestamp: number;\r\n success: boolean;\r\n queryParams?: QueryParams;\r\n}\r\n\r\nexport interface QueryParams {\r\n videoId: string;\r\n}\r\n\r\nexport interface OauthTokenStatus {\r\n chartsOAuth: OAuth;\r\n primaryOAuth: OAuth;\r\n}\r\n\r\nexport interface GetHealthInstanceData {\r\n status: Status;\r\n instance: string;\r\n timestamp: Date;\r\n windowSeconds: number;\r\n totalRequests: number;\r\n successCount: number;\r\n errorCount: number;\r\n successRate: number;\r\n averageResponseTime: number;\r\n statusCodeDistribution: StatusCodeDistribution;\r\n endpoints: { [key: string]: Endpoint };\r\n lastRequests: LastRequest[];\r\n}\r\n\r\nexport interface Endpoint {\r\n count: number;\r\n successRate: number;\r\n}\r\n\r\nexport interface StatusCodeDistribution {\r\n '200': number;\r\n}\r\n\r\nexport interface GetHealthProxiesData {\r\n success: boolean;\r\n stats: GetHealthProxiesDataStats;\r\n instance: string;\r\n timestamp: Date;\r\n}\r\n\r\nexport interface GetHealthProxiesDataStats {\r\n totalCached: number;\r\n healthyCached: number;\r\n badProxies: number;\r\n avgLatencyMs: number;\r\n}\r\n\r\nexport interface GetIsrcLookupData {\r\n tracks: AlbumsClass;\r\n}\r\n\r\nexport interface GetMarketsData {\r\n markets: Market[];\r\n}\r\n\r\nexport interface GetPartnerAlbumData {\r\n albumUnion: AlbumUnion;\r\n}\r\n\r\nexport interface AlbumUnion {\r\n __typename: ArtistUnionTypename;\r\n copyright: AlbumCopyright;\r\n courtesyLine: string;\r\n date: ReleaseDateClass;\r\n isPreRelease: boolean;\r\n label: string;\r\n name: string;\r\n playability: LatestPlayability;\r\n preReleaseEndDateTime: null;\r\n sharingInfo: AlbumSharingInfo;\r\n tracksV2: TracksV2;\r\n type: LatestType;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n watchFeedEntrypoint: WatchFeedEntrypoint;\r\n artists: ReleasesClass;\r\n coverArt: CoverArt;\r\n discs: Discs;\r\n releases: ReleasesClass;\r\n moreAlbumsByArtist: AlbumUnionMoreAlbumsByArtist;\r\n}\r\n\r\nexport interface AlbumUnionMoreAlbumsByArtist {\r\n items: Item5[];\r\n}\r\n\r\nexport interface Item5 {\r\n discography: HilariousDiscography;\r\n}\r\n\r\nexport interface HilariousDiscography {\r\n popularReleasesAlbums: PurplePopularReleasesAlbums;\r\n}\r\n\r\nexport interface TracksV2 {\r\n items: TracksV2Item[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface TracksV2Item {\r\n track: StickyTrack;\r\n uid: string;\r\n}\r\n\r\nexport interface StickyTrack {\r\n artists: ItemArtists;\r\n associationsV3: PurpleAssociationsV3;\r\n contentRating: ContentRating;\r\n discNumber: number;\r\n duration: TrackDurationClass;\r\n name: string;\r\n playability: AlbumOfTrackPlayability;\r\n playcount: string;\r\n relinkingInformation: FluffyRelinkingInformation | null;\r\n trackNumber: number;\r\n uri: string;\r\n}\r\n\r\nexport interface FluffyRelinkingInformation {\r\n linkedTrack: LinkedTrack;\r\n}\r\n\r\nexport interface LinkedTrack {\r\n __typename: ArtistUnionTypename;\r\n uri: string;\r\n}\r\n\r\nexport interface AlbumUnionVisualIdentity {\r\n squareCoverImage: SquareCoverImageClass;\r\n}\r\n\r\nexport interface SquareCoverImageClass {\r\n __typename: SquareCoverImageTypename;\r\n extractedColorSet: ExtractedColorSet;\r\n}\r\n\r\nexport enum SquareCoverImageTypename {\r\n VisualIdentityImage = 'VisualIdentityImage',\r\n}\r\n\r\nexport interface ExtractedColorSet {\r\n encoreBaseSetTextColor: EncoreBaseSetTextColor;\r\n highContrast: Contrast;\r\n higherContrast: Contrast;\r\n minContrast: Contrast;\r\n}\r\n\r\nexport interface EncoreBaseSetTextColor {\r\n alpha: number;\r\n blue: number;\r\n green: number;\r\n red: number;\r\n}\r\n\r\nexport interface Contrast {\r\n backgroundBase: EncoreBaseSetTextColor;\r\n backgroundTintedBase: EncoreBaseSetTextColor;\r\n textBase: EncoreBaseSetTextColor;\r\n textBrightAccent: EncoreBaseSetTextColor;\r\n textSubdued: EncoreBaseSetTextColor;\r\n}\r\n\r\nexport interface WatchFeedEntrypoint {\r\n entrypointUri: string;\r\n thumbnailImage: ThumbnailImage;\r\n video: Video | null;\r\n}\r\n\r\nexport interface ThumbnailImage {\r\n data: StickyData;\r\n}\r\n\r\nexport interface StickyData {\r\n __typename: FluffyTypename;\r\n imageId: string;\r\n imageIdType: string;\r\n sources: Source[];\r\n}\r\n\r\nexport enum FluffyTypename {\r\n ImageV2 = 'ImageV2',\r\n}\r\n\r\nexport interface Source {\r\n imageFormat?: string;\r\n maxHeight: number;\r\n maxWidth: number;\r\n url: string;\r\n}\r\n\r\nexport interface Video {\r\n endTime: number;\r\n fileId: string;\r\n startTime: number;\r\n videoType: string;\r\n}\r\n\r\nexport interface GetPartnerArtistConcertsData {\r\n artistUnion: GetPartnerArtistConcertsDataArtistUnion;\r\n nearby: Nearby;\r\n concerts: GetPartnerArtistConcertsDataConcerts;\r\n}\r\n\r\nexport interface GetPartnerArtistConcertsDataArtistUnion {\r\n headerImage: ThumbnailImageClass;\r\n profile: UserLocationClass;\r\n uri: string;\r\n visuals: FluffyVisuals;\r\n}\r\n\r\nexport interface ThumbnailImageClass {\r\n data: BackgroundImageClass;\r\n}\r\n\r\nexport interface FluffyVisuals {\r\n avatarImage: AvatarImage;\r\n}\r\n\r\nexport interface AvatarImage {\r\n extractedColors: FluffyExtractedColors;\r\n}\r\n\r\nexport interface FluffyExtractedColors {\r\n colorDark: Color;\r\n}\r\n\r\nexport interface GetPartnerArtistConcertsDataConcerts {\r\n concerts: ImagesClass;\r\n}\r\n\r\nexport interface Nearby {\r\n concerts: ImagesClass;\r\n locationName: string;\r\n}\r\n\r\nexport interface GetPartnerArtistDiscographyData {\r\n artistUnion: GetPartnerArtistDiscographyDataArtistUnion;\r\n}\r\n\r\nexport interface GetPartnerArtistDiscographyDataArtistUnion {\r\n __typename: ArtistUnionTypename;\r\n discography: AmbitiousDiscography;\r\n}\r\n\r\nexport interface AmbitiousDiscography {\r\n all: Singles;\r\n}\r\n\r\nexport interface GetPartnerArtistOverviewData {\r\n artistUnion: GetPartnerArtistOverviewDataArtistUnion;\r\n}\r\n\r\nexport interface GetPartnerArtistOverviewDataArtistUnion {\r\n __typename: ArtistUnionTypename;\r\n discography: IndigoDiscography;\r\n goods: FluffyGoods;\r\n headerImage: HeaderImage;\r\n id: string;\r\n onPlatformReputationTrait: OnPlatformReputationTrait;\r\n preRelease: null;\r\n profile: TentacledProfile;\r\n relatedContent: ArtistUnionRelatedContent;\r\n relatedMusicVideos: RelatedMusicVideosClass;\r\n sharingInfo: AlbumSharingInfo;\r\n stats: ArtistStats;\r\n unmappedMusicVideosV2: RelatedMusicVideosClass;\r\n uri: string;\r\n visualIdentity: ArtistUnionVisualIdentity;\r\n visuals: TentacledVisuals;\r\n watchFeedEntrypoint: WatchFeedEntrypoint;\r\n}\r\n\r\nexport interface FluffyGoods {\r\n concerts: ReleasesClass;\r\n merch: FluffyMerch;\r\n}\r\n\r\nexport interface HeaderImage {\r\n data: ImageData;\r\n}\r\n\r\nexport interface ImageData {\r\n __typename: FluffyTypename;\r\n sources: Source[];\r\n}\r\n\r\nexport interface OnPlatformReputationTrait {\r\n verification: Verification;\r\n}\r\n\r\nexport interface Verification {\r\n isRegistered: boolean;\r\n isVerified: boolean;\r\n}\r\n\r\nexport interface TentacledProfile {\r\n biography: BiographyElement;\r\n externalLinks: ExternalLinks;\r\n name: LabelEnum;\r\n pinnedItem: TentacledPinnedItem;\r\n playlistsV2: PlaylistsV2;\r\n}\r\n\r\nexport interface TentacledPinnedItem {\r\n backgroundImageV2: null;\r\n comment: string;\r\n itemV2: PinnedItemItemV2;\r\n subtitle: string;\r\n thumbnailImage: ThumbnailImageClass;\r\n title: string;\r\n type: LatestType;\r\n uri: string;\r\n}\r\n\r\nexport interface PinnedItemItemV2 {\r\n __typename: ItemV2Typename;\r\n data: IndigoData;\r\n}\r\n\r\nexport enum ItemV2Typename {\r\n AlbumResponseWrapper = 'AlbumResponseWrapper',\r\n ArtistResponseWrapper = 'ArtistResponseWrapper',\r\n PlaylistResponseWrapper = 'PlaylistResponseWrapper',\r\n SearchAutoCompleteEntity = 'SearchAutoCompleteEntity',\r\n TrackResponseWrapper = 'TrackResponseWrapper',\r\n UserResponseWrapper = 'UserResponseWrapper',\r\n}\r\n\r\nexport interface IndigoData {\r\n __typename: ArtistUnionTypename;\r\n coverArt: AvatarImageElement;\r\n name: string;\r\n preReleaseEndDateTime: null;\r\n type: LatestType;\r\n uri: string;\r\n}\r\n\r\nexport interface RelatedMusicVideosClass {\r\n __typename?: string;\r\n items: RelatedMusicVideosItem[];\r\n pagingInfo?: AlbumsPagingInfo;\r\n totalCount: number;\r\n}\r\n\r\nexport interface RelatedMusicVideosItem {\r\n __typename: ItemV2Typename;\r\n data: IndecentData;\r\n}\r\n\r\nexport interface IndecentData {\r\n __typename: null;\r\n artists: ItemArtists;\r\n coverArt: CoverArtElement;\r\n date: PurpleDate;\r\n name: string;\r\n playability: LatestPlayability;\r\n type: LatestType;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n}\r\n\r\nexport interface CoverArtElement {\r\n extractedColors: ImageExtractedColors;\r\n sources: Icon[];\r\n}\r\n\r\nexport interface ImageExtractedColors {\r\n colorDark: ColorDark;\r\n}\r\n\r\nexport interface ColorDark {\r\n hex: string;\r\n isFallback: boolean;\r\n}\r\n\r\nexport interface AlbumsPagingInfo {\r\n nextOffset: null;\r\n}\r\n\r\nexport interface ArtistUnionVisualIdentity {\r\n wideFullBleedImage: SquareCoverImageClass;\r\n}\r\n\r\nexport interface TentacledVisuals {\r\n avatarImage: HeaderImageClass;\r\n gallery: ImagesClass;\r\n}\r\n\r\nexport interface GetPartnerConcertData {\r\n concert: Concert;\r\n}\r\n\r\nexport interface Concert {\r\n __typename: string;\r\n message: string;\r\n}\r\n\r\nexport interface GetPartnerConcertLocationsData {\r\n concertLocations: ConcertLocations;\r\n}\r\n\r\nexport interface ConcertLocations {\r\n items: ConcertLocationsItem[];\r\n}\r\n\r\nexport interface ConcertLocationsItem {\r\n country: Market;\r\n fullName: string;\r\n geoHash: string;\r\n geonameId: string;\r\n name: string;\r\n}\r\n\r\nexport interface GetPartnerPlaylistData {\r\n playlistV2: PlaylistV2;\r\n}\r\n\r\nexport interface PlaylistV2 {\r\n __typename: ArtistUnionTypename;\r\n content: Content;\r\n attributes: Attribute[];\r\n basePermission: string;\r\n currentUserCapabilities: CurrentUserCapabilities;\r\n description: string;\r\n followers: number;\r\n following: boolean;\r\n format: Format;\r\n images: ImagesClass;\r\n members: Members;\r\n name: string;\r\n ownerV2: OwnerV2;\r\n revisionId: string;\r\n sharingInfo: AlbumSharingInfo;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n watchFeedEntrypoint: WatchFeedEntrypoint;\r\n}\r\n\r\nexport interface Attribute {\r\n key: string;\r\n value: string;\r\n}\r\n\r\nexport interface Content {\r\n __typename: string;\r\n items: ContentItem[];\r\n pagingInfo: ContentPagingInfo;\r\n totalCount: number;\r\n}\r\n\r\nexport interface ContentItem {\r\n addedAt: AddedAt;\r\n addedBy: null;\r\n attributes: Attribute[];\r\n itemV2: ItemItemV2;\r\n uid: string;\r\n}\r\n\r\nexport interface AddedAt {\r\n isoString: Date;\r\n}\r\n\r\nexport interface ItemItemV2 {\r\n __typename: ItemV2Typename;\r\n data: HilariousData;\r\n}\r\n\r\nexport interface HilariousData {\r\n __typename: ArtistUnionTypename;\r\n albumOfTrack: ArtistElement;\r\n artists: ItemArtists;\r\n associationsV3: TrackUnionAssociationsV3;\r\n contentRating: ContentRating;\r\n discNumber: number;\r\n trackDuration: TrackDurationClass;\r\n mediaType: MediaType;\r\n name: string;\r\n playability: LatestPlayability;\r\n playcount: string;\r\n trackNumber: number;\r\n uri: string;\r\n}\r\n\r\nexport interface TrackUnionAssociationsV3 {\r\n audioAssociations: AudioAssociations;\r\n videoAssociations: AlbumsV2;\r\n}\r\n\r\nexport interface AudioAssociations {\r\n __typename: AudioAssociationsTypename;\r\n items: any[];\r\n}\r\n\r\nexport enum AudioAssociationsTypename {\r\n TrackAudioAssociationPage = 'TrackAudioAssociationPage',\r\n}\r\n\r\nexport enum MediaType {\r\n Audio = 'AUDIO',\r\n Video = 'VIDEO',\r\n}\r\n\r\nexport interface ContentPagingInfo {\r\n limit: number;\r\n offset: number;\r\n}\r\n\r\nexport interface CurrentUserCapabilities {\r\n canAdministratePermissions: boolean;\r\n canCancelMembership: boolean;\r\n canEditItems: boolean;\r\n canView: boolean;\r\n}\r\n\r\nexport enum Format {\r\n ArtistMixReader = 'artist-mix-reader',\r\n Editorial = 'editorial',\r\n Empty = '',\r\n FormatShowsShuffle = 'format-shows-shuffle',\r\n InspiredbyMix = 'inspiredby-mix',\r\n}\r\n\r\nexport interface Members {\r\n items: MembersItem[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface MembersItem {\r\n isOwner: boolean;\r\n permissionLevel: string;\r\n user: OwnerV2;\r\n}\r\n\r\nexport interface OwnerV2 {\r\n data: UserData;\r\n}\r\n\r\nexport interface UserData {\r\n __typename: ArtistUnionTypename;\r\n avatar: AvatarImageElement | null;\r\n name: string;\r\n uri: string;\r\n username: string;\r\n}\r\n\r\nexport interface GetPartnerSearchConcertArtistsData {\r\n artist: GetPartnerSearchConcertArtistsDataArtist;\r\n concerts: GetPartnerArtistConcertsData;\r\n detailsEnriched: null;\r\n error: null;\r\n}\r\n\r\nexport interface GetPartnerSearchConcertArtistsDataArtist {\r\n id: string;\r\n uri: string;\r\n name: string;\r\n imageUrl: string;\r\n followers: null;\r\n genres: null;\r\n}\r\n\r\nexport interface GetPartnerTrackCountData {\r\n result: string;\r\n message: string;\r\n spotify_track_id: string;\r\n isrc: string;\r\n streams: number;\r\n}\r\n\r\nexport interface GetPartnerTrackData {\r\n trackUnion: TrackUnion;\r\n}\r\n\r\nexport interface TrackUnion {\r\n __typename: ArtistUnionTypename;\r\n associationsV3: TrackUnionAssociationsV3;\r\n contentRating: ContentRating;\r\n duration: TrackDurationClass;\r\n id: string;\r\n mediaType: MediaType;\r\n name: string;\r\n playability: LatestPlayability;\r\n playcount: string;\r\n sharingInfo: AlbumSharingInfo;\r\n trackNumber: number;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n albumOfTrack: TrackUnionAlbumOfTrack;\r\n firstArtist: FirstArtist;\r\n otherArtists: ImagesClass;\r\n}\r\n\r\nexport interface TrackUnionAlbumOfTrack {\r\n copyright: AlbumCopyright;\r\n courtesyLine: string;\r\n id: string;\r\n date: AlbumOfTrackDate;\r\n name: string;\r\n playability: AlbumOfTrackPlayability;\r\n sharingInfo: AlbumSharingInfo;\r\n tracks: AlbumOfTrackTracks;\r\n type: LatestType;\r\n uri: string;\r\n coverArt: HeaderImageClass;\r\n}\r\n\r\nexport interface AlbumOfTrackTracks {\r\n items: Item6[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface Item6 {\r\n track: IndigoTrack;\r\n}\r\n\r\nexport interface IndigoTrack {\r\n trackNumber: number;\r\n uri: string;\r\n}\r\n\r\nexport interface FirstArtist {\r\n items: FirstArtistItem[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface FirstArtistItem {\r\n discography: CunningDiscography;\r\n id: string;\r\n profile: UserLocationClass;\r\n relatedContent: ItemRelatedContent;\r\n uri: string;\r\n visuals: ItemVisuals;\r\n}\r\n\r\nexport interface CunningDiscography {\r\n albums: FluffyAlbums;\r\n popularReleasesAlbums: FluffyPopularReleasesAlbums;\r\n singles: FluffyAlbums;\r\n topTracks: FluffyTopTracks;\r\n}\r\n\r\nexport interface FluffyAlbums {\r\n items: Item7[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface Item7 {\r\n releases: FluffyPopularReleasesAlbums;\r\n}\r\n\r\nexport interface FluffyPopularReleasesAlbums {\r\n items: Item8[];\r\n}\r\n\r\nexport interface Item8 {\r\n date: AlbumOfTrackDate;\r\n name: string;\r\n playability: AlbumOfTrackPlayability;\r\n sharingInfo: AlbumSharingInfo;\r\n tracks: AlbumOfTrackTracks;\r\n type: LatestType;\r\n uri: string;\r\n coverArt: HeaderImageClass;\r\n}\r\n\r\nexport interface FluffyTopTracks {\r\n items: Item9[];\r\n}\r\n\r\nexport interface Item9 {\r\n track: IndecentTrack;\r\n}\r\n\r\nexport interface IndecentTrack {\r\n albumOfTrack: TrackAlbumOfTrack;\r\n artists: ItemArtists;\r\n associationsV3: TrackUnionAssociationsV3;\r\n contentRating: ContentRating;\r\n duration: TrackDurationClass;\r\n id: string;\r\n name: string;\r\n playability: AlbumOfTrackPlayability;\r\n playcount: string;\r\n previews: Previews;\r\n uri: string;\r\n}\r\n\r\nexport interface TrackAlbumOfTrack {\r\n name: string;\r\n uri: string;\r\n coverArt: HeaderImageClass;\r\n}\r\n\r\nexport interface Previews {\r\n audioPreviews: AudioPreviews;\r\n}\r\n\r\nexport interface AudioPreviews {\r\n items: VideoThumbnail[];\r\n}\r\n\r\nexport interface GetPingData {\r\n request_id: string;\r\n status: string;\r\n message: string;\r\n timestamp: Date;\r\n instance: string;\r\n}\r\n\r\nexport interface GetPlaylistAnalysisData {\r\n playlist: Playlist;\r\n trackCount: number;\r\n audioFeatures: AudioFeatures;\r\n decadeDistribution: SearchTests;\r\n explicitPercentage: number;\r\n duration: GetPlaylistAnalysisDataDuration;\r\n}\r\n\r\nexport interface AudioFeatures {\r\n analyzed: number;\r\n aggregates: SearchTests;\r\n}\r\n\r\nexport interface GetPlaylistAnalysisDataDuration {\r\n totalMs: number;\r\n totalFormatted: string;\r\n averageMs: number;\r\n averageFormatted: string;\r\n}\r\n\r\nexport interface Playlist {\r\n id: string;\r\n name: string;\r\n description: string;\r\n owner: OwnerEnum;\r\n followers: number;\r\n totalTracks: number;\r\n snapshotId: string;\r\n images: Icon[];\r\n}\r\n\r\nexport interface GetPlaylistData {\r\n collaborative: boolean;\r\n description: string;\r\n external_urls: ExternalUrls;\r\n followers: Followers;\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n name: string;\r\n owner: Owner;\r\n primary_color: PrimaryColor;\r\n public: boolean;\r\n snapshot_id: string;\r\n tracks: Items;\r\n items: Items;\r\n type: GetPlaylistDataType;\r\n uri: string;\r\n}\r\n\r\nexport interface Items {\r\n href: string;\r\n items: ItemsItem[];\r\n limit: number;\r\n next: null;\r\n offset: number;\r\n previous: null;\r\n total: number;\r\n}\r\n\r\nexport interface ItemsItem {\r\n added_at: Date;\r\n added_by: Owner;\r\n is_local: boolean;\r\n primary_color: null;\r\n track: TrackClass;\r\n item: TrackClass;\r\n video_thumbnail: VideoThumbnail;\r\n}\r\n\r\nexport interface TrackClass {\r\n preview_url: null | string;\r\n available_markets: Market[];\r\n explicit: boolean;\r\n type: TrackType;\r\n episode: boolean;\r\n track: boolean;\r\n album: ItemElement;\r\n artists: Owner[];\r\n disc_number: number;\r\n track_number: number;\r\n duration_ms: number;\r\n external_ids: ItemExternalids;\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n name: string;\r\n popularity: number;\r\n uri: string;\r\n is_local: boolean;\r\n}\r\n\r\nexport interface GetPlaylistSnapshotData {\r\n playlistId: string;\r\n total: number;\r\n offset: number;\r\n limit: number;\r\n snapshots: Snapshot[];\r\n}\r\n\r\nexport interface Snapshot {\r\n _id: Id;\r\n playlistId: string;\r\n snapshotId: string;\r\n name: string;\r\n description: string;\r\n owner: OwnerEnum;\r\n isPublic: boolean;\r\n collaborative: boolean;\r\n followerCount: number;\r\n totalTracks: number;\r\n tracks: SnapshotTrack[];\r\n imageUrl: string;\r\n capturedBy: string;\r\n diff: Diff | null;\r\n capturedAt: SearchTests;\r\n __v: number;\r\n}\r\n\r\nexport interface Id {\r\n buffer: { [key: string]: number };\r\n}\r\n\r\nexport interface Diff {\r\n added: any[];\r\n removed: any[];\r\n reordered: boolean;\r\n metadataChanged: boolean;\r\n}\r\n\r\nexport interface SnapshotTrack {\r\n trackId: string;\r\n name: string;\r\n artists: string[];\r\n album: string;\r\n duration_ms: number;\r\n position: number;\r\n addedAt: Date;\r\n addedBy: null;\r\n}\r\n\r\nexport interface GetPlaylistTracksData {\r\n href: string;\r\n items: GetPlaylistTracksDataItem[];\r\n limit: number;\r\n offset: number;\r\n total: number;\r\n source: string;\r\n}\r\n\r\nexport interface GetPlaylistTracksDataItem {\r\n added_at: Date;\r\n added_by: null;\r\n track: HilariousTrack;\r\n}\r\n\r\nexport interface HilariousTrack {\r\n id: string;\r\n uri: string;\r\n type: TrackType;\r\n name: string;\r\n duration_ms: number;\r\n explicit: boolean;\r\n disc_number: number;\r\n track_number: number;\r\n playcount: string;\r\n is_playable: boolean;\r\n artists: ArtistElement[];\r\n album: PurpleAlbum;\r\n}\r\n\r\nexport interface PurpleAlbum {\r\n name: string;\r\n uri: string;\r\n id: string;\r\n type: AlbumAlbumType;\r\n images: Icon[];\r\n artists: ArtistElement[];\r\n}\r\n\r\nexport interface GetRecommendationsData {\r\n seeds: Seed[];\r\n tracks: GetRecommendationsDataTrack[];\r\n}\r\n\r\nexport interface Seed {\r\n afterFilteringSize: number;\r\n afterRelinkingSize: number;\r\n href: string;\r\n id: string;\r\n initialPoolSize: number;\r\n type: string;\r\n}\r\n\r\nexport interface GetRecommendationsDataTrack {\r\n album: ItemElement;\r\n artists: Owner[];\r\n available_markets: Market[];\r\n disc_number: number;\r\n duration_ms: number;\r\n explicit: boolean;\r\n external_ids: PurpleExternalids;\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n is_playable: boolean;\r\n linked_from: SearchTests;\r\n restrictions: PlayabilityClass;\r\n name: string;\r\n popularity: number;\r\n preview_url: string;\r\n track_number: number;\r\n type: TrackType;\r\n uri: string;\r\n is_local: boolean;\r\n}\r\n\r\nexport interface PurpleExternalids {\r\n isrc: string;\r\n ean: string;\r\n upc: string;\r\n}\r\n\r\nexport interface GetSearchData {\r\n albums: RelatedMusicVideosClass;\r\n artists: GetSearchDataArtists;\r\n episodes: GetSearchDataEpisodes;\r\n genres: Genres;\r\n playlists: GetSearchDataPlaylists;\r\n podcasts: Podcasts;\r\n topResults: TopResults;\r\n tracks: GetSearchDataTrack[];\r\n users: Users;\r\n}\r\n\r\nexport interface GetSearchDataArtists {\r\n items: Item10[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface Item10 {\r\n __typename: ItemV2Typename;\r\n data: AmbitiousData;\r\n}\r\n\r\nexport interface AmbitiousData {\r\n __typename: null;\r\n profile: UserLocationClass;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity | null;\r\n visuals: DataVisuals;\r\n}\r\n\r\nexport interface DataVisuals {\r\n avatarImage: CoverArtElement | null;\r\n}\r\n\r\nexport interface GetSearchDataEpisodes {\r\n items: Item11[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface Item11 {\r\n __typename: RelatedEntityTypename;\r\n data: CunningData;\r\n}\r\n\r\nexport enum RelatedEntityTypename {\r\n EpisodeResponseWrapper = 'EpisodeResponseWrapper',\r\n}\r\n\r\nexport interface CunningData {\r\n __typename: null;\r\n contentRating: ContentRating;\r\n coverArt: CoverArtElement;\r\n description: string;\r\n duration: TrackDurationClass;\r\n gatedEntityRelations: GatedEntityRelation[];\r\n mediaTypes: MediaType[];\r\n name: string;\r\n playability: PlayabilityClass;\r\n playedState: PlayedState;\r\n podcastV2: FluffyPodcastV2;\r\n releaseDate: ReleaseDateClass;\r\n restrictions: PurpleRestrictions;\r\n uri: string;\r\n videoPreviewThumbnail: VideoPreviewThumbnail | null;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n}\r\n\r\nexport interface GatedEntityRelation {\r\n badges: Badge[];\r\n fallbackGatedEntity: null;\r\n relatedEntity: RelatedEntity;\r\n summary: Summary;\r\n}\r\n\r\nexport interface Badge {\r\n displayText: string;\r\n}\r\n\r\nexport interface RelatedEntity {\r\n __typename: RelatedEntityTypename;\r\n _uri: string;\r\n data: RelatedEntityData;\r\n}\r\n\r\nexport interface RelatedEntityData {\r\n __typename: string;\r\n podcastV2: PurplePodcastV2;\r\n}\r\n\r\nexport interface PurplePodcastV2 {\r\n data: MagentaData;\r\n}\r\n\r\nexport interface MagentaData {\r\n __typename: TentacledTypename;\r\n accessInfo: AccessInfo;\r\n coverArt: AvatarImageElement;\r\n}\r\n\r\nexport enum TentacledTypename {\r\n Podcast = 'Podcast',\r\n}\r\n\r\nexport interface AccessInfo {\r\n accessExplanation: AccessExplanation;\r\n isUserMemberOfAtLeastOneGroup: boolean;\r\n signifier: SignifierClass;\r\n unlockedBy: any[];\r\n}\r\n\r\nexport interface AccessExplanation {\r\n __typename: string;\r\n actionText: string;\r\n body: string;\r\n title: string;\r\n url: string;\r\n}\r\n\r\nexport interface Summary {\r\n forUserWithAccess: string;\r\n forUserWithoutAccess: string;\r\n}\r\n\r\nexport interface PlayedState {\r\n playPositionMilliseconds: number;\r\n state: StateEnum;\r\n}\r\n\r\nexport enum StateEnum {\r\n NotStarted = 'NOT_STARTED',\r\n}\r\n\r\nexport interface FluffyPodcastV2 {\r\n __typename: PodcastV2Typename;\r\n data: FriskyData;\r\n}\r\n\r\nexport enum PodcastV2Typename {\r\n PodcastResponseWrapper = 'PodcastResponseWrapper',\r\n}\r\n\r\nexport interface FriskyData {\r\n __typename: TentacledTypename;\r\n coverArt: AvatarImageElement;\r\n mediaType: PurpleMediaType;\r\n name: string;\r\n publisher: UserLocationClass;\r\n uri: string;\r\n}\r\n\r\nexport enum PurpleMediaType {\r\n Audio = 'AUDIO',\r\n Mixed = 'MIXED',\r\n}\r\n\r\nexport interface PurpleRestrictions {\r\n paywallContent: boolean;\r\n}\r\n\r\nexport interface VideoPreviewThumbnail {\r\n __typename: string;\r\n imagePreview: HeaderImage;\r\n}\r\n\r\nexport interface Genres {\r\n items: GenresItem[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface GenresItem {\r\n __typename: StickyTypename;\r\n data: MischievousData;\r\n}\r\n\r\nexport enum StickyTypename {\r\n GenreResponseWrapper = 'GenreResponseWrapper',\r\n}\r\n\r\nexport interface MischievousData {\r\n __typename: null;\r\n image: CoverArtElement;\r\n name: string;\r\n uri: string;\r\n}\r\n\r\nexport interface GetSearchDataPlaylists {\r\n items: Item12[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface Item12 {\r\n __typename: ItemV2Typename;\r\n data: FeaturedData;\r\n}\r\n\r\nexport interface FeaturedData {\r\n __typename: null;\r\n attributes: Attribute[];\r\n description: string;\r\n format: Format;\r\n images: PurpleImages;\r\n name: string;\r\n ownerV2: FluffyOwnerV2;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n}\r\n\r\nexport interface PurpleImages {\r\n items: CoverArtElement[];\r\n}\r\n\r\nexport interface FluffyOwnerV2 {\r\n __typename: ItemV2Typename;\r\n data: UserData;\r\n}\r\n\r\nexport interface Podcasts {\r\n items: PodcastsItem[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface PodcastsItem {\r\n __typename: PodcastV2Typename;\r\n data: BraggadociousData;\r\n}\r\n\r\nexport interface BraggadociousData {\r\n __typename: null;\r\n coverArt: CoverArtElement;\r\n mediaType: PurpleMediaType;\r\n name: string;\r\n publisher: UserLocationClass;\r\n topics: Topics;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n}\r\n\r\nexport interface Topics {\r\n items: TopicsItem[];\r\n}\r\n\r\nexport interface TopicsItem {\r\n __typename: string;\r\n title: string;\r\n uri: string;\r\n}\r\n\r\nexport interface TopResults {\r\n items: TopResultsItem[];\r\n featured: Featured[];\r\n}\r\n\r\nexport interface Featured {\r\n data: FeaturedData;\r\n}\r\n\r\nexport interface TopResultsItem {\r\n __typename: ItemV2Typename;\r\n data: Data1;\r\n}\r\n\r\nexport interface Data1 {\r\n __typename: null;\r\n attributes?: any[];\r\n description?: string;\r\n format?: string;\r\n images?: PurpleImages;\r\n name?: string;\r\n ownerV2?: FluffyOwnerV2;\r\n uri: string;\r\n visualIdentity: PurpleVisualIdentity;\r\n profile?: UserLocationClass;\r\n visuals?: DataVisuals;\r\n albumOfTrack?: DataAlbumOfTrack;\r\n artists?: ItemArtists;\r\n associationsV3?: FluffyAssociationsV3;\r\n contentRating?: ContentRating;\r\n duration?: TrackDurationClass;\r\n id?: string;\r\n trackMediaType?: MediaType;\r\n playability?: LatestPlayability;\r\n}\r\n\r\nexport interface DataAlbumOfTrack {\r\n coverArt: CoverArtElement;\r\n id: string;\r\n name: string;\r\n uri: string;\r\n visualIdentity: AlbumUnionVisualIdentity;\r\n}\r\n\r\nexport interface FluffyAssociationsV3 {\r\n audioAssociations: AlbumsV2;\r\n videoAssociations: AlbumsV2;\r\n}\r\n\r\nexport interface PurpleVisualIdentity {\r\n squareCoverImage?: SquareCoverImageClass;\r\n sixteenByNineCoverImage?: SixteenByNineCoverImage | null;\r\n}\r\n\r\nexport interface SixteenByNineCoverImage {\r\n image: HeaderImage;\r\n}\r\n\r\nexport interface GetSearchDataTrack {\r\n __typename: ItemV2Typename;\r\n data: TrackData;\r\n}\r\n\r\nexport interface TrackData {\r\n __typename: null;\r\n albumOfTrack: DataAlbumOfTrack;\r\n artists: ItemArtists;\r\n associationsV3: FluffyAssociationsV3;\r\n contentRating: ContentRating;\r\n duration: TrackDurationClass;\r\n id: string;\r\n trackMediaType: MediaType;\r\n name: string;\r\n playability: LatestPlayability;\r\n uri: string;\r\n visualIdentity: FluffyVisualIdentity;\r\n}\r\n\r\nexport interface FluffyVisualIdentity {\r\n sixteenByNineCoverImage: SixteenByNineCoverImage;\r\n}\r\n\r\nexport interface Users {\r\n items: UsersItem[];\r\n totalCount: number;\r\n}\r\n\r\nexport interface UsersItem {\r\n __typename: ItemV2Typename;\r\n data: Data2;\r\n}\r\n\r\nexport interface Data2 {\r\n __typename: null;\r\n avatar: CoverArtElement;\r\n id: string;\r\n displayName: string;\r\n uri: string;\r\n username: string;\r\n}\r\n\r\nexport interface GetSearchLyricsData {\r\n error: boolean;\r\n track?: GetSearchLyricsDataTrack;\r\n syncType: string;\r\n lines: Line[];\r\n}\r\n\r\nexport interface Line {\r\n startTimeMs: string;\r\n words: string;\r\n syllables: any[];\r\n endTimeMs: string;\r\n}\r\n\r\nexport interface GetSearchLyricsDataTrack {\r\n id: string;\r\n name: string;\r\n artists: TrackArtist[];\r\n album: FluffyAlbum;\r\n duration_ms: number;\r\n uri: string;\r\n}\r\n\r\nexport interface FluffyAlbum {\r\n id: string;\r\n name: string;\r\n images: Icon[];\r\n}\r\n\r\nexport interface TrackArtist {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface GetSearchSuggestionsData {\r\n searchV2: GetSearchSuggestionsDataSearchV2;\r\n}\r\n\r\nexport interface GetSearchSuggestionsDataSearchV2 {\r\n __typename: string;\r\n query: string;\r\n topResultsV2: PurpleTopResultsV2;\r\n}\r\n\r\nexport interface PurpleTopResultsV2 {\r\n itemsV2: PurpleItemsV2[];\r\n}\r\n\r\nexport interface PurpleItemsV2 {\r\n __typename: ItemsV2Typename;\r\n item: Item13;\r\n}\r\n\r\nexport enum ItemsV2Typename {\r\n TopResultHit = 'TopResultHit',\r\n}\r\n\r\nexport interface Item13 {\r\n __typename: ItemV2Typename;\r\n data: Data3;\r\n}\r\n\r\nexport interface Data3 {\r\n text?: string;\r\n uri: string;\r\n __typename?: ArtistUnionTypename;\r\n attributes?: any[];\r\n description?: string;\r\n format?: string;\r\n images?: PurpleImages;\r\n name?: string;\r\n ownerV2?: FluffyOwnerV2;\r\n visualIdentity?: PurpleVisualIdentity;\r\n profile?: UserLocationClass;\r\n visuals?: DataVisuals;\r\n albumOfTrack?: DataAlbumOfTrack;\r\n artists?: ItemArtists;\r\n associationsV3?: FluffyAssociationsV3;\r\n contentRating?: ContentRating;\r\n duration?: TrackDurationClass;\r\n id?: string;\r\n trackMediaType?: MediaType;\r\n playability?: LatestPlayability;\r\n coverArt?: CoverArtElement;\r\n date?: PurpleDate;\r\n type?: LatestType;\r\n avatar?: CoverArtElement;\r\n displayName?: string;\r\n username?: string;\r\n}\r\n\r\nexport interface GetSearchTopResultsData {\r\n searchV2: GetSearchTopResultsDataSearchV2;\r\n}\r\n\r\nexport interface GetSearchTopResultsDataSearchV2 {\r\n __typename: string;\r\n albumsV2: AlbumsV2;\r\n artists: AlbumsV2;\r\n chipOrder: ChipOrder;\r\n episodes: AlbumsV2;\r\n genres: AlbumsV2;\r\n playlists: AlbumsV2;\r\n podcasts: AlbumsV2;\r\n query: string;\r\n topResultsV2: FluffyTopResultsV2;\r\n tracksV2: AlbumsV2;\r\n users: AlbumsV2;\r\n}\r\n\r\nexport interface ChipOrder {\r\n items: ChipOrderItem[];\r\n}\r\n\r\nexport interface ChipOrderItem {\r\n typeName: string;\r\n}\r\n\r\nexport interface FluffyTopResultsV2 {\r\n itemsV2: FluffyItemsV2[];\r\n}\r\n\r\nexport interface FluffyItemsV2 {\r\n __typename: ItemsV2Typename;\r\n item: Item14;\r\n matchedFields: any[];\r\n}\r\n\r\nexport interface Item14 {\r\n __typename: ItemV2Typename;\r\n data: Data4;\r\n}\r\n\r\nexport interface Data4 {\r\n __typename: ArtistUnionTypename;\r\n attributes?: Attribute[];\r\n description?: string;\r\n format?: Format;\r\n images?: PurpleImages;\r\n name?: string;\r\n ownerV2?: FluffyOwnerV2;\r\n uri: string;\r\n visualIdentity?: AlbumUnionVisualIdentity;\r\n profile?: UserLocationClass;\r\n visuals?: DataVisuals;\r\n albumOfTrack?: DataAlbumOfTrack;\r\n artists?: ItemArtists;\r\n associationsV3?: FluffyAssociationsV3;\r\n contentRating?: ContentRating;\r\n duration?: TrackDurationClass;\r\n id?: string;\r\n trackMediaType?: MediaType;\r\n playability?: LatestPlayability;\r\n coverArt?: CoverArtElement;\r\n date?: PurpleDate;\r\n type?: LatestType;\r\n avatar?: CoverArtElement;\r\n displayName?: string;\r\n username?: string;\r\n}\r\n\r\nexport interface GetSeedToPlaylistData {\r\n total: number;\r\n mediaItems: MediaItem[];\r\n}\r\n\r\nexport interface MediaItem {\r\n uri: string;\r\n}\r\n\r\nexport interface GetShowsData {\r\n shows: GetShowsidData[];\r\n}\r\n\r\nexport interface GetShowsidData {\r\n copyrights: any[];\r\n description: string;\r\n html_description: string;\r\n explicit: boolean;\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n is_externally_hosted: boolean;\r\n languages: Language[];\r\n media_type: string;\r\n name: string;\r\n publisher: string;\r\n type: string;\r\n uri: string;\r\n total_episodes: number;\r\n episodes?: GetShowsIdDataEpisodes;\r\n}\r\n\r\nexport interface GetShowsIdDataEpisodes {\r\n href: string;\r\n limit: number;\r\n next: string;\r\n offset: number;\r\n previous: null;\r\n total: number;\r\n items: Item15[];\r\n}\r\n\r\nexport interface Item15 {\r\n audio_preview_url: string;\r\n description: string;\r\n html_description: string;\r\n duration_ms: number;\r\n explicit: boolean;\r\n external_urls: ExternalUrls;\r\n href: string;\r\n id: string;\r\n images: Icon[];\r\n is_externally_hosted: boolean;\r\n is_playable: boolean;\r\n language: Language;\r\n languages: Language[];\r\n name: string;\r\n release_date: Date;\r\n release_date_precision: ReleaseDatePrecision;\r\n type: FluffyType;\r\n uri: string;\r\n}\r\n\r\nexport enum Language {\r\n En = 'en',\r\n}\r\n\r\nexport enum FluffyType {\r\n Episode = 'episode',\r\n}\r\n\r\nexport interface GetTop200TracksDatum {\r\n chartEntryData: ChartEntryData;\r\n missingRequiredFields: boolean;\r\n trackMetadata: TrackMetadata;\r\n chartDate?: string;\r\n requestedDate?: string;\r\n daysBack?: number;\r\n}\r\n\r\nexport interface ChartEntryData {\r\n currentRank: number;\r\n previousRank: number;\r\n peakRank: number;\r\n appearancesOnChart: number;\r\n consecutiveAppearancesOnChart: number;\r\n rankingMetric?: RankingMetric;\r\n entryStatus: EntryStatus;\r\n peakDate: Date;\r\n entryRank: number;\r\n entryDate: Date;\r\n}\r\n\r\nexport enum EntryStatus {\r\n MovedDown = 'MOVED_DOWN',\r\n MovedUp = 'MOVED_UP',\r\n NewEntry = 'NEW_ENTRY',\r\n NoChange = 'NO_CHANGE',\r\n ReEntry = 'RE_ENTRY',\r\n}\r\n\r\nexport interface RankingMetric {\r\n value: string;\r\n type: RankingMetricType;\r\n}\r\n\r\nexport enum RankingMetricType {\r\n Streams = 'STREAMS',\r\n}\r\n\r\nexport interface TrackMetadata {\r\n trackName: string;\r\n trackUri: string;\r\n displayImageUri: string;\r\n artists: LabelElement[];\r\n producers: any[];\r\n labels: LabelElement[];\r\n songWriters: any[];\r\n releaseDate: string;\r\n}\r\n\r\nexport interface LabelElement {\r\n name: string;\r\n spotifyUri: string;\r\n externalUrl: string;\r\n}\r\n\r\nexport interface GetTop20ByFollowersDatum {\r\n rank: number;\r\n artist: string;\r\n followers: number;\r\n followersMillions: number;\r\n}\r\n\r\nexport interface GetTop20ByMonthlyListenersDatum {\r\n rank: number;\r\n artist: string;\r\n monthlyListeners: number;\r\n}\r\n\r\nexport interface GetSDatum {\r\n chartEntryData: ChartEntryData;\r\n missingRequiredFields: boolean;\r\n albumMetadata?: AlbumMetadata;\r\n chartDate?: string;\r\n requestedDate?: string;\r\n daysBack?: number;\r\n artistMetadata?: ArtistMetadata;\r\n trackMetadata?: TrackMetadata;\r\n}\r\n\r\nexport interface AlbumMetadata {\r\n albumName: string;\r\n albumUri: string;\r\n displayImageUri: string;\r\n artists: LabelElement[];\r\n labels: LabelElement[];\r\n releaseDate: string;\r\n}\r\n\r\nexport interface ArtistMetadata {\r\n artistName: string;\r\n artistUri: string;\r\n displayImageUri: string;\r\n socialMedia: any[];\r\n}\r\n\r\nexport interface GetTrackCreditsBatchData {\r\n results: GetTrackCreditsBatchDataResult[];\r\n}\r\n\r\nexport interface GetTrackCreditsBatchDataResult {\r\n id: string;\r\n credits: GetTrackCreditsData;\r\n error: null;\r\n}\r\n\r\nexport interface GetTrackCreditsData {\r\n trackUri: string;\r\n trackTitle: string;\r\n roleCredits: RoleCredit[];\r\n extendedCredits: any[];\r\n sourceNames: string[];\r\n}\r\n\r\nexport interface RoleCredit {\r\n roleTitle: string;\r\n artists: RoleCreditArtist[];\r\n}\r\n\r\nexport interface RoleCreditArtist {\r\n uri?: string;\r\n name: string;\r\n imageUri?: string;\r\n subroles: Subrole[];\r\n weight: number;\r\n externalUrl?: string;\r\n creatorUri?: string;\r\n}\r\n\r\nexport enum Subrole {\r\n MainArtist = 'main artist',\r\n Producer = 'producer',\r\n Writer = 'writer',\r\n}\r\n\r\nexport interface GetTrackLyricsBatchData {\r\n results: GetTrackLyricsBatchDataResult[];\r\n}\r\n\r\nexport interface GetTrackLyricsBatchDataResult {\r\n id: string;\r\n lyrics: GetSearchLyricsData;\r\n error: null;\r\n}\r\n\r\nexport interface GetTrackPopularityBatchData {\r\n results: GetTrackPopularityBatchDataResult[];\r\n}\r\n\r\nexport interface GetTrackPopularityBatchDataResult {\r\n id: string;\r\n name: string;\r\n popularity: number;\r\n album: string;\r\n artists: string[];\r\n explicit: boolean;\r\n duration_ms: number;\r\n}\r\n\r\nexport interface GetTrackingHealthData {\r\n success: boolean;\r\n service: string;\r\n status: string;\r\n stats: GetTrackingHealthDataStats;\r\n}\r\n\r\nexport interface GetTrackingHealthDataStats {\r\n totalTrackedItems: number;\r\n activeTrackedItems: number;\r\n totalSubscriptions: number;\r\n recentChanges: number;\r\n}\r\n\r\nexport interface GetTrackingItemsData {\r\n success: boolean;\r\n count: number;\r\n limit: number;\r\n authSource: string;\r\n subscriptionTier: null;\r\n items: any[];\r\n}\r\n\r\nexport interface GetTrackingLogsData {\r\n success: boolean;\r\n total: number;\r\n returned: number;\r\n logs: any[];\r\n}\r\n\r\nexport interface GetTrackingStatsData {\r\n success: boolean;\r\n authSource: string;\r\n subscriptionTier: null;\r\n totalTrackedItems: number;\r\n activeTrackedItems: number;\r\n totalSubscriptions: number;\r\n userSubscriptions: number;\r\n userItemLimit: number;\r\n recentChanges: number;\r\n workerStatus: string;\r\n}\r\n\r\nexport interface GetUpcLookupData {\r\n albums: AlbumsClass;\r\n}\r\n\r\nexport interface GetUserFollowersData {\r\n profiles: ProfileElement[];\r\n}\r\n\r\nexport interface ProfileElement {\r\n uri: string;\r\n name: string;\r\n followers_count: number;\r\n color: number;\r\n account_id: string;\r\n image_url?: string;\r\n}\r\n\r\nexport interface GetUserProfileData {\r\n uri: Uri;\r\n name: OwnerEnum;\r\n image_url: string;\r\n followers_count: number;\r\n following_count: number;\r\n public_playlists: PublicPlaylist[];\r\n total_public_playlists_count: number;\r\n is_verified: boolean;\r\n report_abuse_disabled: boolean;\r\n has_spotify_name: boolean;\r\n has_spotify_image: boolean;\r\n color: number;\r\n allow_follows: boolean;\r\n show_follows: boolean;\r\n account_id: string;\r\n}\r\n\r\nexport interface PublicPlaylist {\r\n uri: string;\r\n name: string;\r\n image_url: string;\r\n followers_count: number;\r\n owner_name: OwnerEnum;\r\n owner_uri: Uri;\r\n}\r\n\r\nexport enum Uri {\r\n SpotifyUserSpotify = 'spotify:user:spotify',\r\n}\r\n"]}