Albums previously had no cover concept at all: no picture upload
flow, no GET /albums/{id}/cover, and AlbumApplicationResponse's
image-key fields were plumbed but never populated. Description,
Pictures and TrackCount already lived on the shared Album base entity
for both local and external albums, so unifying the cover story only
required building the missing local-album picture pipeline.
Backend, cloning PlayList's existing async picture-processing
architecture exactly (MassTransit routing slip + saga), but making
the picture mandatory instead of optional (matching Track's pattern):
- AlbumPictures moves from all-nullable to required fields.
- New AlbumConfiguration (routes/sizes), deliberately without
PlayList's preset-picture fallback since a picture is now required
up front.
- CreateAlbum now takes a mandatory PictureIntentId, validates and
consumes the upload intent, and kicks off the same
copy-to-final -> resize -> upload -> update-entity routing slip
PlayLists use, via a new AlbumProcessingState saga that marks the
album Failed on a picture-processing failure.
- UpdateAlbum takes an optional NewPictureIntentId to replace the
cover later.
- New GET /albums/{id}/cover and POST /albums/upload-picture
endpoints, mirroring the playlist ones.
- New EF migration for the AlbumProcessingState saga table.
Frontend:
- AlbumForm gains a cover dropzone, required on create and optional
on edit (via ImageDropzone's new `required` prop), uploaded through
the same presigned-upload helper playlists use.
- New /api/albums/{id}/cover proxy route.
- PlaylistArt gains a generic coverUrl prop so AlbumHeader and the
album list/detail cards render the real uploaded cover instead of
only the track mosaic fallback.
Delete-time picture cleanup for albums is intentionally left as a
follow-up, matching the existing gap in playlist deletion.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2313 lines
65 KiB
TypeScript
2313 lines
65 KiB
TypeScript
/**
|
|
* This file was auto-generated by openapi-typescript.
|
|
* Do not make direct changes to the file.
|
|
*/
|
|
|
|
export interface paths {
|
|
"/albums": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated Albums, Combined With Live YouTube Music Results When A Title Filter Is Given. */
|
|
get: operations["GetAlbums"];
|
|
put?: never;
|
|
/** Create A New Album. */
|
|
post: operations["CreateAlbum"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/{id}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get An Album By Id. */
|
|
get: operations["GetAlbumById"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/external/{source}/{externalId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get An Album From An External Source (Currently Only YouTube Music) With Its Tracklist. */
|
|
get: operations["GetExternalAlbum"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/users/{userId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated Albums For A User. */
|
|
get: operations["GetAlbumsByUserId"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/recent": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get The Albums The Current User Listened To Most Recently. */
|
|
get: operations["GetRecentlyListenedAlbums"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/{albumId}/tracks": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get The Tracks Of An Album Ordered By Track Number. */
|
|
get: operations["GetAlbumTracks"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/{id}/cover": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get An Album Cover Image. */
|
|
get: operations["GetAlbumCover"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/upload-picture": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
put?: never;
|
|
/** Request A Pre-Signed URL To Upload An Album Picture. */
|
|
post: operations["RequestAlbumPictureUpload"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/{albumId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
/** Update An Album. */
|
|
put: operations["UpdateAlbum"];
|
|
post?: never;
|
|
/** Delete An Album. */
|
|
delete: operations["DeleteAlbum"];
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/albums/{albumId}/tracks/{trackId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
put?: never;
|
|
/** Add One Of Your Uploaded Tracks To An Album. */
|
|
post: operations["AddTrackToAlbum"];
|
|
/** Remove A Track From An Album. */
|
|
delete: operations["RemoveTrackFromAlbum"];
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/mixes": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get The Server-Generated Mixes Of The Current User. */
|
|
get: operations["GetMixes"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/mixes/{id}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A Mix With All Of Its Songs. */
|
|
get: operations["GetMixById"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated PlayLists. */
|
|
get: operations["GetPlayLists"];
|
|
put?: never;
|
|
/** Create A New PlayList. */
|
|
post: operations["CreatePlayList"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/{id}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A PlayList By Id. */
|
|
get: operations["GetPlayListById"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/users/{userId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated PlayLists For A User. */
|
|
get: operations["GetPlayListsByUserId"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/{playlistId}/tracks": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated Tracks Of A PlayList. */
|
|
get: operations["GetPlayListTracks"];
|
|
put?: never;
|
|
/** Add A Track To A PlayList, By Id Or By External Source, Provisioning It In The Background If Needed. */
|
|
post: operations["AddPlayListTrack"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/{id}/cover": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A PlayList Cover Image. */
|
|
get: operations["GetPlayListCover"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/{playlistId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
/** Update An Existing PlayList. */
|
|
put: operations["UpdatePlayList"];
|
|
post?: never;
|
|
/** Delete A PlayList. */
|
|
delete: operations["DeletePlayList"];
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/upload-picture": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
put?: never;
|
|
/** Request A Pre-Signed URL To Upload A PlayList Picture. */
|
|
post: operations["RequestPlayListPictureUpload"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/playlists/{playlistId}/tracks/{trackId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
put?: never;
|
|
post?: never;
|
|
/** Remove A Track From A PlayList. */
|
|
delete: operations["RemoveTrackFromPlayList"];
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated Tracks, Combined With Live YouTube Music Results When A Name Filter Is Given. */
|
|
get: operations["GetTracks"];
|
|
put?: never;
|
|
/** Create A New Track. */
|
|
post: operations["CreateTrack"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/{id}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A Track By Id. */
|
|
get: operations["GetTrackById"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/{id}/cover": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A Track Cover Image. */
|
|
get: operations["GetTrackCover"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/{id}/stream": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A Streaming Manifest URL And Ticket For A Track. Works Anonymously When The Playback Configuration Allows It. */
|
|
get: operations["GetTrackStream"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/external/{source}/{externalId}/stream": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Resolve Playback For A Track From An External Source (Currently Only YouTube Music): Server Stream If Downloaded, Direct Stream From The Source Otherwise. Works Anonymously When The Playback Configuration Allows It. */
|
|
get: operations["GetExternalTrackStream"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/users/{userId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated Tracks For A User. */
|
|
get: operations["GetTracksByUserId"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/{trackId}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
put?: never;
|
|
post?: never;
|
|
/** Delete A Track. */
|
|
delete: operations["DeleteTrack"];
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/tracks/upload-urls": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
get?: never;
|
|
put?: never;
|
|
/** Request Pre-Signed URLs To Upload Track Picture And Audio. */
|
|
post: operations["RequestTrackUploadUrls"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/users": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get Paginated Users. */
|
|
get: operations["GetUsers"];
|
|
put?: never;
|
|
/** Create A New User. */
|
|
post: operations["CreateUser"];
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/users/{id}": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A User By Id. */
|
|
get: operations["GetUserById"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
"/users/{id}/listening-history": {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
/** Get A User'S Listening History. */
|
|
get: operations["GetListeningHistory"];
|
|
put?: never;
|
|
post?: never;
|
|
delete?: never;
|
|
options?: never;
|
|
head?: never;
|
|
patch?: never;
|
|
trace?: never;
|
|
};
|
|
}
|
|
export type webhooks = Record<string, never>;
|
|
export interface components {
|
|
schemas: {
|
|
AddPlayListTrackRequest: {
|
|
/** Format: uuid */
|
|
trackId: null | string;
|
|
source: null | components["schemas"]["TrackSource"];
|
|
externalId: null | string;
|
|
};
|
|
AlbumApplicationResponse: {
|
|
/** Format: uuid */
|
|
id: string;
|
|
title: string;
|
|
description: null | string;
|
|
/** Format: int32 */
|
|
releaseYear: null | number | string;
|
|
/** Format: int64 */
|
|
ownerUserId: number | string;
|
|
/** Format: int32 */
|
|
trackCount: number | string;
|
|
smallImageKeyName: null | string;
|
|
mediumImageKeyName: null | string;
|
|
largeImageKeyName: null | string;
|
|
/** Format: date-time */
|
|
createdAt: string;
|
|
/** Format: date-time */
|
|
updatedAt: string;
|
|
coverTrackIds: string[];
|
|
youTubeAlbumId?: null | string;
|
|
thumbnailUrl?: null | string;
|
|
};
|
|
AlbumPictureUploadResponse: {
|
|
/** Format: uuid */
|
|
intentId: string;
|
|
bucket: string;
|
|
key: string;
|
|
pictureName: string;
|
|
contentType: string;
|
|
/** Format: int32 */
|
|
expiresInSeconds: number | string;
|
|
uploadUrl: string;
|
|
};
|
|
AlbumSearchItemResponse: {
|
|
source: components["schemas"]["TrackSource"];
|
|
album: null | components["schemas"]["AlbumApplicationResponse"];
|
|
youTubeAlbum: null | components["schemas"]["YouTubeAlbumResult"];
|
|
};
|
|
AlbumsSearchResponse: {
|
|
items: components["schemas"]["AlbumSearchItemResponse"][];
|
|
/** Format: int32 */
|
|
pageNumber: number | string;
|
|
/** Format: int32 */
|
|
pageSize: number | string;
|
|
/** Format: int32 */
|
|
pageCount: number | string;
|
|
/** Format: int32 */
|
|
totalItemCount: number | string;
|
|
hasPreviousPage: boolean;
|
|
hasNextLocalPage: boolean;
|
|
nextYoutubeContinuationToken: null | string;
|
|
youtubeUnavailable: boolean;
|
|
hasNextPage: boolean;
|
|
};
|
|
CreateAlbumRequest: {
|
|
title: string;
|
|
description: null | string;
|
|
/** Format: int32 */
|
|
releaseYear: null | number | string;
|
|
/** Format: uuid */
|
|
pictureIntentId: string;
|
|
};
|
|
CreatePlayListRequest: {
|
|
name: string;
|
|
description: null | string;
|
|
/** Format: uuid */
|
|
pictureIntentId: null | string;
|
|
};
|
|
CreateTrackRequest: {
|
|
title: string;
|
|
/** Format: uuid */
|
|
pictureIntentId: string;
|
|
/** Format: uuid */
|
|
audioIntentId: string;
|
|
};
|
|
CreateUserRequest: {
|
|
/** Format: int64 */
|
|
id: number | string;
|
|
name: string;
|
|
firstName: null | string;
|
|
secondName: null | string;
|
|
};
|
|
HttpValidationProblemDetails: {
|
|
type?: null | string;
|
|
title?: null | string;
|
|
/** Format: int32 */
|
|
status?: null | number | string;
|
|
detail?: null | string;
|
|
instance?: null | string;
|
|
errors?: {
|
|
[key: string]: string[];
|
|
};
|
|
};
|
|
MixApplicationResponse: {
|
|
/** Format: uuid */
|
|
id: string;
|
|
title: string;
|
|
subtitle: null | string;
|
|
/** Format: int32 */
|
|
itemCount: number | string;
|
|
items: components["schemas"]["MixItemApplicationResponse"][];
|
|
};
|
|
MixItemApplicationResponse: {
|
|
source: components["schemas"]["MixItemSource"];
|
|
/** Format: uuid */
|
|
trackId: null | string;
|
|
videoId: null | string;
|
|
title: string;
|
|
artist: null | string;
|
|
thumbnailUrl: null | string;
|
|
/** Format: double */
|
|
durationSeconds: number | string;
|
|
isExplicit: boolean;
|
|
};
|
|
/** @enum {unknown} */
|
|
MixItemSource: "Musify" | "YouTube";
|
|
PaginatedResponseOfAlbumApplicationResponse: {
|
|
items: components["schemas"]["AlbumApplicationResponse"][];
|
|
/** Format: int32 */
|
|
pageNumber: number | string;
|
|
/** Format: int32 */
|
|
pageSize: number | string;
|
|
/** Format: int32 */
|
|
pageCount: number | string;
|
|
/** Format: int32 */
|
|
totalItemCount: number | string;
|
|
hasNextPage: boolean;
|
|
hasPreviousPage: boolean;
|
|
};
|
|
PaginatedResponseOfPlayListApplicationResponse: {
|
|
items: components["schemas"]["PlayListApplicationResponse"][];
|
|
/** Format: int32 */
|
|
pageNumber: number | string;
|
|
/** Format: int32 */
|
|
pageSize: number | string;
|
|
/** Format: int32 */
|
|
pageCount: number | string;
|
|
/** Format: int32 */
|
|
totalItemCount: number | string;
|
|
hasNextPage: boolean;
|
|
hasPreviousPage: boolean;
|
|
};
|
|
PaginatedResponseOfTrackApplicationResponse: {
|
|
items: components["schemas"]["TrackApplicationResponse"][];
|
|
/** Format: int32 */
|
|
pageNumber: number | string;
|
|
/** Format: int32 */
|
|
pageSize: number | string;
|
|
/** Format: int32 */
|
|
pageCount: number | string;
|
|
/** Format: int32 */
|
|
totalItemCount: number | string;
|
|
hasNextPage: boolean;
|
|
hasPreviousPage: boolean;
|
|
};
|
|
PaginatedResponseOfUserApplicationResponse: {
|
|
items: components["schemas"]["UserApplicationResponse"][];
|
|
/** Format: int32 */
|
|
pageNumber: number | string;
|
|
/** Format: int32 */
|
|
pageSize: number | string;
|
|
/** Format: int32 */
|
|
pageCount: number | string;
|
|
/** Format: int32 */
|
|
totalItemCount: number | string;
|
|
hasNextPage: boolean;
|
|
hasPreviousPage: boolean;
|
|
};
|
|
PlayListApplicationResponse: {
|
|
/** Format: uuid */
|
|
id: string;
|
|
name: string;
|
|
description: null | string;
|
|
smallImageKeyName: null | string;
|
|
mediumImageKeyName: null | string;
|
|
largeImageKeyName: null | string;
|
|
/** Format: date-time */
|
|
createdAt: string;
|
|
/** Format: date-time */
|
|
updatedAt: string;
|
|
coverTrackIds: string[];
|
|
};
|
|
PlayListPictureUploadResponse: {
|
|
/** Format: uuid */
|
|
intentId: string;
|
|
bucket: string;
|
|
key: string;
|
|
pictureName: string;
|
|
contentType: string;
|
|
/** Format: int32 */
|
|
expiresInSeconds: number | string;
|
|
uploadUrl: string;
|
|
};
|
|
/** @enum {unknown} */
|
|
ProcessingStatus: "Pending" | "Processing" | "Completed" | "Failed";
|
|
RequestAlbumPictureUploadRequest: {
|
|
fileType: string;
|
|
contentType: string;
|
|
/** Format: int64 */
|
|
expectedSizeBytes?: null | number | string;
|
|
};
|
|
RequestPlayListPictureUploadRequest: {
|
|
fileType: string;
|
|
contentType: string;
|
|
/** Format: int64 */
|
|
expectedSizeBytes?: null | number | string;
|
|
};
|
|
RequestTrackUploadUrlsRequest: {
|
|
pictureFileType: string;
|
|
pictureContentType: string;
|
|
audioFileType: string;
|
|
audioContentType: string;
|
|
/** Format: int64 */
|
|
expectedPictureSizeBytes?: null | number | string;
|
|
/** Format: int64 */
|
|
expectedAudioSizeBytes?: null | number | string;
|
|
};
|
|
TrackApplicationResponse: {
|
|
/** Format: uuid */
|
|
id: string;
|
|
title: string;
|
|
artist: null | string;
|
|
source: components["schemas"]["TrackSource"];
|
|
externalId: null | string;
|
|
audioStatus: components["schemas"]["ProcessingStatus"];
|
|
/** Format: double */
|
|
duration: number | string;
|
|
/** Format: int32 */
|
|
listensCount: number | string;
|
|
/** Format: int64 */
|
|
ownerUserId: null | number | string;
|
|
/** Format: date-time */
|
|
createdAt: string;
|
|
/** Format: date-time */
|
|
updatedAt: string;
|
|
};
|
|
TrackSearchItemResponse: {
|
|
source: components["schemas"]["TrackSource"];
|
|
track: null | components["schemas"]["TrackApplicationResponse"];
|
|
youTubeSong: null | components["schemas"]["YouTubeSongResult"];
|
|
};
|
|
/** @enum {unknown} */
|
|
TrackSource: "Local" | "YouTube";
|
|
TracksSearchResponse: {
|
|
items: components["schemas"]["TrackSearchItemResponse"][];
|
|
/** Format: int32 */
|
|
pageNumber: number | string;
|
|
/** Format: int32 */
|
|
pageSize: number | string;
|
|
/** Format: int32 */
|
|
pageCount: number | string;
|
|
/** Format: int32 */
|
|
totalItemCount: number | string;
|
|
hasPreviousPage: boolean;
|
|
hasNextLocalPage: boolean;
|
|
nextYoutubeContinuationToken: null | string;
|
|
youtubeUnavailable: boolean;
|
|
hasNextPage: boolean;
|
|
};
|
|
TrackStreamResponse: {
|
|
manifestUrl: string;
|
|
ticket: string;
|
|
/** Format: int32 */
|
|
expiresInSeconds: number | string;
|
|
};
|
|
TrackUploadUrlsResponse: {
|
|
/** Format: uuid */
|
|
pictureIntentId: string;
|
|
/** Format: uuid */
|
|
audioIntentId: string;
|
|
bucket: string;
|
|
pictureKey: string;
|
|
pictureName: string;
|
|
pictureContentType: string;
|
|
pictureUploadUrl: string;
|
|
audioKey: string;
|
|
audioName: string;
|
|
audioContentType: string;
|
|
audioUploadUrl: string;
|
|
/** Format: int32 */
|
|
expiresInSeconds: number | string;
|
|
};
|
|
UpdateAlbumRequest: {
|
|
newTitle: string;
|
|
newDescription: null | string;
|
|
/** Format: int32 */
|
|
newReleaseYear: null | number | string;
|
|
/** Format: uuid */
|
|
newPictureIntentId: null | string;
|
|
};
|
|
UpdatePlayListRequest: {
|
|
newName: null | string;
|
|
newDescription: null | string;
|
|
/** Format: uuid */
|
|
newPictureIntentId: null | string;
|
|
};
|
|
UserApplicationResponse: {
|
|
/** Format: int64 */
|
|
id: number | string;
|
|
name: string;
|
|
firstName: null | string;
|
|
secondName: null | string;
|
|
profilePictureUrl: null | string;
|
|
/** Format: date-time */
|
|
createdAt: string;
|
|
/** Format: date-time */
|
|
updatedAt: string;
|
|
};
|
|
YouTubeAlbumDetail: {
|
|
album: components["schemas"]["YouTubeAlbumResult"];
|
|
description: string;
|
|
/** Format: int32 */
|
|
totalDurationSeconds: number | string;
|
|
tracks: components["schemas"]["YouTubeAlbumTrack"][];
|
|
};
|
|
YouTubeAlbumResult: {
|
|
albumId: string;
|
|
title: string;
|
|
artist: string;
|
|
thumbnailUrl: string;
|
|
/** Format: int32 */
|
|
releaseYear: null | number | string;
|
|
isSingle: boolean;
|
|
isEp: boolean;
|
|
artists: components["schemas"]["YouTubeArtistRef"][];
|
|
};
|
|
YouTubeAlbumTrack: {
|
|
videoId: string;
|
|
title: string;
|
|
/** Format: int32 */
|
|
durationSeconds: number | string;
|
|
/** Format: int32 */
|
|
trackNumber: number | string;
|
|
isExplicit: boolean;
|
|
};
|
|
YouTubeArtistRef: {
|
|
id: null | string;
|
|
name: string;
|
|
};
|
|
YouTubeSongResult: {
|
|
videoId: string;
|
|
title: string;
|
|
artist: string;
|
|
album: string;
|
|
/** Format: int32 */
|
|
durationSeconds: number | string;
|
|
thumbnailUrl: string;
|
|
isExplicit: boolean;
|
|
artists: components["schemas"]["YouTubeArtistRef"][];
|
|
};
|
|
/** @enum {unknown} */
|
|
YouTubeStreamMode: "Server" | "YouTube";
|
|
YouTubeStreamResponse: {
|
|
/** Format: uuid */
|
|
trackId: null | string;
|
|
mode: components["schemas"]["YouTubeStreamMode"];
|
|
streamUrl: string;
|
|
ticket: null | string;
|
|
/** Format: int32 */
|
|
expiresInSeconds: number | string;
|
|
};
|
|
};
|
|
responses: never;
|
|
parameters: never;
|
|
requestBodies: never;
|
|
headers: never;
|
|
pathItems: never;
|
|
}
|
|
export type $defs = Record<string, never>;
|
|
export interface operations {
|
|
GetAlbums: {
|
|
parameters: {
|
|
query?: {
|
|
title?: string;
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
youtubeContinuationToken?: string;
|
|
};
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["AlbumsSearchResponse"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
CreateAlbum: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["CreateAlbumRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description Created */
|
|
201: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["AlbumApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetAlbumById: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["AlbumApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetExternalAlbum: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
source: string;
|
|
externalId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["YouTubeAlbumDetail"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetAlbumsByUserId: {
|
|
parameters: {
|
|
query?: {
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
userId: number | string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfAlbumApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetRecentlyListenedAlbums: {
|
|
parameters: {
|
|
query?: {
|
|
limit?: number | string;
|
|
};
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["AlbumApplicationResponse"][];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetAlbumTracks: {
|
|
parameters: {
|
|
query?: {
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
albumId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfTrackApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetAlbumCover: {
|
|
parameters: {
|
|
query?: {
|
|
size?: string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
RequestAlbumPictureUpload: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["RequestAlbumPictureUploadRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["AlbumPictureUploadResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
UpdateAlbum: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
albumId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["UpdateAlbumRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["AlbumApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
DeleteAlbum: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
albumId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description No Content */
|
|
204: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
AddTrackToAlbum: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
albumId: string;
|
|
trackId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description No Content */
|
|
204: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
RemoveTrackFromAlbum: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
albumId: string;
|
|
trackId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description No Content */
|
|
204: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetMixes: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["MixApplicationResponse"][];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetMixById: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["MixApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetPlayLists: {
|
|
parameters: {
|
|
query?: {
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfPlayListApplicationResponse"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
CreatePlayList: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["CreatePlayListRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description Created */
|
|
201: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PlayListApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetPlayListById: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PlayListApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetPlayListsByUserId: {
|
|
parameters: {
|
|
query?: {
|
|
name?: string;
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
userId: number | string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfPlayListApplicationResponse"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
GetPlayListTracks: {
|
|
parameters: {
|
|
query?: {
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
playlistId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfTrackApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
AddPlayListTrack: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
playlistId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["AddPlayListTrackRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description Created */
|
|
201: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TrackApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetPlayListCover: {
|
|
parameters: {
|
|
query?: {
|
|
size?: string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
UpdatePlayList: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
playlistId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["UpdatePlayListRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PlayListApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
DeletePlayList: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
playlistId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description No Content */
|
|
204: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
RequestPlayListPictureUpload: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["RequestPlayListPictureUploadRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PlayListPictureUploadResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
RemoveTrackFromPlayList: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
playlistId: string;
|
|
trackId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description No Content */
|
|
204: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetTracks: {
|
|
parameters: {
|
|
query?: {
|
|
name?: string;
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
youtubeContinuationToken?: string;
|
|
};
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TracksSearchResponse"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
CreateTrack: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["CreateTrackRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description Created */
|
|
201: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TrackApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetTrackById: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TrackApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetTrackCover: {
|
|
parameters: {
|
|
query?: {
|
|
size?: string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetTrackStream: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TrackStreamResponse"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetExternalTrackStream: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
source: string;
|
|
externalId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["YouTubeStreamResponse"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetTracksByUserId: {
|
|
parameters: {
|
|
query?: {
|
|
name?: string;
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path: {
|
|
userId: number | string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfTrackApplicationResponse"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
DeleteTrack: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
trackId: string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description No Content */
|
|
204: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
RequestTrackUploadUrls: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["RequestTrackUploadUrlsRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TrackUploadUrlsResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Unauthorized */
|
|
401: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetUsers: {
|
|
parameters: {
|
|
query?: {
|
|
usernameSearch?: string;
|
|
pageNumber?: number | string;
|
|
pageSize?: number | string;
|
|
};
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["PaginatedResponseOfUserApplicationResponse"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
CreateUser: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path?: never;
|
|
cookie?: never;
|
|
};
|
|
requestBody: {
|
|
content: {
|
|
"application/json": components["schemas"]["CreateUserRequest"];
|
|
};
|
|
};
|
|
responses: {
|
|
/** @description Created */
|
|
201: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["UserApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Bad Request */
|
|
400: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/problem+json": components["schemas"]["HttpValidationProblemDetails"];
|
|
};
|
|
};
|
|
/** @description Conflict */
|
|
409: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetUserById: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: number | string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["UserApplicationResponse"];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
GetListeningHistory: {
|
|
parameters: {
|
|
query?: never;
|
|
header?: never;
|
|
path: {
|
|
id: number | string;
|
|
};
|
|
cookie?: never;
|
|
};
|
|
requestBody?: never;
|
|
responses: {
|
|
/** @description OK */
|
|
200: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content: {
|
|
"application/json": components["schemas"]["TrackApplicationResponse"][];
|
|
};
|
|
};
|
|
/** @description Not Found */
|
|
404: {
|
|
headers: {
|
|
[name: string]: unknown;
|
|
};
|
|
content?: never;
|
|
};
|
|
};
|
|
};
|
|
}
|