/* 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 { exists, mapValues } from '../runtime';
import type { BaseItemDtoCurrentProgram } from './BaseItemDtoCurrentProgram';
import {
    BaseItemDtoCurrentProgramFromJSON,
    BaseItemDtoCurrentProgramFromJSONTyped,
    BaseItemDtoCurrentProgramToJSON,
} from './BaseItemDtoCurrentProgram';
import type { BaseItemDtoImageBlurHashes } from './BaseItemDtoImageBlurHashes';
import {
    BaseItemDtoImageBlurHashesFromJSON,
    BaseItemDtoImageBlurHashesFromJSONTyped,
    BaseItemDtoImageBlurHashesToJSON,
} from './BaseItemDtoImageBlurHashes';
import type { BaseItemDtoUserData } from './BaseItemDtoUserData';
import {
    BaseItemDtoUserDataFromJSON,
    BaseItemDtoUserDataFromJSONTyped,
    BaseItemDtoUserDataToJSON,
} from './BaseItemDtoUserData';
import type { BaseItemKind } from './BaseItemKind';
import {
    BaseItemKindFromJSON,
    BaseItemKindFromJSONTyped,
    BaseItemKindToJSON,
} from './BaseItemKind';
import type { BaseItemPerson } from './BaseItemPerson';
import {
    BaseItemPersonFromJSON,
    BaseItemPersonFromJSONTyped,
    BaseItemPersonToJSON,
} from './BaseItemPerson';
import type { ChannelType } from './ChannelType';
import {
    ChannelTypeFromJSON,
    ChannelTypeFromJSONTyped,
    ChannelTypeToJSON,
} from './ChannelType';
import type { ChapterInfo } from './ChapterInfo';
import {
    ChapterInfoFromJSON,
    ChapterInfoFromJSONTyped,
    ChapterInfoToJSON,
} from './ChapterInfo';
import type { DayOfWeek } from './DayOfWeek';
import {
    DayOfWeekFromJSON,
    DayOfWeekFromJSONTyped,
    DayOfWeekToJSON,
} from './DayOfWeek';
import type { ExternalUrl } from './ExternalUrl';
import {
    ExternalUrlFromJSON,
    ExternalUrlFromJSONTyped,
    ExternalUrlToJSON,
} from './ExternalUrl';
import type { ImageOrientation } from './ImageOrientation';
import {
    ImageOrientationFromJSON,
    ImageOrientationFromJSONTyped,
    ImageOrientationToJSON,
} from './ImageOrientation';
import type { IsoType } from './IsoType';
import {
    IsoTypeFromJSON,
    IsoTypeFromJSONTyped,
    IsoTypeToJSON,
} from './IsoType';
import type { LocationType } from './LocationType';
import {
    LocationTypeFromJSON,
    LocationTypeFromJSONTyped,
    LocationTypeToJSON,
} from './LocationType';
import type { MediaSourceInfo } from './MediaSourceInfo';
import {
    MediaSourceInfoFromJSON,
    MediaSourceInfoFromJSONTyped,
    MediaSourceInfoToJSON,
} from './MediaSourceInfo';
import type { MediaStream } from './MediaStream';
import {
    MediaStreamFromJSON,
    MediaStreamFromJSONTyped,
    MediaStreamToJSON,
} from './MediaStream';
import type { MediaUrl } from './MediaUrl';
import {
    MediaUrlFromJSON,
    MediaUrlFromJSONTyped,
    MediaUrlToJSON,
} from './MediaUrl';
import type { MetadataField } from './MetadataField';
import {
    MetadataFieldFromJSON,
    MetadataFieldFromJSONTyped,
    MetadataFieldToJSON,
} from './MetadataField';
import type { NameGuidPair } from './NameGuidPair';
import {
    NameGuidPairFromJSON,
    NameGuidPairFromJSONTyped,
    NameGuidPairToJSON,
} from './NameGuidPair';
import type { PlayAccess } from './PlayAccess';
import {
    PlayAccessFromJSON,
    PlayAccessFromJSONTyped,
    PlayAccessToJSON,
} from './PlayAccess';
import type { ProgramAudio } from './ProgramAudio';
import {
    ProgramAudioFromJSON,
    ProgramAudioFromJSONTyped,
    ProgramAudioToJSON,
} from './ProgramAudio';
import type { Video3DFormat } from './Video3DFormat';
import {
    Video3DFormatFromJSON,
    Video3DFormatFromJSONTyped,
    Video3DFormatToJSON,
} from './Video3DFormat';
import type { VideoType } from './VideoType';
import {
    VideoTypeFromJSON,
    VideoTypeFromJSONTyped,
    VideoTypeToJSON,
} from './VideoType';

/**
 * This is strictly used as a data transfer object from the api layer.
 * This holds information about a BaseItem in a format that is convenient for the client.
 * @export
 * @interface UpdateItemRequest
 */
