mirror of
https://github.com/sct/overseerr.git
synced 2025-10-02 08:35:39 +02:00

* feat(logs): add search filter * refactor(logs): move loading spinner inside log viewer Inputting text in the search bar on the logs page would refresh the page losing focus on the search bar. This moves the loading spinner inside the log viewer, so that it is not as disruptive as it would * fix(logs): escape string for search filter * chore: rebase * fix(logs): suggested changes
5873 lines
155 KiB
YAML
5873 lines
155 KiB
YAML
openapi: '3.0.2'
|
|
info:
|
|
title: 'Overseerr API'
|
|
version: '1.0.0'
|
|
description: |
|
|
This is the documentation for the Overseerr API backend.
|
|
|
|
Two primary authentication methods are supported:
|
|
|
|
- **Cookie Authentication**: A valid sign-in to the `/auth/plex` or `/auth/local` will generate a valid authentication cookie.
|
|
- **API Key Authentication**: Sign-in is also possible by passing an `X-Api-Key` header along with a valid API Key generated by Overseerr.
|
|
tags:
|
|
- name: public
|
|
description: Public API endpoints requiring no authentication.
|
|
- name: settings
|
|
description: Endpoints related to Overseerr's settings and configuration.
|
|
- name: auth
|
|
description: Endpoints related to logging in or out, and the currently authenticated user.
|
|
- name: users
|
|
description: Endpoints related to user management.
|
|
- name: search
|
|
description: Endpoints related to search and discovery.
|
|
- name: request
|
|
description: Endpoints related to request management.
|
|
- name: movies
|
|
description: Endpoints related to retrieving movies and their details.
|
|
- name: tv
|
|
description: Endpoints related to retrieving TV series and their details.
|
|
- name: person
|
|
description: Endpoints related to retrieving person details.
|
|
- name: media
|
|
description: Endpoints related to media management.
|
|
- name: collection
|
|
description: Endpoints related to retrieving collection details.
|
|
- name: service
|
|
description: Endpoints related to getting service (Radarr/Sonarr) details.
|
|
servers:
|
|
- url: '{server}/api/v1'
|
|
variables:
|
|
server:
|
|
default: http://localhost:5055
|
|
|
|
components:
|
|
schemas:
|
|
User:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
example: 1
|
|
readOnly: true
|
|
email:
|
|
type: string
|
|
example: 'hey@itsme.com'
|
|
readOnly: true
|
|
username:
|
|
type: string
|
|
plexToken:
|
|
type: string
|
|
readOnly: true
|
|
plexUsername:
|
|
type: string
|
|
readOnly: true
|
|
userType:
|
|
type: integer
|
|
example: 1
|
|
readOnly: true
|
|
permissions:
|
|
type: number
|
|
example: 0
|
|
avatar:
|
|
type: string
|
|
readOnly: true
|
|
createdAt:
|
|
type: string
|
|
example: '2020-09-02T05:02:23.000Z'
|
|
readOnly: true
|
|
updatedAt:
|
|
type: string
|
|
example: '2020-09-02T05:02:23.000Z'
|
|
readOnly: true
|
|
requestCount:
|
|
type: number
|
|
example: 5
|
|
readOnly: true
|
|
required:
|
|
- id
|
|
- email
|
|
- createdAt
|
|
- updatedAt
|
|
UserSettings:
|
|
type: object
|
|
properties:
|
|
locale:
|
|
type: string
|
|
region:
|
|
type: string
|
|
originalLanguage:
|
|
type: string
|
|
MainSettings:
|
|
type: object
|
|
properties:
|
|
apiKey:
|
|
type: string
|
|
readOnly: true
|
|
appLanguage:
|
|
type: string
|
|
example: en
|
|
applicationTitle:
|
|
type: string
|
|
example: Overseerr
|
|
applicationUrl:
|
|
type: string
|
|
example: https://os.example.com
|
|
trustProxy:
|
|
type: boolean
|
|
example: true
|
|
csrfProtection:
|
|
type: boolean
|
|
example: false
|
|
hideAvailable:
|
|
type: boolean
|
|
example: false
|
|
partialRequestsEnabled:
|
|
type: boolean
|
|
example: false
|
|
localLogin:
|
|
type: boolean
|
|
example: true
|
|
newPlexLogin:
|
|
type: boolean
|
|
example: true
|
|
defaultPermissions:
|
|
type: number
|
|
example: 32
|
|
PlexLibrary:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
example: Movies
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
required:
|
|
- id
|
|
- name
|
|
- enabled
|
|
PlexSettings:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
example: 'Main Server'
|
|
readOnly: true
|
|
machineId:
|
|
type: string
|
|
example: '1234123412341234'
|
|
readOnly: true
|
|
ip:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
port:
|
|
type: number
|
|
example: 32400
|
|
useSsl:
|
|
type: boolean
|
|
nullable: true
|
|
libraries:
|
|
type: array
|
|
readOnly: true
|
|
items:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
webAppUrl:
|
|
type: string
|
|
nullable: true
|
|
example: 'https://app.plex.tv/desktop'
|
|
required:
|
|
- name
|
|
- machineId
|
|
- ip
|
|
- port
|
|
PlexConnection:
|
|
type: object
|
|
properties:
|
|
protocol:
|
|
type: string
|
|
example: 'https'
|
|
address:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
port:
|
|
type: number
|
|
example: 32400
|
|
uri:
|
|
type: string
|
|
example: 'https://127-0-0-1.2ab6ce1a093d465e910def96cf4e4799.plex.direct:32400'
|
|
local:
|
|
type: boolean
|
|
example: true
|
|
status:
|
|
type: number
|
|
example: 200
|
|
message:
|
|
type: string
|
|
example: 'OK'
|
|
required:
|
|
- protocol
|
|
- address
|
|
- port
|
|
- uri
|
|
- local
|
|
PlexDevice:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
example: 'My Plex Server'
|
|
product:
|
|
type: string
|
|
example: 'Plex Media Server'
|
|
productVersion:
|
|
type: string
|
|
example: '1.21'
|
|
platform:
|
|
type: string
|
|
example: 'Linux'
|
|
platformVersion:
|
|
type: string
|
|
example: 'default/linux/amd64/17.1/systemd'
|
|
device:
|
|
type: string
|
|
example: 'PC'
|
|
clientIdentifier:
|
|
type: string
|
|
example: '85a943ce-a0cc-4d2a-a4ec-f74f06e40feb'
|
|
createdAt:
|
|
type: string
|
|
example: '2021-01-01T00:00:00.000Z'
|
|
lastSeenAt:
|
|
type: string
|
|
example: '2021-01-01T00:00:00.000Z'
|
|
provides:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: 'server'
|
|
owned:
|
|
type: boolean
|
|
example: true
|
|
ownerID:
|
|
type: string
|
|
example: '12345'
|
|
home:
|
|
type: boolean
|
|
example: true
|
|
sourceTitle:
|
|
type: string
|
|
example: 'xyzabc'
|
|
accessToken:
|
|
type: string
|
|
example: 'supersecretaccesstoken'
|
|
publicAddress:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
httpsRequired:
|
|
type: boolean
|
|
example: true
|
|
synced:
|
|
type: boolean
|
|
example: true
|
|
relay:
|
|
type: boolean
|
|
example: true
|
|
dnsRebindingProtection:
|
|
type: boolean
|
|
example: false
|
|
natLoopbackSupported:
|
|
type: boolean
|
|
example: false
|
|
publicAddressMatches:
|
|
type: boolean
|
|
example: false
|
|
presence:
|
|
type: boolean
|
|
example: true
|
|
connection:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PlexConnection'
|
|
required:
|
|
- name
|
|
- product
|
|
- productVersion
|
|
- platform
|
|
- device
|
|
- clientIdentifier
|
|
- createdAt
|
|
- lastSeenAt
|
|
- provides
|
|
- owned
|
|
- connection
|
|
TautulliSettings:
|
|
type: object
|
|
properties:
|
|
hostname:
|
|
type: string
|
|
nullable: true
|
|
example: 'tautulli.example.com'
|
|
port:
|
|
type: number
|
|
nullable: true
|
|
example: 8181
|
|
useSsl:
|
|
type: boolean
|
|
nullable: true
|
|
apiKey:
|
|
type: string
|
|
nullable: true
|
|
externalUrl:
|
|
type: string
|
|
nullable: true
|
|
RadarrSettings:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 0
|
|
readOnly: true
|
|
name:
|
|
type: string
|
|
example: 'Radarr Main'
|
|
hostname:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
port:
|
|
type: number
|
|
example: 7878
|
|
apiKey:
|
|
type: string
|
|
example: 'exampleapikey'
|
|
useSsl:
|
|
type: boolean
|
|
example: false
|
|
baseUrl:
|
|
type: string
|
|
activeProfileId:
|
|
type: number
|
|
example: 1
|
|
activeProfileName:
|
|
type: string
|
|
example: 720p/1080p
|
|
activeDirectory:
|
|
type: string
|
|
example: '/movies'
|
|
is4k:
|
|
type: boolean
|
|
example: false
|
|
minimumAvailability:
|
|
type: string
|
|
example: 'In Cinema'
|
|
isDefault:
|
|
type: boolean
|
|
example: false
|
|
externalUrl:
|
|
type: string
|
|
example: http://radarr.example.com
|
|
syncEnabled:
|
|
type: boolean
|
|
example: false
|
|
preventSearch:
|
|
type: boolean
|
|
example: false
|
|
required:
|
|
- name
|
|
- hostname
|
|
- port
|
|
- apiKey
|
|
- useSsl
|
|
- activeProfileId
|
|
- activeProfileName
|
|
- activeDirectory
|
|
- is4k
|
|
- minimumAvailability
|
|
- isDefault
|
|
SonarrSettings:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 0
|
|
readOnly: true
|
|
name:
|
|
type: string
|
|
example: 'Sonarr Main'
|
|
hostname:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
port:
|
|
type: number
|
|
example: 8989
|
|
apiKey:
|
|
type: string
|
|
example: 'exampleapikey'
|
|
useSsl:
|
|
type: boolean
|
|
example: false
|
|
baseUrl:
|
|
type: string
|
|
activeProfileId:
|
|
type: number
|
|
example: 1
|
|
activeProfileName:
|
|
type: string
|
|
example: 720p/1080p
|
|
activeDirectory:
|
|
type: string
|
|
example: '/tv/'
|
|
activeLanguageProfileId:
|
|
type: number
|
|
example: 1
|
|
activeAnimeProfileId:
|
|
type: number
|
|
nullable: true
|
|
activeAnimeLanguageProfileId:
|
|
type: number
|
|
nullable: true
|
|
activeAnimeProfileName:
|
|
type: string
|
|
example: 720p/1080p
|
|
nullable: true
|
|
activeAnimeDirectory:
|
|
type: string
|
|
nullable: true
|
|
is4k:
|
|
type: boolean
|
|
example: false
|
|
enableSeasonFolders:
|
|
type: boolean
|
|
example: false
|
|
isDefault:
|
|
type: boolean
|
|
example: false
|
|
externalUrl:
|
|
type: string
|
|
example: http://radarr.example.com
|
|
syncEnabled:
|
|
type: boolean
|
|
example: false
|
|
preventSearch:
|
|
type: boolean
|
|
example: false
|
|
required:
|
|
- name
|
|
- hostname
|
|
- port
|
|
- apiKey
|
|
- useSsl
|
|
- activeProfileId
|
|
- activeProfileName
|
|
- activeDirectory
|
|
- is4k
|
|
- enableSeasonFolders
|
|
- isDefault
|
|
ServarrTag:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
label:
|
|
type: string
|
|
example: A Label
|
|
PublicSettings:
|
|
type: object
|
|
properties:
|
|
initialized:
|
|
type: boolean
|
|
example: false
|
|
MovieResult:
|
|
type: object
|
|
required:
|
|
- id
|
|
- mediaType
|
|
- title
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1234
|
|
mediaType:
|
|
type: string
|
|
popularity:
|
|
type: number
|
|
example: 10
|
|
posterPath:
|
|
type: string
|
|
backdropPath:
|
|
type: string
|
|
voteCount:
|
|
type: number
|
|
voteAverage:
|
|
type: number
|
|
genreIds:
|
|
type: array
|
|
items:
|
|
type: number
|
|
overview:
|
|
type: string
|
|
example: 'Overview of the movie'
|
|
originalLanguage:
|
|
type: string
|
|
example: 'en'
|
|
title:
|
|
type: string
|
|
example: Movie Title
|
|
originalTitle:
|
|
type: string
|
|
example: Original Movie Title
|
|
releaseDate:
|
|
type: string
|
|
adult:
|
|
type: boolean
|
|
example: false
|
|
video:
|
|
type: boolean
|
|
example: false
|
|
mediaInfo:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
TvResult:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1234
|
|
mediaType:
|
|
type: string
|
|
popularity:
|
|
type: number
|
|
example: 10
|
|
posterPath:
|
|
type: string
|
|
backdropPath:
|
|
type: string
|
|
voteCount:
|
|
type: number
|
|
voteAverage:
|
|
type: number
|
|
genreIds:
|
|
type: array
|
|
items:
|
|
type: number
|
|
overview:
|
|
type: string
|
|
example: 'Overview of the movie'
|
|
originalLanguage:
|
|
type: string
|
|
example: 'en'
|
|
name:
|
|
type: string
|
|
example: TV Show Name
|
|
originalName:
|
|
type: string
|
|
example: Original TV Show Name
|
|
originCountry:
|
|
type: array
|
|
items:
|
|
type: string
|
|
firstAirDate:
|
|
type: string
|
|
mediaInfo:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
PersonResult:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 12345
|
|
profilePath:
|
|
type: string
|
|
adult:
|
|
type: boolean
|
|
example: false
|
|
mediaType:
|
|
type: string
|
|
default: 'person'
|
|
knownFor:
|
|
type: array
|
|
items:
|
|
oneOf:
|
|
- $ref: '#/components/schemas/MovieResult'
|
|
- $ref: '#/components/schemas/TvResult'
|
|
Genre:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
name:
|
|
type: string
|
|
example: Adventure
|
|
ProductionCompany:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
logoPath:
|
|
type: string
|
|
nullable: true
|
|
originCountry:
|
|
type: string
|
|
name:
|
|
type: string
|
|
Network:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
logoPath:
|
|
type: string
|
|
nullable: true
|
|
originCountry:
|
|
type: string
|
|
name:
|
|
type: string
|
|
RelatedVideo:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
example: https://www.youtube.com/watch?v=9qhL2_UxXM0/
|
|
key:
|
|
type: string
|
|
example: 9qhL2_UxXM0
|
|
name:
|
|
type: string
|
|
example: Trailer for some movie (1978)
|
|
size:
|
|
type: number
|
|
example: 1080
|
|
type:
|
|
type: string
|
|
example: Trailer
|
|
enum:
|
|
- Clip
|
|
- Teaser
|
|
- Trailer
|
|
- Featurette
|
|
- Opening Credits
|
|
- Behind the Scenes
|
|
- Bloopers
|
|
site:
|
|
type: string
|
|
enum:
|
|
- 'YouTube'
|
|
MovieDetails:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 123
|
|
readOnly: true
|
|
imdbId:
|
|
type: string
|
|
example: 'tt123'
|
|
adult:
|
|
type: boolean
|
|
backdropPath:
|
|
type: string
|
|
posterPath:
|
|
type: string
|
|
budget:
|
|
type: number
|
|
example: 1000000
|
|
genres:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Genre'
|
|
homepage:
|
|
type: string
|
|
relatedVideos:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RelatedVideo'
|
|
originalLanguage:
|
|
type: string
|
|
originalTitle:
|
|
type: string
|
|
overview:
|
|
type: string
|
|
popularity:
|
|
type: number
|
|
productionCompanies:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ProductionCompany'
|
|
productionCountries:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_3166_1:
|
|
type: string
|
|
name:
|
|
type: string
|
|
releaseDate:
|
|
type: string
|
|
releases:
|
|
type: object
|
|
properties:
|
|
results:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_3166_1:
|
|
type: string
|
|
example: 'US'
|
|
rating:
|
|
type: string
|
|
nullable: true
|
|
release_dates:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
certification:
|
|
type: string
|
|
example: 'PG-13'
|
|
iso_639_1:
|
|
type: string
|
|
nullable: true
|
|
note:
|
|
type: string
|
|
nullable: true
|
|
example: 'Blu ray'
|
|
release_date:
|
|
type: string
|
|
example: '2017-07-12T00:00:00.000Z'
|
|
type:
|
|
type: number
|
|
example: 1
|
|
revenue:
|
|
type: number
|
|
nullable: true
|
|
runtime:
|
|
type: number
|
|
spokenLanguages:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SpokenLanguage'
|
|
status:
|
|
type: string
|
|
tagline:
|
|
type: string
|
|
title:
|
|
type: string
|
|
video:
|
|
type: boolean
|
|
voteAverage:
|
|
type: number
|
|
voteCount:
|
|
type: number
|
|
credits:
|
|
type: object
|
|
properties:
|
|
cast:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Cast'
|
|
crew:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Crew'
|
|
collection:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
name:
|
|
type: string
|
|
example: A collection
|
|
posterPath:
|
|
type: string
|
|
backdropPath:
|
|
type: string
|
|
externalIds:
|
|
$ref: '#/components/schemas/ExternalIds'
|
|
mediaInfo:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
watchProviders:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/WatchProviders'
|
|
Episode:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
name:
|
|
type: string
|
|
airDate:
|
|
type: string
|
|
nullable: true
|
|
episodeNumber:
|
|
type: number
|
|
overview:
|
|
type: string
|
|
productionCode:
|
|
type: string
|
|
seasonNumber:
|
|
type: number
|
|
showId:
|
|
type: number
|
|
stillPath:
|
|
type: string
|
|
nullable: true
|
|
voteAverage:
|
|
type: number
|
|
voteCount:
|
|
type: number
|
|
Season:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
airDate:
|
|
type: string
|
|
nullable: true
|
|
episodeCount:
|
|
type: number
|
|
name:
|
|
type: string
|
|
overview:
|
|
type: string
|
|
posterPath:
|
|
type: string
|
|
seasonNumber:
|
|
type: number
|
|
episodes:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Episode'
|
|
TvDetails:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 123
|
|
backdropPath:
|
|
type: string
|
|
posterPath:
|
|
type: string
|
|
contentRatings:
|
|
type: object
|
|
properties:
|
|
results:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_3166_1:
|
|
type: string
|
|
example: 'US'
|
|
rating:
|
|
type: string
|
|
example: 'TV-14'
|
|
createdBy:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
name:
|
|
type: string
|
|
gender:
|
|
type: number
|
|
profilePath:
|
|
type: string
|
|
nullable: true
|
|
episodeRunTime:
|
|
type: array
|
|
items:
|
|
type: number
|
|
firstAirDate:
|
|
type: string
|
|
genres:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Genre'
|
|
homepage:
|
|
type: string
|
|
inProduction:
|
|
type: boolean
|
|
languages:
|
|
type: array
|
|
items:
|
|
type: string
|
|
lastAirDate:
|
|
type: string
|
|
lastEpisodeToAir:
|
|
$ref: '#/components/schemas/Episode'
|
|
name:
|
|
type: string
|
|
nextEpisodeToAir:
|
|
$ref: '#/components/schemas/Episode'
|
|
networks:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ProductionCompany'
|
|
numberOfEpisodes:
|
|
type: number
|
|
numberOfSeason:
|
|
type: number
|
|
originCountry:
|
|
type: array
|
|
items:
|
|
type: string
|
|
originalLanguage:
|
|
type: string
|
|
originalName:
|
|
type: string
|
|
overview:
|
|
type: string
|
|
popularity:
|
|
type: number
|
|
productionCompanies:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ProductionCompany'
|
|
productionCountries:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_3166_1:
|
|
type: string
|
|
name:
|
|
type: string
|
|
spokenLanguages:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SpokenLanguage'
|
|
seasons:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Season'
|
|
status:
|
|
type: string
|
|
tagline:
|
|
type: string
|
|
type:
|
|
type: string
|
|
voteAverage:
|
|
type: number
|
|
voteCount:
|
|
type: number
|
|
credits:
|
|
type: object
|
|
properties:
|
|
cast:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Cast'
|
|
crew:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Crew'
|
|
externalIds:
|
|
$ref: '#/components/schemas/ExternalIds'
|
|
keywords:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Keyword'
|
|
mediaInfo:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
watchProviders:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/WatchProviders'
|
|
MediaRequest:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 123
|
|
readOnly: true
|
|
status:
|
|
type: number
|
|
example: 0
|
|
description: Status of the request. 1 = PENDING APPROVAL, 2 = APPROVED, 3 = DECLINED
|
|
readOnly: true
|
|
media:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
createdAt:
|
|
type: string
|
|
example: '2020-09-12T10:00:27.000Z'
|
|
readOnly: true
|
|
updatedAt:
|
|
type: string
|
|
example: '2020-09-12T10:00:27.000Z'
|
|
readOnly: true
|
|
requestedBy:
|
|
$ref: '#/components/schemas/User'
|
|
modifiedBy:
|
|
anyOf:
|
|
- $ref: '#/components/schemas/User'
|
|
- type: string
|
|
nullable: true
|
|
is4k:
|
|
type: boolean
|
|
example: false
|
|
serverId:
|
|
type: number
|
|
profileId:
|
|
type: number
|
|
rootFolder:
|
|
type: string
|
|
required:
|
|
- id
|
|
- status
|
|
MediaInfo:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
readOnly: true
|
|
tmdbId:
|
|
type: number
|
|
readOnly: true
|
|
tvdbId:
|
|
type: number
|
|
readOnly: true
|
|
nullable: true
|
|
status:
|
|
type: number
|
|
requests:
|
|
type: array
|
|
readOnly: true
|
|
items:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
createdAt:
|
|
type: string
|
|
example: '2020-09-12T10:00:27.000Z'
|
|
readOnly: true
|
|
updatedAt:
|
|
type: string
|
|
example: '2020-09-12T10:00:27.000Z'
|
|
readOnly: true
|
|
Cast:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 123
|
|
castId:
|
|
type: number
|
|
example: 1
|
|
character:
|
|
type: string
|
|
example: Some Character Name
|
|
creditId:
|
|
type: string
|
|
gender:
|
|
type: number
|
|
name:
|
|
type: string
|
|
example: Some Persons Name
|
|
order:
|
|
type: number
|
|
profilePath:
|
|
type: string
|
|
nullable: true
|
|
Crew:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 123
|
|
creditId:
|
|
type: string
|
|
gender:
|
|
type: number
|
|
name:
|
|
type: string
|
|
example: Some Persons Name
|
|
job:
|
|
type: string
|
|
department:
|
|
type: string
|
|
profilePath:
|
|
type: string
|
|
nullable: true
|
|
ExternalIds:
|
|
type: object
|
|
properties:
|
|
facebookId:
|
|
type: string
|
|
nullable: true
|
|
freebaseId:
|
|
type: string
|
|
nullable: true
|
|
freebaseMid:
|
|
type: string
|
|
nullable: true
|
|
imdbId:
|
|
type: string
|
|
nullable: true
|
|
instagramId:
|
|
type: string
|
|
nullable: true
|
|
tvdbId:
|
|
type: number
|
|
nullable: true
|
|
tvrageId:
|
|
type: number
|
|
nullable: true
|
|
twitterId:
|
|
type: string
|
|
nullable: true
|
|
ServiceProfile:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
name:
|
|
type: string
|
|
example: 720p/1080p
|
|
PageInfo:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
pages:
|
|
type: number
|
|
example: 10
|
|
results:
|
|
type: number
|
|
example: 100
|
|
DiscordSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
botUsername:
|
|
type: string
|
|
botAvatarUrl:
|
|
type: string
|
|
webhookUrl:
|
|
type: string
|
|
enableMentions:
|
|
type: boolean
|
|
SlackSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
webhookUrl:
|
|
type: string
|
|
WebPushSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
WebhookSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
webhookUrl:
|
|
type: string
|
|
authHeader:
|
|
type: string
|
|
jsonPayload:
|
|
type: string
|
|
TelegramSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
botUsername:
|
|
type: string
|
|
botAPI:
|
|
type: string
|
|
chatId:
|
|
type: string
|
|
sendSilently:
|
|
type: boolean
|
|
PushbulletSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
accessToken:
|
|
type: string
|
|
channelTag:
|
|
type: string
|
|
nullable: true
|
|
PushoverSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
accessToken:
|
|
type: string
|
|
userToken:
|
|
type: string
|
|
GotifySettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
token:
|
|
type: string
|
|
LunaSeaSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
webhookUrl:
|
|
type: string
|
|
profileName:
|
|
type: string
|
|
NotificationEmailSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
emailFrom:
|
|
type: string
|
|
example: no-reply@example.com
|
|
senderName:
|
|
type: string
|
|
example: Overseerr
|
|
smtpHost:
|
|
type: string
|
|
example: 127.0.0.1
|
|
smtpPort:
|
|
type: number
|
|
example: 465
|
|
secure:
|
|
type: boolean
|
|
example: false
|
|
ignoreTls:
|
|
type: boolean
|
|
example: false
|
|
requireTls:
|
|
type: boolean
|
|
example: false
|
|
authUser:
|
|
type: string
|
|
nullable: true
|
|
authPass:
|
|
type: string
|
|
nullable: true
|
|
allowSelfSigned:
|
|
type: boolean
|
|
example: false
|
|
Job:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: job-name
|
|
type:
|
|
type: string
|
|
enum: [process, command]
|
|
interval:
|
|
type: string
|
|
enum: [short, long, fixed]
|
|
name:
|
|
type: string
|
|
example: A Job Name
|
|
nextExecutionTime:
|
|
type: string
|
|
example: '2020-09-02T05:02:23.000Z'
|
|
running:
|
|
type: boolean
|
|
example: false
|
|
PersonDetails:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
name:
|
|
type: string
|
|
deathday:
|
|
type: string
|
|
knownForDepartment:
|
|
type: string
|
|
alsoKnownAs:
|
|
type: array
|
|
items:
|
|
type: string
|
|
gender:
|
|
type: string
|
|
biography:
|
|
type: string
|
|
popularity:
|
|
type: string
|
|
placeOfBirth:
|
|
type: string
|
|
profilePath:
|
|
type: string
|
|
adult:
|
|
type: boolean
|
|
imdbId:
|
|
type: string
|
|
homepage:
|
|
type: string
|
|
CreditCast:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
originalLanguage:
|
|
type: string
|
|
episodeCount:
|
|
type: number
|
|
overview:
|
|
type: string
|
|
originCountry:
|
|
type: array
|
|
items:
|
|
type: string
|
|
originalName:
|
|
type: string
|
|
voteCount:
|
|
type: number
|
|
name:
|
|
type: string
|
|
mediaType:
|
|
type: string
|
|
popularity:
|
|
type: number
|
|
creditId:
|
|
type: string
|
|
backdropPath:
|
|
type: string
|
|
firstAirDate:
|
|
type: string
|
|
voteAverage:
|
|
type: number
|
|
genreIds:
|
|
type: array
|
|
items:
|
|
type: number
|
|
posterPath:
|
|
type: string
|
|
originalTitle:
|
|
type: string
|
|
video:
|
|
type: boolean
|
|
title:
|
|
type: string
|
|
adult:
|
|
type: boolean
|
|
releaseDate:
|
|
type: string
|
|
character:
|
|
type: string
|
|
mediaInfo:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
CreditCrew:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
originalLanguage:
|
|
type: string
|
|
episodeCount:
|
|
type: number
|
|
overview:
|
|
type: string
|
|
originCountry:
|
|
type: array
|
|
items:
|
|
type: string
|
|
originalName:
|
|
type: string
|
|
voteCount:
|
|
type: number
|
|
name:
|
|
type: string
|
|
mediaType:
|
|
type: string
|
|
popularity:
|
|
type: number
|
|
creditId:
|
|
type: string
|
|
backdropPath:
|
|
type: string
|
|
firstAirDate:
|
|
type: string
|
|
voteAverage:
|
|
type: number
|
|
genreIds:
|
|
type: array
|
|
items:
|
|
type: number
|
|
posterPath:
|
|
type: string
|
|
originalTitle:
|
|
type: string
|
|
video:
|
|
type: boolean
|
|
title:
|
|
type: string
|
|
adult:
|
|
type: boolean
|
|
releaseDate:
|
|
type: string
|
|
department:
|
|
type: string
|
|
job:
|
|
type: string
|
|
mediaInfo:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
Keyword:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
name:
|
|
type: string
|
|
example: 'anime'
|
|
SpokenLanguage:
|
|
type: object
|
|
properties:
|
|
englishName:
|
|
type: string
|
|
example: 'English'
|
|
nullable: true
|
|
iso_639_1:
|
|
type: string
|
|
example: 'en'
|
|
name:
|
|
type: string
|
|
example: 'English'
|
|
Collection:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 123
|
|
name:
|
|
type: string
|
|
example: A Movie Collection
|
|
overview:
|
|
type: string
|
|
example: Overview of collection
|
|
posterPath:
|
|
type: string
|
|
backdropPath:
|
|
type: string
|
|
parts:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
SonarrSeries:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
example: COVID-25
|
|
sortTitle:
|
|
type: string
|
|
example: covid 25
|
|
seasonCount:
|
|
type: number
|
|
example: 1
|
|
status:
|
|
type: string
|
|
example: upcoming
|
|
overview:
|
|
type: string
|
|
example: The thread is picked up again by Marianne Schmidt which ...
|
|
network:
|
|
type: string
|
|
example: CBS
|
|
airTime:
|
|
type: string
|
|
example: 02:15
|
|
images:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
coverType:
|
|
type: string
|
|
example: banner
|
|
url:
|
|
type: string
|
|
example: /sonarr/MediaCoverProxy/6467f05d9872726ad08cbf920e5fee4bf69198682260acab8eab5d3c2c958e92/5c8f116c6aa5c.jpg
|
|
remotePoster:
|
|
type: string
|
|
example: https://artworks.thetvdb.com/banners/posters/5c8f116129983.jpg
|
|
seasons:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
seasonNumber:
|
|
type: number
|
|
example: 1
|
|
monitored:
|
|
type: boolean
|
|
example: true
|
|
year:
|
|
type: number
|
|
example: 2015
|
|
path:
|
|
type: string
|
|
profileId:
|
|
type: number
|
|
languageProfileId:
|
|
type: number
|
|
seasonFolder:
|
|
type: boolean
|
|
monitored:
|
|
type: boolean
|
|
useSceneNumbering:
|
|
type: boolean
|
|
runtime:
|
|
type: number
|
|
tvdbId:
|
|
type: number
|
|
example: 12345
|
|
tvRageId:
|
|
type: number
|
|
tvMazeId:
|
|
type: number
|
|
firstAired:
|
|
type: string
|
|
lastInfoSync:
|
|
type: string
|
|
nullable: true
|
|
seriesType:
|
|
type: string
|
|
cleanTitle:
|
|
type: string
|
|
imdbId:
|
|
type: string
|
|
titleSlug:
|
|
type: string
|
|
certification:
|
|
type: string
|
|
genres:
|
|
type: array
|
|
items:
|
|
type: string
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
added:
|
|
type: string
|
|
ratings:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
votes:
|
|
type: number
|
|
value:
|
|
type: number
|
|
qualityProfileId:
|
|
type: number
|
|
id:
|
|
type: number
|
|
nullable: true
|
|
rootFolderPath:
|
|
type: string
|
|
nullable: true
|
|
addOptions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
ignoreEpisodesWithFiles:
|
|
type: boolean
|
|
nullable: true
|
|
ignoreEpisodesWithoutFiles:
|
|
type: boolean
|
|
nullable: true
|
|
searchForMissingEpisodes:
|
|
type: boolean
|
|
nullable: true
|
|
UserSettingsNotifications:
|
|
type: object
|
|
properties:
|
|
notificationTypes:
|
|
$ref: '#/components/schemas/NotificationAgentTypes'
|
|
emailEnabled:
|
|
type: boolean
|
|
pgpKey:
|
|
type: string
|
|
nullable: true
|
|
discordEnabled:
|
|
type: boolean
|
|
discordEnabledTypes:
|
|
type: number
|
|
nullable: true
|
|
discordId:
|
|
type: string
|
|
nullable: true
|
|
pushbulletAccessToken:
|
|
type: string
|
|
nullable: true
|
|
pushoverApplicationToken:
|
|
type: string
|
|
nullable: true
|
|
pushoverUserKey:
|
|
type: string
|
|
nullable: true
|
|
telegramEnabled:
|
|
type: boolean
|
|
telegramBotUsername:
|
|
type: string
|
|
nullable: true
|
|
telegramChatId:
|
|
type: string
|
|
nullable: true
|
|
telegramSendSilently:
|
|
type: boolean
|
|
nullable: true
|
|
NotificationAgentTypes:
|
|
type: object
|
|
properties:
|
|
discord:
|
|
type: number
|
|
email:
|
|
type: number
|
|
pushbullet:
|
|
type: number
|
|
pushover:
|
|
type: number
|
|
slack:
|
|
type: number
|
|
telegram:
|
|
type: number
|
|
webhook:
|
|
type: number
|
|
webpush:
|
|
type: number
|
|
WatchProviders:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_3166_1:
|
|
type: string
|
|
link:
|
|
type: string
|
|
buy:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/WatchProviderDetails'
|
|
flatrate:
|
|
items:
|
|
$ref: '#/components/schemas/WatchProviderDetails'
|
|
WatchProviderDetails:
|
|
type: object
|
|
properties:
|
|
displayPriority:
|
|
type: number
|
|
logoPath:
|
|
type: string
|
|
id:
|
|
type: number
|
|
name:
|
|
type: string
|
|
Issue:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
issueType:
|
|
type: number
|
|
example: 1
|
|
media:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
createdBy:
|
|
$ref: '#/components/schemas/User'
|
|
modifiedBy:
|
|
$ref: '#/components/schemas/User'
|
|
comments:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/IssueComment'
|
|
IssueComment:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
user:
|
|
$ref: '#/components/schemas/User'
|
|
message:
|
|
type: string
|
|
example: A comment
|
|
securitySchemes:
|
|
cookieAuth:
|
|
type: apiKey
|
|
name: connect.sid
|
|
in: cookie
|
|
apiKey:
|
|
type: apiKey
|
|
in: header
|
|
name: X-Api-Key
|
|
|
|
paths:
|
|
/status:
|
|
get:
|
|
summary: Get Overseerr status
|
|
description: Returns the current Overseerr status in a JSON object.
|
|
security: []
|
|
tags:
|
|
- public
|
|
responses:
|
|
'200':
|
|
description: Returned status
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
version:
|
|
type: string
|
|
example: 1.0.0
|
|
commitTag:
|
|
type: string
|
|
updateAvailable:
|
|
type: boolean
|
|
commitsBehind:
|
|
type: number
|
|
restartRequired:
|
|
type: boolean
|
|
/status/appdata:
|
|
get:
|
|
summary: Get application data volume status
|
|
description: For Docker installs, returns whether or not the volume mount was configured properly. Always returns true for non-Docker installs.
|
|
security: []
|
|
tags:
|
|
- public
|
|
responses:
|
|
'200':
|
|
description: Application data volume status and path
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
appData:
|
|
type: boolean
|
|
example: true
|
|
appDataPath:
|
|
type: string
|
|
example: /app/config
|
|
/settings/main:
|
|
get:
|
|
summary: Get main settings
|
|
description: Retrieves all main settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MainSettings'
|
|
post:
|
|
summary: Update main settings
|
|
description: Updates main settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MainSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MainSettings'
|
|
/settings/main/regenerate:
|
|
post:
|
|
summary: Get main settings with newly-generated API key
|
|
description: Returns main settings in a JSON object, using the new API key.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MainSettings'
|
|
/settings/plex:
|
|
get:
|
|
summary: Get Plex settings
|
|
description: Retrieves current Plex settings.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PlexSettings'
|
|
post:
|
|
summary: Update Plex settings
|
|
description: Updates Plex settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PlexSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were successfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PlexSettings'
|
|
/settings/plex/library:
|
|
get:
|
|
summary: Get Plex libraries
|
|
description: Returns a list of Plex libraries in a JSON array.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: query
|
|
name: sync
|
|
description: Syncs the current libraries with the current Plex server
|
|
schema:
|
|
type: string
|
|
nullable: true
|
|
- in: query
|
|
name: enable
|
|
explode: false
|
|
allowReserved: true
|
|
description: Comma separated list of libraries to enable. Any libraries not passed will be disabled!
|
|
schema:
|
|
type: string
|
|
nullable: true
|
|
responses:
|
|
'200':
|
|
description: 'Plex libraries returned'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
/settings/plex/sync:
|
|
get:
|
|
summary: Get status of full Plex library scan
|
|
description: Returns scan progress in a JSON array.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Status of Plex scan
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
running:
|
|
type: boolean
|
|
example: false
|
|
progress:
|
|
type: number
|
|
example: 0
|
|
total:
|
|
type: number
|
|
example: 100
|
|
currentLibrary:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
libraries:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
post:
|
|
summary: Start full Plex library scan
|
|
description: Runs a full Plex library scan and returns the progress in a JSON array.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
cancel:
|
|
type: boolean
|
|
example: false
|
|
start:
|
|
type: boolean
|
|
example: false
|
|
responses:
|
|
'200':
|
|
description: Status of Plex scan
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
running:
|
|
type: boolean
|
|
example: false
|
|
progress:
|
|
type: number
|
|
example: 0
|
|
total:
|
|
type: number
|
|
example: 100
|
|
currentLibrary:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
libraries:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
/settings/plex/devices/servers:
|
|
get:
|
|
summary: Gets the user's available Plex servers
|
|
description: Returns a list of available Plex servers and their connectivity state
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PlexDevice'
|
|
/settings/plex/users:
|
|
get:
|
|
summary: Get Plex users
|
|
description: |
|
|
Returns a list of Plex users in a JSON array.
|
|
|
|
Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- settings
|
|
- users
|
|
responses:
|
|
'200':
|
|
description: Plex users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
title:
|
|
type: string
|
|
username:
|
|
type: string
|
|
email:
|
|
type: string
|
|
thumb:
|
|
type: string
|
|
/settings/tautulli:
|
|
get:
|
|
summary: Get Tautulli settings
|
|
description: Retrieves current Tautulli settings.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TautulliSettings'
|
|
post:
|
|
summary: Update Tautulli settings
|
|
description: Updates Tautulli settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TautulliSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were successfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TautulliSettings'
|
|
/settings/radarr:
|
|
get:
|
|
summary: Get Radarr settings
|
|
description: Returns all Radarr settings in a JSON array.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: 'Values were returned'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
post:
|
|
summary: Create Radarr instance
|
|
description: Creates a new Radarr instance from the request body.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
responses:
|
|
'201':
|
|
description: 'New Radarr instance created'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
/settings/radarr/test:
|
|
post:
|
|
summary: Test Radarr configuration
|
|
description: Tests if the Radarr configuration is valid. Returns profiles and root folders on success.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
hostname:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
port:
|
|
type: number
|
|
example: 7878
|
|
apiKey:
|
|
type: string
|
|
example: yourapikey
|
|
useSsl:
|
|
type: boolean
|
|
example: false
|
|
baseUrl:
|
|
type: string
|
|
required:
|
|
- hostname
|
|
- port
|
|
- apiKey
|
|
- useSsl
|
|
responses:
|
|
'200':
|
|
description: Succesfully connected to Radarr instance
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
profiles:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ServiceProfile'
|
|
/settings/radarr/{radarrId}:
|
|
put:
|
|
summary: Update Radarr instance
|
|
description: Updates an existing Radarr instance with the provided values.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: radarrId
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
description: Radarr instance ID
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Radarr instance updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
delete:
|
|
summary: Delete Radarr instance
|
|
description: Deletes an existing Radarr instance based on the radarrId parameter.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: radarrId
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
description: Radarr instance ID
|
|
responses:
|
|
'200':
|
|
description: 'Radarr instance updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
/settings/radarr/{radarrId}/profiles:
|
|
get:
|
|
summary: Get available Radarr profiles
|
|
description: Returns a list of profiles available on the Radarr server instance in a JSON array.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: radarrId
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
description: Radarr instance ID
|
|
responses:
|
|
'200':
|
|
description: Returned list of profiles
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ServiceProfile'
|
|
/settings/sonarr:
|
|
get:
|
|
summary: Get Sonarr settings
|
|
description: Returns all Sonarr settings in a JSON array.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: 'Values were returned'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
post:
|
|
summary: Create Sonarr instance
|
|
description: Creates a new Sonarr instance from the request body.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
responses:
|
|
'201':
|
|
description: 'New Sonarr instance created'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
/settings/sonarr/test:
|
|
post:
|
|
summary: Test Sonarr configuration
|
|
description: Tests if the Sonarr configuration is valid. Returns profiles and root folders on success.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
hostname:
|
|
type: string
|
|
example: '127.0.0.1'
|
|
port:
|
|
type: number
|
|
example: 8989
|
|
apiKey:
|
|
type: string
|
|
example: yourapikey
|
|
useSsl:
|
|
type: boolean
|
|
example: false
|
|
baseUrl:
|
|
type: string
|
|
required:
|
|
- hostname
|
|
- port
|
|
- apiKey
|
|
- useSsl
|
|
responses:
|
|
'200':
|
|
description: Succesfully connected to Sonarr instance
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
profiles:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ServiceProfile'
|
|
/settings/sonarr/{sonarrId}:
|
|
put:
|
|
summary: Update Sonarr instance
|
|
description: Updates an existing Sonarr instance with the provided values.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: sonarrId
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
description: Sonarr instance ID
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Sonarr instance updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
delete:
|
|
summary: Delete Sonarr instance
|
|
description: Deletes an existing Sonarr instance based on the sonarrId parameter.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: sonarrId
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
description: Sonarr instance ID
|
|
responses:
|
|
'200':
|
|
description: 'Sonarr instance updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
/settings/public:
|
|
get:
|
|
summary: Get public settings
|
|
security: []
|
|
description: Returns settings that are not protected or sensitive. Mainly used to determine if the application has been configured for the first time.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Public settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PublicSettings'
|
|
/settings/initialize:
|
|
post:
|
|
summary: Initialize application
|
|
description: Sets the app as initialized, allowing the user to navigate to pages other than the setup page.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Public settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PublicSettings'
|
|
/settings/jobs:
|
|
get:
|
|
summary: Get scheduled jobs
|
|
description: Returns list of all scheduled jobs and details about their next execution time in a JSON array.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Scheduled jobs returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Job'
|
|
/settings/jobs/{jobId}/run:
|
|
post:
|
|
summary: Invoke a specific job
|
|
description: Invokes a specific job to run. Will return the new job status in JSON format.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Invoked job returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Job'
|
|
/settings/jobs/{jobId}/cancel:
|
|
post:
|
|
summary: Cancel a specific job
|
|
description: Cancels a specific job. Will return the new job status in JSON format.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Canceled job returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Job'
|
|
/settings/jobs/{jobId}/schedule:
|
|
post:
|
|
summary: Modify job schedule
|
|
description: Re-registers the job with the schedule specified. Will return the job in JSON format.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: jobId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
schedule:
|
|
type: string
|
|
example: '0 */5 * * * *'
|
|
responses:
|
|
'200':
|
|
description: Rescheduled job
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Job'
|
|
/settings/cache:
|
|
get:
|
|
summary: Get a list of active caches
|
|
description: Retrieves a list of all active caches and their current stats.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Caches returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: cache-id
|
|
name:
|
|
type: string
|
|
example: cache name
|
|
stats:
|
|
type: object
|
|
properties:
|
|
hits:
|
|
type: number
|
|
misses:
|
|
type: number
|
|
keys:
|
|
type: number
|
|
ksize:
|
|
type: number
|
|
vsize:
|
|
type: number
|
|
/settings/cache/{cacheId}/flush:
|
|
post:
|
|
summary: Flush a specific cache
|
|
description: Flushes all data from the cache ID provided
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: path
|
|
name: cacheId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: 'Flushed cache'
|
|
/settings/logs:
|
|
get:
|
|
summary: Returns logs
|
|
description: Returns list of all log items and details
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: query
|
|
name: take
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 25
|
|
- in: query
|
|
name: skip
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 0
|
|
- in: query
|
|
name: filter
|
|
schema:
|
|
type: string
|
|
nullable: true
|
|
enum: [debug, info, warn, error]
|
|
default: debug
|
|
- in: query
|
|
name: search
|
|
schema:
|
|
type: string
|
|
nullable: true
|
|
example: plex
|
|
responses:
|
|
'200':
|
|
description: Server log returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
label:
|
|
type: string
|
|
example: server
|
|
level:
|
|
type: string
|
|
example: info
|
|
message:
|
|
type: string
|
|
example: Server ready on port 5055
|
|
timestamp:
|
|
type: string
|
|
example: '2020-12-15T16:20:00.069Z'
|
|
/settings/notifications/email:
|
|
get:
|
|
summary: Get email notification settings
|
|
description: Returns current email notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned email settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationEmailSettings'
|
|
post:
|
|
summary: Update email notification settings
|
|
description: Updates email notification settings with provided values
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationEmailSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationEmailSettings'
|
|
/settings/notifications/email/test:
|
|
post:
|
|
summary: Test email settings
|
|
description: Sends a test notification to the email agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationEmailSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/discord:
|
|
get:
|
|
summary: Get Discord notification settings
|
|
description: Returns current Discord notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned Discord settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DiscordSettings'
|
|
post:
|
|
summary: Update Discord notification settings
|
|
description: Updates Discord notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DiscordSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DiscordSettings'
|
|
/settings/notifications/discord/test:
|
|
post:
|
|
summary: Test Discord settings
|
|
description: Sends a test notification to the Discord agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DiscordSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/lunasea:
|
|
get:
|
|
summary: Get LunaSea notification settings
|
|
description: Returns current LunaSea notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned LunaSea settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LunaSeaSettings'
|
|
post:
|
|
summary: Update LunaSea notification settings
|
|
description: Updates LunaSea notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LunaSeaSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LunaSeaSettings'
|
|
/settings/notifications/lunasea/test:
|
|
post:
|
|
summary: Test LunaSea settings
|
|
description: Sends a test notification to the LunaSea agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LunaSeaSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/pushbullet:
|
|
get:
|
|
summary: Get Pushbullet notification settings
|
|
description: Returns current Pushbullet notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned Pushbullet settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushbulletSettings'
|
|
post:
|
|
summary: Update Pushbullet notification settings
|
|
description: Update Pushbullet notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushbulletSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushbulletSettings'
|
|
/settings/notifications/pushbullet/test:
|
|
post:
|
|
summary: Test Pushbullet settings
|
|
description: Sends a test notification to the Pushbullet agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushbulletSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/pushover:
|
|
get:
|
|
summary: Get Pushover notification settings
|
|
description: Returns current Pushover notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned Pushover settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushoverSettings'
|
|
post:
|
|
summary: Update Pushover notification settings
|
|
description: Update Pushover notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushoverSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushoverSettings'
|
|
/settings/notifications/pushover/test:
|
|
post:
|
|
summary: Test Pushover settings
|
|
description: Sends a test notification to the Pushover agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PushoverSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/gotify:
|
|
get:
|
|
summary: Get Gotify notification settings
|
|
description: Returns current Gotify notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned Gotify settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GotifySettings'
|
|
post:
|
|
summary: Update Gotify notification settings
|
|
description: Update Gotify notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GotifySettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GotifySettings'
|
|
/settings/notifications/gotify/test:
|
|
post:
|
|
summary: Test Gotify settings
|
|
description: Sends a test notification to the Gotify agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/GotifySettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/slack:
|
|
get:
|
|
summary: Get Slack notification settings
|
|
description: Returns current Slack notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned slack settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SlackSettings'
|
|
post:
|
|
summary: Update Slack notification settings
|
|
description: Updates Slack notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SlackSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SlackSettings'
|
|
/settings/notifications/slack/test:
|
|
post:
|
|
summary: Test Slack settings
|
|
description: Sends a test notification to the Slack agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/SlackSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/telegram:
|
|
get:
|
|
summary: Get Telegram notification settings
|
|
description: Returns current Telegram notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned Telegram settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TelegramSettings'
|
|
post:
|
|
summary: Update Telegram notification settings
|
|
description: Update Telegram notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TelegramSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TelegramSettings'
|
|
/settings/notifications/telegram/test:
|
|
post:
|
|
summary: Test Telegram settings
|
|
description: Sends a test notification to the Telegram agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TelegramSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/webpush:
|
|
get:
|
|
summary: Get Web Push notification settings
|
|
description: Returns current Web Push notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned web push settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebPushSettings'
|
|
post:
|
|
summary: Update Web Push notification settings
|
|
description: Updates Web Push notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebPushSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebPushSettings'
|
|
/settings/notifications/webpush/test:
|
|
post:
|
|
summary: Test Web Push settings
|
|
description: Sends a test notification to the Web Push agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebPushSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/notifications/webhook:
|
|
get:
|
|
summary: Get webhook notification settings
|
|
description: Returns current webhook notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned webhook settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebhookSettings'
|
|
post:
|
|
summary: Update webhook notification settings
|
|
description: Updates webhook notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebhookSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebhookSettings'
|
|
/settings/notifications/webhook/test:
|
|
post:
|
|
summary: Test webhook settings
|
|
description: Sends a test notification to the webhook agent.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/WebhookSettings'
|
|
responses:
|
|
'204':
|
|
description: Test notification attempted
|
|
/settings/about:
|
|
get:
|
|
summary: Get server stats
|
|
description: Returns current server stats in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned about settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
version:
|
|
type: string
|
|
example: '1.0.0'
|
|
totalRequests:
|
|
type: number
|
|
example: 100
|
|
totalMediaItems:
|
|
type: number
|
|
example: 100
|
|
tz:
|
|
type: string
|
|
nullable: true
|
|
example: Asia/Tokyo
|
|
appDataPath:
|
|
type: string
|
|
example: /app/config
|
|
/auth/me:
|
|
get:
|
|
summary: Get logged-in user
|
|
description: Returns the currently logged-in user.
|
|
tags:
|
|
- auth
|
|
- users
|
|
responses:
|
|
'200':
|
|
description: Object containing the logged-in user in JSON
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
/auth/plex:
|
|
post:
|
|
summary: Sign in using a Plex token
|
|
description: Takes an `authToken` (Plex token) to log the user in. Generates a session cookie for use in further requests. If the user does not exist, and there are no other users, then a user will be created with full admin privileges. If a user logs in with access to the main Plex server, they will also have an account created, but without any permissions.
|
|
security: []
|
|
tags:
|
|
- auth
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
authToken:
|
|
type: string
|
|
required:
|
|
- authToken
|
|
/auth/local:
|
|
post:
|
|
summary: Sign in using a local account
|
|
description: Takes an `email` and a `password` to log the user in. Generates a session cookie for use in further requests.
|
|
security: []
|
|
tags:
|
|
- auth
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
password:
|
|
type: string
|
|
required:
|
|
- email
|
|
- password
|
|
/auth/logout:
|
|
post:
|
|
summary: Sign out and clear session cookie
|
|
description: Completely clear the session cookie and associated values, effectively signing the user out.
|
|
tags:
|
|
- auth
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
example: 'ok'
|
|
/auth/reset-password:
|
|
post:
|
|
summary: Send a reset password email
|
|
description: Sends a reset password email to the email if the user exists
|
|
security: []
|
|
tags:
|
|
- users
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
example: 'ok'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
required:
|
|
- email
|
|
/auth/reset-password/{guid}:
|
|
post:
|
|
summary: Reset the password for a user
|
|
description: Resets the password for a user if the given guid is connected to a user
|
|
security: []
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: guid
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '9afef5a7-ec89-4d5f-9397-261e96970b50'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
example: 'ok'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
password:
|
|
type: string
|
|
required:
|
|
- password
|
|
/user:
|
|
get:
|
|
summary: Get all users
|
|
description: Returns all users in a JSON object.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: query
|
|
name: take
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 20
|
|
- in: query
|
|
name: skip
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 0
|
|
- in: query
|
|
name: sort
|
|
schema:
|
|
type: string
|
|
enum: [created, updated, requests, displayname]
|
|
default: created
|
|
responses:
|
|
'200':
|
|
description: A JSON array of all users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
pageInfo:
|
|
$ref: '#/components/schemas/PageInfo'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
post:
|
|
summary: Create new user
|
|
description: |
|
|
Creates a new user. Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
example: 'hey@itsme.com'
|
|
username:
|
|
type: string
|
|
permissions:
|
|
type: number
|
|
responses:
|
|
'201':
|
|
description: The created user
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
put:
|
|
summary: Update batch of users
|
|
description: |
|
|
Update users with given IDs with provided values in request `body.settings`. You cannot update users' Plex tokens through this request.
|
|
|
|
Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
ids:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
permissions:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: Successfully updated user details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
/user/import-from-plex:
|
|
post:
|
|
summary: Import all users from Plex
|
|
description: |
|
|
Fetches and imports users from the Plex server. If a list of Plex IDs is provided in the request body, only the specified users will be imported. Otherwise, all users will be imported.
|
|
|
|
Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
requestBody:
|
|
required: false
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
plexIds:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'201':
|
|
description: A list of the newly created users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
/user/registerPushSubscription:
|
|
post:
|
|
summary: Register a web push /user/registerPushSubscription
|
|
description: Registers a web push subscription for the logged-in user
|
|
tags:
|
|
- users
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
endpoint:
|
|
type: string
|
|
auth:
|
|
type: string
|
|
p256dh:
|
|
type: string
|
|
required:
|
|
- endpoint
|
|
- auth
|
|
- p256dh
|
|
responses:
|
|
'204':
|
|
description: Successfully registered push subscription
|
|
/user/{userId}:
|
|
get:
|
|
summary: Get user by ID
|
|
description: |
|
|
Retrieves user details in a JSON object. Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: Users details in JSON
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
put:
|
|
summary: Update a user by user ID
|
|
description: |
|
|
Update a user with the provided values. You cannot update a user's Plex token through this request.
|
|
|
|
Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
responses:
|
|
'200':
|
|
description: Successfully updated user details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
delete:
|
|
summary: Delete user by ID
|
|
description: Deletes the user with the provided userId. Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: User successfully deleted
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/User'
|
|
/user/{userId}/requests:
|
|
get:
|
|
summary: Get user by ID
|
|
description: |
|
|
Retrieves a user's requests in a JSON object.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
- in: query
|
|
name: take
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 20
|
|
- in: query
|
|
name: skip
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 0
|
|
responses:
|
|
'200':
|
|
description: User's requests returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
pageInfo:
|
|
$ref: '#/components/schemas/PageInfo'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
/user/{userId}/quota:
|
|
get:
|
|
summary: Get quotas for a specific user
|
|
description: |
|
|
Returns quota details for a user in a JSON object. Requires `MANAGE_USERS` permission if viewing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: User quota details in JSON
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
movie:
|
|
type: object
|
|
properties:
|
|
days:
|
|
type: number
|
|
example: 7
|
|
limit:
|
|
type: number
|
|
example: 10
|
|
used:
|
|
type: number
|
|
example: 6
|
|
remaining:
|
|
type: number
|
|
example: 4
|
|
restricted:
|
|
type: boolean
|
|
example: false
|
|
tv:
|
|
type: object
|
|
properties:
|
|
days:
|
|
type: number
|
|
example: 7
|
|
limit:
|
|
type: number
|
|
example: 10
|
|
used:
|
|
type: number
|
|
example: 6
|
|
remaining:
|
|
type: number
|
|
example: 4
|
|
restricted:
|
|
type: boolean
|
|
example: false
|
|
/user/{userId}/watchlist:
|
|
get:
|
|
summary: Get user by ID
|
|
description: |
|
|
Retrieves a user's Plex Watchlist in a JSON object.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
responses:
|
|
'200':
|
|
description: Watchlist data returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
totalPages:
|
|
type: number
|
|
totalResults:
|
|
type: number
|
|
results:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
tmdbId:
|
|
type: number
|
|
example: 1
|
|
ratingKey:
|
|
type: string
|
|
type:
|
|
type: string
|
|
title:
|
|
type: string
|
|
/user/{userId}/settings/main:
|
|
get:
|
|
summary: Get general settings for a user
|
|
description: Returns general settings for a specific user. Requires `MANAGE_USERS` permission if viewing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: User general settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
username:
|
|
type: string
|
|
example: 'Mr User'
|
|
post:
|
|
summary: Update general settings for a user
|
|
description: Updates and returns general settings for a specific user. Requires `MANAGE_USERS` permission if editing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
username:
|
|
type: string
|
|
nullable: true
|
|
responses:
|
|
'200':
|
|
description: Updated user general settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
username:
|
|
type: string
|
|
example: 'Mr User'
|
|
/user/{userId}/settings/password:
|
|
get:
|
|
summary: Get password page informatiom
|
|
description: Returns important data for the password page to function correctly. Requires `MANAGE_USERS` permission if viewing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: User password page information returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
hasPassword:
|
|
type: boolean
|
|
example: true
|
|
post:
|
|
summary: Update password for a user
|
|
description: Updates a user's password. Requires `MANAGE_USERS` permission if editing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
currentPassword:
|
|
type: string
|
|
nullable: true
|
|
newPassword:
|
|
type: string
|
|
required:
|
|
- newPassword
|
|
responses:
|
|
'204':
|
|
description: User password updated
|
|
/user/{userId}/settings/notifications:
|
|
get:
|
|
summary: Get notification settings for a user
|
|
description: Returns notification settings for a specific user. Requires `MANAGE_USERS` permission if viewing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: User notification settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserSettingsNotifications'
|
|
post:
|
|
summary: Update notification settings for a user
|
|
description: Updates and returns notification settings for a specific user. Requires `MANAGE_USERS` permission if editing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserSettingsNotifications'
|
|
responses:
|
|
'200':
|
|
description: Updated user notification settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/UserSettingsNotifications'
|
|
/user/{userId}/settings/permissions:
|
|
get:
|
|
summary: Get permission settings for a user
|
|
description: Returns permission settings for a specific user. Requires `MANAGE_USERS` permission if viewing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: User permission settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
permissions:
|
|
type: number
|
|
example: 2
|
|
post:
|
|
summary: Update permission settings for a user
|
|
description: Updates and returns permission settings for a specific user. Requires `MANAGE_USERS` permission if editing other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
permissions:
|
|
type: number
|
|
required:
|
|
- permissions
|
|
responses:
|
|
'200':
|
|
description: Updated user general settings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
permissions:
|
|
type: number
|
|
example: 2
|
|
/user/{userId}/watch_data:
|
|
get:
|
|
summary: Get watch data
|
|
description: |
|
|
Returns play count, play duration, and recently watched media.
|
|
|
|
Requires the `ADMIN` permission to fetch results for other users.
|
|
tags:
|
|
- users
|
|
parameters:
|
|
- in: path
|
|
name: userId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: Users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
recentlyWatched:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
playCount:
|
|
type: number
|
|
/search:
|
|
get:
|
|
summary: Search for movies, TV shows, or people
|
|
description: Returns a list of movies, TV shows, or people a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 'Mulan'
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- $ref: '#/components/schemas/MovieResult'
|
|
- $ref: '#/components/schemas/TvResult'
|
|
- $ref: '#/components/schemas/PersonResult'
|
|
/discover/movies:
|
|
get:
|
|
summary: Discover movies
|
|
description: Returns a list of movies in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
- in: query
|
|
name: genre
|
|
schema:
|
|
type: number
|
|
example: 18
|
|
- in: query
|
|
name: studio
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/discover/movies/genre/{genreId}:
|
|
get:
|
|
summary: Discover movies by genre
|
|
description: Returns a list of movies based on the provided genre ID in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: genreId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
genre:
|
|
$ref: '#/components/schemas/Genre'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/discover/movies/language/{language}:
|
|
get:
|
|
summary: Discover movies by original language
|
|
description: Returns a list of movies based on the provided ISO 639-1 language code in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: language
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: en
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
language:
|
|
$ref: '#/components/schemas/SpokenLanguage'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/discover/movies/studio/{studioId}:
|
|
get:
|
|
summary: Discover movies by studio
|
|
description: Returns a list of movies based on the provided studio ID in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: studioId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
studio:
|
|
$ref: '#/components/schemas/ProductionCompany'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/discover/movies/upcoming:
|
|
get:
|
|
summary: Upcoming movies
|
|
description: Returns a list of movies in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/discover/tv:
|
|
get:
|
|
summary: Discover TV shows
|
|
description: Returns a list of TV shows in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
- in: query
|
|
name: genre
|
|
schema:
|
|
type: number
|
|
example: 18
|
|
- in: query
|
|
name: network
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/discover/tv/language/{language}:
|
|
get:
|
|
summary: Discover TV shows by original language
|
|
description: Returns a list of TV shows based on the provided ISO 639-1 language code in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: language
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: en
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
language:
|
|
$ref: '#/components/schemas/SpokenLanguage'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/discover/tv/genre/{genreId}:
|
|
get:
|
|
summary: Discover TV shows by genre
|
|
description: Returns a list of TV shows based on the provided genre ID in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: genreId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
genre:
|
|
$ref: '#/components/schemas/Genre'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/discover/tv/network/{networkId}:
|
|
get:
|
|
summary: Discover TV shows by network
|
|
description: Returns a list of TV shows based on the provided network ID in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: networkId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
network:
|
|
$ref: '#/components/schemas/Network'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/discover/tv/upcoming:
|
|
get:
|
|
summary: Discover Upcoming TV shows
|
|
description: Returns a list of upcoming TV shows in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/discover/trending:
|
|
get:
|
|
summary: Trending movies and TV
|
|
description: Returns a list of movies and TV shows in a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
anyOf:
|
|
- $ref: '#/components/schemas/MovieResult'
|
|
- $ref: '#/components/schemas/TvResult'
|
|
- $ref: '#/components/schemas/PersonResult'
|
|
/discover/keyword/{keywordId}/movies:
|
|
get:
|
|
summary: Get movies from keyword
|
|
description: Returns list of movies based on the provided keyword ID a JSON object.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: path
|
|
name: keywordId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 207317
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: List of movies
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/discover/genreslider/movie:
|
|
get:
|
|
summary: Get genre slider data for movies
|
|
description: Returns a list of genres with backdrops attached
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Genre slider data returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
backdrops:
|
|
type: array
|
|
items:
|
|
type: string
|
|
name:
|
|
type: string
|
|
example: Genre Name
|
|
/discover/genreslider/tv:
|
|
get:
|
|
summary: Get genre slider data for TV series
|
|
description: Returns a list of genres with backdrops attached
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Genre slider data returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 1
|
|
backdrops:
|
|
type: array
|
|
items:
|
|
type: string
|
|
name:
|
|
type: string
|
|
example: Genre Name
|
|
/discover/watchlist:
|
|
get:
|
|
summary: Get the Plex watchlist.
|
|
tags:
|
|
- search
|
|
parameters:
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
responses:
|
|
'200':
|
|
description: Watchlist data returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
totalPages:
|
|
type: number
|
|
totalResults:
|
|
type: number
|
|
results:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
tmdbId:
|
|
type: number
|
|
example: 1
|
|
ratingKey:
|
|
type: string
|
|
type:
|
|
type: string
|
|
title:
|
|
type: string
|
|
/request:
|
|
get:
|
|
summary: Get all requests
|
|
description: |
|
|
Returns all requests if the user has the `ADMIN` or `MANAGE_REQUESTS` permissions. Otherwise, only the logged-in user's requests are returned.
|
|
|
|
If the `requestedBy` parameter is specified, only requests from that particular user ID will be returned.
|
|
tags:
|
|
- request
|
|
parameters:
|
|
- in: query
|
|
name: take
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 20
|
|
- in: query
|
|
name: skip
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 0
|
|
- in: query
|
|
name: filter
|
|
schema:
|
|
type: string
|
|
nullable: true
|
|
enum:
|
|
[
|
|
all,
|
|
approved,
|
|
available,
|
|
pending,
|
|
processing,
|
|
unavailable,
|
|
failed,
|
|
]
|
|
- in: query
|
|
name: sort
|
|
schema:
|
|
type: string
|
|
enum: [added, modified]
|
|
default: added
|
|
- in: query
|
|
name: requestedBy
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: Requests returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
pageInfo:
|
|
$ref: '#/components/schemas/PageInfo'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
post:
|
|
summary: Create new request
|
|
description: |
|
|
Creates a new request with the provided media ID and type. The `REQUEST` permission is required.
|
|
|
|
If the user has the `ADMIN` or `AUTO_APPROVE` permissions, their request will be auomatically approved.
|
|
tags:
|
|
- request
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
mediaType:
|
|
type: string
|
|
enum: [movie, tv]
|
|
example: movie
|
|
mediaId:
|
|
type: number
|
|
example: 123
|
|
tvdbId:
|
|
type: number
|
|
example: 123
|
|
seasons:
|
|
type: array
|
|
items:
|
|
type: number
|
|
is4k:
|
|
type: boolean
|
|
example: false
|
|
serverId:
|
|
type: number
|
|
profileId:
|
|
type: number
|
|
rootFolder:
|
|
type: string
|
|
languageProfileId:
|
|
type: number
|
|
userId:
|
|
type: number
|
|
nullable: true
|
|
required:
|
|
- mediaType
|
|
- mediaId
|
|
responses:
|
|
'201':
|
|
description: Succesfully created the request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
/request/count:
|
|
get:
|
|
summary: Gets request counts
|
|
description: |
|
|
Returns the number of pending and approved requests.
|
|
tags:
|
|
- request
|
|
responses:
|
|
'200':
|
|
description: Request counts returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
movie:
|
|
type: number
|
|
tv:
|
|
type: number
|
|
pending:
|
|
type: number
|
|
approved:
|
|
type: number
|
|
declined:
|
|
type: number
|
|
processing:
|
|
type: number
|
|
available:
|
|
type: number
|
|
/request/{requestId}:
|
|
get:
|
|
summary: Get MediaRequest
|
|
description: Returns a specific MediaRequest in a JSON object.
|
|
tags:
|
|
- request
|
|
parameters:
|
|
- in: path
|
|
name: requestId
|
|
description: Request ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Succesfully returns request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
put:
|
|
summary: Update MediaRequest
|
|
description: Updates a specific media request and returns the request in a JSON object.. Requires the `MANAGE_REQUESTS` permission.
|
|
tags:
|
|
- request
|
|
parameters:
|
|
- in: path
|
|
name: requestId
|
|
description: Request ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Succesfully updated request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
delete:
|
|
summary: Delete request
|
|
description: Removes a request. If the user has the `MANAGE_REQUESTS` permission, any request can be removed. Otherwise, only pending requests can be removed.
|
|
tags:
|
|
- request
|
|
parameters:
|
|
- in: path
|
|
name: requestId
|
|
description: Request ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: Succesfully removed request
|
|
/request/{requestId}/retry:
|
|
post:
|
|
summary: Retry failed request
|
|
description: |
|
|
Retries a request by resending requests to Sonarr or Radarr.
|
|
|
|
Requires the `MANAGE_REQUESTS` permission or `ADMIN`.
|
|
tags:
|
|
- request
|
|
parameters:
|
|
- in: path
|
|
name: requestId
|
|
description: Request ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
responses:
|
|
'200':
|
|
description: Retry triggered
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
/request/{requestId}/{status}:
|
|
post:
|
|
summary: Update a request's status
|
|
description: |
|
|
Updates a request's status to approved or declined. Also returns the request in a JSON object.
|
|
|
|
Requires the `MANAGE_REQUESTS` permission or `ADMIN`.
|
|
tags:
|
|
- request
|
|
parameters:
|
|
- in: path
|
|
name: requestId
|
|
description: Request ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
- in: path
|
|
name: status
|
|
description: New status
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum: [pending, approve, decline, available]
|
|
responses:
|
|
'200':
|
|
description: Request status changed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
/movie/{movieId}:
|
|
get:
|
|
summary: Get movie details
|
|
description: Returns full movie details in a JSON object.
|
|
tags:
|
|
- movies
|
|
parameters:
|
|
- in: path
|
|
name: movieId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 337401
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Movie details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MovieDetails'
|
|
/movie/{movieId}/recommendations:
|
|
get:
|
|
summary: Get recommended movies
|
|
description: Returns list of recommended movies based on provided movie ID in a JSON object.
|
|
tags:
|
|
- movies
|
|
parameters:
|
|
- in: path
|
|
name: movieId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 337401
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: List of movies
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/movie/{movieId}/similar:
|
|
get:
|
|
summary: Get similar movies
|
|
description: Returns list of similar movies based on the provided movieId in a JSON object.
|
|
tags:
|
|
- movies
|
|
parameters:
|
|
- in: path
|
|
name: movieId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 337401
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: List of movies
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MovieResult'
|
|
/movie/{movieId}/ratings:
|
|
get:
|
|
summary: Get movie ratings
|
|
description: Returns ratings based on the provided movieId in a JSON object.
|
|
tags:
|
|
- movies
|
|
parameters:
|
|
- in: path
|
|
name: movieId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 337401
|
|
responses:
|
|
'200':
|
|
description: Ratings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
example: Mulan
|
|
year:
|
|
type: number
|
|
example: 2020
|
|
url:
|
|
type: string
|
|
example: 'http://www.rottentomatoes.com/m/mulan_2020/'
|
|
criticsScore:
|
|
type: number
|
|
example: 85
|
|
criticsRating:
|
|
type: string
|
|
enum: ['Rotten', 'Fresh', 'Certified Fresh']
|
|
audienceScore:
|
|
type: number
|
|
example: 65
|
|
audienceRating:
|
|
type: string
|
|
enum: ['Spilled', 'Upright']
|
|
/tv/{tvId}:
|
|
get:
|
|
summary: Get TV details
|
|
description: Returns full TV details in a JSON object.
|
|
tags:
|
|
- tv
|
|
parameters:
|
|
- in: path
|
|
name: tvId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 76479
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: TV details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/TvDetails'
|
|
/tv/{tvId}/season/{seasonId}:
|
|
get:
|
|
summary: Get season details and episode list
|
|
description: Returns season details with a list of episodes in a JSON object.
|
|
tags:
|
|
- tv
|
|
parameters:
|
|
- in: path
|
|
name: tvId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 76479
|
|
- in: path
|
|
name: seasonId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: TV details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Season'
|
|
/tv/{tvId}/recommendations:
|
|
get:
|
|
summary: Get recommended TV series
|
|
description: Returns list of recommended TV series based on the provided tvId in a JSON object.
|
|
tags:
|
|
- tv
|
|
parameters:
|
|
- in: path
|
|
name: tvId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 76479
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: List of TV series
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/tv/{tvId}/similar:
|
|
get:
|
|
summary: Get similar TV series
|
|
description: Returns list of similar TV series based on the provided tvId in a JSON object.
|
|
tags:
|
|
- tv
|
|
parameters:
|
|
- in: path
|
|
name: tvId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 76479
|
|
- in: query
|
|
name: page
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
default: 1
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: List of TV series
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: number
|
|
example: 1
|
|
totalPages:
|
|
type: number
|
|
example: 20
|
|
totalResults:
|
|
type: number
|
|
example: 200
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TvResult'
|
|
/tv/{tvId}/ratings:
|
|
get:
|
|
summary: Get TV ratings
|
|
description: Returns ratings based on provided tvId in a JSON object.
|
|
tags:
|
|
- tv
|
|
parameters:
|
|
- in: path
|
|
name: tvId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 76479
|
|
responses:
|
|
'200':
|
|
description: Ratings returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
example: The Boys
|
|
year:
|
|
type: number
|
|
example: 2019
|
|
url:
|
|
type: string
|
|
example: 'http://www.rottentomatoes.com/m/mulan_2020/'
|
|
criticsScore:
|
|
type: number
|
|
example: 85
|
|
criticsRating:
|
|
type: string
|
|
enum: ['Rotten', 'Fresh']
|
|
/person/{personId}:
|
|
get:
|
|
summary: Get person details
|
|
description: Returns person details based on provided personId in a JSON object.
|
|
tags:
|
|
- person
|
|
parameters:
|
|
- in: path
|
|
name: personId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 287
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Returned person
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PersonDetails'
|
|
/person/{personId}/combined_credits:
|
|
get:
|
|
summary: Get combined credits
|
|
description: Returns the person's combined credits based on the provided personId in a JSON object.
|
|
tags:
|
|
- person
|
|
parameters:
|
|
- in: path
|
|
name: personId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 287
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Returned combined credits
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
cast:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CreditCast'
|
|
crew:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CreditCrew'
|
|
id:
|
|
type: number
|
|
/media:
|
|
get:
|
|
summary: Get media
|
|
description: Returns all media (can be filtered and limited) in a JSON object.
|
|
tags:
|
|
- media
|
|
parameters:
|
|
- in: query
|
|
name: take
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 20
|
|
- in: query
|
|
name: skip
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 0
|
|
- in: query
|
|
name: filter
|
|
schema:
|
|
type: string
|
|
nullable: true
|
|
enum: [all, available, partial, allavailable, processing, pending]
|
|
- in: query
|
|
name: sort
|
|
schema:
|
|
type: string
|
|
enum: [added, modified, mediaAdded]
|
|
default: added
|
|
responses:
|
|
'200':
|
|
description: Returned media
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
pageInfo:
|
|
$ref: '#/components/schemas/PageInfo'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
/media/{mediaId}:
|
|
delete:
|
|
summary: Delete media item
|
|
description: Removes a media item. The `MANAGE_REQUESTS` permission is required to perform this action.
|
|
tags:
|
|
- media
|
|
parameters:
|
|
- in: path
|
|
name: mediaId
|
|
description: Media ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: Succesfully removed media item
|
|
/media/{mediaId}/{status}:
|
|
post:
|
|
summary: Update media status
|
|
description: Updates a media item's status and returns the media in JSON format
|
|
tags:
|
|
- media
|
|
parameters:
|
|
- in: path
|
|
name: mediaId
|
|
description: Media ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
- in: path
|
|
name: status
|
|
description: New status
|
|
required: true
|
|
example: available
|
|
schema:
|
|
type: string
|
|
enum: [available, partial, processing, pending, unknown]
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
is4k:
|
|
type: boolean
|
|
example: false
|
|
responses:
|
|
'200':
|
|
description: Returned media
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
/media/{mediaId}/watch_data:
|
|
get:
|
|
summary: Get watch data
|
|
description: |
|
|
Returns play count, play duration, and users who have watched the media.
|
|
|
|
Requires the `ADMIN` permission.
|
|
tags:
|
|
- media
|
|
parameters:
|
|
- in: path
|
|
name: mediaId
|
|
description: Media ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: object
|
|
properties:
|
|
playCount7Days:
|
|
type: number
|
|
playCount30Days:
|
|
type: number
|
|
playCount:
|
|
type: number
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
data4k:
|
|
type: object
|
|
properties:
|
|
playCount7Days:
|
|
type: number
|
|
playCount30Days:
|
|
type: number
|
|
playCount:
|
|
type: number
|
|
users:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
/collection/{collectionId}:
|
|
get:
|
|
summary: Get collection details
|
|
description: Returns full collection details in a JSON object.
|
|
tags:
|
|
- collection
|
|
parameters:
|
|
- in: path
|
|
name: collectionId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 537982
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Collection details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Collection'
|
|
/service/radarr:
|
|
get:
|
|
summary: Get non-sensitive Radarr server list
|
|
description: Returns a list of Radarr server IDs and names in a JSON object.
|
|
tags:
|
|
- service
|
|
responses:
|
|
'200':
|
|
description: Request successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
/service/radarr/{radarrId}:
|
|
get:
|
|
summary: Get Radarr server quality profiles and root folders
|
|
description: Returns a Radarr server's quality profile and root folder details in a JSON object.
|
|
tags:
|
|
- service
|
|
parameters:
|
|
- in: path
|
|
name: radarrId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 0
|
|
responses:
|
|
'200':
|
|
description: Request successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
server:
|
|
$ref: '#/components/schemas/RadarrSettings'
|
|
profiles:
|
|
$ref: '#/components/schemas/ServiceProfile'
|
|
/service/sonarr:
|
|
get:
|
|
summary: Get non-sensitive Sonarr server list
|
|
description: Returns a list of Sonarr server IDs and names in a JSON object.
|
|
tags:
|
|
- service
|
|
responses:
|
|
'200':
|
|
description: Request successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
/service/sonarr/{sonarrId}:
|
|
get:
|
|
summary: Get Sonarr server quality profiles and root folders
|
|
description: Returns a Sonarr server's quality profile and root folder details in a JSON object.
|
|
tags:
|
|
- service
|
|
parameters:
|
|
- in: path
|
|
name: sonarrId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 0
|
|
responses:
|
|
'200':
|
|
description: Request successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
server:
|
|
$ref: '#/components/schemas/SonarrSettings'
|
|
profiles:
|
|
$ref: '#/components/schemas/ServiceProfile'
|
|
/service/sonarr/lookup/{tmdbId}:
|
|
get:
|
|
summary: Get series from Sonarr
|
|
description: Returns a list of series returned by searching for the name in Sonarr.
|
|
tags:
|
|
- service
|
|
parameters:
|
|
- in: path
|
|
name: tmdbId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 0
|
|
responses:
|
|
'200':
|
|
description: Request successful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SonarrSeries'
|
|
/regions:
|
|
get:
|
|
summary: Regions supported by TMDB
|
|
description: Returns a list of regions in a JSON object.
|
|
tags:
|
|
- tmdb
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_3166_1:
|
|
type: string
|
|
example: US
|
|
english_name:
|
|
type: string
|
|
example: United States of America
|
|
/languages:
|
|
get:
|
|
summary: Languages supported by TMDB
|
|
description: Returns a list of languages in a JSON object.
|
|
tags:
|
|
- tmdb
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
iso_639_1:
|
|
type: string
|
|
example: en
|
|
english_name:
|
|
type: string
|
|
example: English
|
|
name:
|
|
type: string
|
|
example: English
|
|
/studio/{studioId}:
|
|
get:
|
|
summary: Get movie studio details
|
|
description: Returns movie studio details in a JSON object.
|
|
tags:
|
|
- tmdb
|
|
parameters:
|
|
- in: path
|
|
name: studioId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 2
|
|
responses:
|
|
'200':
|
|
description: Movie studio details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProductionCompany'
|
|
/network/{networkId}:
|
|
get:
|
|
summary: Get TV network details
|
|
description: Returns TV network details in a JSON object.
|
|
tags:
|
|
- tmdb
|
|
parameters:
|
|
- in: path
|
|
name: networkId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: TV network details
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProductionCompany'
|
|
/genres/movie:
|
|
get:
|
|
summary: Get list of official TMDB movie genres
|
|
description: Returns a list of genres in a JSON array.
|
|
tags:
|
|
- tmdb
|
|
parameters:
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 10751
|
|
name:
|
|
type: string
|
|
example: Family
|
|
/genres/tv:
|
|
get:
|
|
summary: Get list of official TMDB movie genres
|
|
description: Returns a list of genres in a JSON array.
|
|
tags:
|
|
- tmdb
|
|
parameters:
|
|
- in: query
|
|
name: language
|
|
schema:
|
|
type: string
|
|
example: en
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: number
|
|
example: 18
|
|
name:
|
|
type: string
|
|
example: Drama
|
|
/backdrops:
|
|
get:
|
|
summary: Get backdrops of trending items
|
|
description: Returns a list of backdrop image paths in a JSON array.
|
|
security: []
|
|
tags:
|
|
- tmdb
|
|
responses:
|
|
'200':
|
|
description: Results
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
/issue:
|
|
get:
|
|
summary: Get all issues
|
|
description: |
|
|
Returns a list of issues in JSON format.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: query
|
|
name: take
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 20
|
|
- in: query
|
|
name: skip
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 0
|
|
- in: query
|
|
name: sort
|
|
schema:
|
|
type: string
|
|
enum: [added, modified]
|
|
default: added
|
|
- in: query
|
|
name: filter
|
|
schema:
|
|
type: string
|
|
enum: [all, open, resolved]
|
|
default: open
|
|
- in: query
|
|
name: requestedBy
|
|
schema:
|
|
type: number
|
|
nullable: true
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: Issues returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
pageInfo:
|
|
$ref: '#/components/schemas/PageInfo'
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Issue'
|
|
post:
|
|
summary: Create new issue
|
|
description: |
|
|
Creates a new issue
|
|
tags:
|
|
- issue
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
issueType:
|
|
type: number
|
|
message:
|
|
type: string
|
|
mediaId:
|
|
type: number
|
|
responses:
|
|
'201':
|
|
description: Succesfully created the issue
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Issue'
|
|
|
|
/issue/count:
|
|
get:
|
|
summary: Gets issue counts
|
|
description: |
|
|
Returns the number of open and closed issues, as well as the number of issues of each type.
|
|
tags:
|
|
- issue
|
|
responses:
|
|
'200':
|
|
description: Issue counts returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
video:
|
|
type: number
|
|
audio:
|
|
type: number
|
|
subtitles:
|
|
type: number
|
|
others:
|
|
type: number
|
|
open:
|
|
type: number
|
|
closed:
|
|
type: number
|
|
/issue/{issueId}:
|
|
get:
|
|
summary: Get issue
|
|
description: |
|
|
Returns a single issue in JSON format.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: issueId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: Issues returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Issue'
|
|
delete:
|
|
summary: Delete issue
|
|
description: Removes an issue. If the user has the `MANAGE_ISSUES` permission, any issue can be removed. Otherwise, only a users own issues can be removed.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: issueId
|
|
description: Issue ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: Succesfully removed issue
|
|
/issue/{issueId}/comment:
|
|
post:
|
|
summary: Create a comment
|
|
description: |
|
|
Creates a comment and returns associated issue in JSON format.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: issueId
|
|
required: true
|
|
schema:
|
|
type: number
|
|
example: 1
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
required:
|
|
- message
|
|
responses:
|
|
'200':
|
|
description: Issue returned with new comment
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Issue'
|
|
/issueComment/{commentId}:
|
|
get:
|
|
summary: Get issue comment
|
|
description: |
|
|
Returns a single issue comment in JSON format.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: commentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: Comment returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/IssueComment'
|
|
put:
|
|
summary: Update issue comment
|
|
description: |
|
|
Updates and returns a single issue comment in JSON format.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: commentId
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 1
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Comment updated
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/IssueComment'
|
|
delete:
|
|
summary: Delete issue comment
|
|
description: |
|
|
Deletes an issue comment. Only users with `MANAGE_ISSUES` or the user who created the comment can perform this action.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: commentId
|
|
description: Issue Comment ID
|
|
required: true
|
|
example: '1'
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'204':
|
|
description: Succesfully removed issue comment
|
|
/issue/{issueId}/{status}:
|
|
post:
|
|
summary: Update an issue's status
|
|
description: |
|
|
Updates an issue's status to approved or declined. Also returns the issue in a JSON object.
|
|
|
|
Requires the `MANAGE_ISSUES` permission or `ADMIN`.
|
|
tags:
|
|
- issue
|
|
parameters:
|
|
- in: path
|
|
name: issueId
|
|
description: Issue ID
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '1'
|
|
- in: path
|
|
name: status
|
|
description: New status
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum: [open, resolved]
|
|
responses:
|
|
'200':
|
|
description: Issue status changed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/Issue'
|
|
security:
|
|
- cookieAuth: []
|
|
- apiKey: []
|