/* tslint:disable */
/* eslint-disable */
/**
 * Jellyfin API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 10.8.9
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import * as runtime from '../runtime';
import type {
  ImageFormat,
  ImageInfo,
  ImageType,
  ProblemDetails,
} from '../models';
import {
    ImageFormatFromJSON,
    ImageFormatToJSON,
    ImageInfoFromJSON,
    ImageInfoToJSON,
    ImageTypeFromJSON,
    ImageTypeToJSON,
    ProblemDetailsFromJSON,
    ProblemDetailsToJSON,
} from '../models';

export interface DeleteItemImageRequest {
    itemId: string;
    imageType: ImageType;
    imageIndex?: number;
}

export interface DeleteItemImageByIndexRequest {
    itemId: string;
    imageType: ImageType;
    imageIndex: number;
}

export interface DeleteUserImageRequest {
    userId: string;
    imageType: ImageType;
    index?: number;
}

export interface DeleteUserImageByIndexRequest {
    userId: string;
    imageType: ImageType;
    index: number;
}

export interface GetArtistImageRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetGenreImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface GetGenreImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetItemImageRequest {
    itemId: string;
    imageType: ImageType;
    maxWidth?: number;
    maxHeight?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    tag?: string;
    cropWhitespace?: boolean;
    format?: ImageFormat;
    addPlayedIndicator?: boolean;
    percentPlayed?: number;
    unplayedCount?: number;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface GetItemImage2Request {
    itemId: string;
    imageType: ImageType;
    maxWidth: number;
    maxHeight: number;
    tag: string;
    format: ImageFormat;
    percentPlayed: number;
    unplayedCount: number;
    imageIndex: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetItemImageByIndexRequest {
    itemId: string;
    imageType: ImageType;
    imageIndex: number;
    maxWidth?: number;
    maxHeight?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    tag?: string;
    cropWhitespace?: boolean;
    format?: ImageFormat;
    addPlayedIndicator?: boolean;
    percentPlayed?: number;
    unplayedCount?: number;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetItemImageInfosRequest {
    itemId: string;
}

export interface GetMusicGenreImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface GetMusicGenreImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetPersonImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface GetPersonImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetSplashscreenRequest {
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    width?: number;
    height?: number;
    fillWidth?: number;
    fillHeight?: number;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    quality?: number;
}

export interface GetStudioImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface GetStudioImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface GetUserImageRequest {
    userId: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface GetUserImageByIndexRequest {
    userId: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadArtistImageRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadGenreImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface HeadGenreImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadItemImageRequest {
    itemId: string;
    imageType: ImageType;
    maxWidth?: number;
    maxHeight?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    tag?: string;
    cropWhitespace?: boolean;
    format?: ImageFormat;
    addPlayedIndicator?: boolean;
    percentPlayed?: number;
    unplayedCount?: number;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface HeadItemImage2Request {
    itemId: string;
    imageType: ImageType;
    maxWidth: number;
    maxHeight: number;
    tag: string;
    format: ImageFormat;
    percentPlayed: number;
    unplayedCount: number;
    imageIndex: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadItemImageByIndexRequest {
    itemId: string;
    imageType: ImageType;
    imageIndex: number;
    maxWidth?: number;
    maxHeight?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    tag?: string;
    cropWhitespace?: boolean;
    format?: ImageFormat;
    addPlayedIndicator?: boolean;
    percentPlayed?: number;
    unplayedCount?: number;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadMusicGenreImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface HeadMusicGenreImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadPersonImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface HeadPersonImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadStudioImageRequest {
    name: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface HeadStudioImageByIndexRequest {
    name: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface HeadUserImageRequest {
    userId: string;
    imageType: ImageType;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
    imageIndex?: number;
}

export interface HeadUserImageByIndexRequest {
    userId: string;
    imageType: ImageType;
    imageIndex: number;
    tag?: string;
    format?: ImageFormat;
    maxWidth?: number;
    maxHeight?: number;
    percentPlayed?: number;
    unplayedCount?: number;
    width?: number;
    height?: number;
    quality?: number;
    fillWidth?: number;
    fillHeight?: number;
    cropWhitespace?: boolean;
    addPlayedIndicator?: boolean;
    blur?: number;
    backgroundColor?: string;
    foregroundLayer?: string;
}

export interface PostUserImageRequest {
    userId: string;
    imageType: ImageType;
    index?: number;
    body?: Blob;
}

export interface PostUserImageByIndexRequest {
    userId: string;
    imageType: ImageType;
    index: number;
    body?: Blob;
}

export interface SetItemImageRequest {
    itemId: string;
    imageType: ImageType;
    body?: Blob;
}

export interface SetItemImageByIndexRequest {
    itemId: string;
    imageType: ImageType;
    imageIndex: number;
    body?: Blob;
}

export interface UpdateItemImageIndexRequest {
    itemId: string;
    imageType: ImageType;
    imageIndex: number;
    newIndex: number;
}

export interface UploadCustomSplashscreenRequest {
    body?: Blob;
}

/**
 * 
 */
