Files
ersatztv/docs/endpoint-index.md
T
timothyandClaude Opus 4.8 0009607a09 feat(384): auto-tune DetailPanel content-source member read endpoint
GET /api/v1/channels/auto-tune/members lists the distinct content sources a
proposed auto-tune channel's server-generated SmartCollection resolves to —
parent shows for the TV axes (ItemCount = query-matching episodes), movies for
the movie-genre axis — reusing the existing PagedLibraryBrowseItemsResponseModel
(no new schema). The handler runs the server-owned AutoTuneAxisMap.GenerateQuery
through ISearchIndex (client never sends Lucene, per #69 PR1) and rolls matching
leaf items up to their distinct sources, mirroring GetSmartCollectionItems so the
DetailPanel preview matches what the built playout will contain.

Backend child of #383 (Auto-Tune DetailPanel milestone); read-only, cold review
acceptable. Handler + controller tests (9 new). OpenAPI + endpoint-index
regenerated; d.ts unchanged (reuses existing schema). Docs: api-conventions §5,
decisions.md 2026-07-17, domain-model.

fixes #384

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 09:40:44 +02:00

449 lines
26 KiB
Markdown

# API endpoint index
*Generated by `scripts/generate-endpoint-index.py` from `ErsatzTV/wwwroot/openapi/v1.json`. Do not edit by hand -- regenerated by `scripts/update-openapi.sh`.*
165 endpoints, 248 operations.
## Artists
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/artists/{id}` | GetArtistById | Get an artist by id |
## Artwork
| Method | Path | Operation | Summary |
|---|---|---|---|
| POST | `/api/v1/artwork/uploads` | UploadArtwork | Upload channel logo or watermark artwork |
## Blocks
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/blocks` | BlockGetAll | Get all blocks |
| POST | `/api/v1/blocks` | BlockCreate | Create a block |
| GET | `/api/v1/blocks/groups` | GetBlockGroups | Get all block groups |
| POST | `/api/v1/blocks/groups` | BlockCreateGroup | Create a block group |
| DELETE | `/api/v1/blocks/groups/{id}` | BlockDeleteGroup | Delete a block group |
| DELETE | `/api/v1/blocks/{id}` | BlockDelete | Delete a block |
| GET | `/api/v1/blocks/{id}` | GetBlockById | Get a block by id |
| PUT | `/api/v1/blocks/{id}` | BlockReplace | Replace a block and its items |
| POST | `/api/v1/blocks/{id}/copy` | BlockCopy | Copy a block |
| GET | `/api/v1/blocks/{id}/items` | BlockGetItems | Get block items |
| POST | `/api/v1/blocks/{id}/preview` | BlockPreview | Preview a block playout |
## Channel
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/channels` | ChannelGetAll | |
## Channel Templates
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/channel-templates` | GetChannelTemplates | Get all channel templates |
| POST | `/api/v1/channel-templates` | CreateChannelTemplate | Create a channel template |
| GET | `/api/v1/channel-templates/default` | GetDefaultChannelTemplate | Get the default channel template |
| PUT | `/api/v1/channel-templates/default/{id}` | SetDefaultChannelTemplate | Set the default channel template |
| DELETE | `/api/v1/channel-templates/{id}` | DeleteChannelTemplate | Delete a channel template |
| GET | `/api/v1/channel-templates/{id}` | GetChannelTemplateById | Get a channel template by id |
| PUT | `/api/v1/channel-templates/{id}` | UpdateChannelTemplate | Update a channel template |
## Channels
| Method | Path | Operation | Summary |
|---|---|---|---|
| POST | `/api/v1/channels` | ChannelCreate | Create a channel |
| POST | `/api/v1/channels/auto-tune` | CreateAutoTunedChannels | Create auto-tuned channels |
| GET | `/api/v1/channels/auto-tune/members` | GetAutoTuneChannelMembers | List a proposed auto-tune channel's distinct content-source members |
| POST | `/api/v1/channels/auto-tune/preview` | PreviewAutoTuneChannels | Preview auto-tuned channels |
| POST | `/api/v1/channels/bulk/delete` | ChannelBulkDelete | Delete channels |
| POST | `/api/v1/channels/bulk/group` | ChannelBulkMoveToGroup | Move channels to a group |
| POST | `/api/v1/channels/bulk/renumber` | ChannelBulkRenumber | Renumber channels |
| POST | `/api/v1/channels/from-lineup` | CreateChannelFromLineup | Create a channel from a library lineup |
| GET | `/api/v1/channels/music-video-credits-templates` | GetMusicVideoCreditsTemplates | Get available music video credits template names |
| GET | `/api/v1/channels/state` | ChannelGetState | Get channel runtime state |
| GET | `/api/v1/channels/stream-selectors` | GetChannelStreamSelectors | Get available channel stream selector names |
| DELETE | `/api/v1/channels/{id}` | ChannelDelete | Delete a channel |
| GET | `/api/v1/channels/{id}` | GetChannelById | Get a channel by id |
| PUT | `/api/v1/channels/{id}` | ChannelUpdate | Update a channel |
| POST | `/api/v1/channels/{id}/playout/reset` | ChannelResetPlayout | Reset channel playout |
| GET | `/api/v1/guide` | ChannelGetGuide | Get the JSON channel guide (EPG) |
## Collections
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/collections` | CollectionGetAll | Get all collections |
| POST | `/api/v1/collections` | CollectionCreate | Create a collection |
| DELETE | `/api/v1/collections/{id}` | CollectionDelete | Delete a collection |
| GET | `/api/v1/collections/{id}` | GetCollectionById | Get a collection by id |
| PUT | `/api/v1/collections/{id}` | CollectionUpdate | Update a collection |
| PUT | `/api/v1/collections/{id}/custom-order` | CollectionUpdateCustomOrder | Set a collection's custom playback order |
| GET | `/api/v1/collections/{id}/items` | GetCollectionItems | Get the items in a manual collection |
| POST | `/api/v1/collections/{id}/items` | CollectionAddItems | Add items to a collection |
| DELETE | `/api/v1/collections/{id}/items/{mediaItemId}` | CollectionRemoveItem | Remove an item from a collection |
## DecoTemplates
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/deco-templates` | DecoTemplateGetAll | Get all deco templates |
| POST | `/api/v1/deco-templates` | DecoTemplateCreate | Create a deco template |
| GET | `/api/v1/deco-templates/groups` | GetDecoTemplateGroups | Get all deco template groups |
| POST | `/api/v1/deco-templates/groups` | DecoTemplateCreateGroup | Create a deco template group |
| DELETE | `/api/v1/deco-templates/groups/{id}` | DecoTemplateDeleteGroup | Delete a deco template group |
| DELETE | `/api/v1/deco-templates/{id}` | DecoTemplateDelete | Delete a deco template |
| GET | `/api/v1/deco-templates/{id}` | GetDecoTemplateById | Get a deco template by id |
| PUT | `/api/v1/deco-templates/{id}` | DecoTemplateReplace | Replace a deco template and its items |
| GET | `/api/v1/deco-templates/{id}/items` | DecoTemplateGetItems | Get deco template items |
## Decos
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/decos` | DecoGetAll | Get all decos |
| POST | `/api/v1/decos` | DecoCreate | Create a deco |
| GET | `/api/v1/decos/groups` | GetDecoGroups | Get all deco groups |
| POST | `/api/v1/decos/groups` | DecoCreateGroup | Create a deco group |
| DELETE | `/api/v1/decos/groups/{id}` | DecoDeleteGroup | Delete a deco group |
| DELETE | `/api/v1/decos/{id}` | DecoDelete | Delete a deco |
| GET | `/api/v1/decos/{id}` | GetDecoById | Get a deco by id |
| PUT | `/api/v1/decos/{id}` | DecoReplace | Replace a deco |
## Emby
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/media-sources/emby` | GetEmbyState | Get Emby connection state and discovered servers |
| GET | `/api/v1/media-sources/emby/connection` | GetEmbyConnection | Get the Emby connection address |
| PUT | `/api/v1/media-sources/emby/connection` | SaveEmbyConnection | Connect, reconnect, or edit the Emby connection |
| POST | `/api/v1/media-sources/emby/disconnect` | DisconnectEmby | Disconnect Emby |
| GET | `/api/v1/media-sources/emby/{id}/libraries` | GetEmbyLibraries | Get an Emby source's libraries |
| PUT | `/api/v1/media-sources/emby/{id}/libraries` | ReplaceEmbyLibraryPreferences | Replace an Emby source's library sync preferences |
| GET | `/api/v1/media-sources/emby/{id}/path-replacements` | GetEmbyPathReplacements | Get an Emby source's path replacements |
| PUT | `/api/v1/media-sources/emby/{id}/path-replacements` | ReplaceEmbyPathReplacements | Replace an Emby source's path replacements |
| POST | `/api/v1/media-sources/emby/{id}/refresh-libraries` | RefreshEmbyLibraries | Refresh an Emby source's libraries |
| POST | `/api/v1/media-sources/emby/{id}/scan-collections` | ScanEmbyCollections | Scan an Emby source's collections |
## FFmpeg Profiles
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/ffmpeg/hardware-acceleration-kinds` | GetSupportedHardwareAccelerationKinds | Get supported hardware acceleration kinds |
| GET | `/api/v1/ffmpeg/profiles` | GetFFmpegProfiles | Get all FFmpeg profiles |
| POST | `/api/v1/ffmpeg/profiles` | CreateFFmpegProfile | Create an FFmpeg profile |
| DELETE | `/api/v1/ffmpeg/profiles/{id}` | DeleteFFmpegProfile | Delete an FFmpeg profile |
| GET | `/api/v1/ffmpeg/profiles/{id}` | GetFFmpegProfileById | Get an FFmpeg profile by id |
| PUT | `/api/v1/ffmpeg/profiles/{id}` | UpdateFFmpegProfile | Update an FFmpeg profile |
## Filler Presets
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/filler-presets` | GetFillerPresets | Get all filler presets |
| POST | `/api/v1/filler-presets` | CreateFillerPreset | Create a filler preset |
| DELETE | `/api/v1/filler-presets/{id}` | DeleteFillerPreset | Delete a filler preset |
| GET | `/api/v1/filler-presets/{id}` | GetFillerPresetById | Get a filler preset by id |
| PUT | `/api/v1/filler-presets/{id}` | UpdateFillerPreset | Update a filler preset |
## Graphics Elements
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/graphics-elements` | GetGraphicsElements | Get all graphics elements |
| POST | `/api/v1/graphics-elements/refresh` | RefreshGraphicsElements | Re-sync graphics elements from disk |
## Health
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/health` | GetHealthChecks | Get health check results |
## Images
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/images/folders` | GetImageFolders | List image library folders |
| PUT | `/api/v1/images/folders/{id}/duration` | UpdateImageFolderDuration | Set or clear an image folder's playout duration |
## Jellyfin
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/media-sources/jellyfin` | GetJellyfinState | Get Jellyfin connection state and discovered servers |
| GET | `/api/v1/media-sources/jellyfin/connection` | GetJellyfinConnection | Get the Jellyfin connection address |
| PUT | `/api/v1/media-sources/jellyfin/connection` | SaveJellyfinConnection | Connect, reconnect, or edit the Jellyfin connection |
| POST | `/api/v1/media-sources/jellyfin/disconnect` | DisconnectJellyfin | Disconnect Jellyfin |
| GET | `/api/v1/media-sources/jellyfin/{id}/libraries` | GetJellyfinLibraries | Get a Jellyfin source's libraries |
| PUT | `/api/v1/media-sources/jellyfin/{id}/libraries` | ReplaceJellyfinLibraryPreferences | Replace a Jellyfin source's library sync preferences |
| GET | `/api/v1/media-sources/jellyfin/{id}/path-replacements` | GetJellyfinPathReplacements | Get a Jellyfin source's path replacements |
| PUT | `/api/v1/media-sources/jellyfin/{id}/path-replacements` | ReplaceJellyfinPathReplacements | Replace a Jellyfin source's path replacements |
| POST | `/api/v1/media-sources/jellyfin/{id}/refresh-libraries` | RefreshJellyfinLibraries | Refresh a Jellyfin source's libraries |
| POST | `/api/v1/media-sources/jellyfin/{id}/scan-collections` | ScanJellyfinCollections | Scan a Jellyfin source's collections |
## Languages
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/languages` | GetLanguages | Get all available language codes |
## Libraries
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/libraries/local` | GetLocalLibraries | Get all local libraries |
| POST | `/api/v1/libraries/local` | LocalLibrariesCreate | Create a local library |
| POST | `/api/v1/libraries/local/path-exists` | LocalLibrariesCheckPathExists | Check whether a filesystem path exists |
| POST | `/api/v1/libraries/local/paths/{pathId}/move` | LocalLibrariesMovePath | Move a local library path to another local library |
| DELETE | `/api/v1/libraries/local/{id}` | LocalLibrariesDelete | Delete a local library |
| GET | `/api/v1/libraries/local/{id}` | GetLocalLibrary | Get a local library by id |
| PUT | `/api/v1/libraries/local/{id}` | LocalLibrariesUpdate | Update a local library |
| GET | `/api/v1/libraries/scan-status` | GetLibraryScanStatus | Get active library scan status |
| POST | `/api/v1/libraries/{id}/scan` | LibrariesScanLibrary | Scan library |
| POST | `/api/v1/libraries/{id}/scan-show` | LibrariesScanShow | Scan show |
| GET | `/api/v1/library/browse` | BrowseLibrary | Browse and search library items |
## Logs
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/logs` | GetLogs | Get recent log entries |
## Maintenance
| Method | Path | Operation | Summary |
|---|---|---|---|
| POST | `/api/v1/maintenance/clean_artwork` | MaintenanceCleanArtwork | Clean artwork cache |
| POST | `/api/v1/maintenance/empty_trash` | MaintenanceEmptyTrash | Empty trash |
| POST | `/api/v1/maintenance/gc` | MaintenanceGarbageCollection | Garbage collect |
## Media Items
| Method | Path | Operation | Summary |
|---|---|---|---|
| DELETE | `/api/v1/media-items` | DeleteMediaItems | Delete media items from the database |
| GET | `/api/v1/media-items/{id}/info` | GetMediaItemInfo | Get technical media info for a media item |
## Media Sources
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/media-sources` | GetMediaSources | Get all media sources with their libraries |
| GET | `/api/v1/media-sources/collections-scan-status` | GetCollectionsScanStatus | Get active external-collections scan status |
## Movies
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/movies/{id}` | GetMovieById | Get a movie by id |
## Multi Collections
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/multi-collections` | GetMultiCollections | Get all multi collections (paged) |
| POST | `/api/v1/multi-collections` | MultiCollectionCreate | Create a multi collection |
| DELETE | `/api/v1/multi-collections/{id}` | MultiCollectionDelete | Delete a multi collection |
| GET | `/api/v1/multi-collections/{id}` | GetMultiCollectionById | Get a multi collection by id |
| PUT | `/api/v1/multi-collections/{id}` | MultiCollectionUpdate | Update a multi collection |
## Playlists
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/playlists` | GetPlaylists | Get playlists in a playlist group |
| POST | `/api/v1/playlists` | CreatePlaylistInGroup | Create a playlist |
| GET | `/api/v1/playlists/groups` | GetPlaylistGroups | Get all playlist groups |
| POST | `/api/v1/playlists/groups` | CreatePlaylistGroup | Create a playlist group |
| DELETE | `/api/v1/playlists/groups/{id}` | DeletePlaylistGroup | Delete a playlist group |
| PUT | `/api/v1/playlists/groups/{id}` | UpdatePlaylistGroup | Rename a playlist group |
| POST | `/api/v1/playlists/preview` | PreviewPlaylist | Preview the playout of a draft playlist |
| DELETE | `/api/v1/playlists/{id}` | DeletePlaylist | Delete a playlist |
| GET | `/api/v1/playlists/{id}` | GetPlaylistById | Get a playlist by id |
| PUT | `/api/v1/playlists/{id}` | UpdatePlaylist | Update a playlist (rename and replace its items) |
| GET | `/api/v1/playlists/{id}/items` | GetPlaylistItems | Get the items in a playlist |
| POST | `/api/v1/playlists/{id}/items` | AddItemsToPlaylist | Add items to a playlist |
## Playouts
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/playouts` | GetPlayouts | List playouts |
| POST | `/api/v1/playouts` | PlayoutCreate | Create a playout |
| GET | `/api/v1/playouts/history/{id}` | GetPlayoutHistoryDetails | Decode a playout history row |
| GET | `/api/v1/playouts/items/{id}/scheduling-context` | GetPlayoutItemSchedulingContext | Decode a playout item's scheduling context |
| POST | `/api/v1/playouts/reset-all` | ResetAllPlayouts | Reset all playouts |
| GET | `/api/v1/playouts/warnings/count` | GetPlayoutWarningsCount | Count playouts with a failed build |
| DELETE | `/api/v1/playouts/{id}` | PlayoutDelete | Delete a playout |
| GET | `/api/v1/playouts/{id}` | GetPlayoutById | Get a playout by id |
| PUT | `/api/v1/playouts/{id}` | PlayoutUpdate | Update playout scheduling details |
| GET | `/api/v1/playouts/{id}/alternate-schedules` | GetPlayoutAlternateSchedules | Get a classic playout's alternate schedules |
| PUT | `/api/v1/playouts/{id}/alternate-schedules` | PlayoutReplaceAlternateSchedules | Replace a classic playout's alternate schedules |
| GET | `/api/v1/playouts/{id}/blocks` | GetPlayoutBlocks | Get the blocks scheduled by a block playout |
| GET | `/api/v1/playouts/{id}/blocks/{blockId}/history` | GetPlayoutBlockHistory | Get a block's playout history |
| PUT | `/api/v1/playouts/{id}/deco` | PlayoutUpdateDefaultDeco | Set (or clear) a playout's default deco |
| POST | `/api/v1/playouts/{id}/erase-items` | ErasePlayoutItems | Erase a playout's items |
| POST | `/api/v1/playouts/{id}/erase-items-and-history` | ErasePlayoutItemsAndHistory | Erase a playout's items and history |
| GET | `/api/v1/playouts/{id}/items` | GetPlayoutItems | Get upcoming items (and unscheduled gaps) for a playout |
| POST | `/api/v1/playouts/{id}/reshuffle` | ReshufflePlayout | Reshuffle a playout |
| GET | `/api/v1/playouts/{id}/templates` | GetPlayoutTemplates | Get a block playout's templates |
| PUT | `/api/v1/playouts/{id}/templates` | PlayoutReplaceTemplates | Replace a block playout's templates |
## Plex
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/media-sources/plex` | GetPlexState | Get Plex connection state |
| POST | `/api/v1/media-sources/plex/pin-flow` | StartPlexPinFlow | Start the Plex sign-in pin flow |
| POST | `/api/v1/media-sources/plex/sign-out` | SignOutOfPlex | Sign out of Plex |
| GET | `/api/v1/media-sources/plex/{id}/libraries` | GetPlexLibraries | Get a Plex server's libraries |
| PUT | `/api/v1/media-sources/plex/{id}/libraries` | ReplacePlexLibraryPreferences | Replace a Plex server's library sync preferences |
| GET | `/api/v1/media-sources/plex/{id}/path-replacements` | GetPlexPathReplacements | Get a Plex server's path replacements |
| PUT | `/api/v1/media-sources/plex/{id}/path-replacements` | ReplacePlexPathReplacements | Replace a Plex server's path replacements |
| POST | `/api/v1/media-sources/plex/{id}/refresh-libraries` | RefreshPlexLibraries | Refresh a Plex server's libraries |
| POST | `/api/v1/media-sources/plex/{id}/scan-collections` | ScanPlexCollections | Scan a Plex server's collections |
## Rerun Collections
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/rerun-collections` | GetRerunCollections | Get all rerun collections (paged) |
| POST | `/api/v1/rerun-collections` | RerunCollectionCreate | Create a rerun collection |
| DELETE | `/api/v1/rerun-collections/{id}` | RerunCollectionDelete | Delete a rerun collection |
| GET | `/api/v1/rerun-collections/{id}` | GetRerunCollectionById | Get a rerun collection by id |
| PUT | `/api/v1/rerun-collections/{id}` | RerunCollectionUpdate | Update a rerun collection |
## Schedules
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/schedules` | ScheduleGetAll | Get all schedules |
| POST | `/api/v1/schedules` | ScheduleCreate | Create a schedule |
| DELETE | `/api/v1/schedules/{id}` | ScheduleDelete | Delete a schedule |
| GET | `/api/v1/schedules/{id}` | GetScheduleById | Get a schedule by id |
| PUT | `/api/v1/schedules/{id}` | ScheduleUpdate | Update a schedule |
| GET | `/api/v1/schedules/{id}/items` | ScheduleGetItems | Get schedule items |
| POST | `/api/v1/schedules/{id}/items` | ScheduleAddItem | Add a schedule item |
| PUT | `/api/v1/schedules/{id}/items` | ScheduleReplaceItems | Replace schedule items |
| DELETE | `/api/v1/schedules/{id}/items/{itemId}` | ScheduleDeleteItem | Delete a schedule item |
## Search
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/search` | Search | Search library items across all media kinds |
| GET | `/api/v1/search/all-items` | SearchAllItems | Search library items across all media kinds and return raw id lists |
| GET | `/api/v1/search/artists` | SearchArtists | Search artists by name |
| GET | `/api/v1/search/collections` | SearchCollections | Search collections by name |
| GET | `/api/v1/search/multi-collections` | SearchMultiCollections | Search multi collections by name |
| GET | `/api/v1/search/smart-collections` | SearchSmartCollections | Search smart collections by name |
| GET | `/api/v1/search/television-seasons` | SearchTelevisionSeasons | Search television seasons by name |
| GET | `/api/v1/search/television-shows` | SearchTelevisionShows | Search television shows by name |
## Sessions
| Method | Path | Operation | Summary |
|---|---|---|---|
| DELETE | `/api/v1/session/{channelNumber}` | SessionStopSession | Stop session |
| GET | `/api/v1/sessions` | SessionGetSessions | Get sessions |
## Settings
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/ffmpeg/resolution/by-name/{name}` | GetResolutionByName | Get a resolution by name |
| GET | `/api/v1/settings/ffmpeg` | GetFfmpegSettings | Get global FFmpeg settings |
| PUT | `/api/v1/settings/ffmpeg` | UpdateFfmpegSettings | Update global FFmpeg settings |
| GET | `/api/v1/settings/hdhr` | GetHdhrSettings | Get HDHomeRun emulation settings |
| PUT | `/api/v1/settings/hdhr` | UpdateHdhrSettings | Update HDHomeRun emulation settings |
| GET | `/api/v1/settings/iptv` | GetIptvSettings | Get IPTV output settings |
| PUT | `/api/v1/settings/iptv` | UpdateIptvSettings | Update IPTV output settings |
| GET | `/api/v1/settings/logging` | GetLoggingSettings | Get per-area minimum log levels |
| PUT | `/api/v1/settings/logging` | UpdateLoggingSettings | Update per-area minimum log levels |
| GET | `/api/v1/settings/playout` | GetPlayoutSettings | Get global playout settings |
| PUT | `/api/v1/settings/playout` | UpdatePlayoutSettings | Update global playout settings |
| GET | `/api/v1/settings/resolutions` | GetResolutions | Get all resolutions, including custom resolutions |
| POST | `/api/v1/settings/resolutions` | CreateResolution | Create a custom resolution |
| DELETE | `/api/v1/settings/resolutions/{id}` | DeleteResolution | Delete a custom resolution |
| GET | `/api/v1/settings/scanner` | GetScannerSettings | Get library scan cadence |
| PUT | `/api/v1/settings/scanner` | UpdateScannerSettings | Update library scan cadence |
| GET | `/api/v1/settings/ui` | GetUiSettings | Get UI preferences |
| PUT | `/api/v1/settings/ui` | UpdateUiSettings | Update UI preferences |
| GET | `/api/v1/settings/xmltv` | GetXmltvSettings | Get global XMLTV settings |
| PUT | `/api/v1/settings/xmltv` | UpdateXmltvSettings | Update global XMLTV settings |
## Smart Collections
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/smart-collections` | SmartCollectionGetAll | Get all smart collections |
| POST | `/api/v1/smart-collections` | SmartCollectionCreate | Create a smart collection |
| DELETE | `/api/v1/smart-collections/{id}` | SmartCollectionDelete | Delete a smart collection |
| GET | `/api/v1/smart-collections/{id}` | GetSmartCollectionById | Get a smart collection by id |
| PUT | `/api/v1/smart-collections/{id}` | SmartCollectionUpdate | Update a smart collection |
## Television
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/seasons/{id}` | GetSeasonById | Get a television season by id |
| GET | `/api/v1/shows/{id}` | GetShowById | Get a television show by id |
## Templates
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/templates` | TemplateGetAll | Get all templates |
| POST | `/api/v1/templates` | TemplateCreate | Create a template |
| GET | `/api/v1/templates/groups` | GetTemplateGroups | Get all template groups |
| POST | `/api/v1/templates/groups` | TemplateCreateGroup | Create a template group |
| DELETE | `/api/v1/templates/groups/{id}` | TemplateDeleteGroup | Delete a template group |
| DELETE | `/api/v1/templates/{id}` | TemplateDelete | Delete a template |
| GET | `/api/v1/templates/{id}` | GetTemplateById | Get a template by id |
| PUT | `/api/v1/templates/{id}` | TemplateReplace | Replace a template and its items |
| POST | `/api/v1/templates/{id}/copy` | TemplateCopy | Copy a template |
| GET | `/api/v1/templates/{id}/items` | TemplateGetItems | Get template items |
## Trakt
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/trakt/lists` | GetTraktLists | Get paged Trakt lists |
| POST | `/api/v1/trakt/lists` | TraktAdd | Add a Trakt list by URL |
| DELETE | `/api/v1/trakt/lists/{id}` | TraktDelete | Delete a Trakt list |
| GET | `/api/v1/trakt/lists/{id}` | GetTraktListById | Get a Trakt list by id |
| PUT | `/api/v1/trakt/lists/{id}` | TraktUpdate | Update a Trakt list's settings |
| POST | `/api/v1/trakt/lists/{id}/match` | TraktMatch | Match a Trakt list's items |
| GET | `/api/v1/trakt/status` | GetTraktStatus | Get Trakt background operation status |
## Troubleshooting
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/troubleshoot/info` | GetTroubleshootingInfo | Get troubleshooting diagnostic info |
| POST | `/api/v1/troubleshoot/playback/archive` | DownloadTroubleshootingArchive | Download the last troubleshooting playback session archive |
| POST | `/api/v1/troubleshoot/playback/sample/{mediaItemId}` | DownloadTroubleshootingMediaSample | Download a media sample archive for troubleshooting |
| POST | `/api/v1/troubleshoot/playback/start` | StartTroubleshootingPlayback | Start a troubleshooting playback session |
| GET | `/api/v1/troubleshoot/playback/status` | GetTroubleshootingPlaybackStatus | Get the status of the current or last troubleshooting playback session |
| GET | `/api/v1/troubleshoot/playback/stream-selectors` | GetTroubleshootingStreamSelectors | List available channel stream selectors |
| GET | `/api/v1/troubleshoot/playback/subtitles/{mediaItemId}` | GetTroubleshootingSubtitles | List selectable subtitle streams for a media item |
| POST | `/api/v1/troubleshoot/validate-schedule` | ValidateSequentialSchedule | Validate a sequential schedule YAML document |
## Version
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/version` | GetVersion | Get version |
## Watermarks
| Method | Path | Operation | Summary |
|---|---|---|---|
| GET | `/api/v1/watermarks` | GetWatermarks | Get all watermarks |
| POST | `/api/v1/watermarks` | CreateWatermark | Create a watermark |
| DELETE | `/api/v1/watermarks/{id}` | DeleteWatermark | Delete a watermark |
| GET | `/api/v1/watermarks/{id}` | GetWatermarkById | Get a watermark by id |
| PUT | `/api/v1/watermarks/{id}` | UpdateWatermark | Update a watermark |