Files
ersatztv/web/src/api/generated/v1.d.ts
T
timothyandClaude Fable 5 cf36c30997
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 4m23s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m54s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
fix(api): rework from-lineup to generated playlist design + review fixes (#63)
Adversarial review found the previous multi-flood design non-viable:
PlayoutModeSchedulerFlood never yields to a following Dynamic-start
schedule item, so only the first item ever played, and grouping
media items into a Collection silently dropped the requested order.

Redesign:
- Single-item lineup: one ProgramScheduleItemFlood referencing the
  target directly (media item / collection / smart / multi / rerun /
  playlist); no generated collection or playlist. Response PlaylistId
  is null.
- Multi-item lineup (>= 2): one generated IsSystem Playlist in a
  get-or-created IsSystem PlaylistGroup ("Channel Lineups"), one
  PlaylistItem per entry in lineup order with PlayAll=true, referenced
  by a single Flood schedule item. Rerun collections and playlists are
  rejected (422) in multi lineups (PlaylistItem/CollectionKey lack the
  fields to enumerate them).

Review fixes:
- Normalize + strict-validate MediaType<->CollectionType pairs once up
  front (422 on mismatch / wrong id / not exactly one id).
- Reject MultiCollection with non-Shuffle order (mirrors
  PlayoutModeMustBeValid), Mirror playout source, all via 422.
- OnDemand parity: queue TimeShiftOnDemandPlayout post-commit.
- De-collide generated ProgramSchedule and Playlist names against their
  unique indexes instead of leaking a UNIQUE-constraint DbUpdateException.
- Generic 422 on save failure + ILogger; AnyAsync existence checks;
  Either/Validation unwrap via Match; XML doc on request DTO + endpoint.
- Response model: ChannelId, PlaylistId (nullable), ProgramScheduleId,
  PlayoutId (CollectionId removed). Regenerated OpenAPI v1.json + v1.d.ts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 21:09:00 +02:00

805 lines
32 KiB
TypeScript

// This file is generated by web/scripts/generate-openapi-types.mjs.
// Do not edit by hand.
export interface components {
schemas: {
"AddItemsToCollectionRequest": {
"movieIds": null | Array<number>;
"showIds": null | Array<number>;
"seasonIds": null | Array<number>;
"episodeIds": null | Array<number>;
"artistIds": null | Array<number>;
"musicVideoIds": null | Array<number>;
"otherVideoIds": null | Array<number>;
"songIds": null | Array<number>;
"imageIds": null | Array<number>;
"remoteStreamIds": null | Array<number>;
};
"ArtworkContentTypeModel": {
"path": null | string;
"contentType": null | string;
"isExternalUrl"?: boolean;
"hasContentType"?: boolean;
"urlWithContentType"?: null | string;
};
"ArtworkUploadResponseModel": {
"path": string;
"contentType": string;
};
"BulkDeleteChannelsRequest": {
"channelIds": Array<number>;
};
"BulkMoveChannelsToGroupRequest": {
"channelIds": Array<number>;
"group": string;
};
"BulkRenumberChannelRequest": {
"id": number;
"number": string;
};
"BulkRenumberChannelsRequest": {
"channels": Array<components["schemas"]["BulkRenumberChannelRequest"]>;
};
"ChannelGuideChannelResponseModel": {
"number": string;
"name": string;
"programmes": Array<components["schemas"]["ChannelGuideProgrammeResponseModel"]>;
};
"ChannelGuideProgrammeResponseModel": {
"start": string;
"stop": string;
"title": string;
"subTitle": null | string;
"category": null | string;
"fillerKind": components["schemas"]["FillerKind"];
};
"ChannelGuideResponseModel": {
"start": string;
"end": string;
"channels": Array<components["schemas"]["ChannelGuideChannelResponseModel"]>;
};
"ChannelIdleBehavior": "StopOnDisconnect" | "KeepRunning";
"ChannelMusicVideoCreditsMode": "None" | "GenerateSubtitles";
"ChannelNowPlayingResponseModel": {
"title": string;
"startUtc": string;
"finishUtc": string;
};
"ChannelPlayoutMode": "Continuous" | "OnDemand";
"ChannelPlayoutSource": "Generated" | "Mirror";
"ChannelResponseModel": {
"id": number;
"number": string;
"sortNumber": number;
"name": string;
"group": string;
"categories": string;
"fFmpegProfile": string;
"language": string;
"streamingMode": string;
"isEnabled": boolean;
"showInEpg": boolean;
};
"ChannelSongVideoMode": "Default" | "WithProgress";
"ChannelStateResponseModel": {
"channelId": number;
"channelNumber": string;
"onAir": boolean;
"nowPlaying": null | components["schemas"]["ChannelNowPlayingResponseModel"];
};
"ChannelStreamSelectorMode": "Default" | "Custom" | "Troubleshooting";
"ChannelSubtitleMode": "None" | "Forced" | "Default" | "Any";
"ChannelTemplateResponseModel": {
"id": number;
"name": string;
"description": string;
"isSystem": boolean;
"isDefault": boolean;
"fFmpegProfileId": number;
"watermarkId": null | number;
"fallbackFillerId": null | number;
"preRollFillerId": null | number;
"midRollFillerId": null | number;
"postRollFillerId": null | number;
"streamSelectorMode": components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector": null | string;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"playoutSource": components["schemas"]["ChannelPlayoutSource"];
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"streamingMode": components["schemas"]["StreamingMode"];
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode": components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate": null | string;
"songVideoMode": components["schemas"]["ChannelSongVideoMode"];
"transcodeMode": components["schemas"]["ChannelTranscodeMode"];
"idleBehavior": components["schemas"]["ChannelIdleBehavior"];
"shuffleScheduleItems": boolean;
"randomStartPoint": boolean;
"fixedStartTimeBehavior": components["schemas"]["FixedStartTimeBehavior"];
};
"ChannelTranscodeMode": "OnDemand";
"ChannelViewModel": {
"id": number;
"number": null | string;
"name": null | string;
"group": null | string;
"categories": null | string;
"fFmpegProfileId": number;
"slugSeconds": null | number;
"logo": components["schemas"]["ArtworkContentTypeModel"];
"streamSelectorMode": components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector": null | string;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"playoutSource": components["schemas"]["ChannelPlayoutSource"];
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"mirrorSourceChannelId": null | number;
"playoutOffset": null | string;
"streamingMode": components["schemas"]["StreamingMode"];
"watermarkId": null | number;
"fallbackFillerId": null | number;
"playoutCount": number;
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode": components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate": null | string;
"songVideoMode": components["schemas"]["ChannelSongVideoMode"];
"transcodeMode": components["schemas"]["ChannelTranscodeMode"];
"idleBehavior": components["schemas"]["ChannelIdleBehavior"];
"isEnabled": boolean;
"showInEpg": boolean;
"webEncodedName"?: null | string;
};
"ChannelWatermarkImageSource": "Custom" | "ChannelLogo" | "Resource";
"ChannelWatermarkMode": "None" | "Permanent" | "Intermittent" | "OpacityExpression";
"CollectionType": "Collection" | "TelevisionShow" | "TelevisionSeason" | "Artist" | "MultiCollection" | "SmartCollection" | "Playlist" | "RerunFirstRun" | "RerunRerun" | "SearchQuery" | "Movie" | "Episode" | "MusicVideo" | "OtherVideo" | "Song" | "Image" | "RemoteStream" | "FakeCollection" | "FakePlaylistItem";
"CombinedVersion": {
"apiVersion": number;
"appVersion": null | string;
};
"CreateChannelFromLineupAdvancedOptionsRequest": {
"playbackOrder"?: null | components["schemas"]["PlaybackOrder"];
"fFmpegProfileId"?: null | number;
"watermarkId"?: null | number;
"fallbackFillerId"?: null | number;
"preRollFillerId"?: null | number;
"midRollFillerId"?: null | number;
"postRollFillerId"?: null | number;
"streamSelectorMode"?: null | components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector"?: null | string;
"preferredAudioLanguageCode"?: null | string;
"preferredAudioTitle"?: null | string;
"playoutSource"?: null | components["schemas"]["ChannelPlayoutSource"];
"playoutMode"?: null | components["schemas"]["ChannelPlayoutMode"];
"streamingMode"?: null | components["schemas"]["StreamingMode"];
"preferredSubtitleLanguageCode"?: null | string;
"subtitleMode"?: null | components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode"?: null | components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate"?: null | string;
"songVideoMode"?: null | components["schemas"]["ChannelSongVideoMode"];
"transcodeMode"?: null | components["schemas"]["ChannelTranscodeMode"];
"idleBehavior"?: null | components["schemas"]["ChannelIdleBehavior"];
"shuffleScheduleItems"?: null | boolean;
"randomStartPoint"?: null | boolean;
"fixedStartTimeBehavior"?: null | components["schemas"]["FixedStartTimeBehavior"];
};
"CreateChannelFromLineupItemRequest": {
"mediaType": components["schemas"]["LibraryBrowseMediaType"];
"collectionType": components["schemas"]["CollectionType"];
"collectionId": null | number;
"multiCollectionId": null | number;
"smartCollectionId": null | number;
"rerunCollectionId": null | number;
"mediaItemId": null | number;
"playlistId": null | number;
};
"CreateChannelFromLineupRequest": {
"name": string;
"number": string;
"group": string;
"categories": string;
"logo": components["schemas"]["ArtworkContentTypeModel"];
"isEnabled": boolean;
"showInEpg": boolean;
"templateId": number;
"advanced": null | components["schemas"]["CreateChannelFromLineupAdvancedOptionsRequest"];
"lineup": Array<components["schemas"]["CreateChannelFromLineupItemRequest"]>;
};
"CreateChannelFromLineupResponseModel": {
"channelId": number;
"playlistId": null | number;
"programScheduleId": number;
"playoutId": number;
};
"CreateChannelRequest": {
"name": null | string;
"number": null | string;
"group": null | string;
"categories": null | string;
"fFmpegProfileId": number;
"slugSeconds": null | number;
"logo": components["schemas"]["ArtworkContentTypeModel"];
"streamSelectorMode": components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector": null | string;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"playoutSource": components["schemas"]["ChannelPlayoutSource"];
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"mirrorSourceChannelId": null | number;
"playoutOffset": null | string;
"streamingMode": components["schemas"]["StreamingMode"];
"watermarkId": null | number;
"fallbackFillerId": null | number;
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode": components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate": null | string;
"songVideoMode": components["schemas"]["ChannelSongVideoMode"];
"transcodeMode": components["schemas"]["ChannelTranscodeMode"];
"idleBehavior": components["schemas"]["ChannelIdleBehavior"];
"isEnabled": boolean;
"showInEpg": boolean;
};
"CreateChannelTemplateRequest": {
"name": string;
"description": string;
"fFmpegProfileId": number;
"watermarkId": null | number;
"fallbackFillerId": null | number;
"preRollFillerId": null | number;
"midRollFillerId": null | number;
"postRollFillerId": null | number;
"streamSelectorMode": components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector": null | string;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"playoutSource": components["schemas"]["ChannelPlayoutSource"];
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"streamingMode": components["schemas"]["StreamingMode"];
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode": components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate": null | string;
"songVideoMode": components["schemas"]["ChannelSongVideoMode"];
"transcodeMode": components["schemas"]["ChannelTranscodeMode"];
"idleBehavior": components["schemas"]["ChannelIdleBehavior"];
"shuffleScheduleItems": boolean;
"randomStartPoint": boolean;
"fixedStartTimeBehavior": components["schemas"]["FixedStartTimeBehavior"];
};
"CreateCollectionRequest": {
"name": null | string;
};
"CreateFFmpegProfileRequest": {
"name": null | string;
"threadCount": number;
"normalizeAudio": boolean;
"normalizeVideo": boolean;
"hardwareAcceleration": components["schemas"]["HardwareAccelerationKind"];
"vaapiDisplay": null | string;
"vaapiDriver": components["schemas"]["VaapiDriver"];
"vaapiDevice": null | string;
"qsvExtraHardwareFrames": null | number;
"resolutionId": number;
"scalingBehavior": components["schemas"]["ScalingBehavior"];
"padMode": components["schemas"]["FilterMode"];
"videoFormat": components["schemas"]["FFmpegProfileVideoFormat"];
"videoProfile": null | string;
"videoPreset": null | string;
"allowBFrames": boolean;
"bitDepth": components["schemas"]["FFmpegProfileBitDepth"];
"videoBitrate": number;
"videoBufferSize": number;
"tonemapAlgorithm": components["schemas"]["FFmpegProfileTonemapAlgorithm"];
"audioFormat": components["schemas"]["FFmpegProfileAudioFormat"];
"audioBitrate": number;
"audioBufferSize": number;
"normalizeLoudnessMode": components["schemas"]["NormalizeLoudnessMode"];
"targetLoudness": null | number;
"audioChannels": number;
"audioSampleRate": number;
"normalizeFramerate": boolean;
"normalizeColors": boolean;
"deinterlaceVideo": boolean;
};
"CreatePlayoutRequest": {
"channelId": number;
"programScheduleId": number;
};
"CreateScheduleRequest": {
"name": null | string;
"keepMultiPartEpisodesTogether": boolean;
"treatCollectionsAsShows": boolean;
"shuffleScheduleItems": boolean;
"randomStartPoint": boolean;
"fixedStartTimeBehavior": components["schemas"]["FixedStartTimeBehavior"];
};
"CreateSmartCollectionRequest": {
"name": null | string;
"query": null | string;
};
"FFmpegFullProfileResponseModel": {
"id": number;
"name": null | string;
"threadCount": number;
"hardwareAcceleration": components["schemas"]["HardwareAccelerationKind"];
"vaapiDisplay": null | string;
"vaapiDriver": components["schemas"]["VaapiDriver"];
"vaapiDevice": null | string;
"qsvExtraHardwareFrames": null | number;
"resolution": null | string;
"scalingBehavior": components["schemas"]["ScalingBehavior"];
"videoFormat": components["schemas"]["FFmpegProfileVideoFormat"];
"videoProfile": null | string;
"videoPreset": null | string;
"allowBFrames": boolean;
"bitDepth": components["schemas"]["FFmpegProfileBitDepth"];
"videoBitrate": number;
"videoBufferSize": number;
"tonemapAlgorithm": components["schemas"]["FFmpegProfileTonemapAlgorithm"];
"audioFormat": components["schemas"]["FFmpegProfileAudioFormat"];
"audioBitrate": number;
"audioBufferSize": number;
"normalizeLoudnessMode": components["schemas"]["NormalizeLoudnessMode"];
"audioChannels": number;
"audioSampleRate": number;
"normalizeFramerate": boolean;
"deinterlaceVideo": null | boolean;
};
"FFmpegProfileAudioFormat": "None" | "Aac" | "Ac3" | "AacLatm" | "Copy";
"FFmpegProfileBitDepth": "EightBit" | "TenBit";
"FFmpegProfileTonemapAlgorithm": "Linear" | "Clip" | "Gamma" | "Reinhard" | "Mobius" | "Hable";
"FFmpegProfileVideoFormat": "None" | "H264" | "Hevc" | "Mpeg2Video" | "Av1" | "Copy";
"FillerKind": "None" | "PreRoll" | "MidRoll" | "PostRoll" | "Tail" | "Fallback" | "GuideMode" | "DecoDefault";
"FillerMode": "None" | "Duration" | "Count" | "Pad" | "RandomCount";
"FillerPresetResponseModel": {
"id": number;
"name": null | string;
};
"FillerPresetViewModel": {
"id": number;
"name": null | string;
"fillerKind": components["schemas"]["FillerKind"];
"fillerMode": components["schemas"]["FillerMode"];
"duration": null | string;
"count": null | number;
"padToNearestMinute": null | number;
"allowWatermarks": boolean;
"collectionType": components["schemas"]["CollectionType"];
"collectionId": null | number;
"mediaItemId": null | number;
"multiCollectionId": null | number;
"smartCollectionId": null | number;
"playlist": components["schemas"]["PlaylistViewModel"];
"expression": null | string;
"useChaptersAsMediaItems": boolean;
};
"FillWithGroupMode": "None" | "FillWithOrderedGroups" | "FillWithShuffledGroups";
"FilterMode": "HardwareIfPossible" | "Software";
"FixedStartTimeBehavior": "Strict" | "Flexible";
"GraphicsElementResponseModel": {
"id": number;
"name": null | string;
};
"GraphicsElementViewModel": {
"id": number;
"name": null | string;
"fileName": null | string;
};
"GuideMode": "Normal" | "Filler";
"HardwareAccelerationKind": "None" | "Qsv" | "Nvenc" | "Vaapi" | "VideoToolbox" | "Amf" | "V4l2m2m" | "Rkmpp";
"HealthCheckResponseModel": {
"title": string;
"status": string;
"detail": string;
"link": null | string;
};
"HlsSessionModel": {
"channelNumber": null | string;
"state": null | string;
"transcodedUntil": string;
"lastAccess": string;
};
"IFormFile": string;
"LibraryBrowseItemResponseModel": {
"id": number;
"mediaType": components["schemas"]["LibraryBrowseMediaType"];
"title": string;
"libraryId": null | number;
"libraryName": null | string;
"artwork": string;
"duration": null | string;
"itemCount": null | number;
"collectionKind": null | string;
"collectionType": components["schemas"]["CollectionType"];
"collectionId": null | number;
"multiCollectionId": null | number;
"smartCollectionId": null | number;
"rerunCollectionId": null | number;
"mediaItemId": null | number;
"playlistId": null | number;
};
"LibraryBrowseMediaType": "Movie" | "TelevisionShow" | "TelevisionSeason" | "Artist" | "Collection" | "SmartCollection" | "MultiCollection" | "RerunCollection" | "Playlist";
"LibraryMediaKind": "Movies" | "Shows" | "MusicVideos" | "OtherVideos" | "Songs" | "Images" | "RemoteStreams";
"LibraryScanStatusResponseModel": {
"libraryId": number;
"percent": number;
};
"MarathonGroupBy": "None" | "Show" | "Season" | "Artist" | "Album" | "Director";
"MediaCollectionViewModel": {
"collectionType": components["schemas"]["CollectionType"];
"id": number;
"name": null | string;
"useCustomPlaybackOrder": boolean;
"mediaItemId"?: number;
"title"?: null | string;
"subtitle"?: null | string;
"sortTitle"?: null | string;
"poster"?: null | string;
"state": components["schemas"]["MediaItemState"];
"hasMediaInfo"?: boolean;
};
"MediaItemState": "Normal" | "FileNotFound" | "Unavailable" | "RemoteOnly";
"MediaSourceLibraryResponseModel": {
"id": number;
"name": string;
"mediaKind": components["schemas"]["LibraryMediaKind"];
"lastScan": null | string;
"itemCount": number;
};
"MediaSourceResponseModel": {
"id": number;
"kind": string;
"name": string;
"connectionAddress": null | string;
"libraries": Array<components["schemas"]["MediaSourceLibraryResponseModel"]>;
};
"MultiCollectionItemViewModel": {
"multiCollectionId": number;
"collection": components["schemas"]["MediaCollectionViewModel"];
"scheduleAsGroup": boolean;
"playbackOrder": components["schemas"]["PlaybackOrder"];
};
"MultiCollectionSmartItemViewModel": {
"multiCollectionId": number;
"smartCollection": components["schemas"]["SmartCollectionViewModel"];
"scheduleAsGroup": boolean;
"playbackOrder": components["schemas"]["PlaybackOrder"];
};
"MultiCollectionViewModel": {
"id": number;
"name": null | string;
"items": null | Array<components["schemas"]["MultiCollectionItemViewModel"]>;
"smartItems": null | Array<components["schemas"]["MultiCollectionSmartItemViewModel"]>;
};
"MultipleMode": "Count" | "CollectionSize" | "PlaylistItemSize" | "MultiEpisodeGroupSize";
"NamedMediaItemViewModel": {
"mediaItemId": number;
"name": null | string;
};
"NormalizeLoudnessMode": "Off" | "LoudNorm";
"PagedLibraryBrowseItemsResponseModel": {
"totalCount": number;
"page": Array<components["schemas"]["LibraryBrowseItemResponseModel"]>;
};
"PagedPlayoutItemsResponseModel": {
"totalCount": number;
"page": null | Array<components["schemas"]["PlayoutItemResponseModel"]>;
};
"PagedPlayoutsResponseModel": {
"totalCount": number;
"page": null | Array<components["schemas"]["PlayoutListItemResponseModel"]>;
};
"PlaybackOrder": "None" | "Chronological" | "Random" | "Shuffle" | "ShuffleInOrder" | "MultiEpisodeShuffle" | "SeasonEpisode" | "RandomRotation" | "Marathon";
"PlaylistViewModel": {
"id": number;
"playlistGroupId": number;
"name": null | string;
"isSystem": boolean;
};
"PlayoutBuildMode": "Continue" | "Refresh" | "Reset";
"PlayoutBuildStatusResponseModel": {
"lastBuild": string;
"success": boolean;
"message": null | string;
};
"PlayoutItemResponseModel": {
"title": null | string;
"start": string;
"finish": string;
"duration": null | string;
"fillerKind": null | components["schemas"]["FillerKind"];
};
"PlayoutListItemResponseModel": {
"id": number;
"channelNumber": string;
"channelName": string;
"scheduleKind": components["schemas"]["PlayoutScheduleKind"];
"scheduleName": string;
"dailyRebuildTime": null | string;
"buildStatus": null | components["schemas"]["PlayoutBuildStatusResponseModel"];
};
"PlayoutMode": "Flood" | "One" | "Multiple" | "Duration";
"PlayoutResponseModel": {
"id": number;
"scheduleKind": components["schemas"]["PlayoutScheduleKind"];
"channelName": string;
"channelNumber": string;
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"scheduleName": string;
"scheduleFile": null | string;
"dailyRebuildTime": null | string;
"buildStatus": null | components["schemas"]["PlayoutBuildStatusResponseModel"];
};
"PlayoutScheduleKind": "None" | "Classic" | "Block" | "Sequential" | "Scripted" | "ExternalJson";
"ProblemDetails": {
"type"?: null | string;
"title"?: null | string;
"status"?: null | number;
"detail"?: null | string;
"instance"?: null | string;
};
"ProgramScheduleItemsWithDurationViewModel": {
"items": null | Array<components["schemas"]["ProgramScheduleItemViewModel"]>;
"totalDurationEstimate": null | string;
};
"ProgramScheduleItemViewModel": {
"id"?: number;
"index"?: number;
"startType"?: components["schemas"]["StartType"];
"startTime"?: null | string;
"fixedStartTimeBehavior"?: null | components["schemas"]["FixedStartTimeBehavior"];
"playoutMode"?: components["schemas"]["PlayoutMode"];
"collectionType"?: components["schemas"]["CollectionType"];
"collection"?: components["schemas"]["MediaCollectionViewModel"];
"multiCollection"?: components["schemas"]["MultiCollectionViewModel"];
"smartCollection"?: components["schemas"]["SmartCollectionViewModel"];
"rerunCollection"?: components["schemas"]["RerunCollectionViewModel"];
"playlist"?: components["schemas"]["PlaylistViewModel"];
"mediaItem"?: components["schemas"]["NamedMediaItemViewModel"];
"searchTitle"?: null | string;
"searchQuery"?: null | string;
"playbackOrder"?: components["schemas"]["PlaybackOrder"];
"marathonGroupBy"?: components["schemas"]["MarathonGroupBy"];
"marathonShuffleGroups"?: boolean;
"marathonShuffleItems"?: boolean;
"marathonBatchSize"?: null | number;
"fillWithGroupMode"?: components["schemas"]["FillWithGroupMode"];
"customTitle"?: null | string;
"guideMode"?: components["schemas"]["GuideMode"];
"preRollFiller"?: components["schemas"]["FillerPresetViewModel"];
"midRollFiller"?: components["schemas"]["FillerPresetViewModel"];
"postRollFiller"?: components["schemas"]["FillerPresetViewModel"];
"tailFiller"?: components["schemas"]["FillerPresetViewModel"];
"fallbackFiller"?: components["schemas"]["FillerPresetViewModel"];
"watermarks"?: null | Array<components["schemas"]["WatermarkViewModel"]>;
"graphicsElements"?: null | Array<components["schemas"]["GraphicsElementViewModel"]>;
"preferredAudioLanguageCode"?: null | string;
"preferredAudioTitle"?: null | string;
"preferredSubtitleLanguageCode"?: null | string;
"subtitleMode"?: null | components["schemas"]["ChannelSubtitleMode"];
"durationEstimate"?: null | string;
"name"?: null | string;
};
"ProgramScheduleViewModel": {
"id": number;
"name": null | string;
"keepMultiPartEpisodesTogether": boolean;
"treatCollectionsAsShows": boolean;
"shuffleScheduleItems": boolean;
"randomStartPoint": boolean;
"fixedStartTimeBehavior": components["schemas"]["FixedStartTimeBehavior"];
};
"ReplaceScheduleItemsRequest": {
"items": null | Array<components["schemas"]["ScheduleItemRequest"]>;
};
"RerunCollectionViewModel": {
"id": number;
"name": null | string;
"collectionType": components["schemas"]["CollectionType"];
"collection": components["schemas"]["MediaCollectionViewModel"];
"multiCollection": components["schemas"]["MultiCollectionViewModel"];
"smartCollection": components["schemas"]["SmartCollectionViewModel"];
"mediaItem": components["schemas"]["NamedMediaItemViewModel"];
"firstRunPlaybackOrder": components["schemas"]["PlaybackOrder"];
"rerunPlaybackOrder": components["schemas"]["PlaybackOrder"];
};
"ResolutionViewModel": {
"id": number;
"name": null | string;
"width": number;
"height": number;
"isCustom": boolean;
};
"ScalingBehavior": "ScaleAndPad" | "Stretch" | "Crop";
"ScanShowRequest": {
"showTitle": null | string;
"deepScan"?: boolean;
};
"ScheduleItemRequest": {
"startType": components["schemas"]["StartType"];
"startTime": null | string;
"fixedStartTimeBehavior": null | components["schemas"]["FixedStartTimeBehavior"];
"playoutMode": components["schemas"]["PlayoutMode"];
"collectionType": components["schemas"]["CollectionType"];
"collectionId": null | number;
"multiCollectionId": null | number;
"smartCollectionId": null | number;
"rerunCollectionId": null | number;
"mediaItemId": null | number;
"playlistId": null | number;
"searchTitle": null | string;
"searchQuery": null | string;
"playbackOrder": components["schemas"]["PlaybackOrder"];
"marathonGroupBy": components["schemas"]["MarathonGroupBy"];
"marathonShuffleGroups": boolean;
"marathonShuffleItems": boolean;
"marathonBatchSize": null | number;
"fillWithGroupMode": components["schemas"]["FillWithGroupMode"];
"multipleMode": components["schemas"]["MultipleMode"];
"multipleCount": null | string;
"playoutDuration": null | string;
"tailMode": components["schemas"]["TailMode"];
"discardToFillAttempts": null | number;
"customTitle": null | string;
"guideMode": components["schemas"]["GuideMode"];
"preRollFillerId": null | number;
"midRollFillerId": null | number;
"postRollFillerId": null | number;
"tailFillerId": null | number;
"fallbackFillerId": null | number;
"watermarkIds": null | Array<number>;
"graphicsElementIds": null | Array<number>;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": null | components["schemas"]["ChannelSubtitleMode"];
};
"SmartCollectionResponseModel": {
"id": number;
"name": null | string;
"query": null | string;
};
"SmartCollectionViewModel": {
"id": number;
"name": null | string;
"query": null | string;
};
"StartType": "Dynamic" | "Fixed";
"StreamingMode": "TransportStream" | "HttpLiveStreamingDirect" | "HttpLiveStreamingSegmenter" | "TransportStreamHybrid";
"TailMode": "None" | "Offline" | "Slate" | "Filler";
"UpdateChannelRequest": {
"name": null | string;
"number": null | string;
"group": null | string;
"categories": null | string;
"fFmpegProfileId": number;
"slugSeconds": null | number;
"logo": components["schemas"]["ArtworkContentTypeModel"];
"streamSelectorMode": components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector": null | string;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"playoutSource": components["schemas"]["ChannelPlayoutSource"];
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"mirrorSourceChannelId": null | number;
"playoutOffset": null | string;
"streamingMode": components["schemas"]["StreamingMode"];
"watermarkId": null | number;
"fallbackFillerId": null | number;
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode": components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate": null | string;
"songVideoMode": components["schemas"]["ChannelSongVideoMode"];
"transcodeMode": components["schemas"]["ChannelTranscodeMode"];
"idleBehavior": components["schemas"]["ChannelIdleBehavior"];
"isEnabled": boolean;
"showInEpg": boolean;
};
"UpdateChannelTemplateRequest": {
"name": string;
"description": string;
"fFmpegProfileId": number;
"watermarkId": null | number;
"fallbackFillerId": null | number;
"preRollFillerId": null | number;
"midRollFillerId": null | number;
"postRollFillerId": null | number;
"streamSelectorMode": components["schemas"]["ChannelStreamSelectorMode"];
"streamSelector": null | string;
"preferredAudioLanguageCode": null | string;
"preferredAudioTitle": null | string;
"playoutSource": components["schemas"]["ChannelPlayoutSource"];
"playoutMode": components["schemas"]["ChannelPlayoutMode"];
"streamingMode": components["schemas"]["StreamingMode"];
"preferredSubtitleLanguageCode": null | string;
"subtitleMode": components["schemas"]["ChannelSubtitleMode"];
"musicVideoCreditsMode": components["schemas"]["ChannelMusicVideoCreditsMode"];
"musicVideoCreditsTemplate": null | string;
"songVideoMode": components["schemas"]["ChannelSongVideoMode"];
"transcodeMode": components["schemas"]["ChannelTranscodeMode"];
"idleBehavior": components["schemas"]["ChannelIdleBehavior"];
"shuffleScheduleItems": boolean;
"randomStartPoint": boolean;
"fixedStartTimeBehavior": components["schemas"]["FixedStartTimeBehavior"];
};
"UpdateCollectionRequest": {
"name": null | string;
"useCustomPlaybackOrder": null | boolean;
};
"UpdateFFmpegProfileRequest": {
"name": null | string;
"threadCount": number;
"normalizeAudio": boolean;
"normalizeVideo": boolean;
"hardwareAcceleration": components["schemas"]["HardwareAccelerationKind"];
"vaapiDisplay": null | string;
"vaapiDriver": components["schemas"]["VaapiDriver"];
"vaapiDevice": null | string;
"qsvExtraHardwareFrames": null | number;
"resolutionId": number;
"scalingBehavior": components["schemas"]["ScalingBehavior"];
"padMode": components["schemas"]["FilterMode"];
"videoFormat": components["schemas"]["FFmpegProfileVideoFormat"];
"videoProfile": null | string;
"videoPreset": null | string;
"allowBFrames": boolean;
"bitDepth": components["schemas"]["FFmpegProfileBitDepth"];
"videoBitrate": number;
"videoBufferSize": number;
"tonemapAlgorithm": components["schemas"]["FFmpegProfileTonemapAlgorithm"];
"audioFormat": components["schemas"]["FFmpegProfileAudioFormat"];
"audioBitrate": number;
"audioBufferSize": number;
"normalizeLoudnessMode": components["schemas"]["NormalizeLoudnessMode"];
"targetLoudness": null | number;
"audioChannels": number;
"audioSampleRate": number;
"normalizeFramerate": boolean;
"normalizeColors": boolean;
"deinterlaceVideo": boolean;
};
"UpdateScheduleRequest": {
"name": null | string;
"keepMultiPartEpisodesTogether": boolean;
"treatCollectionsAsShows": boolean;
"shuffleScheduleItems": boolean;
"randomStartPoint": boolean;
"fixedStartTimeBehavior": components["schemas"]["FixedStartTimeBehavior"];
};
"UpdateSmartCollectionRequest": {
"name": null | string;
"query": null | string;
};
"VaapiDriver": "Default" | "iHD" | "i965" | "RadeonSI" | "Nouveau";
"WatermarkLocation": number;
"WatermarkResponseModel": {
"id": number;
"name": null | string;
};
"WatermarkSize": number;
"WatermarkViewModel": {
"id": number;
"image": components["schemas"]["ArtworkContentTypeModel"];
"name": null | string;
"mode": components["schemas"]["ChannelWatermarkMode"];
"imageSource": components["schemas"]["ChannelWatermarkImageSource"];
"location": components["schemas"]["WatermarkLocation"];
"size": components["schemas"]["WatermarkSize"];
"width": number;
"horizontalMargin": number;
"verticalMargin": number;
"frequencyMinutes": number;
"durationSeconds": number;
"opacity": number;
"placeWithinSourceContent": boolean;
"opacityExpression": null | string;
"zIndex": number;
};
};
}