export interface UpdateItemRequest {
    /**
     * Gets or sets the name.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    name?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    originalTitle?: string | null;
    /**
     * Gets or sets the server identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    serverId?: string | null;
    /**
     * Gets or sets the id.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    id?: string;
    /**
     * Gets or sets the etag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    etag?: string | null;
    /**
     * Gets or sets the type of the source.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    sourceType?: string | null;
    /**
     * Gets or sets the playlist item identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    playlistItemId?: string | null;
    /**
     * Gets or sets the date created.
     * @type {Date}
     * @memberof UpdateItemRequest
     */
    dateCreated?: Date | null;
    /**
     * 
     * @type {Date}
     * @memberof UpdateItemRequest
     */
    dateLastMediaAdded?: Date | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    extraType?: string | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    airsBeforeSeasonNumber?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    airsAfterSeasonNumber?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    airsBeforeEpisodeNumber?: number | null;
    /**
     * 
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    canDelete?: boolean | null;
    /**
     * 
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    canDownload?: boolean | null;
    /**
     * 
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    hasSubtitles?: boolean | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    preferredMetadataLanguage?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    preferredMetadataCountryCode?: string | null;
    /**
     * Gets or sets a value indicating whether [supports synchronize].
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    supportsSync?: boolean | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    container?: string | null;
    /**
     * Gets or sets the name of the sort.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    sortName?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    forcedSortName?: string | null;
    /**
     * 
     * @type {Video3DFormat}
     * @memberof UpdateItemRequest
     */
    video3DFormat?: Video3DFormat | null;
    /**
     * Gets or sets the premiere date.
     * @type {Date}
     * @memberof UpdateItemRequest
     */
    premiereDate?: Date | null;
    /**
     * Gets or sets the external urls.
     * @type {Array<ExternalUrl>}
     * @memberof UpdateItemRequest
     */
    externalUrls?: Array<ExternalUrl> | null;
    /**
     * Gets or sets the media versions.
     * @type {Array<MediaSourceInfo>}
     * @memberof UpdateItemRequest
     */
    mediaSources?: Array<MediaSourceInfo> | null;
    /**
     * Gets or sets the critic rating.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    criticRating?: number | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    productionLocations?: Array<string> | null;
    /**
     * Gets or sets the path.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    path?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    enableMediaSourceDisplay?: boolean | null;
    /**
     * Gets or sets the official rating.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    officialRating?: string | null;
    /**
     * Gets or sets the custom rating.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    customRating?: string | null;
    /**
     * Gets or sets the channel identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    channelId?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    channelName?: string | null;
    /**
     * Gets or sets the overview.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    overview?: string | null;
    /**
     * Gets or sets the taglines.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    taglines?: Array<string> | null;
    /**
     * Gets or sets the genres.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    genres?: Array<string> | null;
    /**
     * Gets or sets the community rating.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    communityRating?: number | null;
    /**
     * Gets or sets the cumulative run time ticks.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    cumulativeRunTimeTicks?: number | null;
    /**
     * Gets or sets the run time ticks.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    runTimeTicks?: number | null;
    /**
     * 
     * @type {PlayAccess}
     * @memberof UpdateItemRequest
     */
    playAccess?: PlayAccess | null;
    /**
     * Gets or sets the aspect ratio.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    aspectRatio?: string | null;
    /**
     * Gets or sets the production year.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    productionYear?: number | null;
    /**
     * Gets or sets a value indicating whether this instance is place holder.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isPlaceHolder?: boolean | null;
    /**
     * Gets or sets the number.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    number?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    channelNumber?: string | null;
    /**
     * Gets or sets the index number.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    indexNumber?: number | null;
    /**
     * Gets or sets the index number end.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    indexNumberEnd?: number | null;
    /**
     * Gets or sets the parent index number.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    parentIndexNumber?: number | null;
    /**
     * Gets or sets the trailer urls.
     * @type {Array<MediaUrl>}
     * @memberof UpdateItemRequest
     */
    remoteTrailers?: Array<MediaUrl> | null;
    /**
     * Gets or sets the provider ids.
     * @type {{ [key: string]: string; }}
     * @memberof UpdateItemRequest
     */
    providerIds?: { [key: string]: string; } | null;
    /**
     * Gets or sets a value indicating whether this instance is HD.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isHD?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is folder.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isFolder?: boolean | null;
    /**
     * Gets or sets the parent id.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentId?: string | null;
    /**
     * 
     * @type {BaseItemKind}
     * @memberof UpdateItemRequest
     */
    type?: BaseItemKind;
    /**
     * Gets or sets the people.
     * @type {Array<BaseItemPerson>}
     * @memberof UpdateItemRequest
     */
    people?: Array<BaseItemPerson> | null;
    /**
     * Gets or sets the studios.
     * @type {Array<NameGuidPair>}
     * @memberof UpdateItemRequest
     */
    studios?: Array<NameGuidPair> | null;
    /**
     * 
     * @type {Array<NameGuidPair>}
     * @memberof UpdateItemRequest
     */
    genreItems?: Array<NameGuidPair> | null;
    /**
     * Gets or sets wether the item has a logo, this will hold the Id of the Parent that has one.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentLogoItemId?: string | null;
    /**
     * Gets or sets wether the item has any backdrops, this will hold the Id of the Parent that has one.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentBackdropItemId?: string | null;
    /**
     * Gets or sets the parent backdrop image tags.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    parentBackdropImageTags?: Array<string> | null;
    /**
     * Gets or sets the local trailer count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    localTrailerCount?: number | null;
    /**
     * 
     * @type {BaseItemDtoUserData}
     * @memberof UpdateItemRequest
     */
    userData?: BaseItemDtoUserData | null;
    /**
     * Gets or sets the recursive item count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    recursiveItemCount?: number | null;
    /**
     * Gets or sets the child count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    childCount?: number | null;
    /**
     * Gets or sets the name of the series.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seriesName?: string | null;
    /**
     * Gets or sets the series id.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seriesId?: string | null;
    /**
     * Gets or sets the season identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seasonId?: string | null;
    /**
     * Gets or sets the special feature count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    specialFeatureCount?: number | null;
    /**
     * Gets or sets the display preferences id.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    displayPreferencesId?: string | null;
    /**
     * Gets or sets the status.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    status?: string | null;
    /**
     * Gets or sets the air time.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    airTime?: string | null;
    /**
     * Gets or sets the air days.
     * @type {Array<DayOfWeek>}
     * @memberof UpdateItemRequest
     */
    airDays?: Array<DayOfWeek> | null;
    /**
     * Gets or sets the tags.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    tags?: Array<string> | null;
    /**
     * Gets or sets the primary image aspect ratio, after image enhancements.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    primaryImageAspectRatio?: number | null;
    /**
     * Gets or sets the artists.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    artists?: Array<string> | null;
    /**
     * Gets or sets the artist items.
     * @type {Array<NameGuidPair>}
     * @memberof UpdateItemRequest
     */
    artistItems?: Array<NameGuidPair> | null;
    /**
     * Gets or sets the album.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    album?: string | null;
    /**
     * Gets or sets the type of the collection.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    collectionType?: string | null;
    /**
     * Gets or sets the display order.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    displayOrder?: string | null;
    /**
     * Gets or sets the album id.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    albumId?: string | null;
    /**
     * Gets or sets the album image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    albumPrimaryImageTag?: string | null;
    /**
     * Gets or sets the series primary image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seriesPrimaryImageTag?: string | null;
    /**
     * Gets or sets the album artist.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    albumArtist?: string | null;
    /**
     * Gets or sets the album artists.
     * @type {Array<NameGuidPair>}
     * @memberof UpdateItemRequest
     */
    albumArtists?: Array<NameGuidPair> | null;
    /**
     * Gets or sets the name of the season.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seasonName?: string | null;
    /**
     * Gets or sets the media streams.
     * @type {Array<MediaStream>}
     * @memberof UpdateItemRequest
     */
    mediaStreams?: Array<MediaStream> | null;
    /**
     * 
     * @type {VideoType}
     * @memberof UpdateItemRequest
     */
    videoType?: VideoType | null;
    /**
     * Gets or sets the part count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    partCount?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    mediaSourceCount?: number | null;
    /**
     * Gets or sets the image tags.
     * @type {{ [key: string]: string; }}
     * @memberof UpdateItemRequest
     */
    imageTags?: { [key: string]: string; } | null;
    /**
     * Gets or sets the backdrop image tags.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    backdropImageTags?: Array<string> | null;
    /**
     * Gets or sets the screenshot image tags.
     * @type {Array<string>}
     * @memberof UpdateItemRequest
     */
    screenshotImageTags?: Array<string> | null;
    /**
     * Gets or sets the parent logo image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentLogoImageTag?: string | null;
    /**
     * Gets or sets wether the item has fan art, this will hold the Id of the Parent that has one.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentArtItemId?: string | null;
    /**
     * Gets or sets the parent art image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentArtImageTag?: string | null;
    /**
     * Gets or sets the series thumb image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seriesThumbImageTag?: string | null;
    /**
     * 
     * @type {BaseItemDtoImageBlurHashes}
     * @memberof UpdateItemRequest
     */
    imageBlurHashes?: BaseItemDtoImageBlurHashes | null;
    /**
     * Gets or sets the series studio.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seriesStudio?: string | null;
    /**
     * Gets or sets the parent thumb item id.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentThumbItemId?: string | null;
    /**
     * Gets or sets the parent thumb image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentThumbImageTag?: string | null;
    /**
     * Gets or sets the parent primary image item identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentPrimaryImageItemId?: string | null;
    /**
     * Gets or sets the parent primary image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    parentPrimaryImageTag?: string | null;
    /**
     * Gets or sets the chapters.
     * @type {Array<ChapterInfo>}
     * @memberof UpdateItemRequest
     */
    chapters?: Array<ChapterInfo> | null;
    /**
     * 
     * @type {LocationType}
     * @memberof UpdateItemRequest
     */
    locationType?: LocationType | null;
    /**
     * 
     * @type {IsoType}
     * @memberof UpdateItemRequest
     */
    isoType?: IsoType | null;
    /**
     * Gets or sets the type of the media.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    mediaType?: string | null;
    /**
     * Gets or sets the end date.
     * @type {Date}
     * @memberof UpdateItemRequest
     */
    endDate?: Date | null;
    /**
     * Gets or sets the locked fields.
     * @type {Array<MetadataField>}
     * @memberof UpdateItemRequest
     */
    lockedFields?: Array<MetadataField> | null;
    /**
     * Gets or sets the trailer count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    trailerCount?: number | null;
    /**
     * Gets or sets the movie count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    movieCount?: number | null;
    /**
     * Gets or sets the series count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    seriesCount?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    programCount?: number | null;
    /**
     * Gets or sets the episode count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    episodeCount?: number | null;
    /**
     * Gets or sets the song count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    songCount?: number | null;
    /**
     * Gets or sets the album count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    albumCount?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    artistCount?: number | null;
    /**
     * Gets or sets the music video count.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    musicVideoCount?: number | null;
    /**
     * Gets or sets a value indicating whether [enable internet providers].
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    lockData?: boolean | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    width?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    height?: number | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    cameraMake?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    cameraModel?: string | null;
    /**
     * 
     * @type {string}
     * @memberof UpdateItemRequest
     */
    software?: string | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    exposureTime?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    focalLength?: number | null;
    /**
     * 
     * @type {ImageOrientation}
     * @memberof UpdateItemRequest
     */
    imageOrientation?: ImageOrientation | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    aperture?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    shutterSpeed?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    latitude?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    longitude?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    altitude?: number | null;
    /**
     * 
     * @type {number}
     * @memberof UpdateItemRequest
     */
    isoSpeedRating?: number | null;
    /**
     * Gets or sets the series timer identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    seriesTimerId?: string | null;
    /**
     * Gets or sets the program identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    programId?: string | null;
    /**
     * Gets or sets the channel primary image tag.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    channelPrimaryImageTag?: string | null;
    /**
     * Gets or sets the start date of the recording, in UTC.
     * @type {Date}
     * @memberof UpdateItemRequest
     */
    startDate?: Date | null;
    /**
     * Gets or sets the completion percentage.
     * @type {number}
     * @memberof UpdateItemRequest
     */
    completionPercentage?: number | null;
    /**
     * Gets or sets a value indicating whether this instance is repeat.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isRepeat?: boolean | null;
    /**
     * Gets or sets the episode title.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    episodeTitle?: string | null;
    /**
     * 
     * @type {ChannelType}
     * @memberof UpdateItemRequest
     */
    channelType?: ChannelType | null;
    /**
     * 
     * @type {ProgramAudio}
     * @memberof UpdateItemRequest
     */
    audio?: ProgramAudio | null;
    /**
     * Gets or sets a value indicating whether this instance is movie.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isMovie?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is sports.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isSports?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is series.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isSeries?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is live.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isLive?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is news.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isNews?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is kids.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isKids?: boolean | null;
    /**
     * Gets or sets a value indicating whether this instance is premiere.
     * @type {boolean}
     * @memberof UpdateItemRequest
     */
    isPremiere?: boolean | null;
    /**
     * Gets or sets the timer identifier.
     * @type {string}
     * @memberof UpdateItemRequest
     */
    timerId?: string | null;
    /**
     * 
     * @type {BaseItemDtoCurrentProgram}
     * @memberof UpdateItemRequest
     */
    currentProgram?: BaseItemDtoCurrentProgram | null;
}