export class ImageApi extends runtime.BaseAPI {

    /**
     * Delete a custom splashscreen.
     */
    async deleteCustomSplashscreenRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Branding/Splashscreen`,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Delete a custom splashscreen.
     */
    async deleteCustomSplashscreen(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteCustomSplashscreenRaw(initOverrides);
    }

    /**
     * Delete an item\'s image.
     */
    async deleteItemImageRaw(requestParameters: DeleteItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling deleteItemImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling deleteItemImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Delete an item\'s image.
     */
    async deleteItemImage(requestParameters: DeleteItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteItemImageRaw(requestParameters, initOverrides);
    }

    /**
     * Delete an item\'s image.
     */
    async deleteItemImageByIndexRaw(requestParameters: DeleteItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling deleteItemImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling deleteItemImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling deleteItemImageByIndex.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Delete an item\'s image.
     */
    async deleteItemImageByIndex(requestParameters: DeleteItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteItemImageByIndexRaw(requestParameters, initOverrides);
    }

    /**
     * Delete the user\'s image.
     */
    async deleteUserImageRaw(requestParameters: DeleteUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling deleteUserImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling deleteUserImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.index !== undefined) {
            queryParameters['index'] = requestParameters.index;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Delete the user\'s image.
     */
    async deleteUserImage(requestParameters: DeleteUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteUserImageRaw(requestParameters, initOverrides);
    }

    /**
     * Delete the user\'s image.
     */
    async deleteUserImageByIndexRaw(requestParameters: DeleteUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling deleteUserImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling deleteUserImageByIndex.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling deleteUserImageByIndex.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}/{index}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Delete the user\'s image.
     */
    async deleteUserImageByIndex(requestParameters: DeleteUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.deleteUserImageByIndexRaw(requestParameters, initOverrides);
    }

    /**
     * Get artist image by name.
     */
    async getArtistImageRaw(requestParameters: GetArtistImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getArtistImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getArtistImage.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getArtistImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Artists/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get artist image by name.
     */
    async getArtistImage(requestParameters: GetArtistImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getArtistImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get genre image by name.
     */
    async getGenreImageRaw(requestParameters: GetGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getGenreImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getGenreImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Genres/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get genre image by name.
     */
    async getGenreImage(requestParameters: GetGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getGenreImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get genre image by name.
     */
    async getGenreImageByIndexRaw(requestParameters: GetGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getGenreImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getGenreImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getGenreImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Genres/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get genre image by name.
     */
    async getGenreImageByIndex(requestParameters: GetGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getGenreImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Gets the item\'s image.
     */
    async getItemImageRaw(requestParameters: GetItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling getItemImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getItemImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Gets the item\'s image.
     */
    async getItemImage(requestParameters: GetItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getItemImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Gets the item\'s image.
     */
    async getItemImage2Raw(requestParameters: GetItemImage2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.maxWidth === null || requestParameters.maxWidth === undefined) {
            throw new runtime.RequiredError('maxWidth','Required parameter requestParameters.maxWidth was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.maxHeight === null || requestParameters.maxHeight === undefined) {
            throw new runtime.RequiredError('maxHeight','Required parameter requestParameters.maxHeight was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.tag === null || requestParameters.tag === undefined) {
            throw new runtime.RequiredError('tag','Required parameter requestParameters.tag was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.format === null || requestParameters.format === undefined) {
            throw new runtime.RequiredError('format','Required parameter requestParameters.format was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.percentPlayed === null || requestParameters.percentPlayed === undefined) {
            throw new runtime.RequiredError('percentPlayed','Required parameter requestParameters.percentPlayed was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.unplayedCount === null || requestParameters.unplayedCount === undefined) {
            throw new runtime.RequiredError('unplayedCount','Required parameter requestParameters.unplayedCount was null or undefined when calling getItemImage2.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getItemImage2.');
        }

        const queryParameters: any = {};

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}/{tag}/{format}/{maxWidth}/{maxHeight}/{percentPlayed}/{unplayedCount}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"maxWidth"}}`, encodeURIComponent(String(requestParameters.maxWidth))).replace(`{${"maxHeight"}}`, encodeURIComponent(String(requestParameters.maxHeight))).replace(`{${"tag"}}`, encodeURIComponent(String(requestParameters.tag))).replace(`{${"format"}}`, encodeURIComponent(String(requestParameters.format))).replace(`{${"percentPlayed"}}`, encodeURIComponent(String(requestParameters.percentPlayed))).replace(`{${"unplayedCount"}}`, encodeURIComponent(String(requestParameters.unplayedCount))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Gets the item\'s image.
     */
    async getItemImage2(requestParameters: GetItemImage2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getItemImage2Raw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Gets the item\'s image.
     */
    async getItemImageByIndexRaw(requestParameters: GetItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling getItemImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getItemImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getItemImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Gets the item\'s image.
     */
    async getItemImageByIndex(requestParameters: GetItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getItemImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get item image infos.
     */
    async getItemImageInfosRaw(requestParameters: GetItemImageInfosRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<ImageInfo>>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling getItemImageInfos.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Items/{itemId}/Images`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ImageInfoFromJSON));
    }

    /**
     * Get item image infos.
     */
    async getItemImageInfos(requestParameters: GetItemImageInfosRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<ImageInfo>> {
        const response = await this.getItemImageInfosRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get music genre image by name.
     */
    async getMusicGenreImageRaw(requestParameters: GetMusicGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getMusicGenreImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getMusicGenreImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/MusicGenres/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get music genre image by name.
     */
    async getMusicGenreImage(requestParameters: GetMusicGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getMusicGenreImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get music genre image by name.
     */
    async getMusicGenreImageByIndexRaw(requestParameters: GetMusicGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getMusicGenreImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getMusicGenreImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getMusicGenreImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/MusicGenres/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get music genre image by name.
     */
    async getMusicGenreImageByIndex(requestParameters: GetMusicGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getMusicGenreImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get person image by name.
     */
    async getPersonImageRaw(requestParameters: GetPersonImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getPersonImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getPersonImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Persons/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get person image by name.
     */
    async getPersonImage(requestParameters: GetPersonImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getPersonImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get person image by name.
     */
    async getPersonImageByIndexRaw(requestParameters: GetPersonImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getPersonImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getPersonImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getPersonImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Persons/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get person image by name.
     */
    async getPersonImageByIndex(requestParameters: GetPersonImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getPersonImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Generates or gets the splashscreen.
     */
    async getSplashscreenRaw(requestParameters: GetSplashscreenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Branding/Splashscreen`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Generates or gets the splashscreen.
     */
    async getSplashscreen(requestParameters: GetSplashscreenRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getSplashscreenRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get studio image by name.
     */
    async getStudioImageRaw(requestParameters: GetStudioImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getStudioImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getStudioImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Studios/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get studio image by name.
     */
    async getStudioImage(requestParameters: GetStudioImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getStudioImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get studio image by name.
     */
    async getStudioImageByIndexRaw(requestParameters: GetStudioImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling getStudioImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getStudioImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getStudioImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Studios/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get studio image by name.
     */
    async getStudioImageByIndex(requestParameters: GetStudioImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getStudioImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get user profile image.
     */
    async getUserImageRaw(requestParameters: GetUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling getUserImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getUserImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get user profile image.
     */
    async getUserImage(requestParameters: GetUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getUserImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get user profile image.
     */
    async getUserImageByIndexRaw(requestParameters: GetUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling getUserImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling getUserImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling getUserImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}/{imageIndex}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get user profile image.
     */
    async getUserImageByIndex(requestParameters: GetUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.getUserImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get artist image by name.
     */
    async headArtistImageRaw(requestParameters: HeadArtistImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headArtistImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headArtistImage.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headArtistImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Artists/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get artist image by name.
     */
    async headArtistImage(requestParameters: HeadArtistImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headArtistImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get genre image by name.
     */
    async headGenreImageRaw(requestParameters: HeadGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headGenreImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headGenreImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Genres/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get genre image by name.
     */
    async headGenreImage(requestParameters: HeadGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headGenreImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get genre image by name.
     */
    async headGenreImageByIndexRaw(requestParameters: HeadGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headGenreImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headGenreImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headGenreImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Genres/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get genre image by name.
     */
    async headGenreImageByIndex(requestParameters: HeadGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headGenreImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Gets the item\'s image.
     */
    async headItemImageRaw(requestParameters: HeadItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling headItemImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headItemImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Gets the item\'s image.
     */
    async headItemImage(requestParameters: HeadItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headItemImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Gets the item\'s image.
     */
    async headItemImage2Raw(requestParameters: HeadItemImage2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.maxWidth === null || requestParameters.maxWidth === undefined) {
            throw new runtime.RequiredError('maxWidth','Required parameter requestParameters.maxWidth was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.maxHeight === null || requestParameters.maxHeight === undefined) {
            throw new runtime.RequiredError('maxHeight','Required parameter requestParameters.maxHeight was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.tag === null || requestParameters.tag === undefined) {
            throw new runtime.RequiredError('tag','Required parameter requestParameters.tag was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.format === null || requestParameters.format === undefined) {
            throw new runtime.RequiredError('format','Required parameter requestParameters.format was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.percentPlayed === null || requestParameters.percentPlayed === undefined) {
            throw new runtime.RequiredError('percentPlayed','Required parameter requestParameters.percentPlayed was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.unplayedCount === null || requestParameters.unplayedCount === undefined) {
            throw new runtime.RequiredError('unplayedCount','Required parameter requestParameters.unplayedCount was null or undefined when calling headItemImage2.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headItemImage2.');
        }

        const queryParameters: any = {};

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}/{tag}/{format}/{maxWidth}/{maxHeight}/{percentPlayed}/{unplayedCount}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"maxWidth"}}`, encodeURIComponent(String(requestParameters.maxWidth))).replace(`{${"maxHeight"}}`, encodeURIComponent(String(requestParameters.maxHeight))).replace(`{${"tag"}}`, encodeURIComponent(String(requestParameters.tag))).replace(`{${"format"}}`, encodeURIComponent(String(requestParameters.format))).replace(`{${"percentPlayed"}}`, encodeURIComponent(String(requestParameters.percentPlayed))).replace(`{${"unplayedCount"}}`, encodeURIComponent(String(requestParameters.unplayedCount))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Gets the item\'s image.
     */
    async headItemImage2(requestParameters: HeadItemImage2Request, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headItemImage2Raw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Gets the item\'s image.
     */
    async headItemImageByIndexRaw(requestParameters: HeadItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling headItemImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headItemImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headItemImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Gets the item\'s image.
     */
    async headItemImageByIndex(requestParameters: HeadItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headItemImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get music genre image by name.
     */
    async headMusicGenreImageRaw(requestParameters: HeadMusicGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headMusicGenreImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headMusicGenreImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/MusicGenres/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get music genre image by name.
     */
    async headMusicGenreImage(requestParameters: HeadMusicGenreImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headMusicGenreImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get music genre image by name.
     */
    async headMusicGenreImageByIndexRaw(requestParameters: HeadMusicGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headMusicGenreImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headMusicGenreImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headMusicGenreImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/MusicGenres/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get music genre image by name.
     */
    async headMusicGenreImageByIndex(requestParameters: HeadMusicGenreImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headMusicGenreImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get person image by name.
     */
    async headPersonImageRaw(requestParameters: HeadPersonImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headPersonImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headPersonImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Persons/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get person image by name.
     */
    async headPersonImage(requestParameters: HeadPersonImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headPersonImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get person image by name.
     */
    async headPersonImageByIndexRaw(requestParameters: HeadPersonImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headPersonImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headPersonImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headPersonImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Persons/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get person image by name.
     */
    async headPersonImageByIndex(requestParameters: HeadPersonImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headPersonImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get studio image by name.
     */
    async headStudioImageRaw(requestParameters: HeadStudioImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headStudioImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headStudioImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Studios/{name}/Images/{imageType}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get studio image by name.
     */
    async headStudioImage(requestParameters: HeadStudioImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headStudioImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get studio image by name.
     */
    async headStudioImageByIndexRaw(requestParameters: HeadStudioImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling headStudioImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headStudioImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headStudioImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Studios/{name}/Images/{imageType}/{imageIndex}`.replace(`{${"name"}}`, encodeURIComponent(String(requestParameters.name))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get studio image by name.
     */
    async headStudioImageByIndex(requestParameters: HeadStudioImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headStudioImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get user profile image.
     */
    async headUserImageRaw(requestParameters: HeadUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling headUserImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headUserImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        if (requestParameters.imageIndex !== undefined) {
            queryParameters['imageIndex'] = requestParameters.imageIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get user profile image.
     */
    async headUserImage(requestParameters: HeadUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headUserImageRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get user profile image.
     */
    async headUserImageByIndexRaw(requestParameters: HeadUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Blob>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling headUserImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling headUserImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling headUserImageByIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.tag !== undefined) {
            queryParameters['tag'] = requestParameters.tag;
        }

        if (requestParameters.format !== undefined) {
            queryParameters['format'] = requestParameters.format;
        }

        if (requestParameters.maxWidth !== undefined) {
            queryParameters['maxWidth'] = requestParameters.maxWidth;
        }

        if (requestParameters.maxHeight !== undefined) {
            queryParameters['maxHeight'] = requestParameters.maxHeight;
        }

        if (requestParameters.percentPlayed !== undefined) {
            queryParameters['percentPlayed'] = requestParameters.percentPlayed;
        }

        if (requestParameters.unplayedCount !== undefined) {
            queryParameters['unplayedCount'] = requestParameters.unplayedCount;
        }

        if (requestParameters.width !== undefined) {
            queryParameters['width'] = requestParameters.width;
        }

        if (requestParameters.height !== undefined) {
            queryParameters['height'] = requestParameters.height;
        }

        if (requestParameters.quality !== undefined) {
            queryParameters['quality'] = requestParameters.quality;
        }

        if (requestParameters.fillWidth !== undefined) {
            queryParameters['fillWidth'] = requestParameters.fillWidth;
        }

        if (requestParameters.fillHeight !== undefined) {
            queryParameters['fillHeight'] = requestParameters.fillHeight;
        }

        if (requestParameters.cropWhitespace !== undefined) {
            queryParameters['cropWhitespace'] = requestParameters.cropWhitespace;
        }

        if (requestParameters.addPlayedIndicator !== undefined) {
            queryParameters['addPlayedIndicator'] = requestParameters.addPlayedIndicator;
        }

        if (requestParameters.blur !== undefined) {
            queryParameters['blur'] = requestParameters.blur;
        }

        if (requestParameters.backgroundColor !== undefined) {
            queryParameters['backgroundColor'] = requestParameters.backgroundColor;
        }

        if (requestParameters.foregroundLayer !== undefined) {
            queryParameters['foregroundLayer'] = requestParameters.foregroundLayer;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}/{imageIndex}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'HEAD',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.BlobApiResponse(response);
    }

    /**
     * Get user profile image.
     */
    async headUserImageByIndex(requestParameters: HeadUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Blob> {
        const response = await this.headUserImageByIndexRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Sets the user image.
     */
    async postUserImageRaw(requestParameters: PostUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling postUserImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling postUserImage.');
        }

        const queryParameters: any = {};

        if (requestParameters.index !== undefined) {
            queryParameters['index'] = requestParameters.index;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'image/*';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.body as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Sets the user image.
     */
    async postUserImage(requestParameters: PostUserImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.postUserImageRaw(requestParameters, initOverrides);
    }

    /**
     * Sets the user image.
     */
    async postUserImageByIndexRaw(requestParameters: PostUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.userId === null || requestParameters.userId === undefined) {
            throw new runtime.RequiredError('userId','Required parameter requestParameters.userId was null or undefined when calling postUserImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling postUserImageByIndex.');
        }

        if (requestParameters.index === null || requestParameters.index === undefined) {
            throw new runtime.RequiredError('index','Required parameter requestParameters.index was null or undefined when calling postUserImageByIndex.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'image/*';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Users/{userId}/Images/{imageType}/{index}`.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters.userId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"index"}}`, encodeURIComponent(String(requestParameters.index))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.body as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Sets the user image.
     */
    async postUserImageByIndex(requestParameters: PostUserImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.postUserImageByIndexRaw(requestParameters, initOverrides);
    }

    /**
     * Set item image.
     */
    async setItemImageRaw(requestParameters: SetItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling setItemImage.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling setItemImage.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'image/*';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.body as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Set item image.
     */
    async setItemImage(requestParameters: SetItemImageRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.setItemImageRaw(requestParameters, initOverrides);
    }

    /**
     * Set item image.
     */
    async setItemImageByIndexRaw(requestParameters: SetItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling setItemImageByIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling setItemImageByIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling setItemImageByIndex.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'image/*';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.body as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Set item image.
     */
    async setItemImageByIndex(requestParameters: SetItemImageByIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.setItemImageByIndexRaw(requestParameters, initOverrides);
    }

    /**
     * Updates the index for an item image.
     */
    async updateItemImageIndexRaw(requestParameters: UpdateItemImageIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        if (requestParameters.itemId === null || requestParameters.itemId === undefined) {
            throw new runtime.RequiredError('itemId','Required parameter requestParameters.itemId was null or undefined when calling updateItemImageIndex.');
        }

        if (requestParameters.imageType === null || requestParameters.imageType === undefined) {
            throw new runtime.RequiredError('imageType','Required parameter requestParameters.imageType was null or undefined when calling updateItemImageIndex.');
        }

        if (requestParameters.imageIndex === null || requestParameters.imageIndex === undefined) {
            throw new runtime.RequiredError('imageIndex','Required parameter requestParameters.imageIndex was null or undefined when calling updateItemImageIndex.');
        }

        if (requestParameters.newIndex === null || requestParameters.newIndex === undefined) {
            throw new runtime.RequiredError('newIndex','Required parameter requestParameters.newIndex was null or undefined when calling updateItemImageIndex.');
        }

        const queryParameters: any = {};

        if (requestParameters.newIndex !== undefined) {
            queryParameters['newIndex'] = requestParameters.newIndex;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Items/{itemId}/Images/{imageType}/{imageIndex}/Index`.replace(`{${"itemId"}}`, encodeURIComponent(String(requestParameters.itemId))).replace(`{${"imageType"}}`, encodeURIComponent(String(requestParameters.imageType))).replace(`{${"imageIndex"}}`, encodeURIComponent(String(requestParameters.imageIndex))),
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Updates the index for an item image.
     */
    async updateItemImageIndex(requestParameters: UpdateItemImageIndexRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.updateItemImageIndexRaw(requestParameters, initOverrides);
    }

    /**
     * Uploads a custom splashscreen.  The body is expected to the image contents base64 encoded.
     */
    async uploadCustomSplashscreenRaw(requestParameters: UploadCustomSplashscreenRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'image/*';

        if (this.configuration && this.configuration.apiKey) {
            headerParameters["Authorization"] = this.configuration.apiKey("Authorization"); // CustomAuthentication authentication
        }

        const response = await this.request({
            path: `/Branding/Splashscreen`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: requestParameters.body as any,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * Uploads a custom splashscreen.  The body is expected to the image contents base64 encoded.
     */
    async uploadCustomSplashscreen(requestParameters: UploadCustomSplashscreenRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.uploadCustomSplashscreenRaw(requestParameters, initOverrides);
    }

}
