You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3762 lines
98 KiB
3762 lines
98 KiB
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 login to the `/auth/login` or `/auth/local` will generate a valid authentication cookie.
|
|
- **API Key Authentication**: Login 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: Endpoinst 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'
|
|
plexToken:
|
|
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
|
|
requests:
|
|
type: array
|
|
readOnly: true
|
|
items:
|
|
$ref: '#/components/schemas/MediaRequest'
|
|
required:
|
|
- id
|
|
- email
|
|
- createdAt
|
|
- updatedAt
|
|
MainSettings:
|
|
type: object
|
|
properties:
|
|
apiKey:
|
|
type: string
|
|
example: 'anapikey'
|
|
readOnly: true
|
|
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
|
|
localLogin:
|
|
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
|
|
libraries:
|
|
type: array
|
|
readOnly: true
|
|
items:
|
|
$ref: '#/components/schemas/PlexLibrary'
|
|
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'
|
|
host:
|
|
type: string
|
|
example: '127-0-0-1.2ab6ce1a093d465e910def96cf4e4799.plex.direct'
|
|
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
|
|
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/'
|
|
activeAnimeProfileId:
|
|
type: number
|
|
nullable: true
|
|
activeAnimeProfileName:
|
|
type: string
|
|
example: 720p/1080p
|
|
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
|
|
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
|
|
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
|
|
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'
|
|
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
|
|
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'
|
|
spokenLanguages:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/SpokenLanguage'
|
|
seasons:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Season'
|
|
status:
|
|
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'
|
|
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, 4 = AVAILABLE
|
|
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
|
|
pageSize:
|
|
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:
|
|
webhookUrl:
|
|
type: string
|
|
SlackSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
webhookUrl:
|
|
type: string
|
|
WebhookSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
webhookUrl:
|
|
type: string
|
|
jsonPayload:
|
|
type: string
|
|
TelegramSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
botAPI:
|
|
type: string
|
|
chatId:
|
|
type: string
|
|
PushoverSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: false
|
|
types:
|
|
type: number
|
|
example: 2
|
|
options:
|
|
type: object
|
|
properties:
|
|
accessToken:
|
|
type: string
|
|
userToken:
|
|
type: string
|
|
priority:
|
|
type: number
|
|
sound:
|
|
type: string
|
|
NotificationSettings:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
example: true
|
|
autoapprovalEnabled:
|
|
type: boolean
|
|
example: false
|
|
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
|
|
authUser:
|
|
type: string
|
|
nullable: true
|
|
authPass:
|
|
type: string
|
|
nullable: true
|
|
allowSelfSigned:
|
|
type: boolean
|
|
example: false
|
|
PersonDetail:
|
|
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
|
|
securitySchemes:
|
|
cookieAuth:
|
|
type: apiKey
|
|
name: connect.sid
|
|
in: cookie
|
|
apiKey:
|
|
type: apiKey
|
|
in: header
|
|
name: X-Api-Key
|
|
|
|
paths:
|
|
/status:
|
|
get:
|
|
summary: Get Overseerr version
|
|
description: Returns the current Overseerr version in a JSON object.
|
|
security: []
|
|
tags:
|
|
- public
|
|
responses:
|
|
'200':
|
|
description: Returned version
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
version:
|
|
type: string
|
|
example: 1.0.0
|
|
commitTag:
|
|
type: string
|
|
/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:
|
|
get:
|
|
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: Start full Plex library sync
|
|
description: Runs a full Plex library sync and returns the progress in a JSON array.
|
|
tags:
|
|
- settings
|
|
parameters:
|
|
- in: query
|
|
name: cancel
|
|
schema:
|
|
type: boolean
|
|
example: false
|
|
- in: query
|
|
name: start
|
|
schema:
|
|
type: boolean
|
|
example: false
|
|
responses:
|
|
'200':
|
|
description: Status of Plex sync
|
|
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/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:
|
|
get:
|
|
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:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: job-name
|
|
name:
|
|
type: string
|
|
example: A Job Name
|
|
type:
|
|
type: string
|
|
enum: [process, command]
|
|
nextExecutionTime:
|
|
type: string
|
|
example: '2020-09-02T05:02:23.000Z'
|
|
running:
|
|
type: boolean
|
|
example: false
|
|
/settings/jobs/{jobId}/run:
|
|
get:
|
|
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:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: job-name
|
|
type:
|
|
type: string
|
|
enum: [process, command]
|
|
name:
|
|
type: string
|
|
example: A Job Name
|
|
nextExecutionTime:
|
|
type: string
|
|
example: '2020-09-02T05:02:23.000Z'
|
|
running:
|
|
type: boolean
|
|
example: false
|
|
/settings/jobs/{jobId}/cancel:
|
|
get:
|
|
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: Cancelled job returned
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: job-name
|
|
type:
|
|
type: string
|
|
enum: [process, command]
|
|
name:
|
|
type: string
|
|
example: A Job Name
|
|
nextExecutionTime:
|
|
type: string
|
|
example: '2020-09-02T05:02:23.000Z'
|
|
running:
|
|
type: boolean
|
|
example: false
|
|
/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:
|
|
get:
|
|
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/notifications:
|
|
get:
|
|
summary: Return notification settings
|
|
description: Returns current notification settings in a JSON object.
|
|
tags:
|
|
- settings
|
|
responses:
|
|
'200':
|
|
description: Returned settings
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationSettings'
|
|
post:
|
|
summary: Update notification settings
|
|
description: Updates notification settings with the provided values.
|
|
tags:
|
|
- settings
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationSettings'
|
|
responses:
|
|
'200':
|
|
description: 'Values were sucessfully updated'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/NotificationSettings'
|
|
/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/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/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/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/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/SlackSettings'
|
|
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
|
|
/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/login:
|
|
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:
|
|
get:
|
|
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'
|
|
/user:
|
|
get:
|
|
summary: Get all users
|
|
description: Returns all users in a JSON array.
|
|
tags:
|
|
- users
|
|
responses:
|
|
'200':
|
|
description: A JSON array of all users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
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:
|
|
$ref: '#/components/schemas/User'
|
|
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: |
|
|
Requests users from the Plex Server and creates a new user for each of them
|
|
|
|
Requires the `MANAGE_USERS` permission.
|
|
tags:
|
|
- users
|
|
responses:
|
|
'201':
|
|
description: A list of the newly created users
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/User'
|
|
|
|
/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'
|
|
/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
|
|
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/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
|
|
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'
|
|
/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.
|
|
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, available, approved, pending, unavailable]
|
|
- in: query
|
|
name: sort
|
|
schema:
|
|
type: string
|
|
enum: [added, modified]
|
|
default: added
|
|
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
|
|
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:
|
|
pending:
|
|
type: number
|
|
example: 0
|
|
approved:
|
|
type: number
|
|
example: 10
|
|
required:
|
|
- pending
|
|
- approved
|
|
/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}:
|
|
get:
|
|
summary: Update a requests status
|
|
description: |
|
|
Updates a requests 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-US
|
|
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/PersonDetail'
|
|
|
|
/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: Return 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}:
|
|
get:
|
|
summary: Update media status
|
|
description: Updates a medias 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]
|
|
- in: query
|
|
name: is4k
|
|
description: 4K Status
|
|
example: false
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
description: Returned media
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaInfo'
|
|
/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'
|
|
|
|
security:
|
|
- cookieAuth: []
|
|
- apiKey: []
|