openapi.yaml•16.5 kB
openapi: "3.0.2"
info:
title: "Overseerr API for MCP"
description: |
This is the OpenAPI specification for the Overseerr MCP service.
The Overseerr MCP service allows you to interact with an Overseerr instance through Claude AI,
providing easy access to movie and TV show request information and status.
version: "1.0.0"
servers:
- url: "http://localhost:5055/api/v1"
description: "Local Overseerr API server"
components:
schemas:
Error:
type: "object"
properties:
errorCode:
type: "number"
description: "Error code uniquely identifying this particular type of error."
example: 40149
message:
type: "string"
description: "Message describing the error."
example: "A brief description of the error."
MovieRequest:
type: "object"
properties:
title:
type: "string"
description: "The title of the requested movie"
example: "The Martian"
media_availability:
type: "string"
description: "The current availability status of the media"
example: "AVAILABLE"
enum: ["UNKNOWN", "PENDING", "PROCESSING", "PARTIALLY_AVAILABLE", "AVAILABLE"]
request_date:
type: "string"
description: "The date the request was made"
example: "2020-09-12T10:00:27.000Z"
required:
- title
- media_availability
- request_date
TvRequest:
type: "object"
properties:
tv_title:
type: "string"
description: "The title of the requested TV show"
example: "Rick and Morty"
tv_title_availability:
type: "string"
description: "The current availability status of the TV show"
example: "AVAILABLE"
enum: ["UNKNOWN", "PENDING", "PROCESSING", "PARTIALLY_AVAILABLE", "AVAILABLE"]
tv_season:
type: "string"
description: "The season identifier"
example: "S01"
tv_season_availability:
type: "string"
description: "The current availability status of the season"
example: "AVAILABLE"
enum: ["UNKNOWN", "PENDING", "PROCESSING", "PARTIALLY_AVAILABLE", "AVAILABLE"]
tv_episodes:
type: "array"
description: "List of episodes in the season"
items:
type: "object"
properties:
episode_number:
type: "string"
description: "The episode number"
example: "01"
episode_name:
type: "string"
description: "The episode name"
example: "Pilot"
request_date:
type: "string"
description: "The date the request was made"
example: "2020-09-12T10:00:27.000Z"
required:
- tv_title
- tv_title_availability
- tv_season
- tv_season_availability
- tv_episodes
- request_date
Status:
type: "object"
properties:
version:
type: "string"
description: "The version of Overseerr"
example: "1.29.1"
commitTag:
type: "string"
description: "The commit tag of the Overseerr build"
example: "v1.29.1"
updateAvailable:
type: "boolean"
description: "Whether an update is available"
example: false
commitsBehind:
type: "number"
description: "Number of commits behind the latest release"
example: 0
restartRequired:
type: "boolean"
description: "Whether a restart is required"
example: false
securitySchemes:
apiKey:
type: "apiKey"
name: "X-Api-Key"
in: "header"
paths:
/status:
get:
summary: "Get Overseerr server status"
description: "Returns the current status of the Overseerr server"
operationId: "getStatus"
tags:
- "Status"
responses:
"200":
description: "Successful operation"
content:
application/json:
schema:
$ref: "#/components/schemas/Status"
"400":
description: "Bad request"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"401":
description: "Unauthorized"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/request:
get:
summary: "Get movie and TV show requests"
description: "Returns movie and TV show requests based on filtering criteria"
operationId: "getRequests"
tags:
- "Requests"
parameters:
- name: "take"
in: "query"
description: "Number of items to return per page"
schema:
type: "number"
default: 20
- name: "skip"
in: "query"
description: "Number of items to skip"
schema:
type: "number"
default: 0
- name: "filter"
in: "query"
description: "Filter by status"
schema:
type: "string"
enum: ["all", "approved", "available", "pending", "processing", "unavailable", "failed"]
- name: "sort"
in: "query"
description: "Sort by"
schema:
type: "string"
enum: ["added", "modified"]
default: "added"
responses:
"200":
description: "Successful operation"
content:
application/json:
schema:
type: "object"
properties:
pageInfo:
type: "object"
properties:
pages:
type: "number"
example: 1
pageSize:
type: "number"
example: 20
results:
type: "number"
example: 5
page:
type: "number"
example: 1
results:
type: "array"
items:
type: "object"
properties:
id:
type: "number"
example: 123
status:
type: "number"
example: 1
description: "Status of the request. 1 = PENDING APPROVAL, 2 = APPROVED, 3 = DECLINED"
media:
type: "object"
properties:
id:
type: "number"
example: 456
tmdbId:
type: "number"
example: 550
tvdbId:
type: "number"
example: null
status:
type: "number"
example: 5
description: "Availability of the media. 1 = UNKNOWN, 2 = PENDING, 3 = PROCESSING, 4 = PARTIALLY_AVAILABLE, 5 = AVAILABLE"
createdAt:
type: "string"
example: "2020-09-12T10:00:27.000Z"
updatedAt:
type: "string"
example: "2020-09-12T10:00:27.000Z"
"400":
description: "Bad request"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"401":
description: "Unauthorized"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/movie/{movieId}:
get:
summary: "Get movie details"
description: "Returns detailed information about a specific movie"
operationId: "getMovieDetails"
tags:
- "Movies"
parameters:
- name: "movieId"
in: "path"
description: "ID of the movie to return"
required: true
schema:
type: "number"
responses:
"200":
description: "Successful operation"
content:
application/json:
schema:
type: "object"
properties:
id:
type: "number"
example: 550
title:
type: "string"
example: "Fight Club"
originalTitle:
type: "string"
example: "Fight Club"
releaseDate:
type: "string"
example: "1999-10-15"
overview:
type: "string"
example: "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking new form of therapy."
backdropPath:
type: "string"
example: "/rr7E0NoGKxvbkb89eR1GwfoYjpA.jpg"
posterPath:
type: "string"
example: "/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg"
mediaInfo:
type: "object"
properties:
status:
type: "number"
example: 5
description: "Availability of the media. 1 = UNKNOWN, 2 = PENDING, 3 = PROCESSING, 4 = PARTIALLY_AVAILABLE, 5 = AVAILABLE"
"400":
description: "Bad request"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"401":
description: "Unauthorized"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"404":
description: "Movie not found"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/tv/{tvId}:
get:
summary: "Get TV show details"
description: "Returns detailed information about a specific TV show"
operationId: "getTvDetails"
tags:
- "TV Shows"
parameters:
- name: "tvId"
in: "path"
description: "ID of the TV show to return"
required: true
schema:
type: "number"
responses:
"200":
description: "Successful operation"
content:
application/json:
schema:
type: "object"
properties:
id:
type: "number"
example: 1399
name:
type: "string"
example: "Game of Thrones"
originalName:
type: "string"
example: "Game of Thrones"
firstAirDate:
type: "string"
example: "2011-04-17"
overview:
type: "string"
example: "Seven noble families fight for control of the mythical land of Westeros."
backdropPath:
type: "string"
example: "/suopoADq0k8YZr4dQXcU6pToj6s.jpg"
posterPath:
type: "string"
example: "/u3bZgnGQ9T01sWNhyveQz0wH0Hl.jpg"
seasons:
type: "array"
items:
type: "object"
properties:
id:
type: "number"
example: 3627
name:
type: "string"
example: "Season 1"
seasonNumber:
type: "number"
example: 1
episodeCount:
type: "number"
example: 10
mediaInfo:
type: "object"
properties:
status:
type: "number"
example: 5
description: "Availability of the media. 1 = UNKNOWN, 2 = PENDING, 3 = PROCESSING, 4 = PARTIALLY_AVAILABLE, 5 = AVAILABLE"
"400":
description: "Bad request"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"401":
description: "Unauthorized"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"404":
description: "TV show not found"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/tv/{tvId}/season/{seasonId}:
get:
summary: "Get season details"
description: "Returns detailed information about a specific TV season"
operationId: "getSeasonDetails"
tags:
- "TV Shows"
parameters:
- name: "tvId"
in: "path"
description: "ID of the TV show"
required: true
schema:
type: "number"
- name: "seasonId"
in: "path"
description: "Season number"
required: true
schema:
type: "number"
responses:
"200":
description: "Successful operation"
content:
application/json:
schema:
type: "object"
properties:
id:
type: "number"
example: 3627
name:
type: "string"
example: "Season 1"
seasonNumber:
type: "number"
example: 1
overview:
type: "string"
example: "Trouble is brewing in the Seven Kingdoms of Westeros."
posterPath:
type: "string"
example: "/zwaj4egrhnXOBIit1tyb4Sbt3KP.jpg"
episodes:
type: "array"
items:
type: "object"
properties:
id:
type: "number"
example: 63056
name:
type: "string"
example: "Winter Is Coming"
episodeNumber:
type: "number"
example: 1
seasonNumber:
type: "number"
example: 1
overview:
type: "string"
example: "Jon Arryn, the Hand of the King, is dead."
"400":
description: "Bad request"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"401":
description: "Unauthorized"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"404":
description: "TV show or season not found"
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
security:
- apiKey: []
tags:
- name: "Status"
description: "Endpoints related to server status"
- name: "Requests"
description: "Endpoints related to movie and TV show requests"
- name: "Movies"
description: "Endpoints related to movies"
- name: "TV Shows"
description: "Endpoints related to TV shows"