110 KiB
Complete endpoint coverage ledger
This inventory enumerates every method directly declared under every resource in the supplied RAML: 377 HTTP operations across 321 paths. IDs follow source order and are audit references, not API identifiers. There is one disposition per operation, including intentional exclusions. Links point to the resource start; multiple methods can share a resource line. Ledger tool names reflect the read_*/write_* namespace.
| Disposition | Meaning | Operations |
|---|---|---|
| D | Direct tool contract; verification/authorization gates still apply | 257 |
| A | Alternative/legacy route accounted for; enabled only by a verified compatibility adapter | 37 |
| P | Partial exposure: typed, sanitized subset or server-owned body construction | 59 |
| I | Internal authentication/provisioning, never a model-callable tool | 12 |
| X | Deliberately excluded; manual administration or a narrower supported operation | 12 |
The body/response columns describe the upstream schema, not a promise to pass that object through MCP. “Body unspecified” does not assert an empty response. “Type unspecified” can reflect a RAML generation defect: several type: declarations were folded into description text. The mapping contract supplies conservative public types and records semantic gaps. No inferred labels for numeric enums are treated as facts.
Operations
| ID | Method and literal path | Disposition | Owner / branch | Wire inputs | Success response | Notes |
|---|---|---|---|---|---|---|
| 001 | GET /api/v2/Calendar |
D | read_library / calendar |
none documented | 200: array<CalendarViewModel> | — |
| 002 | POST /api/v1/CouchPotato/profile |
D | read_integration / options:couchpotato/profiles |
body CouchPotatoSettings | 200: CouchPotatoProfiles | Saved settings constructed privately; singular profile path. |
| 003 | POST /api/v1/CouchPotato/apikey |
I | administrator credential provisioning |
body CouchPotatoSettings | 200: CouchPotatoApiKey | Acquires a credential; never return API keys. |
| 004 | GET /api/v1/CustomPage |
D | read_settings / custom_page |
none documented | 200: CustomPageSettings | Allowlisted projection; no raw secrets. |
| 005 | POST /api/v1/CustomPage |
P | write_settings_patch / patch:custom_page |
body CustomPageSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 006 | POST /api/v1/Emby |
I | media-server provisioning |
body EmbySettings | 200: EmbySettings | Credential-bearing settings request/response; behaviour not established by RAML. |
| 007 | POST /api/v1/Emby/info |
D | read_integration / media_server:emby/info |
body EmbyServers | 200: PublicInfo | POST resolves configured server privately. |
| 008 | GET /api/v1/Emby/users |
D | read_integration / media_server:emby/users |
none documented | 200: array<UsersViewModel> | — |
| 009 | POST /api/v1/Emby/Library |
D | read_integration / media_server:emby/libraries |
body EmbyServers | 200: EmbyItemContainer | POST resolves configured server privately. |
| 010 | GET /api/v2/Features |
D | read_server / features |
none documented | 200: array<FeatureEnablement> | — |
| 011 | POST /api/v2/Features/enable |
P | write_settings_patch / feature |
body FeatureEnablement | 200: array<FeatureEnablement> | Select enable/disable from enabled Boolean. |
| 012 | POST /api/v2/Features/disable |
P | write_settings_patch / feature |
body FeatureEnablement | 200: array<FeatureEnablement> | Select enable/disable from enabled Boolean. |
| 013 | GET /api/v2/Hub/Users |
D | read_users / online |
none documented | 200: array<ConnectedUsersViewModel> | Privileged visibility rules apply. |
| 014 | GET /api/v1/Identity/Users |
D | read_users / list |
none documented | 200: array<UserViewModel> | — |
| 015 | GET /api/v1/Identity/dropdown/Users |
D | read_users / dropdown |
none documented | 200: array<UserViewModelDropdown> | — |
| 016 | GET /api/v1/Identity |
D | read_users / self |
none documented | 200: UserViewModel | — |
| 017 | POST /api/v1/Identity |
X | manual user/profile administration |
body UserViewModel | 200: IdentityResult | Mixed credentials/claims/full entities or delivery-secret preference values are not tool inputs. |
| 018 | PUT /api/v1/Identity |
X | manual user/profile administration |
body UserViewModel | 200: IdentityResult | Mixed credentials/claims/full entities or delivery-secret preference values are not tool inputs. |
| 019 | POST /api/v1/Identity/language |
D | write_user_preferences / language |
body UserLanguage | 200: body unspecified | Body lang, not language. |
| 020 | GET /api/v1/Identity/streamingcountry |
D | read_reference / streaming_countries |
none documented | 200: body unspecified | — |
| 021 | POST /api/v1/Identity/streamingcountry |
D | write_user_preferences / streaming_country |
body CountryStreamingPreference | 200: body unspecified | Body code. |
| 022 | GET /api/v1/Identity/User/{id} |
D | read_users / get |
path id:string required |
200: UserViewModel | — |
| 023 | PUT /api/v1/Identity/local |
X | manual user/profile administration |
body UpdateLocalUserModel | 200: IdentityResult | Mixed credentials/claims/full entities or delivery-secret preference values are not tool inputs. |
| 024 | DELETE /api/v1/Identity/{userId} |
D | write_user_manage / delete |
path userId:unspecified required |
200: IdentityResult | — |
| 025 | GET /api/v1/Identity/claims |
D | read_users / claims |
none documented | 200: array<ClaimCheckboxes> | — |
| 026 | POST /api/v1/Identity/welcomeEmail |
P | write_user_manage / welcome_email |
body UserViewModel | 200: body unspecified | Resolve user view model internally. |
| 027 | GET /api/v1/Identity/notificationpreferences |
D | read_users / notification_preferences |
none documented | 200: array<UserNotificationPreferences> | — |
| 028 | GET /api/v1/Identity/notificationpreferences/{userId} |
D | read_users / notification_preferences |
path userId:string required |
200: array<UserNotificationPreferences> | — |
| 029 | POST /api/v1/Identity/NotificationPreferences |
X | manual user/profile administration |
body array<AddNotificationPreference> | success unspecified | Mixed credentials/claims/full entities or delivery-secret preference values are not tool inputs. |
| 030 | GET /api/v1/Identity/newsletter/unsubscribe/{userId} |
D | write_user_preferences / unsubscribe_newsletter |
path userId:string required |
200: body unspecified | Mutating GET; never a read tool. |
| 031 | GET /api/v1/Images/tv/{tvdbid} |
D | read_library / tv_images |
path tvdbid:integer required |
200: string | Response representation must be verified; no assumed public URL. |
| 032 | GET /api/v1/Images/poster |
D | read_library / default_poster |
none documented | 200: string | Response representation must be verified; no assumed public URL. |
| 033 | GET /api/v1/Images/poster/movie/{movieDbId} |
D | read_library / image |
path movieDbId:string required |
200: string | Response representation must be verified; no assumed public URL. |
| 034 | GET /api/v1/Images/poster/tv/{tvdbid} |
D | read_library / image |
path tvdbid:integer required |
200: string | Response representation must be verified; no assumed public URL. |
| 035 | GET /api/v1/Images/poster/tv/tmdb/{tmdbId} |
D | read_library / image |
path tmdbId:string required |
200: string | Response representation must be verified; no assumed public URL. |
| 036 | GET /api/v1/Images/background/movie/{movieDbId} |
D | read_library / image |
path movieDbId:string required |
200: string | Response representation must be verified; no assumed public URL. |
| 037 | GET /api/v1/Images/banner/movie/{movieDbId} |
D | read_library / image |
path movieDbId:string required |
200: string | Response representation must be verified; no assumed public URL. |
| 038 | GET /api/v1/Images/background/tv/{tvdbid} |
D | read_library / image |
path tvdbid:integer required |
200: string | Response representation must be verified; no assumed public URL. |
| 039 | GET /api/v1/Images/background/tv/tmdb/{id} |
D | read_library / image |
path id:string required |
200: string | Response representation must be verified; no assumed public URL. |
| 040 | GET /api/v1/Images/background |
D | read_library / random_background |
none documented | 200: body unspecified | Response representation must be verified; no assumed public URL. |
| 041 | GET /api/v1/Images/background/info |
D | read_library / background_info |
none documented | 200: body unspecified | Response representation must be verified; no assumed public URL. |
| 042 | GET /api/v2/Issues/{position}/{take}/{status} |
D | read_issues / summary |
path position:integer required; path take:integer required; path status:IssueStatus required |
200: array<IssuesSummaryModel> | — |
| 043 | GET /api/v2/Issues/details/{providerId} |
D | read_issues / provider_summary |
path providerId:string required |
200: IssuesSummaryModel | — |
| 044 | GET /api/v1/Issues/categories |
D | read_reference / issue_categories |
none documented | 200: array<IssueCategory> | — |
| 045 | POST /api/v1/Issues/categories |
D | write_issue_manage / create_category |
body IssueCategory | 200: boolean | — |
| 046 | DELETE /api/v1/Issues/categories/{catId} |
D | write_issue_manage / delete_category |
path catId:integer required |
200: boolean | — |
| 047 | GET /api/v1/Issues |
A | read_issues / list |
none documented | 200: array<Issues> | Unpaged list is compatibility only. |
| 048 | POST /api/v1/Issues |
P | write_issue_create |
body Issues | 200: integer | Minimal issue creation projection. |
| 049 | GET /api/v1/Issues/{take}/{skip}/{status} |
D | read_issues / list |
path take:integer required; path skip:integer required; path status:IssueStatus required |
200: array<Issues> | — |
| 050 | GET /api/v1/Issues/count |
D | read_issues / counts |
none documented | 200: IssueCountModel | — |
| 051 | GET /api/v1/Issues/{id} |
D | read_issues / get |
path id:integer required |
200: Issues | — |
| 052 | DELETE /api/v1/Issues/{id} |
D | write_issue_manage / delete |
path id:integer required |
200: boolean | — |
| 053 | GET /api/v1/Issues/request/{id} |
D | read_issues / by_request |
path id:integer required |
200: body unspecified | — |
| 054 | GET /api/v1/Issues/provider/{id} |
D | read_issues / by_provider |
path id:string required |
200: body unspecified | — |
| 055 | GET /api/v1/Issues/{id}/comments |
D | read_issues / comments |
path id:integer required |
200: array<IssueCommentChatViewModel> | — |
| 056 | POST /api/v1/Issues/comments |
D | write_issue_comment |
body NewIssueCommentViewModel | 200: IssueComments | — |
| 057 | DELETE /api/v1/Issues/comments/{id} |
D | write_issue_manage / delete_comment |
path id:integer required |
200: boolean | — |
| 058 | POST /api/v1/Issues/status |
D | write_issue_manage / set_status |
body IssueStateViewModel | 200: boolean | — |
| 059 | POST /api/v1/Jellyfin |
I | media-server provisioning |
body JellyfinSettings | 200: JellyfinSettings | Credential-bearing settings request/response; behaviour not established by RAML. |
| 060 | POST /api/v1/Jellyfin/info |
D | read_integration / media_server:jellyfin/info |
body JellyfinServers | 200: PublicInfo | POST resolves configured server privately. |
| 061 | POST /api/v1/Jellyfin/Library |
D | read_integration / media_server:jellyfin/libraries |
body JellyfinServers | 200: JellyfinItemContainer | POST resolves configured server privately. |
| 062 | GET /api/v1/Jellyfin/users |
D | read_integration / media_server:jellyfin/users |
none documented | 200: array<UsersViewModel> | — |
| 063 | POST /api/v1/Job/update |
D | write_job_run / run:update |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 064 | GET /api/v1/Job/update |
D | read_server / update_check |
none documented | 200: boolean | — |
| 065 | POST /api/v1/Job/plexuserimporter |
D | write_job_run / run:plexuserimporter |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 066 | POST /api/v1/Job/plexwatchlist |
D | write_job_run / run:plexwatchlist |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 067 | POST /api/v1/Job/embyuserimporter |
D | write_job_run / run:embyuserimporter |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 068 | POST /api/v1/Job/jellyfinuserimporter |
D | write_job_run / run:jellyfinuserimporter |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 069 | POST /api/v1/Job/plexcontentcacher |
D | write_job_run / run:plexcontentcacher |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 070 | POST /api/v1/Job/clearmediaserverdata |
D | write_job_run / run:clearmediaserverdata |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 071 | POST /api/v1/Job/plexrecentlyadded |
D | write_job_run / run:plexrecentlyadded |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 072 | POST /api/v1/Job/embycontentcacher |
D | write_job_run / run:embycontentcacher |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 073 | POST /api/v1/Job/embyrecentlyadded |
D | write_job_run / run:embyrecentlyadded |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 074 | POST /api/v1/Job/jellyfincontentcacher |
D | write_job_run / run:jellyfincontentcacher |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 075 | POST /api/v1/Job/arrAvailability |
D | write_job_run / run:arrAvailability |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 076 | POST /api/v1/Job/autodeleterequests |
D | write_job_run / run:autodeleterequests |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 077 | POST /api/v1/Job/newsletter |
D | write_job_run / run:newsletter |
none documented | 200: boolean | Explicit per-job policy; job accepted is not job completed. |
| 078 | GET /api/v1/LandingPage |
D | read_server / landing |
none documented | 200: MediaSeverAvailibilityViewModel | — |
| 079 | GET /api/v1/Lidarr/enabled |
D | read_integration / options:lidarr/enabled |
none documented | 200: boolean | — |
| 080 | POST /api/v1/Lidarr/Profiles |
A | read_integration / options:lidarr/profiles |
body LidarrSettings | 200: array<LidarrProfile> | Private saved settings only; no connection overrides. |
| 081 | GET /api/v1/Lidarr/Profiles |
D | read_integration / options:lidarr/profiles |
none documented | 200: array<LidarrProfile> | — |
| 082 | POST /api/v1/Lidarr/RootFolders |
A | read_integration / options:lidarr/root_folders |
body LidarrSettings | 200: array<LidarrRootFolder> | Private saved settings only; no connection overrides. |
| 083 | GET /api/v1/Lidarr/RootFolders |
D | read_integration / options:lidarr/root_folders |
none documented | 200: array<LidarrRootFolder> | — |
| 084 | POST /api/v1/Lidarr/Metadata |
D | read_integration / options:lidarr/metadata |
body LidarrSettings | 200: array<MetadataProfile> | Private saved settings only; no connection overrides. |
| 085 | POST /api/v1/Logging |
X | UI-client telemetry |
body UiLoggingModel | 200: body unspecified | No agent-facing log injection tool; MCP logging is a separate protocol facility. |
| 086 | GET /api/v1/request/music/{count}/{position}/{orderType}/{statusType}/{availabilityType} |
A | read_requests / list |
path count:unspecified required; path position:unspecified required; path orderType:unspecified required; path statusType:integer required; path availabilityType:integer required |
200: RequestsViewModel | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 087 | GET /api/v1/request/music/total |
D | read_request_stats / total |
none documented | 200: integer | — |
| 088 | GET /api/v1/request/music |
A | read_requests / list |
none documented | 200: array<AlbumRequest> | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 089 | POST /api/v1/request/music |
D | write_request_create / album |
body MusicAlbumRequestViewModel | 200: RequestEngineResult | — |
| 090 | GET /api/v1/request/music/search/{searchTerm} |
D | read_requests / search |
path searchTerm:unspecified required |
200: array<AlbumRequest> | — |
| 091 | DELETE /api/v1/request/music/{requestId} |
D | write_request_delete |
path requestId:unspecified required |
200: RequestEngineResult | — |
| 092 | POST /api/v1/request/music/approve |
D | write_request_moderate / approve |
body AlbumUpdateModel | 200: RequestEngineResult | — |
| 093 | POST /api/v1/request/music/available |
D | write_request_moderate / mark_available |
body AlbumUpdateModel | 200: RequestEngineResult | — |
| 094 | POST /api/v1/request/music/unavailable |
D | write_request_moderate / mark_unavailable |
body AlbumUpdateModel | 200: RequestEngineResult | — |
| 095 | PUT /api/v1/request/music/deny |
D | write_request_moderate / deny |
body DenyAlbumModel | 200: RequestEngineResult | — |
| 096 | GET /api/v1/request/music/remaining |
D | read_request_stats / quota |
none documented | 200: RequestQuotaCountModel | — |
| 097 | POST /api/v1/Notifications/massemail |
P | write_notification_send |
body MassEmailModel | 200: boolean | Resolve explicit user IDs into minimum verified entity body. |
| 098 | POST /api/v1/Plex |
I | Plex authentication/provisioning |
body UserRequest | 200: PlexAuthentication | Credential-bearing account/OAuth workflow stays outside model tools. |
| 099 | POST /api/v1/Plex/Libraries |
A | read_integration / plex_libraries |
body PlexServers | 200: PlexLibrariesResponse | Private saved-server POST alternative. |
| 100 | GET /api/v1/Plex/Libraries/{machineId} |
D | read_integration / plex_libraries |
path machineId:string required |
200: PlexLibrariesLiteResponse | — |
| 101 | POST /api/v1/Plex/user |
X | Plex account provisioning |
body PlexUserViewModel | 200: body unspecified | Side effects are insufficiently specified; no guessed read lookup. |
| 102 | GET /api/v1/Plex/servers |
D | read_integration / plex:servers |
none documented | 200: object wrapper {"success":bool,"servers":[...]} |
Verified upstream wrapper shape; projects servers array to reference_page with id=machineId, name=serverName, value=serverId. |
| 103 | POST /api/v1/Plex/servers |
I | Plex authentication/provisioning |
body UserRequest | 200: PlexServersViewModel | Credential-bearing account/OAuth workflow stays outside model tools. |
| 104 | GET /api/v1/Plex/friends |
D | read_integration / plex:friends |
none documented | 200: array<UsersViewModel> | — |
| 105 | POST /api/v1/Plex/oauth |
I | Plex authentication/provisioning |
body PlexOAuthViewModel | 200: body unspecified | Credential-bearing account/OAuth workflow stays outside model tools. |
| 106 | GET /api/v1/Plex/WatchlistUsers |
D | read_integration / plex:watchlist_users |
none documented | 200: array<PlexUserWatchlistModel> | — |
| 107 | POST /api/v1/Plex/WatchlistUsers/revalidate |
D | write_job_run / revalidate_watchlist |
none documented | 200: body unspecified | — |
| 108 | POST /api/v1/Radarr/Profiles |
A | read_integration / options:radarr/profiles |
body RadarrSettings | 200: body unspecified | Private saved settings only; no connection overrides. |
| 109 | GET /api/v1/Radarr/Profiles |
D | read_integration / options:radarr/profiles |
none documented | 200: body unspecified | — |
| 110 | GET /api/v1/Radarr/enabled |
D | read_integration / options:radarr/enabled |
none documented | 200: boolean | — |
| 111 | POST /api/v1/Radarr/RootFolders |
A | read_integration / options:radarr/root_folders |
body RadarrSettings | 200: array<RadarrRootFolder> | Private saved settings only; no connection overrides. |
| 112 | GET /api/v1/Radarr/RootFolders |
D | read_integration / options:radarr/root_folders |
none documented | 200: array<RadarrRootFolder> | — |
| 113 | GET /api/v1/Radarr/Profiles/4k |
D | read_integration / options:radarr/profiles/4k |
none documented | 200: body unspecified | — |
| 114 | GET /api/v1/Radarr/RootFolders/4k |
D | read_integration / options:radarr/root_folders/4k |
none documented | 200: array<RadarrRootFolder> | — |
| 115 | POST /api/v1/Radarr/tags |
A | read_integration / options:radarr/tags |
body SonarrSettings | 200: array<Tag> | Private saved settings only; no connection overrides. RAML body unexpectedly references SonarrSettings; verify. |
| 116 | GET /api/v1/Radarr/tags |
D | read_integration / options:radarr/tags |
none documented | 200: array<Tag> | — |
| 117 | GET /api/v1/RecentlyAdded/movies |
D | read_library / recent |
none documented | 200: array<RecentlyAddedMovieModel> | grouped=true only for tv/grouped. |
| 118 | GET /api/v1/RecentlyAdded/tv |
D | read_library / recent |
none documented | 200: array<RecentlyAddedMovieModel> | grouped=true only for tv/grouped. |
| 119 | GET /api/v1/RecentlyAdded/tv/grouped |
D | read_library / recent |
none documented | 200: array<RecentlyAddedMovieModel> | grouped=true only for tv/grouped. |
| 120 | GET /api/v1/Request/movie/{count}/{position}/{orderType}/{statusType}/{availabilityType} |
A | read_requests / list |
path count:unspecified required; path position:unspecified required; path orderType:unspecified required; path statusType:integer required; path availabilityType:integer required |
200: RequestsViewModel | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 121 | GET /api/v1/Request/movie/info/{requestId} |
D | read_requests / get:movie |
path requestId:unspecified required |
200: MovieRequests | — |
| 122 | GET /api/v1/Request/movie/total |
D | read_request_stats / total |
none documented | 200: integer | — |
| 123 | GET /api/v1/Request/movie |
A | read_requests / list |
none documented | 200: array<MovieRequests> | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 124 | POST /api/v1/Request/movie |
D | write_request_create / movie |
body MovieRequestViewModel | 200: RequestEngineResult | — |
| 125 | PUT /api/v1/Request/movie |
X | full entity replacement |
body MovieRequests | 200: MovieRequests | Use typed options/moderation instead; do not expose recursive server-owned state. |
| 126 | GET /api/v1/Request/movie/search/{searchTerm} |
D | read_requests / search |
path searchTerm:unspecified required |
200: array<MovieRequests> | — |
| 127 | DELETE /api/v1/Request/movie/{requestId} |
D | write_request_delete |
path requestId:unspecified required |
200: RequestEngineResult | — |
| 128 | DELETE /api/v1/Request/movie/all |
X | manual bulk deletion |
none documented | 200: body unspecified | Unbounded delete-all deliberately absent; selected single deletions remain possible. |
| 129 | POST /api/v1/Request/movie/approve |
D | write_request_moderate / approve |
body MovieUpdateModel | 200: RequestEngineResult | — |
| 130 | POST /api/v1/Request/movie/available |
D | write_request_moderate / mark_available |
body MovieUpdateModel | 200: RequestEngineResult | — |
| 131 | POST /api/v1/Request/movie/unavailable |
D | write_request_moderate / mark_unavailable |
body MovieUpdateModel | 200: RequestEngineResult | — |
| 132 | PUT /api/v1/Request/movie/deny |
D | write_request_moderate / deny |
body DenyMovieModel | 200: RequestEngineResult | — |
| 133 | GET /api/v1/Request/tv/total |
D | read_request_stats / total |
none documented | 200: integer | — |
| 134 | GET /api/v1/Request/tv/{count}/{position}/{orderType}/{statusFilterType}/{availabilityFilterType} |
A | read_requests / list |
path count:unspecified required; path position:unspecified required; path orderType:integer required; path statusFilterType:string required; path availabilityFilterType:string required; query statusType:integer optional; query availabilityType:integer optional |
200: RequestsViewModel | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 135 | GET /api/v1/Request/tvlite/{count}/{position}/{orderType}/{statusFilterType}/{availabilityFilterType} |
A | read_requests / list |
path count:unspecified required; path position:unspecified required; path orderType:integer required; path statusFilterType:string required; path availabilityFilterType:string required; query statusType:integer optional; query availabilityType:integer optional |
200: RequestsViewModel | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 136 | GET /api/v1/Request/tv |
A | read_requests / list |
none documented | 200: array<TvRequests> | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 137 | POST /api/v1/Request/tv |
D | write_request_create / tv:tvdb |
body TvRequestViewModel | 200: RequestEngineResult | — |
| 138 | PUT /api/v1/Request/tv |
X | full entity replacement |
body TvRequests | 200: TvRequests | Use typed options/moderation instead; do not expose recursive server-owned state. |
| 139 | GET /api/v1/Request/tvlite |
A | read_requests / list |
none documented | 200: array<TvRequests> | Legacy parent/array/filter semantics need verified adapter; not equivalent to v2 TV child pages. |
| 140 | GET /api/v1/Request/tv/{requestId} |
D | read_requests / get:tv_parent |
path requestId:integer required |
200: TvRequests | — |
| 141 | DELETE /api/v1/Request/tv/{requestId} |
D | write_request_delete |
path requestId:unspecified required |
200: body unspecified | — |
| 142 | GET /api/v1/Request/tv/search/{searchTerm} |
D | read_requests / search |
path searchTerm:unspecified required |
200: array<TvRequests> | — |
| 143 | PUT /api/v1/Request/tv/root/{requestId}/{rootFolderId} |
D | write_request_options / tv_root |
path requestId:integer required; path rootFolderId:integer required |
200: boolean | — |
| 144 | PUT /api/v1/Request/tv/quality/{requestId}/{qualityId} |
D | write_request_options / tv_quality |
path requestId:integer required; path qualityId:integer required |
200: boolean | — |
| 145 | PUT /api/v1/Request/tv/child |
X | full entity replacement |
body ChildRequests | 200: ChildRequests | Use typed options/moderation instead; do not expose recursive server-owned state. |
| 146 | PUT /api/v1/Request/tv/deny |
D | write_request_moderate / deny |
body DenyTvModel | 200: RequestEngineResult | TV child-ID semantics must be verified. |
| 147 | POST /api/v1/Request/tv/available |
D | write_request_moderate / mark_available |
body TvUpdateModel | 200: RequestEngineResult | TV child-ID semantics must be verified. |
| 148 | POST /api/v1/Request/tv/unavailable |
D | write_request_moderate / mark_unavailable |
body TvUpdateModel | 200: RequestEngineResult | TV child-ID semantics must be verified. |
| 149 | POST /api/v1/Request/tv/approve |
D | write_request_moderate / approve |
body TvUpdateModel | 200: RequestEngineResult | TV child-ID semantics must be verified. |
| 150 | DELETE /api/v1/Request/tv/child/{requestId} |
D | write_request_delete |
path requestId:unspecified required |
200: RequestEngineResult | — |
| 151 | GET /api/v1/Request/tv/{requestId}/child |
D | read_requests / children |
path requestId:unspecified required |
200: array<ChildRequests> | — |
| 152 | GET /api/v1/Request/count |
D | read_request_stats / counts |
none documented | 200: RequestCountModel | — |
| 153 | GET /api/v1/Request/userhasrequest |
D | read_request_stats / has_requests |
query userId:string optional |
200: boolean | — |
| 154 | POST /api/v1/Request/movie/subscribe/{requestId} |
D | write_request_subscribe / subscribe |
path requestId:integer required |
200: boolean | — |
| 155 | POST /api/v1/Request/tv/subscribe/{requestId} |
D | write_request_subscribe / subscribe |
path requestId:integer required |
200: boolean | — |
| 156 | POST /api/v1/Request/movie/unsubscribe/{requestId} |
D | write_request_subscribe / unsubscribe |
path requestId:integer required |
200: boolean | — |
| 157 | POST /api/v1/Request/tv/unsubscribe/{requestId} |
D | write_request_subscribe / unsubscribe |
path requestId:integer required |
200: boolean | — |
| 158 | GET /api/v1/Request/movie/remaining |
D | read_request_stats / quota |
none documented | 200: RequestQuotaCountModel | — |
| 159 | GET /api/v1/Request/tv/remaining |
D | read_request_stats / quota |
none documented | 200: RequestQuotaCountModel | — |
| 160 | GET /api/v1/RequestRetry |
D | read_requests / retry_queue |
none documented | 200: array<FailedRequestViewModel> | Privileged queue read. |
| 161 | DELETE /api/v1/RequestRetry/{queueId} |
D | write_retry_remove |
path queueId:integer required |
200: body unspecified | — |
| 162 | GET /api/v2/Requests/movie/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:unspecified required; path position:unspecified required; path sort:unspecified required; path sortOrder:unspecified required |
200: RequestsViewModel | — |
| 163 | GET /api/v2/Requests/movie/availble/{count}/{position}/{sort}/{sortOrder} |
A | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | Misspelled alias; prefer available. |
| 164 | GET /api/v2/Requests/movie/available/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 165 | GET /api/v2/Requests/movie/processing/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 166 | GET /api/v2/Requests/movie/pending/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 167 | GET /api/v2/Requests/movie/denied/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 168 | GET /api/v2/Requests/movie/unavailable/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:unspecified required; path position:unspecified required; path sort:unspecified required; path sortOrder:unspecified required |
200: RequestsViewModel | — |
| 169 | GET /api/v2/Requests/tv/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:unspecified required; path position:unspecified required; path sort:unspecified required; path sortOrder:unspecified required |
200: RequestsViewModel | — |
| 170 | GET /api/v2/Requests/tv/pending/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 171 | GET /api/v2/Requests/tv/processing/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 172 | GET /api/v2/Requests/tv/available/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 173 | GET /api/v2/Requests/tv/denied/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 174 | GET /api/v2/Requests/tv/unavailable/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:unspecified required; path position:unspecified required; path sort:unspecified required; path sortOrder:unspecified required |
200: RequestsViewModel | — |
| 175 | POST /api/v2/Requests/movie/advancedoptions |
D | write_request_options / advanced |
body MediaAdvancedOptions | 200: RequestEngineResult | — |
| 176 | POST /api/v2/Requests/tv/advancedoptions |
D | write_request_options / advanced |
body MediaAdvancedOptions | 200: RequestEngineResult | — |
| 177 | GET /api/v2/Requests/album/available/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 178 | GET /api/v2/Requests/album/processing/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 179 | GET /api/v2/Requests/album/pending/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 180 | GET /api/v2/Requests/album/denied/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 181 | GET /api/v2/Requests/album/{count}/{position}/{sort}/{sortOrder} |
D | read_requests / list |
path count:integer required; path position:integer required; path sort:string required; path sortOrder:string required |
200: RequestsViewModel | — |
| 182 | POST /api/v2/Requests/tv |
D | write_request_create / tv:tmdb |
body TvRequestViewModelV2 | 200: RequestEngineResult | — |
| 183 | POST /api/v2/Requests/reprocess/{type}/{requestId}/{is4K} |
D | write_request_reprocess |
path type:RequestType required; path requestId:integer required; path is4K:boolean required |
200: body unspecified | Verify enum/target/4K combinations; do not infer album exclusion. |
| 184 | POST /api/v2/Requests/movie/collection/{collectionId} |
D | write_request_create / collection |
path collectionId:integer required |
200: RequestEngineResult | No request body documented; success is RequestEngineResult. |
| 185 | GET /api/v2/Requests/recentlyRequested |
D | read_requests / recent |
none documented | 200: array<RecentlyRequestedModel> | — |
| 186 | POST /api/v2/Search/multi/{searchTerm} |
D | read_search / multi |
path searchTerm:unspecified required; body MultiSearchFilter |
200: array<MultiSearchResult> | — |
| 187 | GET /api/v2/Search/Genres/{media} |
D | read_reference / genres |
path media:unspecified required |
200: array<Genre> | — |
| 188 | GET /api/v2/Search/Languages |
D | read_reference / languages |
none documented | 200: array<Language> | — |
| 189 | GET /api/v2/Search/movie/{movieDbId} |
D | read_media / details |
path movieDbId:unspecified required |
200: MovieFullInfoViewModel | — |
| 190 | GET /api/v2/Search/movie/imdb/{imdbid} |
D | read_media / details |
path imdbId:string required |
200: MovieFullInfoViewModel | — |
| 191 | GET /api/v2/Search/movie/request/{requestId} |
D | read_media / by_request |
path requestId:integer required |
200: MovieFullInfoViewModel | Request-ID namespace requires verification. |
| 192 | GET /api/v2/Search/movie/collection/{collectionId} |
D | read_discover / collection |
path collectionId:unspecified required |
200: MovieCollectionsViewModel | — |
| 193 | GET /api/v2/Search/tv/{tvdbId} |
A | read_media / details |
path tvdbid:unspecified required |
200: SearchFullInfoTvShowViewModel | TMDB-keyed alias of #195 despite the {tvdbId} placeholder; never use for a TVDB lookup. |
| 194 | GET /api/v2/Search/tv/request/{requestId} |
D | read_media / by_request |
path requestId:integer required |
200: SearchFullInfoTvShowViewModel | Request-ID namespace requires verification. |
| 195 | GET /api/v2/Search/tv/moviedb/{moviedbid} |
D | read_media / details |
path moviedbid:string required |
200: SearchFullInfoTvShowViewModel | — |
| 196 | POST /api/v2/Search/movie/similar |
D | read_discover / similar |
body SimilarMoviesRefineModel | 200: array<SearchMovieViewModel> | — |
| 197 | GET /api/v2/Search/movie/popular |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 198 | GET /api/v2/Search/movie/popular/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchMovieViewModel> | — |
| 199 | POST /api/v2/Search/advancedSearch/movie/{currentPosition}/{amountToLoad} |
D | read_discover / advanced_movie |
path currentPosition:integer required; path amountToLoad:integer required; body DiscoverModel |
200: array<SearchMovieViewModel> | — |
| 200 | GET /api/v2/Search/movie/seasonal/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchMovieViewModel> | — |
| 201 | GET /api/v2/Search/movie/requested/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchMovieViewModel> | — |
| 202 | GET /api/v2/Search/tv/requested/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchFullInfoTvShowViewModel> | — |
| 203 | GET /api/v2/Search/movie/nowplaying |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 204 | GET /api/v2/Search/movie/nowplaying/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchMovieViewModel> | — |
| 205 | GET /api/v2/Search/movie/toprated |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 206 | GET /api/v2/Search/movie/toprated/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchMovieViewModel> | — |
| 207 | GET /api/v2/Search/movie/upcoming |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 208 | GET /api/v2/Search/movie/upcoming/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchMovieViewModel> | — |
| 209 | GET /api/v2/Search/tv/popular/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchTvShowViewModel> | — |
| 210 | GET /api/v2/Search/tv/anticipated/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchTvShowViewModel> | — |
| 211 | GET /api/v2/Search/tv/mostwatched/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchTvShowViewModel> | — |
| 212 | GET /api/v2/Search/tv/trending/{currentPosition}/{amountToLoad} |
D | read_discover / browse |
path currentPosition:integer required; path amountToLoad:integer required |
200: array<SearchTvShowViewModel> | — |
| 213 | GET /api/v2/Search/actor/{actorId}/movie |
D | read_discover / credits |
path actorId:unspecified required |
200: ActorCredits | — |
| 214 | GET /api/v2/Search/actor/{actorId}/tv |
D | read_discover / credits |
path actorId:unspecified required |
200: ActorCredits | — |
| 215 | GET /api/v2/Search/artist/{artistId} |
D | read_media / details |
path artistId:string required |
200: ArtistInformation | — |
| 216 | GET /api/v2/Search/artist/request/{requestId} |
D | read_media / by_request |
path requestId:integer required |
200: ArtistInformation | Request-ID namespace requires verification. MCP media=album maps to this literal artist route segment. |
| 217 | GET /api/v2/Search/artist/album/{albumId} |
D | read_media / details |
path albumId:string required |
200: ReleaseGroup | — |
| 218 | GET /api/v2/Search/releasegroupart/{musicBrainzId} |
D | read_library / album_art |
path musicBrainzId:string required |
200: AlbumArt | — |
| 219 | GET /api/v2/Search/ratings/movie/{name}/{year} |
D | read_media / ratings |
path name:string required; path year:integer required |
200: MovieRatings | Ombi 4.53.x depends on removed Rotten Tomatoes private endpoints; on 404/5xx/empty results, fall back to an exact title/year v1 movie search and label TMDB rating fields. |
| 220 | GET /api/v2/Search/ratings/tv/{name}/{year} |
D | read_media / ratings |
path name:string required; path year:integer required |
200: TvRatings | Ombi 4.53.x depends on removed Rotten Tomatoes private endpoints; on 404/5xx/empty results, fall back to an exact title/year v1 TV search and label TVMaze rating fields. |
| 221 | GET /api/v2/Search/stream/movie/{movieDbId} |
D | read_media / streaming |
path movieDBId:integer required |
200: array<StreamingData> | — |
| 222 | GET /api/v2/Search/stream/tv/{movieDbId} |
D | read_media / streaming |
path movieDbId:integer required |
200: array<StreamingData> | — |
| 223 | GET /api/v1/Search/movie/{searchTerm} |
D | read_search / text |
path searchTerm:unspecified required |
200: array<SearchMovieViewModel> | — |
| 224 | POST /api/v1/Search/movie/actor |
D | read_search / actor |
body SearchActorModel | 200: body unspecified | — |
| 225 | POST /api/v1/Search/movie |
D | read_search / movie_refine |
body SearchMovieRefineModel | 200: body unspecified | — |
| 226 | GET /api/v1/Search/movie/info/{theMovieDbId} |
A | read_media / details |
path theMovieDbId:unspecified required |
200: SearchMovieViewModel | Legacy details alternative. |
| 227 | POST /api/v1/Search/movie/info |
D | read_media / movie_localized |
body SearchMovieExtraInfoRefineModel | 200: body unspecified | — |
| 228 | POST /api/v1/Search/movie/similar |
A | read_discover / similar |
body SimilarMoviesRefineModel | 200: array<SearchMovieViewModel> | Preserve language semantics; no automatic fallback. |
| 229 | GET /api/v1/Search/movie/{theMovieDbId}/similar |
A | read_discover / similar |
path theMovieDbId:unspecified required |
200: array<SearchMovieViewModel> | Preserve language semantics; no automatic fallback. |
| 230 | GET /api/v1/Search/movie/popular |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 231 | GET /api/v1/Search/movie/nowplaying |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 232 | GET /api/v1/Search/movie/toprated |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 233 | GET /api/v1/Search/movie/upcoming |
A | read_discover / browse |
none documented | 200: array<SearchMovieViewModel> | Nonpaged/legacy alternate only. |
| 234 | GET /api/v1/Search/tv/{searchTerm} |
D | read_search / text |
path searchTerm:unspecified required |
200: array<SearchTvShowViewModel> | TVMaze-backed; theMovieDbId carries the TVDB id (emit tvdb), seriesId the TVMaze id (emit tvmaze). |
| 235 | GET /api/v1/Search/tv/info/{tvdbId} |
D | read_media / details |
path tvdbId:unspecified required |
200: SearchTvShowViewModel | TVMaze-backed; the only true TVDB details route — also read privately by write_request_create season expansion. theMovieDbId carries the TVDB id (emit tvdb); seriesId is the TVMaze id (emit tvmaze). |
| 236 | GET /api/v1/Search/tv/popular |
A | read_discover / browse |
none documented | 200: array<SearchTvShowViewModel> | Nonpaged/legacy alternate only. |
| 237 | GET /api/v1/Search/tv/anticipated |
A | read_discover / browse |
none documented | 200: array<SearchTvShowViewModel> | Nonpaged/legacy alternate only. |
| 238 | GET /api/v1/Search/tv/mostwatched |
A | read_discover / browse |
none documented | 200: array<SearchTvShowViewModel> | Nonpaged/legacy alternate only. |
| 239 | GET /api/v1/Search/tv/trending |
A | read_discover / browse |
none documented | 200: array<SearchTvShowViewModel> | Nonpaged/legacy alternate only. |
| 240 | GET /api/v1/Search/music/artist/{searchTerm} |
D | read_search / text |
path searchTerm:string required |
200: array<SearchArtistViewModel> | — |
| 241 | GET /api/v1/Search/music/album/{searchTerm} |
D | read_search / text |
path searchTerm:string required |
200: array<SearchAlbumViewModel> | — |
| 242 | GET /api/v1/Search/music/album/info/{foreignAlbumId} |
A | read_media / details |
path foreignAlbumId:string required |
200: SearchAlbumViewModel | Legacy details alternative. |
| 243 | GET /api/v1/Search/music/artist/album/{foreignArtistId} |
D | read_discover / artist_albums |
path foreignArtistId:string required |
200: array<SearchAlbumViewModel> | — |
| 244 | GET /api/v1/Settings/ombi |
D | read_settings / ombi |
none documented | 200: OmbiSettings | Allowlisted projection; no raw secrets. |
| 245 | POST /api/v1/Settings/ombi |
P | write_settings_patch / patch:ombi |
body OmbiSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 246 | GET /api/v1/Settings/baseurl |
D | read_settings / base_url |
none documented | 200: string | Allowlisted projection; no raw secrets. |
| 247 | GET /api/v1/Settings/about |
D | read_server / about |
none documented | 200: AboutViewModel | — |
| 248 | POST /api/v1/Settings/ombi/resetApi |
X | manual administration |
none documented | 200: string | Key rotation would invalidate configured credentials; no tool. |
| 249 | GET /api/v1/Settings/plex |
D | read_settings / plex |
none documented | 200: PlexSettings | Allowlisted projection; no raw secrets. |
| 250 | POST /api/v1/Settings/plex |
P | write_settings_patch / patch:plex |
body PlexSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 251 | GET /api/v1/Settings/clientid |
D | read_settings / client_id |
none documented | 200: string | Allowlisted projection; no raw secrets. |
| 252 | GET /api/v1/Settings/emby |
D | read_settings / emby |
none documented | 200: EmbySettings | Allowlisted projection; no raw secrets. |
| 253 | POST /api/v1/Settings/emby |
P | write_settings_patch / patch:emby |
body EmbySettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 254 | GET /api/v1/Settings/jellyfin |
D | read_settings / jellyfin |
none documented | 200: JellyfinSettings | Allowlisted projection; no raw secrets. |
| 255 | POST /api/v1/Settings/jellyfin |
P | write_settings_patch / patch:jellyfin |
body JellyfinSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 256 | GET /api/v1/Settings/landingpage |
D | read_settings / landingpage |
none documented | 200: LandingPageSettings | Allowlisted projection; no raw secrets. |
| 257 | POST /api/v1/Settings/landingpage |
P | write_settings_patch / patch:landingpage |
body LandingPageSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 258 | GET /api/v1/Settings/customization |
D | read_settings / customization |
none documented | 200: CustomizationSettings | Allowlisted projection; no raw secrets. |
| 259 | POST /api/v1/Settings/customization |
P | write_settings_patch / patch:customization |
body CustomizationSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 260 | GET /api/v1/Settings/defaultlanguage |
D | read_settings / default_language |
none documented | 200: string | Allowlisted projection; no raw secrets. |
| 261 | GET /api/v1/Settings/themes |
D | read_settings / themes |
none documented | 200: array<PresetThemeViewModel> | Allowlisted projection; no raw secrets. |
| 262 | GET /api/v1/Settings/sonarr |
D | read_settings / sonarr |
none documented | 200: SonarrSettings | Allowlisted projection; no raw secrets. |
| 263 | POST /api/v1/Settings/sonarr |
P | write_settings_patch / patch:sonarr |
body SonarrSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 264 | GET /api/v1/Settings/radarr |
D | read_settings / radarr |
none documented | 200: RadarrCombinedModel | Allowlisted projection; no raw secrets. |
| 265 | POST /api/v1/Settings/radarr |
P | write_settings_patch / patch:radarr |
body RadarrCombinedModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 266 | GET /api/v1/Settings/lidarr |
D | read_settings / lidarr |
none documented | 200: LidarrSettings | Allowlisted projection; no raw secrets. |
| 267 | POST /api/v1/Settings/lidarr |
P | write_settings_patch / patch:lidarr |
body LidarrSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 268 | GET /api/v1/Settings/lidarrenabled |
D | read_settings / lidarrenabled |
none documented | 200: boolean | Allowlisted projection; no raw secrets. |
| 269 | POST /api/v1/Settings/authentication |
P | write_settings_patch / patch:authentication |
body AuthenticationSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 270 | GET /api/v1/Settings/authentication |
D | read_settings / authentication |
none documented | 200: AuthenticationSettings | Allowlisted projection; no raw secrets. |
| 271 | POST /api/v1/Settings/Update |
P | write_settings_patch / patch:update |
body UpdateSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 272 | GET /api/v1/Settings/Update |
D | read_settings / update |
none documented | 200: UpdateSettings | Allowlisted projection; no raw secrets. |
| 273 | GET /api/v1/Settings/UserManagement |
D | read_settings / user_management |
none documented | 200: UserManagementSettings | Allowlisted projection; no raw secrets. |
| 274 | POST /api/v1/Settings/UserManagement |
P | write_settings_patch / patch:user_management |
body UserManagementSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 275 | GET /api/v1/Settings/CouchPotato |
D | read_settings / couchpotato |
none documented | 200: CouchPotatoSettings | Allowlisted projection; no raw secrets. |
| 276 | POST /api/v1/Settings/CouchPotato |
P | write_settings_patch / patch:couchpotato |
body CouchPotatoSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 277 | GET /api/v1/Settings/DogNzb |
D | read_settings / dognzb |
none documented | 200: DogNzbSettings | Allowlisted projection; no raw secrets. |
| 278 | POST /api/v1/Settings/DogNzb |
P | write_settings_patch / patch:dognzb |
body DogNzbSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 279 | POST /api/v1/Settings/SickRage |
P | write_settings_patch / patch:sickrage |
body SickRageSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 280 | GET /api/v1/Settings/SickRage |
D | read_settings / sickrage |
none documented | 200: SickRageSettings | Allowlisted projection; no raw secrets. |
| 281 | GET /api/v1/Settings/jobs |
D | read_settings / jobs |
none documented | 200: JobSettings | Allowlisted projection; no raw secrets. |
| 282 | POST /api/v1/Settings/jobs |
P | write_settings_patch / patch:jobs |
body JobSettings | 200: JobSettingsViewModel | Only typed non-secret patch; preserve omitted/private fields. |
| 283 | POST /api/v1/Settings/testcron |
D | read_server / cron_validate |
body CronViewModelBody | 200: CronTestModel | Administrator-gated read calculation; Quartz uses 6-7 fields and ? for the unused day field. |
| 284 | POST /api/v1/Settings/Issues |
P | write_settings_patch / patch:issues |
body IssueSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 285 | GET /api/v1/Settings/Issues |
D | read_settings / issues |
none documented | 200: IssueSettings | Allowlisted projection; no raw secrets. |
| 286 | GET /api/v1/Settings/issuesenabled |
D | read_settings / issuesenabled |
none documented | 200: boolean | Allowlisted projection; no raw secrets. |
| 287 | POST /api/v1/Settings/vote |
P | write_settings_patch / patch:vote |
body VoteSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 288 | GET /api/v1/Settings/vote |
D | read_settings / vote |
none documented | 200: VoteSettings | Allowlisted projection; no raw secrets. |
| 289 | GET /api/v1/Settings/voteenabled |
D | read_settings / voteenabled |
none documented | 200: boolean | Allowlisted projection; no raw secrets. |
| 290 | POST /api/v1/Settings/themoviedb |
P | write_settings_patch / patch:themoviedb |
body TheMovieDbSettings | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 291 | GET /api/v1/Settings/themoviedb |
D | read_settings / themoviedb |
none documented | 200: TheMovieDbSettings | Allowlisted projection; no raw secrets. |
| 292 | POST /api/v1/Settings/notifications/email |
P | write_settings_patch / patch:notifications.email |
body EmailNotificationsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 293 | GET /api/v1/Settings/notifications/email |
D | read_settings / notifications.email |
none documented | 200: EmailNotificationsViewModel | Allowlisted projection; no raw secrets. |
| 294 | GET /api/v1/Settings/notifications/email/enabled |
D | read_settings / notifications.email.enabled |
none documented | 200: boolean | Allowlisted projection; no raw secrets. |
| 295 | POST /api/v1/Settings/notifications/discord |
P | write_settings_patch / patch:notifications.discord |
body DiscordNotificationsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 296 | GET /api/v1/Settings/notifications/discord |
D | read_settings / notifications.discord |
none documented | 200: DiscordNotificationsViewModel | Allowlisted projection; no raw secrets. |
| 297 | POST /api/v1/Settings/notifications/telegram |
P | write_settings_patch / patch:notifications.telegram |
body TelegramNotificationsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 298 | GET /api/v1/Settings/notifications/telegram |
D | read_settings / notifications.telegram |
none documented | 200: TelegramNotificationsViewModel | Allowlisted projection; no raw secrets. |
| 299 | POST /api/v1/Settings/notifications/pushbullet |
P | write_settings_patch / patch:notifications.pushbullet |
body PushbulletNotificationViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 300 | GET /api/v1/Settings/notifications/pushbullet |
D | read_settings / notifications.pushbullet |
none documented | 200: PushbulletNotificationViewModel | Allowlisted projection; no raw secrets. |
| 301 | POST /api/v1/Settings/notifications/pushover |
P | write_settings_patch / patch:notifications.pushover |
body PushoverNotificationViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 302 | GET /api/v1/Settings/notifications/pushover |
D | read_settings / notifications.pushover |
none documented | 200: PushoverNotificationViewModel | Allowlisted projection; no raw secrets. |
| 303 | POST /api/v1/Settings/notifications/slack |
P | write_settings_patch / patch:notifications.slack |
body SlackNotificationsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 304 | GET /api/v1/Settings/notifications/slack |
D | read_settings / notifications.slack |
none documented | 200: SlackNotificationsViewModel | Allowlisted projection; no raw secrets. |
| 305 | POST /api/v1/Settings/notifications/mattermost |
P | write_settings_patch / patch:notifications.mattermost |
body MattermostNotificationsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 306 | GET /api/v1/Settings/notifications/mattermost |
D | read_settings / notifications.mattermost |
none documented | 200: MattermostNotificationsViewModel | Allowlisted projection; no raw secrets. |
| 307 | GET /api/v1/Settings/notifications/twilio |
D | read_settings / notifications.twilio |
none documented | 200: TwilioSettingsViewModel | Allowlisted projection; no raw secrets. |
| 308 | POST /api/v1/Settings/notifications/twilio |
P | write_settings_patch / patch:notifications.twilio |
body TwilioSettingsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 309 | POST /api/v1/Settings/notifications/mobile |
P | write_settings_patch / patch:notifications.mobile |
body MobileNotificationsViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 310 | GET /api/v1/Settings/notifications/mobile |
D | read_settings / notifications.mobile |
none documented | 200: MobileNotificationsViewModel | Allowlisted projection; no raw secrets. |
| 311 | POST /api/v1/Settings/notifications/gotify |
P | write_settings_patch / patch:notifications.gotify |
body GotifyNotificationViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 312 | GET /api/v1/Settings/notifications/gotify |
D | read_settings / notifications.gotify |
none documented | 200: GotifyNotificationViewModel | Allowlisted projection; no raw secrets. |
| 313 | POST /api/v1/Settings/notifications/ntfy |
P | write_settings_patch / patch:notifications.ntfy |
body NtfyNotificationViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 314 | GET /api/v1/Settings/notifications/ntfy |
D | read_settings / notifications.ntfy |
none documented | 200: NtfyNotificationViewModel | Allowlisted projection; no raw secrets. |
| 315 | POST /api/v1/Settings/notifications/webhook |
P | write_settings_patch / patch:notifications.webhook |
body WebhookNotificationViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 316 | GET /api/v1/Settings/notifications/webhook |
D | read_settings / notifications.webhook |
none documented | 200: WebhookNotificationViewModel | Allowlisted projection; no raw secrets. |
| 317 | POST /api/v1/Settings/notifications/newsletter |
P | write_settings_patch / patch:notifications.newsletter |
body NewsletterNotificationViewModel | 200: boolean | Only typed non-secret patch; preserve omitted/private fields. |
| 318 | GET /api/v1/Settings/notifications/newsletter |
D | read_settings / notifications.newsletter |
none documented | 200: NewsletterNotificationViewModel | Allowlisted projection; no raw secrets. |
| 319 | POST /api/v1/Sonarr/Profiles |
A | read_integration / options:sonarr/profiles |
body SonarrSettings | 200: array<SonarrProfile> | Private saved settings only; no connection overrides. |
| 320 | GET /api/v1/Sonarr/Profiles |
D | read_integration / options:sonarr/profiles |
none documented | 200: array<SonarrProfile> | — |
| 321 | POST /api/v1/Sonarr/RootFolders |
A | read_integration / options:sonarr/root_folders |
body SonarrSettings | 200: array<SonarrRootFolder> | Private saved settings only; no connection overrides. |
| 322 | GET /api/v1/Sonarr/RootFolders |
D | read_integration / options:sonarr/root_folders |
none documented | 200: array<SonarrRootFolder> | — |
| 323 | GET /api/v1/Sonarr/v3/LanguageProfiles |
D | read_integration / options:sonarr/language_profiles |
none documented | 200: array<LanguageProfiles> | — |
| 324 | POST /api/v1/Sonarr/v3/LanguageProfiles |
A | read_integration / options:sonarr/language_profiles |
body SonarrSettings | 200: array<LanguageProfiles> | Private saved settings only; no connection overrides. |
| 325 | POST /api/v1/Sonarr/tags |
A | read_integration / options:sonarr/tags |
body SonarrSettings | 200: array<Tag> | Private saved settings only; no connection overrides. |
| 326 | GET /api/v1/Sonarr/tags |
D | read_integration / options:sonarr/tags |
none documented | 200: array<Tag> | — |
| 327 | GET /api/v1/Sonarr/enabled |
D | read_integration / options:sonarr/enabled |
none documented | 200: boolean | — |
| 328 | GET /api/v1/Sonarr/version |
D | read_integration / options:sonarr/version |
none documented | 200: string | — |
| 329 | GET /api/v1/Stats |
D | read_server / stats |
query from:string required; query to:string required |
200: UserStatsSummary | from/to are required at the MCP layer; bare calls cause an upstream NRE. |
| 330 | GET /api/v1/Status |
D | read_server / status |
none documented | 200: HttpStatusCode | — |
| 331 | GET /api/v1/Status/info |
D | read_server / status_info |
none documented | 200: string | — |
| 332 | GET /api/v2/System/news |
X | action removed | none documented | 200: Markdig HTML text | Not structured data; action removed (#13). |
| 333 | GET /api/v2/System/logs |
D | read_logs / list |
none documented | 200: string array of file names | Verified on 4.53.10. |
| 334 | GET /api/v2/System/logs/{logFileName} |
D | read_logs / read |
path logFileName:string required |
200: plain text | Vetted opaque ID maps to filename; sanitized bounded local slicing (verified 4.53.10). |
| 335 | GET /api/v2/System/logs/download/{logFileName} |
X | raw diagnostic download |
path logFileName:string required |
200: body unspecified | May expose secrets; sanitized logs tool is the supported alternative. |
| 336 | POST /api/v1/Tester/discord |
P | write_integration_test / discord |
body DiscordNotificationSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 337 | POST /api/v1/Tester/pushbullet |
P | write_integration_test / pushbullet |
body PushbulletSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 338 | POST /api/v1/Tester/pushover |
P | write_integration_test / pushover |
body PushoverSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 339 | POST /api/v1/Tester/gotify |
P | write_integration_test / gotify |
body GotifySettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 340 | POST /api/v1/Tester/ntfy |
P | write_integration_test / ntfy |
body NtfySettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 341 | POST /api/v1/Tester/webhook |
P | write_integration_test / webhook |
body WebhookSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 342 | POST /api/v1/Tester/mattermost |
P | write_integration_test / mattermost |
body MattermostNotificationSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 343 | POST /api/v1/Tester/slack |
P | write_integration_test / slack |
body SlackNotificationSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 344 | POST /api/v1/Tester/email |
P | write_integration_test / email |
body EmailNotificationSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 345 | POST /api/v1/Tester/plex |
P | write_integration_test / plex |
body PlexServers | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 346 | POST /api/v1/Tester/emby |
P | write_integration_test / emby |
body EmbyServers | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 347 | POST /api/v1/Tester/jellyfin |
P | write_integration_test / jellyfin |
body JellyfinServers | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 348 | POST /api/v1/Tester/radarr |
P | write_integration_test / radarr |
body RadarrSettings | 200: TesterResultModel | Saved authorized profile only; exact tester body differs by service. |
| 349 | POST /api/v1/Tester/sonarr |
P | write_integration_test / sonarr |
body SonarrSettings | 200: TesterResultModel | Saved authorized profile only; exact tester body differs by service. |
| 350 | POST /api/v1/Tester/couchpotato |
P | write_integration_test / couchpotato |
body CouchPotatoSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 351 | POST /api/v1/Tester/telegram |
P | write_integration_test / telegram |
body TelegramSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 352 | POST /api/v1/Tester/sickrage |
P | write_integration_test / sickrage |
body SickRageSettings | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 353 | POST /api/v1/Tester/newsletter |
P | write_integration_test / newsletter |
body NewsletterNotificationViewModel | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 354 | POST /api/v1/Tester/mobile |
P | write_integration_test / mobile |
body MobileNotificationTestViewModel | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 355 | POST /api/v1/Tester/lidarr |
P | write_integration_test / lidarr |
body LidarrSettings | 200: TesterResultModel | Saved authorized profile only; exact tester body differs by service. |
| 356 | POST /api/v1/Tester/whatsapp |
P | write_integration_test / whatsapp |
body WhatsAppSettingsViewModel | 200: boolean | Saved authorized profile only; exact tester body differs by service. |
| 357 | GET /api/v1/TheMovieDb/Keywords |
D | read_reference / keywords |
query searchTerm:unspecified optional |
200: array<TheMovidDbKeyValue> | — |
| 358 | GET /api/v1/TheMovieDb/Keywords/{keywordId} |
D | read_reference / keyword |
path keywordId:unspecified required |
200: body unspecified | — |
| 359 | GET /api/v1/TheMovieDb/WatchProviders/movie |
D | read_reference / watch_providers |
query searchTerm:unspecified optional |
200: array<WatchProvidersResults> | — |
| 360 | GET /api/v1/TheMovieDb/WatchProviders/tv |
D | read_reference / watch_providers |
query searchTerm:unspecified optional |
200: array<WatchProvidersResults> | — |
| 361 | POST /api/v1/Token |
I | upstream authentication adapter |
body UserAuthModel | 200: Token | Not model-callable; JWT-primary auth adapter (OMBI_AUTH_MODE=jwt); login/refresh semantics per 01-authentication.md; Bearer-on-all-routes remains Verify. |
| 362 | POST /api/v1/Token/plextoken |
I | upstream authentication adapter |
body PlexTokenAuthentication | success unspecified | Not model-callable; JWT-primary auth adapter (OMBI_AUTH_MODE=jwt); login/refresh semantics per 01-authentication.md; Bearer-on-all-routes remains Verify. |
| 363 | GET /api/v1/Token/{pinId} |
I | upstream authentication adapter |
path pinId:integer required |
success unspecified | Not model-callable; JWT-primary auth adapter (OMBI_AUTH_MODE=jwt); login/refresh semantics per 01-authentication.md; Bearer-on-all-routes remains Verify. |
| 364 | POST /api/v1/Token/refresh |
I | upstream authentication adapter |
body TokenController_TokenRefresh | success unspecified | Not model-callable; JWT-primary auth adapter (OMBI_AUTH_MODE=jwt); login/refresh semantics per 01-authentication.md; Bearer-on-all-routes remains Verify. |
| 365 | POST /api/v1/Token/requirePassword |
I | upstream authentication adapter |
body UserAuthModel | 200: boolean | Not model-callable; JWT-primary auth adapter (OMBI_AUTH_MODE=jwt); login/refresh semantics per 01-authentication.md; Bearer-on-all-routes remains Verify. |
| 366 | POST /api/v1/Token/header_auth |
I | upstream authentication adapter |
none documented | 200: body unspecified | Not model-callable; JWT-primary auth adapter (OMBI_AUTH_MODE=jwt); login/refresh semantics per 01-authentication.md; Bearer-on-all-routes remains Verify. |
| 367 | GET /api/v1/Update |
D | read_server / update_info |
none documented | 200: UpdateModel | — |
| 368 | GET /api/v1/Vote |
D | read_votes / list |
none documented | 200: array<VoteViewModel> | Ombi 4.53.10 can return HTTP 500 for existing instance data; no lossless alternate read route exists, so preserve UPSTREAM_REJECTED. |
| 369 | POST /api/v1/Vote/up/movie/{requestId} |
D | write_vote |
path requestId:integer required |
200: VoteEngineResult | — |
| 370 | POST /api/v1/Vote/up/tv/{requestId} |
D | write_vote |
path requestId:integer required |
200: VoteEngineResult | — |
| 371 | POST /api/v1/Vote/up/album/{requestId} |
D | write_vote |
path requestId:integer required |
200: VoteEngineResult | — |
| 372 | POST /api/v1/Vote/down/movie/{requestId} |
D | write_vote |
path requestId:integer required |
200: VoteEngineResult | — |
| 373 | POST /api/v1/Vote/down/tv/{requestId} |
D | write_vote |
path requestId:integer required |
200: VoteEngineResult | — |
| 374 | POST /api/v1/Vote/down/album/{requestId} |
D | write_vote |
path requestId:integer required |
200: VoteEngineResult | — |
| 375 | GET /api/v1/Vote/movie/{requestId} |
D | read_votes / get |
path requestId:integer required |
200: array<Votes> | Ombi 4.53.10 can return HTTP 500 for existing instance data; no lossless alternate read route exists, so preserve UPSTREAM_REJECTED. |
| 376 | GET /api/v1/Vote/music/{requestId} |
D | read_votes / get |
path requestId:integer required |
200: array<Votes> | — |
| 377 | GET /api/v1/Vote/tv/{requestId} |
D | read_votes / get |
path requestId:integer required |
200: array<Votes> | — |