/**
 * Check if a given object implements the UpdateItemRequest interface.
 */
export function instanceOfUpdateItemRequest(value: object): boolean {
    let isInstance = true;

    return isInstance;
}

export function UpdateItemRequestFromJSON(json: any): UpdateItemRequest {
    return UpdateItemRequestFromJSONTyped(json, false);
}

export function UpdateItemRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateItemRequest {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'name': !exists(json, 'Name') ? undefined : json['Name'],
        'originalTitle': !exists(json, 'OriginalTitle') ? undefined : json['OriginalTitle'],
        'serverId': !exists(json, 'ServerId') ? undefined : json['ServerId'],
        'id': !exists(json, 'Id') ? undefined : json['Id'],
        'etag': !exists(json, 'Etag') ? undefined : json['Etag'],
        'sourceType': !exists(json, 'SourceType') ? undefined : json['SourceType'],
        'playlistItemId': !exists(json, 'PlaylistItemId') ? undefined : json['PlaylistItemId'],
        'dateCreated': !exists(json, 'DateCreated') ? undefined : (json['DateCreated'] === null ? null : new Date(json['DateCreated'])),
        'dateLastMediaAdded': !exists(json, 'DateLastMediaAdded') ? undefined : (json['DateLastMediaAdded'] === null ? null : new Date(json['DateLastMediaAdded'])),
        'extraType': !exists(json, 'ExtraType') ? undefined : json['ExtraType'],
        'airsBeforeSeasonNumber': !exists(json, 'AirsBeforeSeasonNumber') ? undefined : json['AirsBeforeSeasonNumber'],
        'airsAfterSeasonNumber': !exists(json, 'AirsAfterSeasonNumber') ? undefined : json['AirsAfterSeasonNumber'],
        'airsBeforeEpisodeNumber': !exists(json, 'AirsBeforeEpisodeNumber') ? undefined : json['AirsBeforeEpisodeNumber'],
        'canDelete': !exists(json, 'CanDelete') ? undefined : json['CanDelete'],
        'canDownload': !exists(json, 'CanDownload') ? undefined : json['CanDownload'],
        'hasSubtitles': !exists(json, 'HasSubtitles') ? undefined : json['HasSubtitles'],
        'preferredMetadataLanguage': !exists(json, 'PreferredMetadataLanguage') ? undefined : json['PreferredMetadataLanguage'],
        'preferredMetadataCountryCode': !exists(json, 'PreferredMetadataCountryCode') ? undefined : json['PreferredMetadataCountryCode'],
        'supportsSync': !exists(json, 'SupportsSync') ? undefined : json['SupportsSync'],
        'container': !exists(json, 'Container') ? undefined : json['Container'],
        'sortName': !exists(json, 'SortName') ? undefined : json['SortName'],
        'forcedSortName': !exists(json, 'ForcedSortName') ? undefined : json['ForcedSortName'],
        'video3DFormat': !exists(json, 'Video3DFormat') ? undefined : Video3DFormatFromJSON(json['Video3DFormat']),
        'premiereDate': !exists(json, 'PremiereDate') ? undefined : (json['PremiereDate'] === null ? null : new Date(json['PremiereDate'])),
        'externalUrls': !exists(json, 'ExternalUrls') ? undefined : (json['ExternalUrls'] === null ? null : (json['ExternalUrls'] as Array<any>).map(ExternalUrlFromJSON)),
        'mediaSources': !exists(json, 'MediaSources') ? undefined : (json['MediaSources'] === null ? null : (json['MediaSources'] as Array<any>).map(MediaSourceInfoFromJSON)),
        'criticRating': !exists(json, 'CriticRating') ? undefined : json['CriticRating'],
        'productionLocations': !exists(json, 'ProductionLocations') ? undefined : json['ProductionLocations'],
        'path': !exists(json, 'Path') ? undefined : json['Path'],
        'enableMediaSourceDisplay': !exists(json, 'EnableMediaSourceDisplay') ? undefined : json['EnableMediaSourceDisplay'],
        'officialRating': !exists(json, 'OfficialRating') ? undefined : json['OfficialRating'],
        'customRating': !exists(json, 'CustomRating') ? undefined : json['CustomRating'],
        'channelId': !exists(json, 'ChannelId') ? undefined : json['ChannelId'],
        'channelName': !exists(json, 'ChannelName') ? undefined : json['ChannelName'],
        'overview': !exists(json, 'Overview') ? undefined : json['Overview'],
        'taglines': !exists(json, 'Taglines') ? undefined : json['Taglines'],
        'genres': !exists(json, 'Genres') ? undefined : json['Genres'],
        'communityRating': !exists(json, 'CommunityRating') ? undefined : json['CommunityRating'],
        'cumulativeRunTimeTicks': !exists(json, 'CumulativeRunTimeTicks') ? undefined : json['CumulativeRunTimeTicks'],
        'runTimeTicks': !exists(json, 'RunTimeTicks') ? undefined : json['RunTimeTicks'],
        'playAccess': !exists(json, 'PlayAccess') ? undefined : PlayAccessFromJSON(json['PlayAccess']),
        'aspectRatio': !exists(json, 'AspectRatio') ? undefined : json['AspectRatio'],
        'productionYear': !exists(json, 'ProductionYear') ? undefined : json['ProductionYear'],
        'isPlaceHolder': !exists(json, 'IsPlaceHolder') ? undefined : json['IsPlaceHolder'],
        'number': !exists(json, 'Number') ? undefined : json['Number'],
        'channelNumber': !exists(json, 'ChannelNumber') ? undefined : json['ChannelNumber'],
        'indexNumber': !exists(json, 'IndexNumber') ? undefined : json['IndexNumber'],
        'indexNumberEnd': !exists(json, 'IndexNumberEnd') ? undefined : json['IndexNumberEnd'],
        'parentIndexNumber': !exists(json, 'ParentIndexNumber') ? undefined : json['ParentIndexNumber'],
        'remoteTrailers': !exists(json, 'RemoteTrailers') ? undefined : (json['RemoteTrailers'] === null ? null : (json['RemoteTrailers'] as Array<any>).map(MediaUrlFromJSON)),
        'providerIds': !exists(json, 'ProviderIds') ? undefined : json['ProviderIds'],
        'isHD': !exists(json, 'IsHD') ? undefined : json['IsHD'],
        'isFolder': !exists(json, 'IsFolder') ? undefined : json['IsFolder'],
        'parentId': !exists(json, 'ParentId') ? undefined : json['ParentId'],
        'type': !exists(json, 'Type') ? undefined : BaseItemKindFromJSON(json['Type']),
        'people': !exists(json, 'People') ? undefined : (json['People'] === null ? null : (json['People'] as Array<any>).map(BaseItemPersonFromJSON)),
        'studios': !exists(json, 'Studios') ? undefined : (json['Studios'] === null ? null : (json['Studios'] as Array<any>).map(NameGuidPairFromJSON)),
        'genreItems': !exists(json, 'GenreItems') ? undefined : (json['GenreItems'] === null ? null : (json['GenreItems'] as Array<any>).map(NameGuidPairFromJSON)),
        'parentLogoItemId': !exists(json, 'ParentLogoItemId') ? undefined : json['ParentLogoItemId'],
        'parentBackdropItemId': !exists(json, 'ParentBackdropItemId') ? undefined : json['ParentBackdropItemId'],
        'parentBackdropImageTags': !exists(json, 'ParentBackdropImageTags') ? undefined : json['ParentBackdropImageTags'],
        'localTrailerCount': !exists(json, 'LocalTrailerCount') ? undefined : json['LocalTrailerCount'],
        'userData': !exists(json, 'UserData') ? undefined : BaseItemDtoUserDataFromJSON(json['UserData']),
        'recursiveItemCount': !exists(json, 'RecursiveItemCount') ? undefined : json['RecursiveItemCount'],
        'childCount': !exists(json, 'ChildCount') ? undefined : json['ChildCount'],
        'seriesName': !exists(json, 'SeriesName') ? undefined : json['SeriesName'],
        'seriesId': !exists(json, 'SeriesId') ? undefined : json['SeriesId'],
        'seasonId': !exists(json, 'SeasonId') ? undefined : json['SeasonId'],
        'specialFeatureCount': !exists(json, 'SpecialFeatureCount') ? undefined : json['SpecialFeatureCount'],
        'displayPreferencesId': !exists(json, 'DisplayPreferencesId') ? undefined : json['DisplayPreferencesId'],
        'status': !exists(json, 'Status') ? undefined : json['Status'],
        'airTime': !exists(json, 'AirTime') ? undefined : json['AirTime'],
        'airDays': !exists(json, 'AirDays') ? undefined : (json['AirDays'] === null ? null : (json['AirDays'] as Array<any>).map(DayOfWeekFromJSON)),
        'tags': !exists(json, 'Tags') ? undefined : json['Tags'],
        'primaryImageAspectRatio': !exists(json, 'PrimaryImageAspectRatio') ? undefined : json['PrimaryImageAspectRatio'],
        'artists': !exists(json, 'Artists') ? undefined : json['Artists'],
        'artistItems': !exists(json, 'ArtistItems') ? undefined : (json['ArtistItems'] === null ? null : (json['ArtistItems'] as Array<any>).map(NameGuidPairFromJSON)),
        'album': !exists(json, 'Album') ? undefined : json['Album'],
        'collectionType': !exists(json, 'CollectionType') ? undefined : json['CollectionType'],
        'displayOrder': !exists(json, 'DisplayOrder') ? undefined : json['DisplayOrder'],
        'albumId': !exists(json, 'AlbumId') ? undefined : json['AlbumId'],
        'albumPrimaryImageTag': !exists(json, 'AlbumPrimaryImageTag') ? undefined : json['AlbumPrimaryImageTag'],
        'seriesPrimaryImageTag': !exists(json, 'SeriesPrimaryImageTag') ? undefined : json['SeriesPrimaryImageTag'],
        'albumArtist': !exists(json, 'AlbumArtist') ? undefined : json['AlbumArtist'],
        'albumArtists': !exists(json, 'AlbumArtists') ? undefined : (json['AlbumArtists'] === null ? null : (json['AlbumArtists'] as Array<any>).map(NameGuidPairFromJSON)),
        'seasonName': !exists(json, 'SeasonName') ? undefined : json['SeasonName'],
        'mediaStreams': !exists(json, 'MediaStreams') ? undefined : (json['MediaStreams'] === null ? null : (json['MediaStreams'] as Array<any>).map(MediaStreamFromJSON)),
        'videoType': !exists(json, 'VideoType') ? undefined : VideoTypeFromJSON(json['VideoType']),
        'partCount': !exists(json, 'PartCount') ? undefined : json['PartCount'],
        'mediaSourceCount': !exists(json, 'MediaSourceCount') ? undefined : json['MediaSourceCount'],
        'imageTags': !exists(json, 'ImageTags') ? undefined : json['ImageTags'],
        'backdropImageTags': !exists(json, 'BackdropImageTags') ? undefined : json['BackdropImageTags'],
        'screenshotImageTags': !exists(json, 'ScreenshotImageTags') ? undefined : json['ScreenshotImageTags'],
        'parentLogoImageTag': !exists(json, 'ParentLogoImageTag') ? undefined : json['ParentLogoImageTag'],
        'parentArtItemId': !exists(json, 'ParentArtItemId') ? undefined : json['ParentArtItemId'],
        'parentArtImageTag': !exists(json, 'ParentArtImageTag') ? undefined : json['ParentArtImageTag'],
        'seriesThumbImageTag': !exists(json, 'SeriesThumbImageTag') ? undefined : json['SeriesThumbImageTag'],
        'imageBlurHashes': !exists(json, 'ImageBlurHashes') ? undefined : BaseItemDtoImageBlurHashesFromJSON(json['ImageBlurHashes']),
        'seriesStudio': !exists(json, 'SeriesStudio') ? undefined : json['SeriesStudio'],
        'parentThumbItemId': !exists(json, 'ParentThumbItemId') ? undefined : json['ParentThumbItemId'],
        'parentThumbImageTag': !exists(json, 'ParentThumbImageTag') ? undefined : json['ParentThumbImageTag'],
        'parentPrimaryImageItemId': !exists(json, 'ParentPrimaryImageItemId') ? undefined : json['ParentPrimaryImageItemId'],
        'parentPrimaryImageTag': !exists(json, 'ParentPrimaryImageTag') ? undefined : json['ParentPrimaryImageTag'],
        'chapters': !exists(json, 'Chapters') ? undefined : (json['Chapters'] === null ? null : (json['Chapters'] as Array<any>).map(ChapterInfoFromJSON)),
        'locationType': !exists(json, 'LocationType') ? undefined : LocationTypeFromJSON(json['LocationType']),
        'isoType': !exists(json, 'IsoType') ? undefined : IsoTypeFromJSON(json['IsoType']),
        'mediaType': !exists(json, 'MediaType') ? undefined : json['MediaType'],
        'endDate': !exists(json, 'EndDate') ? undefined : (json['EndDate'] === null ? null : new Date(json['EndDate'])),
        'lockedFields': !exists(json, 'LockedFields') ? undefined : (json['LockedFields'] === null ? null : (json['LockedFields'] as Array<any>).map(MetadataFieldFromJSON)),
        'trailerCount': !exists(json, 'TrailerCount') ? undefined : json['TrailerCount'],
        'movieCount': !exists(json, 'MovieCount') ? undefined : json['MovieCount'],
        'seriesCount': !exists(json, 'SeriesCount') ? undefined : json['SeriesCount'],
        'programCount': !exists(json, 'ProgramCount') ? undefined : json['ProgramCount'],
        'episodeCount': !exists(json, 'EpisodeCount') ? undefined : json['EpisodeCount'],
        'songCount': !exists(json, 'SongCount') ? undefined : json['SongCount'],
        'albumCount': !exists(json, 'AlbumCount') ? undefined : json['AlbumCount'],
        'artistCount': !exists(json, 'ArtistCount') ? undefined : json['ArtistCount'],
        'musicVideoCount': !exists(json, 'MusicVideoCount') ? undefined : json['MusicVideoCount'],
        'lockData': !exists(json, 'LockData') ? undefined : json['LockData'],
        'width': !exists(json, 'Width') ? undefined : json['Width'],
        'height': !exists(json, 'Height') ? undefined : json['Height'],
        'cameraMake': !exists(json, 'CameraMake') ? undefined : json['CameraMake'],
        'cameraModel': !exists(json, 'CameraModel') ? undefined : json['CameraModel'],
        'software': !exists(json, 'Software') ? undefined : json['Software'],
        'exposureTime': !exists(json, 'ExposureTime') ? undefined : json['ExposureTime'],
        'focalLength': !exists(json, 'FocalLength') ? undefined : json['FocalLength'],
        'imageOrientation': !exists(json, 'ImageOrientation') ? undefined : ImageOrientationFromJSON(json['ImageOrientation']),
        'aperture': !exists(json, 'Aperture') ? undefined : json['Aperture'],
        'shutterSpeed': !exists(json, 'ShutterSpeed') ? undefined : json['ShutterSpeed'],
        'latitude': !exists(json, 'Latitude') ? undefined : json['Latitude'],
        'longitude': !exists(json, 'Longitude') ? undefined : json['Longitude'],
        'altitude': !exists(json, 'Altitude') ? undefined : json['Altitude'],
        'isoSpeedRating': !exists(json, 'IsoSpeedRating') ? undefined : json['IsoSpeedRating'],
        'seriesTimerId': !exists(json, 'SeriesTimerId') ? undefined : json['SeriesTimerId'],
        'programId': !exists(json, 'ProgramId') ? undefined : json['ProgramId'],
        'channelPrimaryImageTag': !exists(json, 'ChannelPrimaryImageTag') ? undefined : json['ChannelPrimaryImageTag'],
        'startDate': !exists(json, 'StartDate') ? undefined : (json['StartDate'] === null ? null : new Date(json['StartDate'])),
        'completionPercentage': !exists(json, 'CompletionPercentage') ? undefined : json['CompletionPercentage'],
        'isRepeat': !exists(json, 'IsRepeat') ? undefined : json['IsRepeat'],
        'episodeTitle': !exists(json, 'EpisodeTitle') ? undefined : json['EpisodeTitle'],
        'channelType': !exists(json, 'ChannelType') ? undefined : ChannelTypeFromJSON(json['ChannelType']),
        'audio': !exists(json, 'Audio') ? undefined : ProgramAudioFromJSON(json['Audio']),
        'isMovie': !exists(json, 'IsMovie') ? undefined : json['IsMovie'],
        'isSports': !exists(json, 'IsSports') ? undefined : json['IsSports'],
        'isSeries': !exists(json, 'IsSeries') ? undefined : json['IsSeries'],
        'isLive': !exists(json, 'IsLive') ? undefined : json['IsLive'],
        'isNews': !exists(json, 'IsNews') ? undefined : json['IsNews'],
        'isKids': !exists(json, 'IsKids') ? undefined : json['IsKids'],
        'isPremiere': !exists(json, 'IsPremiere') ? undefined : json['IsPremiere'],
        'timerId': !exists(json, 'TimerId') ? undefined : json['TimerId'],
        'currentProgram': !exists(json, 'CurrentProgram') ? undefined : BaseItemDtoCurrentProgramFromJSON(json['CurrentProgram']),
    };
}

export function UpdateItemRequestToJSON(value?: UpdateItemRequest | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'Name': value.name,
        'OriginalTitle': value.originalTitle,
        'ServerId': value.serverId,
        'Id': value.id,
        'Etag': value.etag,
        'SourceType': value.sourceType,
        'PlaylistItemId': value.playlistItemId,
        'DateCreated': value.dateCreated === undefined ? undefined : (value.dateCreated === null ? null : value.dateCreated.toISOString()),
        'DateLastMediaAdded': value.dateLastMediaAdded === undefined ? undefined : (value.dateLastMediaAdded === null ? null : value.dateLastMediaAdded.toISOString()),
        'ExtraType': value.extraType,
        'AirsBeforeSeasonNumber': value.airsBeforeSeasonNumber,
        'AirsAfterSeasonNumber': value.airsAfterSeasonNumber,
        'AirsBeforeEpisodeNumber': value.airsBeforeEpisodeNumber,
        'CanDelete': value.canDelete,
        'CanDownload': value.canDownload,
        'HasSubtitles': value.hasSubtitles,
        'PreferredMetadataLanguage': value.preferredMetadataLanguage,
        'PreferredMetadataCountryCode': value.preferredMetadataCountryCode,
        'SupportsSync': value.supportsSync,
        'Container': value.container,
        'SortName': value.sortName,
        'ForcedSortName': value.forcedSortName,
        'Video3DFormat': Video3DFormatToJSON(value.video3DFormat),
        'PremiereDate': value.premiereDate === undefined ? undefined : (value.premiereDate === null ? null : value.premiereDate.toISOString()),
        'ExternalUrls': value.externalUrls === undefined ? undefined : (value.externalUrls === null ? null : (value.externalUrls as Array<any>).map(ExternalUrlToJSON)),
        'MediaSources': value.mediaSources === undefined ? undefined : (value.mediaSources === null ? null : (value.mediaSources as Array<any>).map(MediaSourceInfoToJSON)),
        'CriticRating': value.criticRating,
        'ProductionLocations': value.productionLocations,
        'Path': value.path,
        'EnableMediaSourceDisplay': value.enableMediaSourceDisplay,
        'OfficialRating': value.officialRating,
        'CustomRating': value.customRating,
        'ChannelId': value.channelId,
        'ChannelName': value.channelName,
        'Overview': value.overview,
        'Taglines': value.taglines,
        'Genres': value.genres,
        'CommunityRating': value.communityRating,
        'CumulativeRunTimeTicks': value.cumulativeRunTimeTicks,
        'RunTimeTicks': value.runTimeTicks,
        'PlayAccess': PlayAccessToJSON(value.playAccess),
        'AspectRatio': value.aspectRatio,
        'ProductionYear': value.productionYear,
        'IsPlaceHolder': value.isPlaceHolder,
        'Number': value.number,
        'ChannelNumber': value.channelNumber,
        'IndexNumber': value.indexNumber,
        'IndexNumberEnd': value.indexNumberEnd,
        'ParentIndexNumber': value.parentIndexNumber,
        'RemoteTrailers': value.remoteTrailers === undefined ? undefined : (value.remoteTrailers === null ? null : (value.remoteTrailers as Array<any>).map(MediaUrlToJSON)),
        'ProviderIds': value.providerIds,
        'IsHD': value.isHD,
        'IsFolder': value.isFolder,
        'ParentId': value.parentId,
        'Type': BaseItemKindToJSON(value.type),
        'People': value.people === undefined ? undefined : (value.people === null ? null : (value.people as Array<any>).map(BaseItemPersonToJSON)),
        'Studios': value.studios === undefined ? undefined : (value.studios === null ? null : (value.studios as Array<any>).map(NameGuidPairToJSON)),
        'GenreItems': value.genreItems === undefined ? undefined : (value.genreItems === null ? null : (value.genreItems as Array<any>).map(NameGuidPairToJSON)),
        'ParentLogoItemId': value.parentLogoItemId,
        'ParentBackdropItemId': value.parentBackdropItemId,
        'ParentBackdropImageTags': value.parentBackdropImageTags,
        'LocalTrailerCount': value.localTrailerCount,
        'UserData': BaseItemDtoUserDataToJSON(value.userData),
        'RecursiveItemCount': value.recursiveItemCount,
        'ChildCount': value.childCount,
        'SeriesName': value.seriesName,
        'SeriesId': value.seriesId,
        'SeasonId': value.seasonId,
        'SpecialFeatureCount': value.specialFeatureCount,
        'DisplayPreferencesId': value.displayPreferencesId,
        'Status': value.status,
        'AirTime': value.airTime,
        'AirDays': value.airDays === undefined ? undefined : (value.airDays === null ? null : (value.airDays as Array<any>).map(DayOfWeekToJSON)),
        'Tags': value.tags,
        'PrimaryImageAspectRatio': value.primaryImageAspectRatio,
        'Artists': value.artists,
        'ArtistItems': value.artistItems === undefined ? undefined : (value.artistItems === null ? null : (value.artistItems as Array<any>).map(NameGuidPairToJSON)),
        'Album': value.album,
        'CollectionType': value.collectionType,
        'DisplayOrder': value.displayOrder,
        'AlbumId': value.albumId,
        'AlbumPrimaryImageTag': value.albumPrimaryImageTag,
        'SeriesPrimaryImageTag': value.seriesPrimaryImageTag,
        'AlbumArtist': value.albumArtist,
        'AlbumArtists': value.albumArtists === undefined ? undefined : (value.albumArtists === null ? null : (value.albumArtists as Array<any>).map(NameGuidPairToJSON)),
        'SeasonName': value.seasonName,
        'MediaStreams': value.mediaStreams === undefined ? undefined : (value.mediaStreams === null ? null : (value.mediaStreams as Array<any>).map(MediaStreamToJSON)),
        'VideoType': VideoTypeToJSON(value.videoType),
        'PartCount': value.partCount,
        'MediaSourceCount': value.mediaSourceCount,
        'ImageTags': value.imageTags,
        'BackdropImageTags': value.backdropImageTags,
        'ScreenshotImageTags': value.screenshotImageTags,
        'ParentLogoImageTag': value.parentLogoImageTag,
        'ParentArtItemId': value.parentArtItemId,
        'ParentArtImageTag': value.parentArtImageTag,
        'SeriesThumbImageTag': value.seriesThumbImageTag,
        'ImageBlurHashes': BaseItemDtoImageBlurHashesToJSON(value.imageBlurHashes),
        'SeriesStudio': value.seriesStudio,
        'ParentThumbItemId': value.parentThumbItemId,
        'ParentThumbImageTag': value.parentThumbImageTag,
        'ParentPrimaryImageItemId': value.parentPrimaryImageItemId,
        'ParentPrimaryImageTag': value.parentPrimaryImageTag,
        'Chapters': value.chapters === undefined ? undefined : (value.chapters === null ? null : (value.chapters as Array<any>).map(ChapterInfoToJSON)),
        'LocationType': LocationTypeToJSON(value.locationType),
        'IsoType': IsoTypeToJSON(value.isoType),
        'MediaType': value.mediaType,
        'EndDate': value.endDate === undefined ? undefined : (value.endDate === null ? null : value.endDate.toISOString()),
        'LockedFields': value.lockedFields === undefined ? undefined : (value.lockedFields === null ? null : (value.lockedFields as Array<any>).map(MetadataFieldToJSON)),
        'TrailerCount': value.trailerCount,
        'MovieCount': value.movieCount,
        'SeriesCount': value.seriesCount,
        'ProgramCount': value.programCount,
        'EpisodeCount': value.episodeCount,
        'SongCount': value.songCount,
        'AlbumCount': value.albumCount,
        'ArtistCount': value.artistCount,
        'MusicVideoCount': value.musicVideoCount,
        'LockData': value.lockData,
        'Width': value.width,
        'Height': value.height,
        'CameraMake': value.cameraMake,
        'CameraModel': value.cameraModel,
        'Software': value.software,
        'ExposureTime': value.exposureTime,
        'FocalLength': value.focalLength,
        'ImageOrientation': ImageOrientationToJSON(value.imageOrientation),
        'Aperture': value.aperture,
        'ShutterSpeed': value.shutterSpeed,
        'Latitude': value.latitude,
        'Longitude': value.longitude,
        'Altitude': value.altitude,
        'IsoSpeedRating': value.isoSpeedRating,
        'SeriesTimerId': value.seriesTimerId,
        'ProgramId': value.programId,
        'ChannelPrimaryImageTag': value.channelPrimaryImageTag,
        'StartDate': value.startDate === undefined ? undefined : (value.startDate === null ? null : value.startDate.toISOString()),
        'CompletionPercentage': value.completionPercentage,
        'IsRepeat': value.isRepeat,
        'EpisodeTitle': value.episodeTitle,
        'ChannelType': ChannelTypeToJSON(value.channelType),
        'Audio': ProgramAudioToJSON(value.audio),
        'IsMovie': value.isMovie,
        'IsSports': value.isSports,
        'IsSeries': value.isSeries,
        'IsLive': value.isLive,
        'IsNews': value.isNews,
        'IsKids': value.isKids,
        'IsPremiere': value.isPremiere,
        'TimerId': value.timerId,
        'CurrentProgram': BaseItemDtoCurrentProgramToJSON(value.currentProgram),
    };
}

