mirror of
https://github.com/LukeHagar/plex-api-spec.git
synced 2025-12-06 12:37:45 +00:00
14971 lines
583 KiB
YAML
14971 lines
583 KiB
YAML
openapi: 3.1.1
|
|
info:
|
|
title: Plex Media Server
|
|
version: 1.1.1
|
|
license:
|
|
name: Apache 2.0
|
|
url: https://www.apache.org/licenses/LICENSE-2.0.html
|
|
servers:
|
|
- url: "https://{IP-description}.{identifier}.plex.direct:{port}"
|
|
variables:
|
|
identifier:
|
|
description: The unique identifier of this particular PMS
|
|
default: 0123456789abcdef0123456789abcdef
|
|
IP-description:
|
|
description: A `-` separated string of the IPv4 or IPv6 address components
|
|
default: 1-2-3-4
|
|
port:
|
|
description: The Port number configured on the PMS. Typically (`32400`).
|
|
default: '32400'
|
|
- url: "{protocol}://{host}:{port}"
|
|
variables:
|
|
protocol:
|
|
description: The network protocol to use. Typically (`http` or `https`)
|
|
default: http
|
|
host:
|
|
description: "The Host of the PMS.\nIf using on a local network, this is the internal IP address of the server hosting the PMS.\nIf using on an external network, this is the external IP address for your network, and requires port forwarding.\nIf using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding. \n"
|
|
default: localhost
|
|
port:
|
|
description: "The Port number configured on the PMS. Typically (`32400`). \nIf using a reverse proxy, this would be the port number configured on the proxy.\n"
|
|
default: '32400'
|
|
- url: "{full_server_url}"
|
|
variables:
|
|
full_server_url:
|
|
description: The full manual URL to access the PMS
|
|
default: http://localhost:32400
|
|
security:
|
|
- token:
|
|
- shared user
|
|
- admin
|
|
x-speakeasy-globals:
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
tags:
|
|
- name: Activities
|
|
description: |
|
|
Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
|
|
|
|
Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
|
|
|
|
Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint.
|
|
- name: Butler
|
|
description: The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks.
|
|
- name: Collections
|
|
description: API Operations against the Collections
|
|
- name: Content
|
|
description: The actual content of the media provider
|
|
- name: Devices
|
|
description: |
|
|
Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices
|
|
|
|
Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below.
|
|
|
|
Example SSDP output
|
|
```
|
|
<root xmlns="urn:schemas-upnp-org:device-1-0">
|
|
<specVersion>
|
|
<major>1</major>
|
|
<minor>0</minor>
|
|
</specVersion>
|
|
<device>
|
|
<deviceType>urn:plex-tv:device:Media:1</deviceType>
|
|
<friendlyName>Turing Hopper 3000</friendlyName>
|
|
<manufacturer>Plex, Inc.</manufacturer>
|
|
<manufacturerURL>https://plex.tv/</manufacturerURL>
|
|
<modelDescription>Turing Hopper 3000 Media Grabber</modelDescription>
|
|
<modelName>Plex Media Grabber</modelName>
|
|
<modelNumber>1</modelNumber>
|
|
<modelURL>https://plex.tv</modelURL>
|
|
<UDN>uuid:42fde8e4-93b6-41e5-8a63-12d848655811</UDN>
|
|
<serviceList>
|
|
<service>
|
|
<URLBase>http://10.0.0.5:8088</URLBase>
|
|
<serviceType>urn:plex-tv:service:MediaGrabber:1</serviceType>
|
|
<serviceId>urn:plex-tv:serviceId:MediaGrabber</serviceId>
|
|
</service>
|
|
</serviceList>
|
|
</device>
|
|
</root>
|
|
```
|
|
|
|
- UDN: (string) A UUID for the device. This should be unique across models of a device at minimum.
|
|
- URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted.
|
|
- name: Download Queue
|
|
description: API Operations against the Download Queue
|
|
- name: DVRs
|
|
description: |
|
|
The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself
|
|
- name: EPG
|
|
description: |
|
|
The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when
|
|
- name: Events
|
|
description: |
|
|
The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported.
|
|
|
|
Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket.
|
|
- name: General
|
|
description: General endpoints for basic PMS operation not specific to any media provider
|
|
- name: Hubs
|
|
description: The hubs within a media provider
|
|
- name: Library
|
|
description: Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc).
|
|
- name: Library Collections
|
|
description: Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well.
|
|
x-displayName: 'Library: Collections'
|
|
- name: Library Playlists
|
|
description: Endpoints for manipulating playlists.
|
|
x-displayName: 'Library: Playlists'
|
|
- name: Live TV
|
|
description: |
|
|
LiveTV contains the playback sessions of a channel from a DVR device
|
|
- name: Log
|
|
description: Logging mechanism to allow clients to log to the server
|
|
- name: Play Queue
|
|
description: "The playqueue feature within a media provider\nA play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue.\nPlay Queues has a region, which we refer to in this doc (partially for historical reasons) as \"Up Next\". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables \"Party Mode\" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed. \nYou can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion.\nAll created play queues will have an empty \"Up Next\" area - unless the item is an album and no `key` is provided. In this case the \"Up Next\" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an \"Up Next\" area.\nThe play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item."
|
|
- name: Playlist
|
|
description: Media playlists that can be created and played back
|
|
- name: Preferences
|
|
description: API Operations against the Preferences
|
|
- name: Provider
|
|
description: Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers.
|
|
- name: Rate
|
|
description: Operations for rating media items (thumbs up/down, star ratings, etc.)
|
|
- name: Search
|
|
description: The search feature within a media provider
|
|
- name: Status
|
|
description: The status endpoints give you information about current playbacks, play history, and even terminating sessions.
|
|
- name: Subscriptions
|
|
description: |
|
|
Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available
|
|
- name: Timeline
|
|
description: The actions feature within a media provider
|
|
- name: Transcoder
|
|
description: API Operations against the Transcoder
|
|
- name: UltraBlur
|
|
description: Service provided to compute UltraBlur colors and images.
|
|
- name: Updater
|
|
description: |
|
|
This describes the API for searching and applying updates to the Plex Media Server.
|
|
Updates to the status can be observed via the Event API.
|
|
x-tagGroups:
|
|
- name: General
|
|
tags:
|
|
- General
|
|
- Library
|
|
- Library Playlists
|
|
- Library Collections
|
|
- Status
|
|
- Activities
|
|
- Updater
|
|
- Butler
|
|
- Events
|
|
- Log
|
|
- Preferences
|
|
- Download Queue
|
|
- UltraBlur
|
|
- Transcoder
|
|
- name: Playback & Sessions
|
|
tags:
|
|
- Status
|
|
- Timeline
|
|
- Play Queue
|
|
- Transcoder
|
|
- name: Media Provider
|
|
tags:
|
|
- Provider
|
|
- Content
|
|
- Hubs
|
|
- Search
|
|
- Rate
|
|
- Playlist
|
|
- Play Queue
|
|
- Timeline
|
|
- name: DVR
|
|
tags:
|
|
- DVRs
|
|
- Devices
|
|
- EPG
|
|
- Subscriptions
|
|
- Live TV
|
|
paths:
|
|
/:
|
|
get:
|
|
summary: Get PMS info
|
|
operationId: getServerInfo
|
|
description: Information about this PMS setup and configuration
|
|
tags:
|
|
- General
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDirectory'
|
|
/:/eventsource/notifications:
|
|
get:
|
|
summary: Connect to Eventsource
|
|
operationId: getNotifications
|
|
description: Connect to the event source to get a stream of events
|
|
tags:
|
|
- Events
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: filter
|
|
description: |
|
|
By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:
|
|
|
|
- `filters=-log`: All event types except logs (the default).
|
|
- `filters=foo,bar`: Only the foo and bar event types.
|
|
- `filters=`: All events types.
|
|
- `filters=-foo,bar`: All event types except foo and bar.
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
/:/prefs:
|
|
get:
|
|
summary: Get all preferences
|
|
operationId: getAllPreferences
|
|
description: Get the list of all preferences
|
|
tags:
|
|
- Preferences
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSettings'
|
|
put:
|
|
summary: Set preferences
|
|
operationId: setPreferences
|
|
description: Set a set of preferences in query parameters
|
|
tags:
|
|
- Preferences
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: prefs
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: object
|
|
example:
|
|
FriendlyName: My Server
|
|
ScheduledLibraryUpdateInterval: 3600
|
|
sendCrashReports: 1
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Attempt to set a preferences that doesn't exist
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
description: Attempt to set a preferences that doesn't exist
|
|
content:
|
|
text/html: {}
|
|
/:/prefs/get:
|
|
get:
|
|
summary: Get a preferences
|
|
operationId: getPreference
|
|
description: Get a single preference and value
|
|
tags:
|
|
- Preferences
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: id
|
|
description: The preference to fetch
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSettings'
|
|
'404':
|
|
description: No preference with the provided name found.
|
|
content:
|
|
text/html: {}
|
|
/:/rate:
|
|
put:
|
|
summary: Rate an item
|
|
operationId: setRating
|
|
description: |-
|
|
Set the rating on an item.
|
|
This API does respond to the GET verb but applications should use PUT
|
|
tags:
|
|
- Rate
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: identifier
|
|
description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: key
|
|
description: The key of the item to rate. This is the `ratingKey` found in metadata items
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: rating
|
|
description: The rating to give the item.
|
|
in: query
|
|
required: true
|
|
schema:
|
|
maximum: 10
|
|
minimum: 0
|
|
type: number
|
|
- name: ratedAt
|
|
description: The time when the rating occurred. If not present, interpreted as now.
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Bad Request. Can occur when parameters are of the wrong type, missing, or if the `ratedAt` is in the future
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key
|
|
content:
|
|
text/html: {}
|
|
/:/scrobble:
|
|
put:
|
|
summary: Mark an item as played
|
|
operationId: markPlayed
|
|
description: |-
|
|
Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter
|
|
This API does respond to the GET verb but applications should use PUT
|
|
tags:
|
|
- Timeline
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: identifier
|
|
description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: key
|
|
description: The key of the item to rate. This is the `ratingKey` found in metadata items
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: uri
|
|
description: The URI of the item to mark as played. See intro for description of the URIs
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Bad Request. Can occur when parameters are of the wrong type, or missing
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key
|
|
content:
|
|
text/html: {}
|
|
/:/timeline:
|
|
post:
|
|
summary: Report media timeline
|
|
operationId: report
|
|
description: |
|
|
This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular).
|
|
tags:
|
|
- Timeline
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: key
|
|
description: The details key for the item.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /foo
|
|
- name: ratingKey
|
|
description: The rating key attribute for the item.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: xyz
|
|
- name: state
|
|
description: The current state of the media.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- stopped
|
|
- buffering
|
|
- playing
|
|
- paused
|
|
example: playing
|
|
- name: playQueueItemID
|
|
description: If playing media from a play queue, the play queue's ID.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: 123
|
|
- name: time
|
|
description: The current time offset of playback in ms.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: duration
|
|
description: The total duration of the item in ms.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 10000
|
|
- name: continuing
|
|
description: When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: updated
|
|
description: Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 14200000
|
|
- name: offline
|
|
description: Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being "live".
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: timeToFirstFrame
|
|
description: Time in seconds till first frame is displayed. Sent only on the first playing timeline request.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 1000
|
|
- name: timeStalled
|
|
description: Time in seconds spent buffering since last request.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 1000
|
|
- name: bandwidth
|
|
description: Bandwidth in kbps as estimated by the client.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 100
|
|
- name: bufferedTime
|
|
description: Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 100
|
|
- name: bufferedSize
|
|
description: Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 1024
|
|
- name: X-Plex-Client-Identifier
|
|
description: Unique per client.
|
|
in: header
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: X-Plex-Session-Identifier
|
|
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
|
|
in: header
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ServerConfiguration'
|
|
- properties:
|
|
Bandwidths:
|
|
description: A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth
|
|
properties:
|
|
Bandwidth:
|
|
items:
|
|
properties:
|
|
bandwidth:
|
|
description: The bandwidth at this time in kbps
|
|
type: integer
|
|
resolution:
|
|
description: The user-friendly resolution at this time
|
|
type: string
|
|
time:
|
|
description: Media playback time where this bandwidth started
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
terminationCode:
|
|
description: A code describing why the session was terminated by the server.
|
|
type: integer
|
|
terminationText:
|
|
description: A user friendly and localized text describing why the session was terminated by the server.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
/:/unscrobble:
|
|
put:
|
|
summary: Mark an item as unplayed
|
|
operationId: unscrobble
|
|
description: |-
|
|
Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter
|
|
This API does respond to the GET verb but applications should use PUT
|
|
tags:
|
|
- Timeline
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: identifier
|
|
description: The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: key
|
|
description: The key of the item to rate. This is the `ratingKey` found in metadata items
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: uri
|
|
description: The URI of the item to mark as played. See intro for description of the URIs
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Bad Request. Can occur when parameters are of the wrong type, or missing
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Indicates that no library with the provide identifier can be found or no item can be found with the rating key
|
|
content:
|
|
text/html: {}
|
|
/:/websocket/notifications:
|
|
get:
|
|
summary: Connect to WebSocket
|
|
operationId: connectWebSocket
|
|
description: Connect to the web socket to get a stream of events
|
|
tags:
|
|
- Events
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: filter
|
|
description: |
|
|
By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:
|
|
|
|
- `filters=-log`: All event types except logs (the default).
|
|
- `filters=foo,bar`: Only the foo and bar event types.
|
|
- `filters=`: All events types.
|
|
- `filters=-foo,bar`: All event types except foo and bar.
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
/activities:
|
|
get:
|
|
summary: Get all activities
|
|
operationId: listActivities
|
|
description: List all activities on the server. Admins can see all activities but other users can only see their own
|
|
tags:
|
|
- Activities
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- properties:
|
|
Activity:
|
|
items:
|
|
properties:
|
|
cancellable:
|
|
description: Indicates whether this activity can be cancelled
|
|
type: boolean
|
|
Context:
|
|
description: An object with additional values
|
|
additionalProperties: true
|
|
type: object
|
|
progress:
|
|
description: A progress percentage. A value of -1 means the progress is indeterminate
|
|
maximum: 100
|
|
minimum: -1
|
|
type: number
|
|
Response:
|
|
description: An object with the response to the async opperation
|
|
additionalProperties: true
|
|
type: object
|
|
subtitle:
|
|
description: A user-friendly sub-title for this activity
|
|
type: string
|
|
title:
|
|
description: A user-friendly title for this activity
|
|
type: string
|
|
type:
|
|
description: The type of activity
|
|
type: string
|
|
userID:
|
|
description: The user this activity belongs to
|
|
type: integer
|
|
uuid:
|
|
description: The ID of the activity
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/butler:
|
|
delete:
|
|
summary: Stop all Butler tasks
|
|
operationId: stopTasks
|
|
description: This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue.
|
|
tags:
|
|
- Butler
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
get:
|
|
summary: Get all Butler tasks
|
|
operationId: getTasks
|
|
description: |
|
|
Get the list of butler tasks and their scheduling
|
|
tags:
|
|
- Butler
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
description: Butler tasks
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
ButlerTasks:
|
|
properties:
|
|
ButlerTask:
|
|
items:
|
|
properties:
|
|
description:
|
|
description: A user-friendly description of the task
|
|
type: string
|
|
enabled:
|
|
description: Whether this task is enabled or not
|
|
type: boolean
|
|
interval:
|
|
description: The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc.
|
|
type: integer
|
|
name:
|
|
description: The name of the task
|
|
type: string
|
|
scheduleRandomized:
|
|
description: Indicates whether the timing of the task is randomized within the butler interval
|
|
type: boolean
|
|
title:
|
|
description: A user-friendly title of the task
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
post:
|
|
summary: Start all Butler tasks
|
|
operationId: startTasks
|
|
description: |
|
|
This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria:
|
|
|
|
1. Any tasks not scheduled to run on the current day will be skipped.
|
|
2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately.
|
|
3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window.
|
|
4. If we are outside the configured window, the task will start immediately.
|
|
tags:
|
|
- Butler
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/downloadQueue:
|
|
post:
|
|
summary: Create download queue
|
|
operationId: createDownloadQueue
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user.
|
|
tags:
|
|
- Download Queue
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
DownloadQueue:
|
|
items:
|
|
properties:
|
|
id:
|
|
type: integer
|
|
itemCount:
|
|
type: integer
|
|
status:
|
|
description: |
|
|
The state of this queue
|
|
- deciding: At least one item is still being decided
|
|
- waiting: At least one item is waiting for transcode and none are currently transcoding
|
|
- processing: At least one item is being transcoded
|
|
- done: All items are available (or potentially expired)
|
|
- error: At least one item has encountered an error
|
|
enum:
|
|
- deciding
|
|
- waiting
|
|
- processing
|
|
- done
|
|
- error
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
/hubs:
|
|
get:
|
|
summary: Get global hubs
|
|
operationId: getAllHubs
|
|
description: Get the global hubs in this PMS
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/count'
|
|
- name: onlyTransient
|
|
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: identifier
|
|
description: If provided, limit to only specified hubs
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/hubs/continueWatching:
|
|
get:
|
|
summary: Get the continue watching hub
|
|
operationId: getContinueWatching
|
|
description: Get the global continue watching hub
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/count'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/hubs/items:
|
|
get:
|
|
summary: Get a hub's items
|
|
operationId: getHubItems
|
|
description: Get the items within a single hub specified by identifier
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/count'
|
|
- name: identifier
|
|
description: If provided, limit to only specified hubs
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
$ref: '#/components/schemas/MediaContainer'
|
|
type: object
|
|
'404':
|
|
description: The specified hub could not be found
|
|
content:
|
|
text/html: {}
|
|
/hubs/promoted:
|
|
get:
|
|
summary: Get the hubs which are promoted
|
|
operationId: getPromotedHubs
|
|
description: Get the global hubs which are promoted (should be displayed on the home screen)
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/count'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/hubs/search:
|
|
get:
|
|
summary: Search Hub
|
|
operationId: searchHubs
|
|
description: |
|
|
Perform a search and get the result as hubs
|
|
|
|
This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor).
|
|
|
|
In the response's items, the following extra attributes are returned to further describe or disambiguate the result:
|
|
|
|
- `reason`: The reason for the result, if not because of a direct search term match; can be either:
|
|
- `section`: There are multiple identical results from different sections.
|
|
- `originalTitle`: There was a search term match from the original title field (sometimes those can be very different or in a foreign language).
|
|
- `<hub identifier>`: If the reason for the result is due to a result in another hub, the source hub identifier is returned. For example, if the search is for "dylan" then Bob Dylan may be returned as an artist result, an a few of his albums returned as album results with a reason code of `artist` (the identifier of that particular hub). Or if the search is for "arnold", there might be movie results returned with a reason of `actor`
|
|
- `reasonTitle`: The string associated with the reason code. For a section reason, it'll be the section name; For a hub identifier, it'll be a string associated with the match (e.g. `Arnold Schwarzenegger` for movies which were returned because the search was for "arnold").
|
|
- `reasonID`: The ID of the item associated with the reason for the result. This might be a section ID, a tag ID, an artist ID, or a show ID.
|
|
|
|
This request is intended to be very fast, and called as the user types.
|
|
tags:
|
|
- Search
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: query
|
|
description: The query term
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: sectionId
|
|
description: This gives context to the search, and can result in re-ordering of search result hubs.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 1
|
|
- name: limit
|
|
description: The number of items to return per hub. 3 if not specified
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'400':
|
|
description: A required parameter was not given, the wrong type, or wrong value
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Search restrictions result in no possible items found (such as searching no sections)
|
|
content:
|
|
text/html: {}
|
|
/hubs/search/voice:
|
|
get:
|
|
summary: Voice Search Hub
|
|
operationId: voiceSearchHubs
|
|
description: |
|
|
Perform a search tailored to voice input and get the result as hubs
|
|
|
|
This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type.
|
|
|
|
Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality.
|
|
tags:
|
|
- Search
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: query
|
|
description: The query term
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/type'
|
|
- name: limit
|
|
description: The number of items to return per hub. 3 if not specified
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'400':
|
|
description: A required parameter was not given, the wrong type, or wrong value
|
|
content:
|
|
text/html: {}
|
|
/identity:
|
|
get:
|
|
summary: Get PMS identity
|
|
operationId: getIdentity
|
|
description: Get details about this PMS's identity
|
|
tags:
|
|
- General
|
|
security:
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
properties:
|
|
claimed:
|
|
description: Indicates whether this server has been claimed by a user
|
|
type: boolean
|
|
machineIdentifier:
|
|
description: A unique identifier of the computer
|
|
type: string
|
|
size:
|
|
type: integer
|
|
version:
|
|
description: The full version string of the PMS
|
|
type: string
|
|
type: object
|
|
type: object
|
|
/library/all:
|
|
get:
|
|
summary: Get all items in library
|
|
operationId: getLibraryItems
|
|
description: Request all metadata items according to a query.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/caches:
|
|
delete:
|
|
summary: Delete library caches
|
|
operationId: deleteCaches
|
|
description: Delete the hub caches so they are recomputed on next request
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/clean/bundles:
|
|
put:
|
|
summary: Clean bundles
|
|
operationId: cleanBundles
|
|
description: Clean out any now unused bundles. Bundles can become unused when media is deleted
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/collections:
|
|
post:
|
|
summary: Create collection
|
|
operationId: createCollection
|
|
description: Create a collection in the library
|
|
tags:
|
|
- Collections
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section where this collection will be created
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/title'
|
|
- $ref: '#/components/parameters/smart'
|
|
- name: uri
|
|
description: The URI for processing the smart collection. Required for a smart collection
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/type'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'400':
|
|
description: The uri is missing for a smart collection or the section could not be found
|
|
content:
|
|
text/html: {}
|
|
/library/file:
|
|
post:
|
|
summary: Ingest a transient item
|
|
operationId: ingestTransientItem
|
|
description: |-
|
|
This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path.
|
|
Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: url
|
|
description: The file of the file to ingest.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: url
|
|
example: file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv
|
|
- name: virtualFilePath
|
|
description: A virtual path to use when the url is opaque.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /Avatar.mkv
|
|
- name: computeHashes
|
|
description: Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: ingestNonMatches
|
|
description: Whether or not non matching media should be stored. Defaults to 0.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/matches:
|
|
get:
|
|
summary: Get library matches
|
|
operationId: getLibraryMatches
|
|
description: |-
|
|
The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic "hints" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints.
|
|
This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata.
|
|
The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching).
|
|
The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version).
|
|
Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/type'
|
|
- name: includeFullMetadata
|
|
in: query
|
|
schema:
|
|
description: Whether or not to include full metadata on a positive match. When set, and the best match exceeds a score threshold of 85, metadata as rich as possible is sent back.
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: includeAncestorMetadata
|
|
in: query
|
|
schema:
|
|
description: Whether or not to include metadata for the item's ancestor (e.g. show and season data for an episode).
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: includeAlternateMetadataSources
|
|
in: query
|
|
schema:
|
|
description: Whether or not to return all sources for each metadata field, which results in a different structure being passed back.
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: guid
|
|
description: Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/title'
|
|
- name: year
|
|
description: Used for movies shows, and albums. Optional.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: path
|
|
description: Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: grandparentTitle
|
|
description: Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: grandparentYear
|
|
description: Used for episodes. The year of the show.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: parentIndex
|
|
description: Used for episodes and tracks. The season/album number.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: index
|
|
description: Used for episodes and tracks. The episode/tracks number in the season/album.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: originallyAvailableAt
|
|
description: Used for episodes. In the format `YYYY-MM-DD`.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: parentTitle
|
|
description: Used for albums and tracks. The artist name for albums or the album name for tracks.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/optimize:
|
|
put:
|
|
summary: Optimize the Database
|
|
operationId: optimizeDatabase
|
|
description: Initiate optimize on the database.
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: async
|
|
description: If set, don't wait for completion but return an activity
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/randomArtwork:
|
|
get:
|
|
summary: Get random artwork
|
|
operationId: getRandomArtwork
|
|
description: |
|
|
Get random artwork across sections. This is commonly used for a screensaver.
|
|
|
|
This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sections
|
|
description: The sections for which to fetch artwork.
|
|
in: query
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
example:
|
|
- 5
|
|
- 6
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithArtwork'
|
|
/library/sections/all:
|
|
get:
|
|
summary: Get library sections (main Media Provider Only)
|
|
operationId: getSections
|
|
description: |-
|
|
A library section (commonly referred to as just a library) is a collection of media. Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat.
|
|
Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year).
|
|
tags:
|
|
- Library
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
allowSync:
|
|
$ref: '#/components/schemas/AllowSync'
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/LibrarySection'
|
|
type: array
|
|
title1:
|
|
description: Typically just "Plex Library"
|
|
type: string
|
|
type: object
|
|
type: object
|
|
post:
|
|
summary: Add a library section
|
|
operationId: addSection
|
|
description: Add a new library section to the server
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: name
|
|
description: The name of the new section
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: type
|
|
description: The type of library section
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: scanner
|
|
description: The scanner this section should use
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: agent
|
|
description: The agent this section should use for metadata
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: metadataAgentProviderGroupId
|
|
description: The agent group id for this section
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: language
|
|
description: The language of this section
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: locations
|
|
description: The locations on disk to add to this section
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example:
|
|
- O:\fatboy\Media\Ripped\Music
|
|
- O:\fatboy\Media\My Music
|
|
- name: prefs
|
|
description: The preferences for this section
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
collectionMode: 2
|
|
hidden: 0
|
|
- name: relative
|
|
description: If set, paths are relative to `Media Upload` path
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: importFromiTunes
|
|
description: If set, import media from iTunes.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-get-responses-200'
|
|
'400':
|
|
description: Section cannot be created due to bad parameters in request
|
|
content:
|
|
text/html: {}
|
|
/library/sections/all/refresh:
|
|
delete:
|
|
summary: Stop refresh
|
|
operationId: stopAllRefreshes
|
|
description: Stop all refreshes across all sections
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/LibrarySections'
|
|
/library/sections/prefs:
|
|
get:
|
|
summary: Get section prefs
|
|
operationId: getSectionsPrefs
|
|
description: Get a section's preferences for a metadata type
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: type
|
|
description: The metadata type
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: agent
|
|
description: The metadata agent in use
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/LibrarySections'
|
|
'400':
|
|
description: type not provided or not an integer
|
|
content:
|
|
text/html: {}
|
|
/library/sections/refresh:
|
|
post:
|
|
summary: Refresh all sections
|
|
operationId: refreshSectionsMetadata
|
|
description: Tell PMS to refresh all section metadata
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: force
|
|
description: Force refresh of metadata
|
|
in: query
|
|
schema:
|
|
type: boolean
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'503':
|
|
description: Server cannot refresh a music library when not signed in
|
|
content:
|
|
text/html: {}
|
|
/library/tags:
|
|
get:
|
|
summary: Get all library tags of a type
|
|
operationId: getTags
|
|
description: Get all library tags of a type
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/type'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
properties:
|
|
filter:
|
|
description: The filter string to view metadata wit this tag
|
|
type: string
|
|
id:
|
|
type: integer
|
|
tag:
|
|
description: The name of the tag
|
|
type: string
|
|
tagKey:
|
|
description: The key of this tag. This is a universal key across all PMS instances and plex.tv services
|
|
type: string
|
|
tagType:
|
|
description: The type of the tag
|
|
type: integer
|
|
thumb:
|
|
description: The URL to a thumbnail for this tag
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/dvrs:
|
|
get:
|
|
summary: Get DVRs
|
|
operationId: listDVRs
|
|
description: Get the list of all available DVRs
|
|
tags:
|
|
- DVRs
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
post:
|
|
summary: Create a DVR
|
|
operationId: createDVR
|
|
description: Creation of a DVR, after creation of a devcie and a lineup is selected
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: lineup
|
|
description: The EPG lineup.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT
|
|
- name: device
|
|
description: The device.
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA
|
|
- name: language
|
|
description: The language.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: eng
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/dvrRequestHandler_slash-get-responses-200'
|
|
/livetv/epg/channelmap:
|
|
get:
|
|
summary: Compute the best channel map
|
|
operationId: computeChannelMap
|
|
description: Compute the best channel map, given device and lineup
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: device
|
|
description: The URI describing the device
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: lineup
|
|
description: The URI describing the lineup
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
ChannelMapping:
|
|
items:
|
|
properties:
|
|
channelKey:
|
|
type: string
|
|
deviceIdentifier:
|
|
description: The channel description on the device
|
|
type: string
|
|
favorite:
|
|
type: boolean
|
|
lineupIdentifier:
|
|
description: The channel identifier in the lineup
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: No device or provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: Failed to compute channel map
|
|
content:
|
|
text/html: {}
|
|
/livetv/epg/channels:
|
|
get:
|
|
summary: Get channels for a lineup
|
|
operationId: getChannels
|
|
description: Get channels for a lineup within an EPG provider
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: lineup
|
|
description: The URI describing the lineup
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Channel:
|
|
items:
|
|
$ref: '#/components/schemas/Channel'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: No provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
/livetv/epg/countries:
|
|
get:
|
|
summary: Get all countries
|
|
operationId: getCountries
|
|
description: This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute
|
|
tags:
|
|
- EPG
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Country:
|
|
items:
|
|
properties:
|
|
code:
|
|
description: Three letter code
|
|
type: string
|
|
example:
|
|
type: string
|
|
flavor:
|
|
description: |
|
|
- `0`: The country is divided into regions, and following the key will lead to a list of regions.
|
|
- `1`: The county is divided by postal codes, and an example code is returned in `example`.
|
|
- `2`: The country has a single postal code, returned in `example`.
|
|
enum:
|
|
- 0
|
|
- 1
|
|
- 2
|
|
type: integer
|
|
key:
|
|
type: string
|
|
language:
|
|
description: Three letter language code
|
|
type: string
|
|
languageTitle:
|
|
description: The title of the language
|
|
type: string
|
|
title:
|
|
type: string
|
|
type:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/epg/languages:
|
|
get:
|
|
summary: Get all languages
|
|
operationId: getAllLanguages
|
|
description: Returns a list of all possible languages for EPG data.
|
|
tags:
|
|
- EPG
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Language:
|
|
items:
|
|
properties:
|
|
code:
|
|
description: 3 letter language code
|
|
type: string
|
|
title:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/epg/lineup:
|
|
get:
|
|
summary: Compute the best lineup
|
|
operationId: getLineup
|
|
description: Compute the best lineup, given lineup group and device
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: device
|
|
description: The URI describing the device
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: lineupGroup
|
|
description: The URI describing the lineupGroup
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Activity:
|
|
description: The activity of the reload process
|
|
schema:
|
|
type: string
|
|
'404':
|
|
description: No device or provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: Could not get device's channels
|
|
content:
|
|
text/html: {}
|
|
/livetv/epg/lineupchannels:
|
|
get:
|
|
summary: Get the channels for mulitple lineups
|
|
operationId: getLineupChannels
|
|
description: Get the channels across multiple lineups
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: lineup
|
|
description: The URIs describing the lineups
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Lineup:
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Lineup'
|
|
- properties:
|
|
Channel:
|
|
items:
|
|
$ref: '#/components/schemas/Channel'
|
|
type: array
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: No provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
/livetv/sessions:
|
|
get:
|
|
summary: Get all sessions
|
|
operationId: getSessions
|
|
description: Get all livetv sessions and metadata
|
|
tags:
|
|
- Live TV
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/log:
|
|
post:
|
|
summary: Logging a multi-line message to the Plex Media Server log
|
|
operationId: writeLog
|
|
description: |
|
|
This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above.
|
|
tags:
|
|
- Log
|
|
security:
|
|
- token:
|
|
- admin
|
|
requestBody:
|
|
required: true
|
|
description: Line separated list of log items
|
|
content:
|
|
text/plain: {}
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
put:
|
|
summary: Logging a single-line message to the Plex Media Server log
|
|
operationId: writeMessage
|
|
description: |
|
|
This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log.
|
|
|
|
Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred
|
|
tags:
|
|
- Log
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: level
|
|
description: |
|
|
An integer log level to write to the PMS log with.
|
|
- 0: Error
|
|
- 1: Warning
|
|
- 2: Info
|
|
- 3: Debug
|
|
- 4: Verbose
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
enum:
|
|
- 0
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- name: message
|
|
description: The text of the message to write to the log.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: source
|
|
description: A string indicating the source of the message.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/log/networked:
|
|
post:
|
|
summary: Enabling Papertrail
|
|
operationId: enablePapertrail
|
|
description: |
|
|
This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time
|
|
|
|
Note: This endpoint responds to all HTTP verbs but POST is preferred
|
|
tags:
|
|
- Log
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: minutes
|
|
description: The number of minutes logging should be sent to Papertrail
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'403':
|
|
description: User doesn't have permission
|
|
content:
|
|
text/html: {}
|
|
/media/grabbers:
|
|
get:
|
|
summary: Get available grabbers
|
|
operationId: getAvailableGrabbers
|
|
description: Get available grabbers visible to the server
|
|
tags:
|
|
- Devices
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: protocol
|
|
description: Only return grabbers providing this protocol.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: livetv
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
MediaGrabber:
|
|
items:
|
|
properties:
|
|
identifier:
|
|
type: string
|
|
protocol:
|
|
type: string
|
|
title:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/media/grabbers/devices:
|
|
get:
|
|
summary: Get all devices
|
|
operationId: listDevices
|
|
description: Get the list of all devices present
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
post:
|
|
summary: Add a device
|
|
operationId: addDevice
|
|
description: This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber.
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: uri
|
|
description: The URI of the device.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: http://10.0.0.5
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
/media/grabbers/devices/discover:
|
|
post:
|
|
summary: Tell grabbers to discover devices
|
|
operationId: discoverDevices
|
|
description: Tell grabbers to discover devices
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
/media/providers:
|
|
get:
|
|
summary: Get the list of available media providers
|
|
operationId: listProviders
|
|
description: Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up.
|
|
tags:
|
|
- Provider
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ServerConfiguration'
|
|
- properties:
|
|
Feature:
|
|
items:
|
|
properties:
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/Directory'
|
|
type: array
|
|
key:
|
|
type: string
|
|
type:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
identifier:
|
|
description: A unique identifier for the provider, e.g. `com.plexapp.plugins.library`.
|
|
type: string
|
|
protocols:
|
|
description: |-
|
|
A comma-separated list of default protocols for the provider, which can be:
|
|
- `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis.
|
|
type: string
|
|
title:
|
|
description: The title of the provider.
|
|
type: string
|
|
types:
|
|
description: This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`).
|
|
type: string
|
|
type: object
|
|
type: object
|
|
post:
|
|
summary: Add a media provider
|
|
operationId: addProvider
|
|
description: This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work.
|
|
tags:
|
|
- Provider
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: url
|
|
description: The URL of the media provider to add.
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
/media/providers/refresh:
|
|
post:
|
|
summary: Refresh media providers
|
|
operationId: refreshProviders
|
|
description: Refresh all known media providers. This is useful in case a provider has updated features.
|
|
tags:
|
|
- Provider
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/media/subscriptions:
|
|
get:
|
|
summary: Get all subscriptions
|
|
operationId: getAllSubscriptions
|
|
description: Get all subscriptions and potentially the grabs too
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: includeGrabs
|
|
description: Indicates whether the active grabs should be included as well
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: includeStorage
|
|
description: Compute the storage of recorded items desired by this subscription
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSubscription'
|
|
'403':
|
|
description: User cannot access DVR on this server
|
|
content:
|
|
text/html: {}
|
|
post:
|
|
summary: Create a subscription
|
|
operationId: createSubscription
|
|
description: Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate)
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: targetLibrarySectionID
|
|
description: The library section into which we'll grab the media. Not actually required when the subscription is to a playlist.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 1
|
|
- name: targetSectionLocationID
|
|
description: The section location into which to grab.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 3
|
|
- name: type
|
|
description: The type of the thing we're subscribing too (e.g. show, season).
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 2
|
|
- name: hints
|
|
description: 'Hints describing what we''re looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote.'
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
title: Family Guy
|
|
- name: prefs
|
|
description: Subscription preferences.
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
minVideoQuality: 720
|
|
- name: params
|
|
description: |
|
|
Subscription parameters.
|
|
- `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into
|
|
- `source`: Required for downloads to indicate the source of the downloaded content.
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
mediaProviderID: 1
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
MediaSubscription:
|
|
items:
|
|
$ref: '#/components/schemas/MediaSubscription'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
description: User cannot access DVR on this server
|
|
content:
|
|
text/html: {}
|
|
'409':
|
|
description: An subscription with the same parameters already exists
|
|
content:
|
|
text/html: {}
|
|
/media/subscriptions/process:
|
|
post:
|
|
summary: Process all subscriptions
|
|
operationId: processSubscriptions
|
|
description: Process all subscriptions asynchronously
|
|
tags:
|
|
- Subscriptions
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Activity:
|
|
description: The activity of the process
|
|
schema:
|
|
type: string
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
description: User cannot access DVR on this server
|
|
content:
|
|
text/html: {}
|
|
/media/subscriptions/scheduled:
|
|
get:
|
|
summary: Get all scheduled recordings
|
|
operationId: getScheduledRecordings
|
|
description: Get all scheduled recordings across all subscriptions
|
|
tags:
|
|
- Subscriptions
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
MediaGrabOperation:
|
|
items:
|
|
$ref: '#/components/schemas/MediaGrabOperation'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'403':
|
|
description: User cannot access DVR on this server
|
|
content:
|
|
text/html: {}
|
|
/media/subscriptions/template:
|
|
get:
|
|
summary: Get the subscription template
|
|
operationId: getTemplate
|
|
description: Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc.
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: guid
|
|
description: The guid of the item for which to get the template
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: plex://episode/5fc70265c40548002d539d23
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
SubscriptionTemplate:
|
|
items:
|
|
properties:
|
|
MediaSubscription:
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaSubscription'
|
|
- properties:
|
|
airingsType:
|
|
type: string
|
|
librarySectionTitle:
|
|
type: string
|
|
locationPath:
|
|
type: string
|
|
parameters:
|
|
description: Parameter string for creating this subscription
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
targetLibrarySectionID:
|
|
description: Where this subscription will record to
|
|
type: integer
|
|
title:
|
|
description: The title of this subscription type
|
|
example: This Episode
|
|
type: string
|
|
type:
|
|
description: Metadata type number
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'403':
|
|
description: User cannot access DVR on this server
|
|
content:
|
|
text/html: {}
|
|
/photo/:/transcode:
|
|
get:
|
|
summary: Transcode an image
|
|
operationId: transcodeImage
|
|
description: Transcode an image, possibly changing format or size
|
|
tags:
|
|
- Transcoder
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: url
|
|
description: The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /library/metadata/265/thumb/1715112705
|
|
- name: format
|
|
description: The output format for the image; defaults to jpg
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- jpg
|
|
- jpeg
|
|
- png
|
|
- ppm
|
|
- name: width
|
|
description: The desired width of the output image
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: height
|
|
description: The desired height of the output image
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: quality
|
|
description: The desired quality of the output. -1 means the highest quality. Defaults to -1
|
|
in: query
|
|
required: false
|
|
schema:
|
|
maximum: 127
|
|
minimum: -1
|
|
type: integer
|
|
- name: background
|
|
description: The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
example: '#ff5522'
|
|
- name: upscale
|
|
description: Indicates if image should be upscaled to the desired width/height. Defaults to false
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: minSize
|
|
description: Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension.
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: rotate
|
|
description: Obey the rotation values specified in EXIF data. Defaults to true.
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: blur
|
|
description: Apply a blur to the image, Defaults to 0 (none)
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
- name: saturation
|
|
description: Scale the image saturation by the specified percentage. Defaults to 100
|
|
in: query
|
|
required: false
|
|
schema:
|
|
maximum: 100
|
|
minimum: 0
|
|
type: integer
|
|
- name: opacity
|
|
description: Render the image at the specified opacity percentage. Defaults to 100
|
|
in: query
|
|
required: false
|
|
schema:
|
|
maximum: 100
|
|
minimum: 0
|
|
type: integer
|
|
- name: chromaSubsampling
|
|
description: |-
|
|
Use the specified chroma subsambling.
|
|
- 0: 411
|
|
- 1: 420
|
|
- 2: 422
|
|
- 3: 444
|
|
Defaults to 3 (444)
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
enum:
|
|
- 0
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- name: blendColor
|
|
description: The color to blend with the image. Defaults to none
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
example: '#ff5522'
|
|
responses:
|
|
'200':
|
|
description: The resulting image
|
|
content:
|
|
image/jpeg:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
image/png:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
image/x-portable-pixmap:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/playlists:
|
|
get:
|
|
summary: List playlists
|
|
operationId: listPlaylists
|
|
description: Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists.
|
|
tags:
|
|
- Playlist
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistType
|
|
description: Limit to a type of playlist
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- audio
|
|
- video
|
|
- photo
|
|
- $ref: '#/components/parameters/smart'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithPlaylistMetadata'
|
|
post:
|
|
summary: Create a Playlist
|
|
operationId: createPlaylist
|
|
description: Create a new playlist. By default the playlist is blank.
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: uri
|
|
description: The content URI for what we're playing (e.g. `library://...`).
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: playQueueID
|
|
description: To create a playlist from an existing play queue.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithPlaylistMetadata'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
/playlists/upload:
|
|
post:
|
|
summary: Upload
|
|
operationId: uploadPlaylist
|
|
description: Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file.
|
|
tags:
|
|
- Library Playlists
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: path
|
|
description: Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /home/barkley/playlist.m3u
|
|
- name: force
|
|
description: Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'403':
|
|
$ref: '#/components/responses/200'
|
|
'500':
|
|
description: The playlist could not be imported
|
|
content:
|
|
text/html: {}
|
|
/playQueues:
|
|
post:
|
|
summary: Create a play queue
|
|
operationId: createPlayQueue
|
|
description: |-
|
|
Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`.
|
|
Note: Either `uri` or `playlistID` must be specified
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: uri
|
|
description: The content URI for what we're playing.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: playlistID
|
|
description: the ID of the playlist we're playing.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: type
|
|
description: The type of play queue to create
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- audio
|
|
- video
|
|
- photo
|
|
- name: key
|
|
description: The key of the first item to play, defaults to the first in the play queue.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: shuffle
|
|
description: Whether to shuffle the playlist, defaults to 0.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: repeat
|
|
description: If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: continuous
|
|
description: Whether to create a continuous play queue (e.g. from an episode), defaults to 0.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: extrasPrefixCount
|
|
description: Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: recursive
|
|
description: Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: onDeck
|
|
description: Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
playQueueID:
|
|
description: The ID of the play queue, which is used in subsequent requests.
|
|
type: integer
|
|
playQueueLastAddedItemID:
|
|
description: Defines where the "Up Next" region starts
|
|
type: string
|
|
playQueueSelectedItemID:
|
|
description: The queue item ID of the currently selected item.
|
|
type: integer
|
|
playQueueSelectedItemOffset:
|
|
description: The offset of the selected item in the play queue, from the beginning of the queue.
|
|
type: integer
|
|
playQueueSelectedMetadataItemID:
|
|
description: The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library).
|
|
type: integer
|
|
playQueueShuffled:
|
|
description: Whether or not the queue is shuffled.
|
|
type: boolean
|
|
playQueueSourceURI:
|
|
description: The original URI used to create the play queue.
|
|
type: string
|
|
playQueueTotalCount:
|
|
description: The total number of items in the play queue.
|
|
type: integer
|
|
playQueueVersion:
|
|
description: The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh.
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
/security/resources:
|
|
get:
|
|
summary: Get Source Connection Information
|
|
operationId: getSourceConnectionInformation
|
|
description: If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token.
|
|
tags:
|
|
- General
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: source
|
|
description: The source identifier with an included prefix.
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: refresh
|
|
description: Force refresh
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Device:
|
|
properties:
|
|
accessToken:
|
|
type: string
|
|
clientIdentifier:
|
|
type: string
|
|
Connection:
|
|
items:
|
|
properties:
|
|
address:
|
|
type: string
|
|
local:
|
|
description: Indicates if the connection is the server's LAN address
|
|
type: boolean
|
|
port:
|
|
type: integer
|
|
protocol:
|
|
type: string
|
|
relay:
|
|
description: Indicates the connection is over a relayed connection
|
|
type: boolean
|
|
uri:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
name:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
type: object
|
|
'400':
|
|
description: A query param is missing or the wrong value
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
description: Invalid or no token provided or a transient token could not be created
|
|
content:
|
|
text/html: {}
|
|
/security/token:
|
|
post:
|
|
summary: Get Transient Tokens
|
|
operationId: getTransientToken
|
|
description: |-
|
|
This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted.
|
|
Note: This endpoint responds to all HTTP verbs but POST in preferred
|
|
tags:
|
|
- General
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: type
|
|
description: The value `delegation` is the only supported `type` parameter.
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- delegation
|
|
- name: scope
|
|
description: The value `all` is the only supported `scope` parameter.
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- all
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
token:
|
|
description: The transient token
|
|
type: string
|
|
type: object
|
|
type: object
|
|
'400':
|
|
description: A query param is missing or the wrong value
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
description: Invalid or no token provided or a transient token could not be created
|
|
content:
|
|
text/html: {}
|
|
/services/ultrablur/colors:
|
|
get:
|
|
summary: Get UltraBlur Colors
|
|
operationId: getColors
|
|
description: Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image.
|
|
tags:
|
|
- UltraBlur
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: url
|
|
description: Url for image which requires color extraction. Can be relative PMS library path or absolute url.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /library/metadata/217745/art/1718931408
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
UltraBlurColors:
|
|
items:
|
|
properties:
|
|
bottomLeft:
|
|
description: The color (hex) for the bottom left quadrant.
|
|
type: string
|
|
bottomRight:
|
|
description: The color (hex) for the bottom right quadrant.
|
|
type: string
|
|
topLeft:
|
|
description: The color (hex) for the top left quadrant.
|
|
type: string
|
|
topRight:
|
|
description: The color (hex) for the top right quadrant.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: The image url could not be found.
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: The server was unable to successfully extract the UltraBlur colors.
|
|
content:
|
|
text/html: {}
|
|
/services/ultrablur/image:
|
|
get:
|
|
summary: Get UltraBlur Image
|
|
operationId: getImage
|
|
description: Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint.
|
|
tags:
|
|
- UltraBlur
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: topLeft
|
|
description: The base color (hex) for the top left quadrant.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: 3f280a
|
|
- name: topRight
|
|
description: The base color (hex) for the top right quadrant.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: 6b4713
|
|
- name: bottomRight
|
|
description: The base color (hex) for the bottom right quadrant.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: 0f2a43
|
|
- name: bottomLeft
|
|
description: The base color (hex) for the bottom left quadrant.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: 1c425d
|
|
- name: width
|
|
description: Width in pixels for the image.
|
|
in: query
|
|
schema:
|
|
maximum: 3840
|
|
minimum: 320
|
|
type: integer
|
|
example: 1920
|
|
- name: height
|
|
description: Height in pixels for the image.
|
|
in: query
|
|
schema:
|
|
maximum: 2160
|
|
minimum: 240
|
|
type: integer
|
|
example: 1080
|
|
- name: noise
|
|
description: Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
image/png:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'400':
|
|
description: Requested width and height parameters are out of bounds (maximum 3840 x 2160)
|
|
content:
|
|
text/html: {}
|
|
/status/sessions:
|
|
get:
|
|
summary: List Sessions
|
|
operationId: listSessions
|
|
description: List all current playbacks on this server
|
|
tags:
|
|
- Status
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Metadata:
|
|
items:
|
|
allOf:
|
|
- properties:
|
|
Player:
|
|
$ref: '#/components/schemas/Player'
|
|
Session:
|
|
$ref: '#/components/schemas/Session'
|
|
User:
|
|
$ref: '#/components/schemas/User'
|
|
type: object
|
|
- $ref: '#/components/schemas/Metadata'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/status/sessions/background:
|
|
get:
|
|
summary: Get background tasks
|
|
operationId: getBackgroundTasks
|
|
description: Get the list of all background tasks
|
|
tags:
|
|
- Status
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
TranscodeJob:
|
|
items:
|
|
properties:
|
|
generatorID:
|
|
type: integer
|
|
key:
|
|
type: string
|
|
progress:
|
|
maximum: 100
|
|
minimum: 0
|
|
type: number
|
|
ratingKey:
|
|
type: string
|
|
remaining:
|
|
description: The number of seconds remaining in this job
|
|
type: integer
|
|
size:
|
|
description: The size of the result so far
|
|
type: integer
|
|
speed:
|
|
description: The speed of the transcode; 1.0 means real-time
|
|
type: number
|
|
targetTagID:
|
|
description: The tag associated with the job. This could be the tag containing the optimizer settings.
|
|
type: integer
|
|
thumb:
|
|
type: string
|
|
title:
|
|
type: string
|
|
type:
|
|
enum:
|
|
- transcode
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/status/sessions/history/all:
|
|
get:
|
|
summary: List Playback History
|
|
operationId: listPlaybackHistory
|
|
description: |-
|
|
List all playback history (Admin can see all users, others can only see their own).
|
|
Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters.
|
|
tags:
|
|
- Status
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: accountID
|
|
description: The account id to restrict view history
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: viewedAt
|
|
description: The time period to restrict history (typically of the form `viewedAt>=12456789`)
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: librarySectionID
|
|
description: The library section id to restrict view history
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: metadataItemID
|
|
description: The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: sort
|
|
description: The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here.
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: viewedAt:desc,accountID
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Metadata:
|
|
items:
|
|
properties:
|
|
accountID:
|
|
description: The account id of this playback
|
|
type: integer
|
|
deviceID:
|
|
description: The device id which played the item
|
|
type: integer
|
|
historyKey:
|
|
description: The key for this individual history item
|
|
type: string
|
|
key:
|
|
description: The metadata key for the item played
|
|
type: string
|
|
librarySectionID:
|
|
description: The library section id containing the item played
|
|
type: string
|
|
originallyAvailableAt:
|
|
description: The originally available at of the item played
|
|
type: string
|
|
ratingKey:
|
|
description: The rating key for the item played
|
|
type: string
|
|
thumb:
|
|
description: The thumb of the item played
|
|
type: string
|
|
title:
|
|
description: The title of the item played
|
|
type: string
|
|
type:
|
|
description: The metadata type of the item played
|
|
type: string
|
|
viewedAt:
|
|
description: The time when the item was played
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/status/sessions/terminate:
|
|
post:
|
|
summary: Terminate a session
|
|
operationId: terminateSession
|
|
description: Terminate a playback session kicking off the user
|
|
tags:
|
|
- Status
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sessionId
|
|
description: The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash))
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: cdefghijklmnopqrstuvwxyz
|
|
- name: reason
|
|
description: The reason to give to the user (typically displayed in the client)
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: Stop Playing
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'401':
|
|
description: Server does not have the feature enabled
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
description: sessionId is empty
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Session not found
|
|
content:
|
|
text/html: {}
|
|
/updater/apply:
|
|
put:
|
|
summary: Applying updates
|
|
operationId: applyUpdates
|
|
description: Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed.
|
|
tags:
|
|
- Updater
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: tonight
|
|
description: Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: skip
|
|
description: Indicate that the latest version should be marked as skipped. The <Release> entry for this version will have the `state` set to `skipped`.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: The update process started correctly
|
|
content:
|
|
text/html: {}
|
|
'400':
|
|
description: This system cannot install updates
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: The update process failed to start
|
|
content:
|
|
text/html: {}
|
|
/updater/check:
|
|
put:
|
|
summary: Checking for updates
|
|
operationId: checkUpdates
|
|
description: Perform an update check and potentially download
|
|
tags:
|
|
- Updater
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: download
|
|
description: Indicate that you want to start download any updates found.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/updater/status:
|
|
get:
|
|
summary: Querying status of updates
|
|
operationId: getUpdatesStatus
|
|
description: Get the status of updating the server
|
|
tags:
|
|
- Updater
|
|
security:
|
|
- token:
|
|
- admin
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- properties:
|
|
autoUpdateVersion:
|
|
description: The version of the updater (currently `1`)
|
|
type: integer
|
|
canInstall:
|
|
description: Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows)
|
|
type: boolean
|
|
checkedAt:
|
|
description: The last time a check for updates was performed
|
|
type: integer
|
|
downloadURL:
|
|
description: The URL where the update is available
|
|
type: string
|
|
Release:
|
|
items:
|
|
properties:
|
|
added:
|
|
description: A list of what has been added in this version
|
|
type: string
|
|
downloadURL:
|
|
description: The URL of where this update is available
|
|
type: string
|
|
fixed:
|
|
description: A list of what has been fixed in this version
|
|
type: string
|
|
key:
|
|
description: The URL key of the update
|
|
type: string
|
|
state:
|
|
description: |
|
|
The status of this update.
|
|
|
|
- available - This release is available
|
|
- downloading - This release is downloading
|
|
- downloaded - This release has been downloaded
|
|
- installing - This release is installing
|
|
- tonight - This release will be installed tonight
|
|
- skipped - This release has been skipped
|
|
- error - This release has an error
|
|
- notify - This release is only notifying it is available (typically because it cannot be installed on this setup)
|
|
- done - This release is complete
|
|
enum:
|
|
- available
|
|
- downloading
|
|
- downloaded
|
|
- installing
|
|
- tonight
|
|
- skipped
|
|
- error
|
|
- notify
|
|
- done
|
|
type: string
|
|
version:
|
|
description: The version available
|
|
type: string
|
|
type: object
|
|
type: array
|
|
status:
|
|
description: The current error code (`0` means no error)
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
/{transcodeType}/:/transcode/universal/decision:
|
|
get:
|
|
summary: Make a decision on media playback
|
|
operationId: makeDecision
|
|
description: Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution.
|
|
tags:
|
|
- Transcoder
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/transcodeType'
|
|
- $ref: '#/components/parameters/transcodeSessionId'
|
|
- $ref: '#/components/parameters/advancedSubtitles'
|
|
- name: audioBoost
|
|
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
|
|
in: query
|
|
schema:
|
|
minimum: 1
|
|
type: integer
|
|
example: 50
|
|
- name: audioChannelCount
|
|
description: Target video number of audio channels.
|
|
in: query
|
|
schema:
|
|
maximum: 8
|
|
minimum: 1
|
|
type: integer
|
|
example: 5
|
|
- name: autoAdjustQuality
|
|
description: Indicates the client supports ABR.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: autoAdjustSubtitle
|
|
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directPlay
|
|
description: Indicates the client supports direct playing the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directStream
|
|
description: Indicates the client supports direct streaming the video of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directStreamAudio
|
|
description: Indicates the client supports direct streaming the audio of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: disableResolutionRotation
|
|
description: Indicates if resolution should be adjusted for orientation.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: hasMDE
|
|
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: location
|
|
description: Network type of the client, can be used to help determine target bitrate.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- lan
|
|
- wan
|
|
- cellular
|
|
example: wan
|
|
- name: mediaBufferSize
|
|
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 102400
|
|
- name: mediaIndex
|
|
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: musicBitrate
|
|
description: Target bitrate for audio only files (in kbps, used to transcode).
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 5000
|
|
- name: offset
|
|
description: Offset from the start of the media (in seconds).
|
|
in: query
|
|
schema:
|
|
type: number
|
|
example: 90.5
|
|
- name: partIndex
|
|
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: path
|
|
description: Internal PMS path of the media to transcode.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /library/metadata/151671
|
|
- name: peakBitrate
|
|
description: Maximum bitrate (in kbps) to use in ABR.
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 12000
|
|
- name: photoResolution
|
|
description: Target photo resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
- name: protocol
|
|
description: |
|
|
Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- http
|
|
- hls
|
|
- dash
|
|
example: dash
|
|
- name: secondsPerSegment
|
|
description: Number of seconds to include in each transcoded segment
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 5
|
|
- name: subtitleSize
|
|
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
|
|
in: query
|
|
schema:
|
|
minimum: 1
|
|
type: integer
|
|
example: 50
|
|
- name: subtitles
|
|
description: |
|
|
Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- auto
|
|
- burn
|
|
- none
|
|
- sidecar
|
|
- embedded
|
|
- segmented
|
|
- unknown
|
|
example: Burn
|
|
- name: videoBitrate
|
|
description: Target video bitrate (in kbps).
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 12000
|
|
- name: videoQuality
|
|
description: Target photo quality.
|
|
in: query
|
|
schema:
|
|
maximum: 99
|
|
minimum: 0
|
|
type: integer
|
|
example: 50
|
|
- name: videoResolution
|
|
description: Target maximum video resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
- name: X-Plex-Client-Identifier
|
|
description: Unique per client.
|
|
in: header
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: X-Plex-Client-Profile-Extra
|
|
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
|
|
- name: X-Plex-Client-Profile-Name
|
|
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: generic
|
|
- name: X-Plex-Device
|
|
description: Device the client is running on
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: Windows
|
|
- name: X-Plex-Model
|
|
description: Model of the device the client is running on
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: standalone
|
|
- name: X-Plex-Platform
|
|
description: Client Platform
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: Chrome
|
|
- name: X-Plex-Platform-Version
|
|
description: Client Platform Version
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: 135
|
|
- name: X-Plex-Session-Identifier
|
|
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
|
|
in: header
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDecision'
|
|
/{transcodeType}/:/transcode/universal/fallback:
|
|
post:
|
|
summary: Manually trigger a transcoder fallback
|
|
operationId: triggerFallback
|
|
description: 'Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw'
|
|
tags:
|
|
- Transcoder
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/transcodeType'
|
|
- $ref: '#/components/parameters/transcodeSessionId'
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'404':
|
|
description: Session ID does not exist
|
|
content:
|
|
text/html: {}
|
|
'412':
|
|
description: Transcode could not fallback
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: Transcode failed to fallback
|
|
content:
|
|
text/html: {}
|
|
/{transcodeType}/:/transcode/universal/subtitles:
|
|
get:
|
|
summary: Transcode subtitles
|
|
operationId: transcodeSubtitles
|
|
description: Only transcode subtitle streams.
|
|
tags:
|
|
- Transcoder
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/transcodeType'
|
|
- $ref: '#/components/parameters/transcodeSessionId'
|
|
- $ref: '#/components/parameters/advancedSubtitles'
|
|
- name: audioBoost
|
|
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
|
|
in: query
|
|
schema:
|
|
minimum: 1
|
|
type: integer
|
|
example: 50
|
|
- name: audioChannelCount
|
|
description: Target video number of audio channels.
|
|
in: query
|
|
schema:
|
|
maximum: 8
|
|
minimum: 1
|
|
type: integer
|
|
example: 5
|
|
- name: autoAdjustQuality
|
|
description: Indicates the client supports ABR.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: autoAdjustSubtitle
|
|
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directPlay
|
|
description: Indicates the client supports direct playing the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directStream
|
|
description: Indicates the client supports direct streaming the video of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directStreamAudio
|
|
description: Indicates the client supports direct streaming the audio of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: disableResolutionRotation
|
|
description: Indicates if resolution should be adjusted for orientation.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: hasMDE
|
|
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: location
|
|
description: Network type of the client, can be used to help determine target bitrate.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- lan
|
|
- wan
|
|
- cellular
|
|
example: wan
|
|
- name: mediaBufferSize
|
|
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 102400
|
|
- name: mediaIndex
|
|
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: musicBitrate
|
|
description: Target bitrate for audio only files (in kbps, used to transcode).
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 5000
|
|
- name: offset
|
|
description: Offset from the start of the media (in seconds).
|
|
in: query
|
|
schema:
|
|
type: number
|
|
example: 90.5
|
|
- name: partIndex
|
|
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: path
|
|
description: Internal PMS path of the media to transcode.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /library/metadata/151671
|
|
- name: peakBitrate
|
|
description: Maximum bitrate (in kbps) to use in ABR.
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 12000
|
|
- name: photoResolution
|
|
description: Target photo resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
- name: protocol
|
|
description: |
|
|
Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- http
|
|
- hls
|
|
- dash
|
|
example: dash
|
|
- name: secondsPerSegment
|
|
description: Number of seconds to include in each transcoded segment
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 5
|
|
- name: subtitleSize
|
|
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
|
|
in: query
|
|
schema:
|
|
minimum: 1
|
|
type: integer
|
|
example: 50
|
|
- name: subtitles
|
|
description: |
|
|
Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- auto
|
|
- burn
|
|
- none
|
|
- sidecar
|
|
- embedded
|
|
- segmented
|
|
- unknown
|
|
example: Burn
|
|
- name: videoBitrate
|
|
description: Target video bitrate (in kbps).
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 12000
|
|
- name: videoQuality
|
|
description: Target photo quality.
|
|
in: query
|
|
schema:
|
|
maximum: 99
|
|
minimum: 0
|
|
type: integer
|
|
example: 50
|
|
- name: videoResolution
|
|
description: Target maximum video resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
- name: X-Plex-Client-Identifier
|
|
description: Unique per client.
|
|
in: header
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: X-Plex-Client-Profile-Extra
|
|
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
|
|
- name: X-Plex-Client-Profile-Name
|
|
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: generic
|
|
- name: X-Plex-Device
|
|
description: Device the client is running on
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: Windows
|
|
- name: X-Plex-Model
|
|
description: Model of the device the client is running on
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: standalone
|
|
- name: X-Plex-Platform
|
|
description: Client Platform
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: Chrome
|
|
- name: X-Plex-Platform-Version
|
|
description: Client Platform Version
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: 135
|
|
- name: X-Plex-Session-Identifier
|
|
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
|
|
in: header
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Transcoded subtitle file
|
|
content:
|
|
text/srt:
|
|
example: "1\n00:00:02,499 --> 00:00:06,416\n[SERENE MUSIC]\n\n2\n00:00:11,791 --> 00:00:13,958\n[BROOK BABBLES] \n[FLY BUZZES]\n\n3\n00:00:16,166 --> 00:00:17,666\n[BIRD TWEETS]\n\n4\n00:00:17,666 --> 00:00:18,708\n[WINGS FLAP]\n\n5\n00:00:19,833 --> 00:00:20,374\n[BIRD TWEETS] \n[WINGS FLAP]\n\n6\n00:00:20,374 --> 00:00:21,041\n[THUD]\n\n7\n00:00:21,374 --> 00:00:22,249\n[THUD]\n\n8\n00:00:22,249 --> 00:00:23,083\n[SQUIRREL LAUGHS]\n\n9\n00:00:26,249 --> 00:00:27,541\n[SNORES]\n\n10\n00:00:29,416 --> 00:00:30,708\n[SNORES]\n\n11\n00:00:32,749 --> 00:00:34,041\n[BUNNY SNORES]\n\n12\n00:00:35,916 --> 00:00:37,249\n[BUNNY SNORES]\n"
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/activities/{activityId}:
|
|
delete:
|
|
summary: Cancel a running activity
|
|
operationId: cancelActivity
|
|
description: Cancel a running activity. Admins can cancel all activities but other users can only cancel their own
|
|
tags:
|
|
- Activities
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: activityId
|
|
description: The UUID of the activity to cancel.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Activity is not cancellable
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: No activity with the provided id is found
|
|
content:
|
|
text/html: {}
|
|
/butler/{task}:
|
|
delete:
|
|
summary: Stop a single Butler task
|
|
operationId: stopTask
|
|
description: |
|
|
This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists
|
|
tags:
|
|
- Butler
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: task
|
|
description: The task name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- AutomaticUpdates
|
|
- BackupDatabase
|
|
- ButlerTaskGenerateAdMarkers
|
|
- ButlerTaskGenerateCreditsMarkers
|
|
- ButlerTaskGenerateIntroMarkers
|
|
- ButlerTaskGenerateVoiceActivity
|
|
- CleanOldBundles
|
|
- CleanOldCacheFiles
|
|
- DeepMediaAnalysis
|
|
- GarbageCollectBlobs
|
|
- GarbageCollectLibraryMedia
|
|
- GenerateBlurHashes
|
|
- GenerateChapterThumbs
|
|
- GenerateMediaIndexFiles
|
|
- LoudnessAnalysis
|
|
- MusicAnalysis
|
|
- OptimizeDatabase
|
|
- RefreshEpgGuides
|
|
- RefreshLibraries
|
|
- RefreshLocalMedia
|
|
- RefreshPeriodicMetadata
|
|
- UpgradeMediaAnalysis
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'404':
|
|
description: No task with this name was found or no task with this name was running
|
|
content:
|
|
text/html: {}
|
|
post:
|
|
summary: Start a single Butler task
|
|
operationId: startTask
|
|
description: |
|
|
This endpoint will attempt to start a specific Butler task by name.
|
|
tags:
|
|
- Butler
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: task
|
|
description: The task name
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- AutomaticUpdates
|
|
- BackupDatabase
|
|
- ButlerTaskGenerateAdMarkers
|
|
- ButlerTaskGenerateCreditsMarkers
|
|
- ButlerTaskGenerateIntroMarkers
|
|
- ButlerTaskGenerateVoiceActivity
|
|
- CleanOldBundles
|
|
- CleanOldCacheFiles
|
|
- DeepMediaAnalysis
|
|
- GarbageCollectBlobs
|
|
- GarbageCollectLibraryMedia
|
|
- GenerateBlurHashes
|
|
- GenerateChapterThumbs
|
|
- GenerateMediaIndexFiles
|
|
- LoudnessAnalysis
|
|
- MusicAnalysis
|
|
- OptimizeDatabase
|
|
- RefreshEpgGuides
|
|
- RefreshLibraries
|
|
- RefreshLocalMedia
|
|
- RefreshPeriodicMetadata
|
|
- UpgradeMediaAnalysis
|
|
responses:
|
|
'200':
|
|
description: Task started
|
|
content:
|
|
text/html: {}
|
|
'202':
|
|
description: Task is already running
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: No task with this name was found
|
|
content:
|
|
text/html: {}
|
|
/downloadQueue/{queueId}:
|
|
get:
|
|
summary: Get a download queue
|
|
operationId: getDownloadQueue
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Get a download queue by its id
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
DownloadQueue:
|
|
items:
|
|
properties:
|
|
id:
|
|
type: integer
|
|
itemCount:
|
|
type: integer
|
|
status:
|
|
description: |
|
|
The state of this queue
|
|
- deciding: At least one item is still being decided
|
|
- waiting: At least one item is waiting for transcode and none are currently transcoding
|
|
- processing: At least one item is being transcoded
|
|
- done: All items are available (or potentially expired)
|
|
- error: At least one item has encountered an error
|
|
enum:
|
|
- deciding
|
|
- waiting
|
|
- processing
|
|
- done
|
|
- error
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
/downloadQueue/{queueId}/add:
|
|
post:
|
|
summary: Add to download queue
|
|
operationId: addDownloadQueueItems
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Add items to the download queue
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: keys
|
|
description: Keys to add
|
|
in: query
|
|
required: true
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example:
|
|
- /library/metadata/3
|
|
- /library/metadata/6
|
|
- $ref: '#/components/parameters/advancedSubtitles'
|
|
- $ref: '#/components/parameters/audioBoost'
|
|
- $ref: '#/components/parameters/audioChannelCount'
|
|
- $ref: '#/components/parameters/autoAdjustQuality'
|
|
- $ref: '#/components/parameters/autoAdjustSubtitle'
|
|
- $ref: '#/components/parameters/directPlay'
|
|
- $ref: '#/components/parameters/directStream'
|
|
- $ref: '#/components/parameters/directStreamAudio'
|
|
- $ref: '#/components/parameters/disableResolutionRotation'
|
|
- $ref: '#/components/parameters/hasMDE'
|
|
- $ref: '#/components/parameters/location'
|
|
- $ref: '#/components/parameters/mediaBufferSize'
|
|
- $ref: '#/components/parameters/mediaIndex'
|
|
- $ref: '#/components/parameters/musicBitrate'
|
|
- $ref: '#/components/parameters/offset'
|
|
- $ref: '#/components/parameters/partIndex'
|
|
- $ref: '#/components/parameters/path'
|
|
- $ref: '#/components/parameters/peakBitrate'
|
|
- $ref: '#/components/parameters/photoResolution'
|
|
- $ref: '#/components/parameters/protocol'
|
|
- $ref: '#/components/parameters/secondsPerSegment'
|
|
- $ref: '#/components/parameters/subtitleSize'
|
|
- $ref: '#/components/parameters/subtitles'
|
|
- $ref: '#/components/parameters/videoBitrate'
|
|
- $ref: '#/components/parameters/videoQuality'
|
|
- $ref: '#/components/parameters/videoResolution'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
AddedQueueItems:
|
|
items:
|
|
properties:
|
|
id:
|
|
description: The queue item id that was added or the existing one if an item already exists in this queue with the same parameters
|
|
type: integer
|
|
key:
|
|
description: The key added to the queue
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
/downloadQueue/{queueId}/items:
|
|
get:
|
|
summary: Get download queue items
|
|
operationId: listDownloadQueueItems
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Get items from a download queue
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
DownloadQueueItem:
|
|
items:
|
|
properties:
|
|
DecisionResult:
|
|
properties:
|
|
availableBandwidth:
|
|
description: The maximum bitrate set when item was added
|
|
type: integer
|
|
directPlayDecisionCode:
|
|
type: integer
|
|
directPlayDecisionText:
|
|
type: string
|
|
generalDecisionCode:
|
|
type: integer
|
|
generalDecisionText:
|
|
type: string
|
|
mdeDecisionCode:
|
|
description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1`
|
|
type: integer
|
|
mdeDecisionText:
|
|
description: Descriptive text for the above code
|
|
type: string
|
|
transcodeDecisionCode:
|
|
type: integer
|
|
transcodeDecisionText:
|
|
type: string
|
|
type: object
|
|
error:
|
|
description: The error encountered in transcoding or decision
|
|
type: string
|
|
id:
|
|
type: integer
|
|
key:
|
|
type: string
|
|
queueId:
|
|
type: integer
|
|
status:
|
|
description: |
|
|
The state of the item:
|
|
- deciding: The item decision is pending
|
|
- waiting: The item is waiting for transcode
|
|
- processing: The item is being transcoded
|
|
- available: The item is available for download
|
|
- error: The item encountered an error in the decision or transcode
|
|
- expired: The transcoded item has timed out and is no longer available
|
|
enum:
|
|
- deciding
|
|
- waiting
|
|
- processing
|
|
- available
|
|
- error
|
|
- expired
|
|
type: string
|
|
transcode:
|
|
description: The transcode session object which is not yet documented otherwise it'd be a $ref here.
|
|
type: object
|
|
TranscodeSession:
|
|
$ref: '#/components/schemas/TranscodeSession'
|
|
type: object
|
|
type: array
|
|
type: object
|
|
/hubs/metadata/{metadataId}:
|
|
get:
|
|
summary: Get hubs for section by metadata item
|
|
operationId: getMetadataHubs
|
|
description: Get the hubs for a section by metadata item. Currently only for music sections
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: metadataId
|
|
description: The metadata ID for the hubs to fetch
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/count'
|
|
- name: onlyTransient
|
|
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/responses-200'
|
|
'400':
|
|
description: No metadata with that id or permission is denied
|
|
content:
|
|
text/html: {}
|
|
/hubs/metadata/{metadataId}/postplay:
|
|
get:
|
|
summary: Get postplay hubs
|
|
operationId: getPostplayHubs
|
|
description: Get the hubs for a metadata to be displayed in post play
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: metadataId
|
|
description: The metadata ID for the hubs to fetch
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/count'
|
|
- name: onlyTransient
|
|
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/responses-200'
|
|
'400':
|
|
description: No metadata with that id or permission is denied
|
|
content:
|
|
text/html: {}
|
|
/hubs/metadata/{metadataId}/related:
|
|
get:
|
|
summary: Get related hubs
|
|
operationId: getRelatedHubs
|
|
description: Get the hubs for a metadata related to the provided metadata item
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: metadataId
|
|
description: The metadata ID for the hubs to fetch
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/count'
|
|
- name: onlyTransient
|
|
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/responses-200'
|
|
'400':
|
|
description: No metadata with that id or permission is denied
|
|
content:
|
|
text/html: {}
|
|
/hubs/sections/{sectionId}:
|
|
get:
|
|
summary: Get section hubs
|
|
operationId: getSectionHubs
|
|
description: Get the hubs for a single section
|
|
tags:
|
|
- Hubs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to fetch
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/count'
|
|
- name: onlyTransient
|
|
description: Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'400':
|
|
description: No section with that id or permission is denied
|
|
content:
|
|
text/html: {}
|
|
/hubs/sections/{sectionId}/manage:
|
|
delete:
|
|
summary: Reset hubs to defaults
|
|
operationId: resetSectionDefaults
|
|
description: Reset hubs for this section to defaults and delete custom hubs
|
|
tags:
|
|
- Hubs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to reorder
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
description: Section id was not found
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Get hubs
|
|
operationId: listHubs
|
|
description: Get the list of hubs including both built-in and custom
|
|
tags:
|
|
- Hubs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to reorder
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: metadataItemId
|
|
description: Restrict hubs to ones relevant to the provided metadata item
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
properties:
|
|
homeVisibility:
|
|
description: |
|
|
Whether this hub is visible on the home screen
|
|
- all: Visible to all users
|
|
- none: Visible to no users
|
|
- admin: Visible to only admin users
|
|
- shared: Visible to shared users
|
|
enum:
|
|
- all
|
|
- none
|
|
- admin
|
|
- shared
|
|
type: string
|
|
identifier:
|
|
description: The identifier for this hub
|
|
type: string
|
|
promotedToOwnHome:
|
|
description: Whether this hub is visible to admin user home
|
|
type: boolean
|
|
promotedToRecommended:
|
|
description: Whether this hub is promoted to all for recommendations
|
|
type: boolean
|
|
promotedToSharedHome:
|
|
description: Whether this hub is visible to shared user's home
|
|
type: boolean
|
|
recommendationsVisibility:
|
|
description: |
|
|
The visibility of this hub in recommendations:
|
|
- all: Visible to all users
|
|
- none: Visible to no users
|
|
- admin: Visible to only admin users
|
|
- shared: Visible to shared users
|
|
enum:
|
|
- all
|
|
- none
|
|
- admin
|
|
- shared
|
|
type: string
|
|
title:
|
|
description: The title of this hub
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
description: Section id was not found
|
|
content:
|
|
text/html: {}
|
|
post:
|
|
summary: Create a custom hub
|
|
operationId: createCustomHub
|
|
description: Create a custom hub based on a metadata item
|
|
tags:
|
|
- Hubs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to reorder
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: metadataItemId
|
|
description: The metadata item on which to base this hub. This must currently be a collection
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: promotedToRecommended
|
|
description: Whether this hub should be displayed in recommended
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: promotedToOwnHome
|
|
description: Whether this hub should be displayed in admin's home
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: promotedToSharedHome
|
|
description: Whether this hub should be displayed in shared user's home
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: A hub could not be created with this metadata item
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
description: Section id or metadata item was not found
|
|
content:
|
|
text/html: {}
|
|
/hubs/sections/{sectionId}/manage/move:
|
|
put:
|
|
summary: Move Hub
|
|
operationId: moveHub
|
|
description: Changed the ordering of a hub among others hubs
|
|
tags:
|
|
- Hubs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to reorder
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: identifier
|
|
description: The identifier of the hub to move
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: after
|
|
description: The identifier of the hub to order this hub after (or empty/missing to put this hub first)
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/get-responses-200'
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
description: Section id was not found
|
|
content:
|
|
text/html: {}
|
|
/library/collections/{collectionId}/items:
|
|
get:
|
|
summary: Get items in a collection
|
|
operationId: getCollectionItems
|
|
description: Get items in a collection. Note if this collection contains more than 100 items, paging must be used.
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: collectionId
|
|
description: The collection id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'404':
|
|
description: Collection not found
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Add items to a collection
|
|
operationId: addCollectionItems
|
|
description: Add items to a collection by uri
|
|
tags:
|
|
- Library Collections
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: collectionId
|
|
description: The collection id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: uri
|
|
description: The URI describing the items to add to this collection
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'404':
|
|
description: Collection not found
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}:
|
|
delete:
|
|
summary: Delete a metadata item
|
|
operationId: deleteMetadataItem
|
|
description: Delete a single metadata item from the library, deleting media as well
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: proxy
|
|
description: Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Media items could not be deleted
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Get a metadata item
|
|
operationId: getMetadataItem
|
|
description: Get one or more metadata items.
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
- name: asyncCheckFiles
|
|
description: Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: asyncRefreshLocalMediaAgent
|
|
description: Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: asyncRefreshAnalysis
|
|
description: Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: checkFiles
|
|
description: Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: skipRefresh
|
|
description: Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: checkFileAvailability
|
|
description: Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: asyncAugmentMetadata
|
|
description: Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: augmentCount
|
|
description: Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
put:
|
|
summary: Edit a metadata item
|
|
operationId: editMetadataItem
|
|
description: Edit metadata items setting fields
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
- name: args
|
|
description: The new values for the metadata item
|
|
in: query
|
|
schema:
|
|
type: object
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Media items could not be deleted
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}/addetect:
|
|
put:
|
|
summary: Ad-detect an item
|
|
operationId: detectAds
|
|
description: Start the detection of ads in a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/allLeaves:
|
|
get:
|
|
summary: Get the leaves of an item
|
|
operationId: getAllItemLeaves
|
|
description: Get the leaves for a metadata item such as the episodes in a show
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/metadata/{ids}/analyze:
|
|
put:
|
|
summary: Analyze an item
|
|
operationId: analyzeMetadata
|
|
description: Start the analysis of a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: thumbOffset
|
|
description: Set the offset to be used for thumbnails
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
- name: artOffset
|
|
description: Set the offset to be used for artwork
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/chapterThumbs:
|
|
put:
|
|
summary: Generate thumbs of chapters for an item
|
|
operationId: generateThumbs
|
|
description: Start the chapter thumb generation for an item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: force
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/credits:
|
|
put:
|
|
summary: Credit detect a metadata item
|
|
operationId: detectCredits
|
|
description: Start credit detection on a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: force
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: manual
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/extras:
|
|
get:
|
|
summary: Get an item's extras
|
|
operationId: getExtras
|
|
description: Get the extras for a metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
post:
|
|
summary: Add to an item's extras
|
|
operationId: addExtras
|
|
description: Add an extra to a metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: extraType
|
|
description: The metadata type of the extra
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: url
|
|
description: The URL of the extra
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/title'
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'404':
|
|
description: Either the metadata item is not present or the extra could not be added
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}/file:
|
|
get:
|
|
summary: Get a file from a metadata or media bundle
|
|
operationId: getFile
|
|
description: Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme)
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: url
|
|
description: The bundle url, typically starting with `metadata://` or `media://`
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
audio/mpeg3:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
image/jpeg:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
/library/metadata/{ids}/index:
|
|
put:
|
|
summary: Start BIF generation of an item
|
|
operationId: startBifGeneration
|
|
description: Start the indexing (BIF generation) of an item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: force
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/intro:
|
|
put:
|
|
summary: Intro detect an item
|
|
operationId: detectIntros
|
|
description: Start the detection of intros in a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: force
|
|
description: Indicate whether detection should be re-run
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: threshold
|
|
description: The threshold for determining if content is an intro or not
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/marker:
|
|
post:
|
|
summary: Create a marker
|
|
operationId: createMarker
|
|
description: Create a marker for this user on the metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: type
|
|
description: The type of marker to edit/create
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: startTimeOffset
|
|
description: The start time of the marker
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: endTimeOffset
|
|
description: The end time of the marker
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: attributes
|
|
description: The attributes to assign to this marker
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
title: My favorite spot
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- additionalProperties: true
|
|
properties:
|
|
color:
|
|
type: string
|
|
endTimeOffset:
|
|
type: integer
|
|
id:
|
|
type: integer
|
|
startTimeOffset:
|
|
type: integer
|
|
title:
|
|
type: string
|
|
type:
|
|
enum:
|
|
- intro
|
|
- commercial
|
|
- bookmark
|
|
- resume
|
|
- credit
|
|
type: string
|
|
type: object
|
|
type: object
|
|
'400':
|
|
description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset`
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}/match:
|
|
put:
|
|
summary: Match a metadata item
|
|
operationId: matchItem
|
|
description: Match a metadata item to a guid
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: guid
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: name
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: year
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/matches:
|
|
put:
|
|
summary: Get metadata matches for an item
|
|
operationId: listMatches
|
|
description: Get the list of metadata matches for a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: title
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: parentTitle
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: agent
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: language
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: year
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
- name: manual
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/metadata/{ids}/merge:
|
|
put:
|
|
summary: Merge a metadata item
|
|
operationId: mergeItems
|
|
description: Merge a metadata item with other items
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: ids
|
|
in: query
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/nearest:
|
|
get:
|
|
summary: Get nearest tracks to metadata item
|
|
operationId: listSonicallySimilar
|
|
description: Get the nearest tracks, sonically, to the provided track
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: excludeParentID
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
- name: excludeGrandparentID
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
- name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
- name: maxDistance
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/metadata/{ids}/prefs:
|
|
put:
|
|
summary: Set metadata preferences
|
|
operationId: setItemPreferences
|
|
description: Set the preferences on a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: args
|
|
in: query
|
|
schema:
|
|
type: object
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/refresh:
|
|
put:
|
|
summary: Refresh a metadata item
|
|
operationId: refreshItemsMetadata
|
|
description: Refresh a metadata item from the agent
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: agent
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: markUpdated
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/related:
|
|
get:
|
|
summary: Get related items
|
|
operationId: getRelatedItems
|
|
description: Get a hub of related items to a metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/library/metadata/{ids}/similar:
|
|
get:
|
|
summary: Get similar items
|
|
operationId: listSimilar
|
|
description: Get a list of similar items to a metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/count'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/metadata/{ids}/split:
|
|
put:
|
|
summary: Split a metadata item
|
|
operationId: splitItem
|
|
description: Split a metadata item into multiple items
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/subtitles:
|
|
get:
|
|
summary: Add subtitles
|
|
operationId: addSubtitles
|
|
description: Add a subtitle to a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: title
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: language
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: mediaItemID
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
- name: url
|
|
description: The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: format
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: forced
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: hearingImpaired
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/tree:
|
|
get:
|
|
summary: Get metadata items as a tree
|
|
operationId: getItemTree
|
|
description: Get a tree of metadata items, such as the seasons/episodes of a show
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithNestedMetadata'
|
|
/library/metadata/{ids}/unmatch:
|
|
put:
|
|
summary: Unmatch a metadata item
|
|
operationId: unmatch
|
|
description: Unmatch a metadata item to info fetched from the agent
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/users/top:
|
|
get:
|
|
summary: Get metadata top users
|
|
operationId: listTopUsers
|
|
description: Get the list of users which have played this item starting with the most
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Account:
|
|
items:
|
|
properties:
|
|
globalViewCount:
|
|
type: integer
|
|
id:
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/library/metadata/{ids}/voiceActivity:
|
|
put:
|
|
summary: Detect voice activity
|
|
operationId: detectVoiceActivity
|
|
description: Start the detection of voice in a metadata item
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: force
|
|
description: Indicate whether detection should be re-run
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: manual
|
|
description: Indicate whether detection is manually run
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/augmentations/{augmentationId}:
|
|
get:
|
|
summary: Get augmentation status
|
|
operationId: getAugmentationStatus
|
|
description: Get augmentation status and potentially wait for completion
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: augmentationId
|
|
description: The id of the augmentation
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: wait
|
|
description: Wait for augmentation completion before returning
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'204':
|
|
$ref: '#/components/responses/204'
|
|
'401':
|
|
description: This augmentation is not owned by the requesting user
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: No augmentation found
|
|
content:
|
|
text/html: {}
|
|
/library/parts/{partId}:
|
|
put:
|
|
summary: Set stream selection
|
|
operationId: setStreamSelection
|
|
description: Set which streams (audio/subtitle) are selected by this user
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: partId
|
|
description: The id of the part to select streams on
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: audioStreamID
|
|
description: The id of the audio stream to select in this part
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: subtitleStreamID
|
|
description: The id of the subtitle stream to select in this part. Specify 0 to select no subtitle
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: allParts
|
|
description: Perform the same for all parts of this media selecting similar streams in each
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: One of the audio or subtitle streams does not belong to this part
|
|
content:
|
|
text/html: {}
|
|
/library/people/{personId}:
|
|
get:
|
|
summary: Get person details
|
|
operationId: getPerson
|
|
description: Get details for a single actor.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: personId
|
|
description: Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/library/people/{personId}/media:
|
|
get:
|
|
summary: Get media for a person
|
|
operationId: listPersonMedia
|
|
description: Get all the media for a single actor.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: personId
|
|
description: Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/library/sections/{sectionId}:
|
|
delete:
|
|
summary: Delete a library section
|
|
operationId: deleteLibrarySection
|
|
description: Delete a library section by id
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: async
|
|
description: If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
get:
|
|
summary: Get a library section by id
|
|
operationId: getLibraryDetails
|
|
description: 'Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system.'
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: includeDetails
|
|
description: Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
properties:
|
|
content:
|
|
description: |-
|
|
The flavors of directory found here:
|
|
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
|
|
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
|
|
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly.
|
|
type: string
|
|
allowSync:
|
|
type: boolean
|
|
art:
|
|
type: string
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/Metadata'
|
|
type: array
|
|
identifier:
|
|
type: string
|
|
librarySectionID:
|
|
type: integer
|
|
mediaTagPrefix:
|
|
type: string
|
|
mediaTagVersion:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
sortAsc:
|
|
type: boolean
|
|
thumb:
|
|
type: string
|
|
title1:
|
|
type: string
|
|
viewGroup:
|
|
type: string
|
|
viewMode:
|
|
type: integer
|
|
type: object
|
|
put:
|
|
summary: Edit a library section
|
|
operationId: editSection
|
|
description: Edit a library section by id setting parameters
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: name
|
|
description: The name of the new section
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: scanner
|
|
description: The scanner this section should use
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: agent
|
|
description: The agent this section should use for metadata
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: metadataAgentProviderGroupId
|
|
description: The agent group id for this section
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: language
|
|
description: The language of this section
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: locations
|
|
description: The locations on disk to add to this section
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example:
|
|
- O:\fatboy\Media\Ripped\Music
|
|
- O:\fatboy\Media\My Music
|
|
- name: prefs
|
|
description: The preferences for this section
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
collectionMode: 2
|
|
hidden: 0
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Section cannot be created due to bad parameters in request
|
|
content:
|
|
text/html: {}
|
|
/library/sections/{sectionId}/albums:
|
|
get:
|
|
summary: Set section albums
|
|
operationId: getAlbums
|
|
description: Get all albums in a music section
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
example:
|
|
MediaContainer:
|
|
content: secondary
|
|
allowSync: false
|
|
art: /:/resources/artist-fanart.jpg
|
|
identifier: com.plexapp.plugins.library
|
|
mediaTagPrefix: /system/bundle/media/flags/
|
|
mediaTagVersion: 1680272530
|
|
Metadata:
|
|
- addedAt: 1681152176
|
|
allowSync: true
|
|
art: /library/metadata/251/art/1716801576
|
|
deletedAt: 1682628386
|
|
Genre:
|
|
- tag: Comedy/Spoken
|
|
guid: plex://album/5d07c894403c640290c0e196
|
|
index: 1
|
|
key: /library/metadata/265/children
|
|
leafCount: 12
|
|
librarySectionID: 3
|
|
librarySectionTitle: Music
|
|
librarySectionUUID: d7fd8c81-a345-4e68-8113-92f23cb47e70
|
|
loudnessAnalysisVersion: '2'
|
|
originallyAvailableAt: '2014-07-15'
|
|
parentGuid: plex://artist/5d07bbfc403c6402904a60e7
|
|
parentKey: /library/metadata/251
|
|
parentRatingKey: '251'
|
|
parentThumb: /library/metadata/251/thumb/1716801576
|
|
parentTitle: “Weird Al” Yankovic
|
|
rating: 8
|
|
ratingKey: '265'
|
|
studio: RCA
|
|
summary: Already accepted as a bona fide talent in the world of parody -- his musicianship, comedic timing, his pop-culture reference awareness, and his great wordplay are all well-documented -- the only thing that matters when it comes to "Weird Al" Yankovic albums is how inspired the king of novelty songs sounds on any given LP. On his 14th studio album, Mandatory Fun, the inspiration meter goes well into the red, something heard instantly as Iggy Azalea's electro-rap "Fancy" does a complete 180 thematically on the opening "Handy," the song now heading toward the local home improvement store where the craftsmen vogue in their orange vests and blow sweet come-ons like "I'll bring you up to code" and "My socket wrenches are second to none." Pharrell's "Happy" becomes "Tacky" and Al's amazing ability to follow an everyday poke ("Wear my Ed Hardy shirt with fluorescent orange pants") with something brainy and reserved ("Got my new résumé, it's printed in Comic Sans") surprises once more, but for end-to-end "wows," it's his brilliant redo of Robin Thicke's "Blurred Lines," now the smug and twerking "Word Crimes," which gives copy editors, English professors, and grammar nerds a reason to hit the dancefloor ("And listen up when I tell you this/I hope you never use quotation marks for emphasis!"). Hardcore and hilarious musical moments start to happen when Imagine Dragons' "Radioactive" becomes "Inactive," a singalong anthem for the sluggish and the slovenly ("Near comatose, no exercise/Don't tag my toe, I'm still alive") with a dubstep-rock bassline that sounds like Galactus burping. Better still is the every-Al-album pop-polka medley, this time called "Now That's What I Call Polka!" which polkas-up Daft Punk ("Get Lucky"), PSY ("Gangnam Style"), and Miley Cyrus ("Wrecking Ball"), and with more Spike Jones-styled sound effects than usual. As for the originals this time out, the "you suck!"-minded "Sports Song" will be unavoidable under Friday night lights once a teen gets hold of it, while the ranting and wonderfully weird "First World Problems" sounds more like the Pixies than anything the Pixies did in 2014. Wonders never cease on Mandatory Fun, and neither do the laughs. ~ David Jeffries
|
|
thumb: /library/metadata/265/thumb/1715112705
|
|
title: Mandatory Fun
|
|
type: album
|
|
updatedAt: 1715112705
|
|
year: 2014
|
|
mixedParents: true
|
|
nocache: true
|
|
size: 12
|
|
thumb: /:/resources/artist.png
|
|
title1: Music
|
|
title2: By Album
|
|
viewGroup: album
|
|
/library/sections/{sectionId}/all:
|
|
get:
|
|
summary: Get items in the section
|
|
operationId: listContent
|
|
description: Get the items in a section, potentially filtering them
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
- name: sectionId
|
|
description: The id of the section
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
put:
|
|
summary: Set the fields of the filtered items
|
|
operationId: updateItems
|
|
description: |-
|
|
This endpoint takes an large possible set of values. Here are some examples.
|
|
- **Parameters, extra documentation**
|
|
- artist.title.value
|
|
- When used with track, both artist.title.value and album.title.value need to be specified
|
|
- title.value usage
|
|
- Summary
|
|
- Tracks always rename and never merge
|
|
- Albums and Artists
|
|
- if single item and item without title does not exist, it is renamed.
|
|
- if single item and item with title does exist they are merged.
|
|
- if multiple they are always merged.
|
|
- Tracks
|
|
- Works as expected will update the track's title
|
|
- Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName`
|
|
- Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName`
|
|
- All tracks: `/library/sections/{id}/all?type=10&title.value=NewName`
|
|
- Albums
|
|
- Functionality changes depending on the existence of an album with the same title
|
|
- Album exists
|
|
- Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2`
|
|
- Album with id 42 is merged into album titled "Album 2"
|
|
- Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album`
|
|
- All albums are merged into the existing album titled "Moo Album"
|
|
- Album does not exist
|
|
- Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle`
|
|
- Album with id 42 has title modified to "NewAlbumTitle"
|
|
- Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle`
|
|
- All albums are merged into a new album with title="NewAlbumTitle"
|
|
- Artists
|
|
- Functionaly changes depending on the existence of an artist with the same title.
|
|
- Artist exists
|
|
- Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2`
|
|
- Artist with id 42 is merged into existing artist titled "Artist 2"
|
|
- Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3`
|
|
- All artists are merged into the existing artist titled "Artist 3"
|
|
- Artist does not exist
|
|
- Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle`
|
|
- Artist with id 42 has title modified to "NewArtistTitle"
|
|
- Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle`
|
|
- All artists are merged into a new artist with title="NewArtistTitle"
|
|
|
|
- **Notes**
|
|
- Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address
|
|
- RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax.
|
|
- Escaped square brackets are allowed, but don't render well
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The id of the section
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: type
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: filters
|
|
description: The filters to apply to determine which items should be modified
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: field.value
|
|
description: Set the specified field to a new value
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: field.locked
|
|
description: Set the specified field to locked (or unlocked if set to 0)
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: title.value
|
|
description: This field is treated specially by albums or artists and may be used for implicit reparenting.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: artist.title.value
|
|
description: Reparents set of Tracks or Albums - used with album.title.* in the case of tracks
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: artist.title.id
|
|
description: Reparents set of Tracks or Albums - used with album.title.* in the case of tracks
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: album.title.value
|
|
description: Reparents set of Tracks - Must be used in conjunction with artist.title.value or id
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: album.title.id
|
|
description: Reparents set of Tracks - Must be used in conjunction with artist.title.value or id
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: tagtype[idx].tag.tag
|
|
description: Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: tagtype[idx].tagging.object
|
|
description: Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: tagtype[].tag.tag-
|
|
description: Remove comma separated tags from the set of items
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: tagtype[].tag
|
|
description: Remove associations of this type (e.g. genre) from the set of items
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: The set of parameters are inconsistent or invalid values
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: A required item could not be found
|
|
content:
|
|
text/html: {}
|
|
'409':
|
|
description: Rename of a collection to a name that's already taken
|
|
content:
|
|
text/html: {}
|
|
/library/sections/{sectionId}/allLeaves:
|
|
get:
|
|
summary: Set section leaves
|
|
operationId: getAllLeaves
|
|
description: Get all leaves in a section (such as episodes in a show section)
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
example:
|
|
MediaContainer:
|
|
content: secondary
|
|
allowSync: false
|
|
art: /:/resources/show-fanart.jpg
|
|
identifier: com.plexapp.plugins.library
|
|
mediaTagPrefix: /system/bundle/media/flags/
|
|
mediaTagVersion: 1680272530
|
|
Metadata:
|
|
- addedAt: 1348327790
|
|
art: /library/metadata/148/art/1715112830
|
|
audienceRating: 7.7
|
|
audienceRatingImage: themoviedb://image.rating
|
|
chapterSource: media
|
|
contentRating: TV-PG
|
|
Director:
|
|
- tag: Stephen Furst
|
|
duration: 2625089
|
|
grandparentArt: /library/metadata/148/art/1715112830
|
|
grandparentGuid: plex://show/5d9c087202391c001f58a287
|
|
grandparentKey: /library/metadata/148
|
|
grandparentRatingKey: '148'
|
|
grandparentSlug: babylon-5
|
|
grandparentTheme: /library/metadata/148/theme/1715112830
|
|
grandparentThumb: /library/metadata/148/thumb/1715112830
|
|
grandparentTitle: Babylon 5
|
|
guid: plex://episode/5d9c1359e264b7001fcb529c
|
|
index: 8
|
|
key: /library/metadata/150
|
|
lastViewedAt: 1612468663
|
|
Media:
|
|
- aspectRatio: 1.78
|
|
audioChannels: 6
|
|
audioCodec: ac3
|
|
bitrate: 5741
|
|
container: mkv
|
|
duration: 2625089
|
|
height: 480
|
|
id: 376
|
|
Part:
|
|
- container: mkv
|
|
duration: 2625089
|
|
file: /Volumes/Media/TV Shows/Babylon 5/Season 4/Babylon 5 S04E08 The Illusion of Truth.mkv
|
|
id: 872
|
|
key: /library/parts/872/1348327790/file.mkv
|
|
size: 1883816967
|
|
videoProfile: main
|
|
videoCodec: mpeg2video
|
|
videoFrameRate: NTSC
|
|
videoProfile: main
|
|
videoResolution: '480'
|
|
width: 720
|
|
originallyAvailableAt: '1997-02-17'
|
|
parentGuid: plex://season/602e691b66dfdb002c0a5034
|
|
parentIndex: 4
|
|
parentKey: /library/metadata/149
|
|
parentRatingKey: '149'
|
|
parentThumb: /library/metadata/149/thumb/1681152133
|
|
parentTitle: Season 4
|
|
ratingKey: '150'
|
|
Role:
|
|
- tag: Hank Delgado
|
|
- tag: Diana Morgan
|
|
- tag: Jeff Griggs
|
|
summary: A team of ISN reporters arrives at the station wanting to do a story about Babylon 5. Sheridan refuses at first, but finally agrees on the theory that at least a small part of their side of the conflict will be shown.
|
|
thumb: /library/metadata/150/thumb/1681283788
|
|
title: The Illusion of Truth
|
|
titleSort: Illusion of Truth
|
|
type: episode
|
|
updatedAt: 1681283788
|
|
viewCount: 1
|
|
Writer:
|
|
- tag: J. Michael Straczynski
|
|
year: 1997
|
|
nocache: true
|
|
size: 41
|
|
thumb: /:/resources/show.png
|
|
title1: TV Shows
|
|
viewGroup: show
|
|
/library/sections/{sectionId}/analyze:
|
|
put:
|
|
summary: Analyze a section
|
|
operationId: startAnalysis
|
|
description: Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/sections/{sectionId}/arts:
|
|
get:
|
|
summary: Set section artwork
|
|
operationId: getArts
|
|
description: Get artwork for a library section
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithArtwork'
|
|
/library/sections/{sectionId}/autocomplete:
|
|
get:
|
|
summary: Get autocompletions for search
|
|
operationId: autocomplete
|
|
description: |-
|
|
The field to autocomplete on is specified by the `{field}.query` parameter. For example `genre.query` or `title.query`.
|
|
Returns a set of items from the filtered items whose `{field}` starts with `{field}.query`. In the results, a `{field}.queryRange` will be present to express the range of the match
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: type
|
|
description: Item type
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: field.query
|
|
description: The "field" stands in for any field, the value is a partial string for matching
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'400':
|
|
description: A paramater is either invalid or missing
|
|
content:
|
|
text/html: {}
|
|
/library/sections/{sectionId}/categories:
|
|
get:
|
|
summary: Set section categories
|
|
operationId: getCategories
|
|
description: Get categories in a library section
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithArtwork'
|
|
/library/sections/{sectionId}/cluster:
|
|
get:
|
|
summary: Set section clusters
|
|
operationId: getCluster
|
|
description: Get clusters in a library section (typically for photos)
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithArtwork'
|
|
/library/sections/{sectionId}/collections:
|
|
get:
|
|
summary: Get collections in a section
|
|
operationId: getCollections
|
|
description: Get all collections in a section
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/sections/{sectionId}/common:
|
|
get:
|
|
summary: Get common fields for items
|
|
operationId: getCommon
|
|
description: |-
|
|
Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter
|
|
Fields which are not common will be expressed in the `mixedFields` field
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: type
|
|
description: Item type
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/library/sections/{sectionId}/computePath:
|
|
get:
|
|
summary: Similar tracks to transition from one to another
|
|
operationId: getSonicPath
|
|
description: Get a list of audio tracks starting at one and ending at another which are similar across the path
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: startID
|
|
description: The starting metadata item id
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: endID
|
|
description: The ending metadata item id
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/count'
|
|
- name: maxDistance
|
|
description: The maximum distance allowed along the path; defaults to 0.25
|
|
in: query
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/sections/{sectionId}/emptyTrash:
|
|
put:
|
|
summary: Empty section trash
|
|
operationId: emptyTrash
|
|
description: Empty trash in the section, permanently deleting media/metadata for missing media
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/sections/{sectionId}/filters:
|
|
get:
|
|
summary: Get section filters
|
|
operationId: getSectionFilters
|
|
description: Get common filters on a section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: The filters on the section
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/Directory'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/library/sections/{sectionId}/firstCharacters:
|
|
get:
|
|
summary: Get list of first characters
|
|
operationId: getFirstCharacters
|
|
description: Get list of first characters in this section
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: type
|
|
description: The metadata type to filter on
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: sort
|
|
description: The metadata type to filter on
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
properties:
|
|
key:
|
|
type: string
|
|
size:
|
|
description: The number of items starting with this character
|
|
type: integer
|
|
title:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/library/sections/{sectionId}/indexes:
|
|
delete:
|
|
summary: Delete section indexes
|
|
operationId: deleteIndexes
|
|
description: Delete all the indexes in a section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/sections/{sectionId}/intros:
|
|
delete:
|
|
summary: Delete section intro markers
|
|
operationId: deleteIntros
|
|
description: Delete all the intro markers in a section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/sections/{sectionId}/location:
|
|
get:
|
|
summary: Get all folder locations
|
|
operationId: getFolders
|
|
description: Get all folder locations of the media in a section
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
properties:
|
|
fastKey:
|
|
type: string
|
|
key:
|
|
type: string
|
|
title:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/library/sections/{sectionId}/moment:
|
|
get:
|
|
summary: Set section moments
|
|
operationId: listMoments
|
|
description: Get moments in a library section (typically for photos)
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithArtwork'
|
|
/library/sections/{sectionId}/nearest:
|
|
get:
|
|
summary: The nearest audio tracks
|
|
operationId: getSonicallySimilar
|
|
description: Get the nearest audio tracks to a particular analysis
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: type
|
|
description: The metadata type to fetch (should be 10 for audio track)
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: values
|
|
description: The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track
|
|
in: query
|
|
required: true
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
maximum: 50
|
|
minimum: 50
|
|
type: integer
|
|
- name: limit
|
|
description: The limit of the number of items to fetch; defaults to 50
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: maxDistance
|
|
description: The maximum distance to search, defaults to 0.25
|
|
in: query
|
|
schema:
|
|
type: number
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/library/sections/{sectionId}/prefs:
|
|
get:
|
|
summary: Get section prefs
|
|
operationId: getSectionPreferences
|
|
description: Get the prefs for a section by id and potentially overriding the agent
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: agent
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSettings'
|
|
put:
|
|
summary: Set section prefs
|
|
operationId: setSectionPreferences
|
|
description: Set the prefs for a section by id
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: prefs
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: object
|
|
example:
|
|
enableCinemaTrailers: 1
|
|
hidden: 0
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/sections/{sectionId}/refresh:
|
|
delete:
|
|
summary: Cancel section refresh
|
|
operationId: cancelRefresh
|
|
description: Cancel the refresh of a section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
post:
|
|
summary: Refresh section
|
|
operationId: refreshSection
|
|
description: Start a refresh of this section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: force
|
|
description: Whether the update of metadata and items should be performed even if modification dates indicate the items have not change
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: path
|
|
description: Restrict refresh to the specified path
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/sections/{sectionId}/sorts:
|
|
get:
|
|
summary: Get a section sorts
|
|
operationId: getAvailableSorts
|
|
description: Get the sort mechanisms available in a section
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/Sort'
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/library/streams/{streamId}/levels:
|
|
get:
|
|
summary: Get loudness about a stream in json
|
|
operationId: getStreamLevels
|
|
description: The the loudness of a stream in db, one entry per 100ms
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: streamId
|
|
description: The id of the stream
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: subsample
|
|
description: Subsample result down to return only the provided number of samples
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Level:
|
|
items:
|
|
properties:
|
|
v:
|
|
description: The level in db.
|
|
type: number
|
|
type: object
|
|
type: array
|
|
totalSamples:
|
|
description: The total number of samples (as a string)
|
|
type: string
|
|
type: object
|
|
type: object
|
|
'403':
|
|
$ref: '#/components/responses/responses-403'
|
|
'404':
|
|
$ref: '#/components/responses/responses-404'
|
|
/library/streams/{streamId}/loudness:
|
|
get:
|
|
summary: Get loudness about a stream
|
|
operationId: getStreamLoudness
|
|
description: The the loudness of a stream in db, one number per line, one entry per 100ms
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: streamId
|
|
description: The id of the stream
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: subsample
|
|
description: Subsample result down to return only the provided number of samples
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: The media is not accessible to the user
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: The stream doesn't exist, or the loudness feature is not available on this PMS
|
|
content:
|
|
text/html: {}
|
|
/livetv/dvrs/{dvrId}:
|
|
delete:
|
|
summary: Delete a single DVR
|
|
operationId: deleteDVR
|
|
description: Delete a single DVR by its id (key)
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
get:
|
|
summary: Get a single DVR
|
|
operationId: getDVR
|
|
description: Get a single DVR by its id (key)
|
|
tags:
|
|
- DVRs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/dvrs/{dvrId}/lineups:
|
|
delete:
|
|
summary: Delete a DVR Lineup
|
|
operationId: deleteLineup
|
|
description: Deletes a DVR device's lineup.
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: lineup
|
|
description: The lineup to delete
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
put:
|
|
summary: Add a DVR Lineup
|
|
operationId: addLineup
|
|
description: Add a lineup to a DVR device's set of lineups.
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: lineup
|
|
description: The lineup to delete
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/dvrs/{dvrId}/prefs:
|
|
put:
|
|
summary: Set DVR preferences
|
|
operationId: setDVRPreferences
|
|
description: Set DVR preferences by name avd value
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: name
|
|
description: Set the `name` preference to the provided value
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/dvrs/{dvrId}/reloadGuide:
|
|
delete:
|
|
summary: Tell a DVR to stop reloading program guide
|
|
operationId: stopDVRReload
|
|
description: Tell a DVR to stop reloading program guide
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
post:
|
|
summary: Tell a DVR to reload program guide
|
|
operationId: reloadGuide
|
|
description: Tell a DVR to reload program guide
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Activity:
|
|
description: The activity of the reload process
|
|
schema:
|
|
type: string
|
|
content:
|
|
text/html: {}
|
|
/livetv/sessions/{sessionId}:
|
|
get:
|
|
summary: Get a single session
|
|
operationId: getLiveTVSession
|
|
description: Get a single livetv session and metadata
|
|
tags:
|
|
- Live TV
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sessionId
|
|
description: The session id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
/media/grabbers/devices/{deviceId}:
|
|
delete:
|
|
summary: Remove a device
|
|
operationId: removeDevice
|
|
description: Remove a devices by its id along with its channel mappings
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
message:
|
|
type: string
|
|
status:
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: Device not found
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Get device details
|
|
operationId: getDeviceDetails
|
|
description: Get a device's details by its id
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
'404':
|
|
description: Device not found
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Enable or disable a device
|
|
operationId: modifyDevice
|
|
description: Enable or disable a device by its id
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: enabled
|
|
description: Whether to enable the device
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
message:
|
|
type: string
|
|
status:
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: Device not found
|
|
content:
|
|
text/html: {}
|
|
/media/grabbers/devices/{deviceId}/channelmap:
|
|
put:
|
|
summary: Set a device's channel mapping
|
|
operationId: setChannelmap
|
|
description: Set a device's channel mapping
|
|
tags:
|
|
- Devices
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: channelMapping
|
|
description: The mapping of changes, passed as a map of device channel to lineup VCN.
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
'46.3': 2
|
|
'48.9': 4
|
|
- name: channelMappingByKey
|
|
description: The mapping of changes, passed as a map of device channel to lineup key.
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
'46.3': 5cc83d73af4a72001e9b16d7-5cab3c634df507001fefcad0
|
|
'48.9': 5cc83d73af4a72001e9b16d7-5cab3c63ec158a001d32db8d
|
|
- name: channelsEnabled
|
|
description: The channels which are enabled.
|
|
in: query
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: 46.1,44.1,45.1
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
/media/grabbers/devices/{deviceId}/channels:
|
|
get:
|
|
summary: Get a device's channels
|
|
operationId: getDevicesChannels
|
|
description: Get a device's channels by its id
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
DeviceChannel:
|
|
items:
|
|
properties:
|
|
drm:
|
|
description: Indicates the channel is DRMed and thus may not be playable
|
|
type: boolean
|
|
favorite:
|
|
type: boolean
|
|
hd:
|
|
type: boolean
|
|
identifier:
|
|
type: string
|
|
key:
|
|
type: string
|
|
name:
|
|
type: string
|
|
signalQuality:
|
|
type: integer
|
|
signalStrength:
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: Device not found
|
|
content:
|
|
text/html: {}
|
|
/media/grabbers/devices/{deviceId}/prefs:
|
|
put:
|
|
summary: Set device preferences
|
|
operationId: setDevicePreferences
|
|
description: Set device preferences by its id
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: name
|
|
description: The preference names and values.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/media/grabbers/devices/{deviceId}/scan:
|
|
delete:
|
|
summary: Tell a device to stop scanning for channels
|
|
operationId: stopScan
|
|
description: Tell a device to stop scanning for channels
|
|
tags:
|
|
- Devices
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
post:
|
|
summary: Tell a device to scan for channels
|
|
operationId: scan
|
|
description: Tell a device to scan for channels
|
|
tags:
|
|
- Devices
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: source
|
|
description: A valid source for the scan
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: Cable
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Activity:
|
|
description: The activity of the reload process
|
|
schema:
|
|
type: string
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDevice'
|
|
/media/grabbers/operations/{operationId}:
|
|
delete:
|
|
summary: Cancel an existing grab
|
|
operationId: cancelGrab
|
|
description: |-
|
|
Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription.
|
|
Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself.
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: operationId
|
|
description: The ID of the operation.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'403':
|
|
description: User is not owner of the grab and not the admin
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/media/providers/{provider}:
|
|
delete:
|
|
summary: Delete a media provider
|
|
operationId: deleteMediaProvider
|
|
description: Deletes a media provider with the given id
|
|
tags:
|
|
- Provider
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: provider
|
|
description: The ID of the media provider to delete
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
description: Cannot delete a provider which is a child of another provider
|
|
content:
|
|
text/html: {}
|
|
/media/subscriptions/{subscriptionId}:
|
|
delete:
|
|
summary: Delete a subscription
|
|
operationId: deleteSubscription
|
|
description: Delete a subscription, cancelling all of its grabs as well
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: subscriptionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
description: User cannot access DVR on this server or cannot access this subscription
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
get:
|
|
summary: Get a single subscription
|
|
operationId: getSubscription
|
|
description: Get a single subscription and potentially the grabs too
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: subscriptionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: includeGrabs
|
|
description: Indicates whether the active grabs should be included as well
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: includeStorage
|
|
description: Compute the storage of recorded items desired by this subscription
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSubscription'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
description: User cannot access DVR on this server or cannot access this subscription
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
put:
|
|
summary: Edit a subscription
|
|
operationId: editSubscriptionPreferences
|
|
description: Edit a subscription's preferences
|
|
tags:
|
|
- Subscriptions
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: subscriptionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: prefs
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
minVideoQuality: 720
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSubscription'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
description: User cannot access DVR on this server or cannot access this subscription
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/media/subscriptions/{subscriptionId}/move:
|
|
put:
|
|
summary: Re-order a subscription
|
|
operationId: reorderSubscription
|
|
description: Re-order a subscription to change its priority
|
|
tags:
|
|
- Subscriptions
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: subscriptionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: after
|
|
description: The subscription to move this sub after. If missing will insert at the beginning of the list
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithSubscription'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
description: User cannot access DVR on this server or cannot access this subscription
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/playlists/{playlistId}:
|
|
delete:
|
|
summary: Delete a Playlist
|
|
operationId: deletePlaylist
|
|
description: Deletes a playlist by provided id
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'204':
|
|
$ref: '#/components/responses/204'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Retrieve Playlist
|
|
operationId: getPlaylist
|
|
description: |-
|
|
Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item:
|
|
Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing.
|
|
tags:
|
|
- Playlist
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithPlaylistMetadata'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Editing a Playlist
|
|
operationId: updatePlaylist
|
|
description: Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem)
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'204':
|
|
$ref: '#/components/responses/204'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
/playlists/{playlistId}/generators:
|
|
get:
|
|
summary: Get a playlist's generators
|
|
operationId: getPlaylistGenerators
|
|
description: Get all the generators in a playlist
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
PlayQueueGenerator:
|
|
items:
|
|
properties:
|
|
changedAt:
|
|
type: integer
|
|
createdAt:
|
|
type: integer
|
|
id:
|
|
type: integer
|
|
playlistID:
|
|
type: integer
|
|
type:
|
|
description: |
|
|
The type of playlist generator.
|
|
|
|
- -1: A smart playlist generator
|
|
- 42: A optimized version generator
|
|
enum:
|
|
- -1
|
|
- 42
|
|
type: integer
|
|
updatedAt:
|
|
type: integer
|
|
uri:
|
|
description: The URI indicating the search for this generator
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist) or generator not found
|
|
content:
|
|
text/html: {}
|
|
/playlists/{playlistId}/items:
|
|
delete:
|
|
summary: Clearing a playlist
|
|
operationId: clearPlaylistItems
|
|
description: Clears a playlist, only works with dumb playlists. Returns the playlist.
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Retrieve Playlist Contents
|
|
operationId: getPlaylistItems
|
|
description: Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items.
|
|
tags:
|
|
- Playlist
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: type
|
|
description: The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist.
|
|
in: query
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Adding to a Playlist
|
|
operationId: addPlaylistItems
|
|
description: Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist.
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: uri
|
|
description: The content URI for the playlist.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: playQueueID
|
|
description: The play queue to add to a playlist.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
/playQueues/{playQueueId}:
|
|
get:
|
|
summary: Retrieve a play queue
|
|
operationId: getPlayQueue
|
|
description: Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: own
|
|
description: If the server should transfer ownership to the requesting client (used in remote control scenarios).
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: center
|
|
description: The play queue item ID for the center of the window - this doesn't change the current selected item.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: window
|
|
description: How many items on each side of the center of the window
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: includeBefore
|
|
description: Whether to include the items before the center (if 0, center is not included either), defaults to 1.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: includeAfter
|
|
description: Whether to include the items after the center (if 0, center is not included either), defaults to 1.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue not found
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Add a generator or playlist to a play queue
|
|
operationId: addToPlayQueue
|
|
description: Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: uri
|
|
description: The content URI for what we're adding to the queue.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: playlistID
|
|
description: The ID of the playlist to add to the playQueue.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: next
|
|
description: Play this item next (defaults to 0 - queueing at the end of manually queued items).
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue not found
|
|
content:
|
|
text/html: {}
|
|
/playQueues/{playQueueId}/items:
|
|
delete:
|
|
summary: Clear a play queue
|
|
operationId: clearPlayQueue
|
|
description: Deletes all items in the play queue, and increases the version of the play queue.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithPlaylistMetadata'
|
|
/playQueues/{playQueueId}/reset:
|
|
put:
|
|
summary: Reset a play queue
|
|
operationId: resetPlayQueue
|
|
description: Reset a play queue to the first item being the current item
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue not found
|
|
content:
|
|
text/html: {}
|
|
/playQueues/{playQueueId}/shuffle:
|
|
put:
|
|
summary: Shuffle a play queue
|
|
operationId: shuffle
|
|
description: Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithPlaylistMetadata'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue not found or current item not found
|
|
content:
|
|
text/html: {}
|
|
/playQueues/{playQueueId}/unshuffle:
|
|
put:
|
|
summary: Unshuffle a play queue
|
|
operationId: unshuffle
|
|
description: Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue not found or current item not found
|
|
content:
|
|
text/html: {}
|
|
/status/sessions/history/{historyId}:
|
|
delete:
|
|
summary: Delete Single History Item
|
|
operationId: deleteHistory
|
|
description: Delete a single history item by id
|
|
tags:
|
|
- Status
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: historyId
|
|
description: The id of the history item (the `historyKey` from above)
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainer'
|
|
'404':
|
|
description: History item not found
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Get Single History Item
|
|
operationId: getHistoryItem
|
|
description: Get a single history item by id
|
|
tags:
|
|
- Status
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: historyId
|
|
description: The id of the history item (the `historyKey` from above)
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/historyAll-get-responses-200'
|
|
'404':
|
|
description: History item not found
|
|
content:
|
|
text/html: {}
|
|
/{transcodeType}/:/transcode/universal/start.{extension}:
|
|
get:
|
|
summary: Start A Transcoding Session
|
|
operationId: startTranscodeSession
|
|
x-speakeasy-usage-example: true
|
|
description: Starts the transcoder and returns the corresponding streaming resource document.
|
|
tags:
|
|
- Transcoder
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- $ref: '#/components/parameters/transcodeType'
|
|
- $ref: '#/components/parameters/transcodeSessionId'
|
|
- name: extension
|
|
description: "Extension \n"
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- m3u8
|
|
- mpd
|
|
- $ref: '#/components/parameters/advancedSubtitles'
|
|
- name: audioBoost
|
|
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
|
|
in: query
|
|
schema:
|
|
minimum: 1
|
|
type: integer
|
|
example: 50
|
|
- name: audioChannelCount
|
|
description: Target video number of audio channels.
|
|
in: query
|
|
schema:
|
|
maximum: 8
|
|
minimum: 1
|
|
type: integer
|
|
example: 5
|
|
- name: autoAdjustQuality
|
|
description: Indicates the client supports ABR.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: autoAdjustSubtitle
|
|
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directPlay
|
|
description: Indicates the client supports direct playing the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directStream
|
|
description: Indicates the client supports direct streaming the video of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: directStreamAudio
|
|
description: Indicates the client supports direct streaming the audio of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: disableResolutionRotation
|
|
description: Indicates if resolution should be adjusted for orientation.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: hasMDE
|
|
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
- name: location
|
|
description: Network type of the client, can be used to help determine target bitrate.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- lan
|
|
- wan
|
|
- cellular
|
|
example: wan
|
|
- name: mediaBufferSize
|
|
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 102400
|
|
- name: mediaIndex
|
|
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: musicBitrate
|
|
description: Target bitrate for audio only files (in kbps, used to transcode).
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 5000
|
|
- name: offset
|
|
description: Offset from the start of the media (in seconds).
|
|
in: query
|
|
schema:
|
|
type: number
|
|
example: 90.5
|
|
- name: partIndex
|
|
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
- name: path
|
|
description: Internal PMS path of the media to transcode.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /library/metadata/151671
|
|
- name: peakBitrate
|
|
description: Maximum bitrate (in kbps) to use in ABR.
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 12000
|
|
- name: photoResolution
|
|
description: Target photo resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
- name: protocol
|
|
description: |
|
|
Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- http
|
|
- hls
|
|
- dash
|
|
example: dash
|
|
- name: secondsPerSegment
|
|
description: Number of seconds to include in each transcoded segment
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 5
|
|
- name: subtitleSize
|
|
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
|
|
in: query
|
|
schema:
|
|
minimum: 1
|
|
type: integer
|
|
example: 50
|
|
- name: subtitles
|
|
description: |
|
|
Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- auto
|
|
- burn
|
|
- none
|
|
- sidecar
|
|
- embedded
|
|
- segmented
|
|
- unknown
|
|
example: Burn
|
|
- name: videoBitrate
|
|
description: Target video bitrate (in kbps).
|
|
in: query
|
|
schema:
|
|
minimum: 0
|
|
type: integer
|
|
example: 12000
|
|
- name: videoQuality
|
|
description: Target photo quality.
|
|
in: query
|
|
schema:
|
|
maximum: 99
|
|
minimum: 0
|
|
type: integer
|
|
example: 50
|
|
- name: videoResolution
|
|
description: Target maximum video resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
- name: X-Plex-Client-Identifier
|
|
description: Unique per client.
|
|
in: header
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: X-Plex-Client-Profile-Extra
|
|
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
|
|
- name: X-Plex-Client-Profile-Name
|
|
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: generic
|
|
- name: X-Plex-Device
|
|
description: Device the client is running on
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: Windows
|
|
- name: X-Plex-Model
|
|
description: Model of the device the client is running on
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: standalone
|
|
- name: X-Plex-Platform
|
|
description: Client Platform
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: Chrome
|
|
- name: X-Plex-Platform-Version
|
|
description: Client Platform Version
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: 135
|
|
- name: X-Plex-Session-Identifier
|
|
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
|
|
in: header
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream
|
|
content:
|
|
application/vnd.apple.mpegurl:
|
|
example: |
|
|
#EXTM3U
|
|
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3538000,RESOLUTION=1280x720,FRAME-RATE=60.000000
|
|
session/32635662-0d05-4acd-8f72-512cc64396d4/base/index.m3u8
|
|
text/html:
|
|
example: |
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xmlns="urn:mpeg:dash:schema:mpd:2011"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
|
|
profiles="urn:mpeg:dash:profile:isoff-live:2011"
|
|
type="static"
|
|
mediaPresentationDuration="PT0H10M34.5333S"
|
|
maxSegmentDuration="PT2S"
|
|
minBufferTime="PT10S">
|
|
<Period start="PT0S" id="0" duration="PT0H10M34.5333S">
|
|
<AdaptationSet segmentAlignment="true">
|
|
<SegmentTemplate timescale="1" duration="1" initialization="session/00lsab52ccmh9htfgwqz0o8k/$RepresentationID$/header" media="session/00lsab52ccmh9htfgwqz0o8k/$RepresentationID$/$Number$.m4s" startNumber="0">
|
|
</SegmentTemplate>
|
|
<Representation id="0" mimeType="video/mp4" codecs="avc1.640028" bandwidth="20000000" width="1920" height="1080">
|
|
</Representation>
|
|
</AdaptationSet>
|
|
<AdaptationSet segmentAlignment="true">
|
|
<SegmentTemplate timescale="1" duration="1" initialization="session/00lsab52ccmh9htfgwqz0o8k/$RepresentationID$/header" media="session/00lsab52ccmh9htfgwqz0o8k/$RepresentationID$/$Number$.m4s" startNumber="0">
|
|
</SegmentTemplate>
|
|
<Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" bandwidth="256000" audioSamplingRate="48000">
|
|
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
|
|
</Representation>
|
|
</AdaptationSet>
|
|
</Period>
|
|
</MPD>
|
|
video/x-matroska:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
$ref: '#/components/responses/404'
|
|
/downloadQueue/{queueId}/item/{itemId}/decision:
|
|
get:
|
|
summary: Grab download queue item decision
|
|
operationId: getItemDecision
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Grab the decision for a download queue item
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
example: 32
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithDecision'
|
|
'400':
|
|
description: The item is not in a state where a decision is available
|
|
content:
|
|
text/html: {}
|
|
/downloadQueue/{queueId}/item/{itemId}/media:
|
|
get:
|
|
summary: Grab download queue media
|
|
operationId: getDownloadQueueMedia
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Grab the media for a download queue item
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
example: 32
|
|
responses:
|
|
'200':
|
|
description: The raw media file
|
|
'503':
|
|
description: |
|
|

|
|
|
|
The queue item is not yet complete and is currently transcoding or waiting to transcode
|
|
headers:
|
|
Retry-After:
|
|
description: The estimated time before completion or -1 if unknown
|
|
schema:
|
|
type: integer
|
|
/downloadQueue/{queueId}/items/{itemId}:
|
|
delete:
|
|
summary: Delete download queue items
|
|
operationId: removeDownloadQueueItems
|
|
description: delete items from a download queue
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item id
|
|
in: path
|
|
required: true
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
example:
|
|
- 32
|
|
- 345
|
|
- 23
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
get:
|
|
summary: Get download queue items
|
|
operationId: getDownloadQueueItems
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Get items from a download queue
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item ids
|
|
in: path
|
|
required: true
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
example:
|
|
- 32
|
|
- 345
|
|
- 23
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
DownloadQueueItem:
|
|
items:
|
|
properties:
|
|
DecisionResult:
|
|
properties:
|
|
availableBandwidth:
|
|
description: The maximum bitrate set when item was added
|
|
type: integer
|
|
directPlayDecisionCode:
|
|
type: integer
|
|
directPlayDecisionText:
|
|
type: string
|
|
generalDecisionCode:
|
|
type: integer
|
|
generalDecisionText:
|
|
type: string
|
|
mdeDecisionCode:
|
|
description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1`
|
|
type: integer
|
|
mdeDecisionText:
|
|
description: Descriptive text for the above code
|
|
type: string
|
|
transcodeDecisionCode:
|
|
type: integer
|
|
transcodeDecisionText:
|
|
type: string
|
|
type: object
|
|
error:
|
|
description: The error encountered in transcoding or decision
|
|
type: string
|
|
id:
|
|
type: integer
|
|
key:
|
|
type: string
|
|
queueId:
|
|
type: integer
|
|
status:
|
|
description: |
|
|
The state of the item:
|
|
- deciding: The item decision is pending
|
|
- waiting: The item is waiting for transcode
|
|
- processing: The item is being transcoded
|
|
- available: The item is available for download
|
|
- error: The item encountered an error in the decision or transcode
|
|
- expired: The transcoded item has timed out and is no longer available
|
|
enum:
|
|
- deciding
|
|
- waiting
|
|
- processing
|
|
- available
|
|
- error
|
|
- expired
|
|
type: string
|
|
transcode:
|
|
description: The transcode session object which is not yet documented otherwise it'd be a $ref here.
|
|
type: object
|
|
TranscodeSession:
|
|
$ref: '#/components/schemas/TranscodeSession'
|
|
type: object
|
|
type: array
|
|
type: object
|
|
/downloadQueue/{queueId}/items/{itemId}/restart:
|
|
post:
|
|
summary: Restart processing of items from the decision
|
|
operationId: restartProcessingDownloadQueueItems
|
|
description: |
|
|
Available: 0.2.0
|
|
|
|
Reprocess download queue items with previous decision parameters
|
|
tags:
|
|
- Download Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: queueId
|
|
description: The queue id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item ids
|
|
in: path
|
|
required: true
|
|
explode: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
example:
|
|
- 32
|
|
- 345
|
|
- 23
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/hubs/sections/{sectionId}/manage/{identifier}:
|
|
delete:
|
|
summary: Delete a custom hub
|
|
operationId: deleteCustomHub
|
|
description: Delete a custom hub from the server
|
|
tags:
|
|
- Hubs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to change
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: identifier
|
|
description: The identifier of the hub to change
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: The hub is not a custom hub
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
description: The section or hub was not found
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Change hub visibility
|
|
operationId: updateHubVisibility
|
|
description: Changed the visibility of a hub for both the admin and shared users
|
|
tags:
|
|
- Hubs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: The section ID for the hubs to change
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: identifier
|
|
description: The identifier of the hub to change
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: promotedToRecommended
|
|
description: Whether this hub should be displayed in recommended
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: promotedToOwnHome
|
|
description: Whether this hub should be displayed in admin's home
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
- name: promotedToSharedHome
|
|
description: Whether this hub should be displayed in shared user's home
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'403':
|
|
$ref: '#/components/responses/403'
|
|
'404':
|
|
description: Section id was not found
|
|
content:
|
|
text/html: {}
|
|
/library/collections/{collectionId}/composite/{updatedAt}:
|
|
get:
|
|
summary: Get a collection's image
|
|
operationId: getCollectionImage
|
|
description: Get an image for the collection based on the items within
|
|
tags:
|
|
- Content
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: collectionId
|
|
description: The collection id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: updatedAt
|
|
description: The update time of the image. Used for busting cache.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/composite'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
image/jpeg:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'404':
|
|
description: Collection not found
|
|
content:
|
|
text/html: {}
|
|
/library/collections/{collectionId}/items/{itemId}:
|
|
put:
|
|
summary: Delete an item from a collection
|
|
operationId: deleteCollectionItem
|
|
description: Delete an item from a collection
|
|
tags:
|
|
- Library Collections
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: collectionId
|
|
description: The collection id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item to delete
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'400':
|
|
description: Item not found
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Collection not found
|
|
content:
|
|
text/html: {}
|
|
/library/collections/{collectionId}/items/{itemId}/move:
|
|
put:
|
|
summary: Reorder an item in the collection
|
|
operationId: moveCollectionItem
|
|
description: Reorder items in a collection with one item after another
|
|
tags:
|
|
- Library Collections
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: collectionId
|
|
description: The collection id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: itemId
|
|
description: The item to move
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: after
|
|
description: The item to move this item after. If not provided, this item will be moved to the beginning
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'400':
|
|
description: Item not found
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Collection not found
|
|
content:
|
|
text/html: {}
|
|
/library/media/{mediaId}/chapterImages/{chapter}:
|
|
get:
|
|
summary: Get a chapter image
|
|
operationId: getChapterImage
|
|
description: Get a single chapter image for a piece of media
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: mediaId
|
|
description: The id of the media item
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: chapter
|
|
description: The index of the chapter
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
image/jpeg:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'404':
|
|
description: Either the media item or the chapter image was not found
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}/{element}:
|
|
post:
|
|
summary: Set an item's artwork, theme, etc
|
|
operationId: setItemArtwork
|
|
description: |-
|
|
Set the artwork, thumb, element for a metadata item
|
|
Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: element
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- thumb
|
|
- art
|
|
- clearLogo
|
|
- banner
|
|
- poster
|
|
- theme
|
|
- name: url
|
|
description: The url of the new asset. If not provided, the binary of the asset must be provided in the post body.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
put:
|
|
summary: Set an item's artwork, theme, etc
|
|
operationId: updateItemArtwork
|
|
description: |-
|
|
Set the artwork, thumb, element for a metadata item
|
|
Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: element
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- thumb
|
|
- art
|
|
- clearLogo
|
|
- banner
|
|
- poster
|
|
- theme
|
|
- name: url
|
|
description: The url of the new asset.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/metadata/{ids}/marker/{marker}:
|
|
delete:
|
|
summary: Delete a marker
|
|
operationId: deleteMarker
|
|
description: Delete a marker for this user on the metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: marker
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Marker is not a bookmark
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Marker could not be found
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Edit a marker
|
|
operationId: editMarker
|
|
description: Edit a marker for this user on the metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: marker
|
|
description: The id of the marker to edit
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: type
|
|
description: The type of marker to edit/create
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: startTimeOffset
|
|
description: The start time of the marker
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: endTimeOffset
|
|
description: The end time of the marker
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
- name: attributes
|
|
description: The attributes to assign to this marker
|
|
in: query
|
|
style: deepObject
|
|
schema:
|
|
type: object
|
|
example:
|
|
title: My favorite spot
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/responses-400'
|
|
'404':
|
|
description: The marker could not be found
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}/media/{mediaItem}:
|
|
delete:
|
|
summary: Delete a media item
|
|
operationId: deleteMediaItem
|
|
description: Delete a single media from a metadata item in the library
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: mediaItem
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: proxy
|
|
description: Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
description: Media item could not be deleted
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Media item could not be found
|
|
content:
|
|
text/html: {}
|
|
/library/parts/{partId}/indexes/{index}:
|
|
get:
|
|
summary: Get BIF index for a part
|
|
operationId: getPartIndex
|
|
description: Get BIF index for a part by index type
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: partId
|
|
description: The part id who's index is to be fetched
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: index
|
|
description: The type of index to grab.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- sd
|
|
- name: interval
|
|
description: The interval between images to return in ms.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/octet-stream:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'404':
|
|
description: The part or the index doesn't exist or the interval is too small
|
|
content:
|
|
text/html: {}
|
|
/library/sections/{sectionId}/collection/{collectionId}:
|
|
delete:
|
|
summary: Delete a collection
|
|
operationId: deleteCollection
|
|
description: Delete a library collection from the PMS
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: collectionId
|
|
description: Collection Id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'404':
|
|
description: Collection not found
|
|
content:
|
|
text/html: {}
|
|
/library/sections/{sectionId}/composite/{updatedAt}:
|
|
get:
|
|
summary: Get a section composite image
|
|
operationId: getSectionImage
|
|
description: Get a composite image of images in this section
|
|
tags:
|
|
- Library
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sectionId
|
|
description: Section identifier
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: updatedAt
|
|
description: The update time of the image. Used for busting cache.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- $ref: '#/components/parameters/mediaQuery'
|
|
- $ref: '#/components/parameters/composite'
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
/library/streams/{streamId}.{ext}:
|
|
delete:
|
|
summary: Delete a stream
|
|
operationId: deleteStream
|
|
description: Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: streamId
|
|
description: The id of the stream
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: ext
|
|
description: This is not a part of this endpoint but documented here to satisfy OpenAPI
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'403':
|
|
description: This user cannot delete this stream
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: The stream cannot be deleted
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Get a stream
|
|
operationId: getStream
|
|
description: Get a stream (such as a sidecar subtitle stream)
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: streamId
|
|
description: The id of the stream
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: ext
|
|
description: The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: encoding
|
|
description: The requested encoding for the subtitle (only used for text subtitles)
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: format
|
|
description: The requested format for the subtitle to convert the subtitles to (only used for text subtitles)
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: autoAdjustSubtitle
|
|
description: Whether the server should attempt to automatically adjust the subtitle timestamps to match the media
|
|
in: query
|
|
required: false
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: The stream in the requested format.
|
|
'403':
|
|
description: The media is not accessible to the user
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: The stream doesn't exist or has no data
|
|
content:
|
|
text/html: {}
|
|
'501':
|
|
description: The stream is not a sidecar subtitle
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Set a stream offset
|
|
operationId: setStreamOffset
|
|
description: Set a stream offset in ms. This may not be respected by all clients
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: streamId
|
|
description: The id of the stream
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: ext
|
|
description: This is not a part of this endpoint but documented here to satisfy OpenAPI
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: offset
|
|
description: The offest in ms
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: The stream in the requested format.
|
|
'400':
|
|
description: The stream doesn't exist
|
|
content:
|
|
text/html: {}
|
|
/livetv/dvrs/{dvrId}/channels/{channel}/tune:
|
|
post:
|
|
summary: Tune a channel on a DVR
|
|
operationId: tuneChannel
|
|
description: Tune a channel on a DVR to the provided channel
|
|
tags:
|
|
- DVRs
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: channel
|
|
description: The channel ID to tune
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: '2.1'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithMetadata'
|
|
'500':
|
|
description: Tuning failed
|
|
content:
|
|
text/html: {}
|
|
/livetv/dvrs/{dvrId}/devices/{deviceId}:
|
|
delete:
|
|
summary: Remove a device from an existing DVR
|
|
operationId: removeDeviceFromDVR
|
|
description: Remove a device from an existing DVR
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: deviceId
|
|
description: The ID of the device to add.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
put:
|
|
summary: Add a device to an existing DVR
|
|
operationId: addDeviceToDVR
|
|
description: Add a device to an existing DVR
|
|
tags:
|
|
- DVRs
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: dvrId
|
|
description: The ID of the DVR.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: deviceId
|
|
description: The ID of the device to add.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
/livetv/epg/countries/{country}/{epgId}/lineups:
|
|
get:
|
|
summary: Get lineups for a country via postal code
|
|
operationId: getCountriesLineups
|
|
description: Returns a list of lineups for a given country, EPG provider and postal code
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: country
|
|
description: 3 letter country code
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: epgId
|
|
description: The `providerIdentifier` of the provider
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: postalCode
|
|
description: The postal code for the lineups to fetch
|
|
in: query
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithLineup'
|
|
'404':
|
|
description: No provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
/livetv/epg/countries/{country}/{epgId}/regions:
|
|
get:
|
|
summary: Get regions for a country
|
|
operationId: getCountryRegions
|
|
description: Get regions for a country within an EPG provider
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: country
|
|
description: 3 letter country code
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: epgId
|
|
description: The `providerIdentifier` of the provider
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Country:
|
|
items:
|
|
properties:
|
|
key:
|
|
type: string
|
|
national:
|
|
type: boolean
|
|
title:
|
|
type: string
|
|
type:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'404':
|
|
description: No provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
/livetv/sessions/{sessionId}/{consumerId}/index.m3u8:
|
|
get:
|
|
summary: Get a session playlist index
|
|
operationId: getSessionPlaylistIndex
|
|
description: Get a playlist index for playing this session
|
|
tags:
|
|
- Live TV
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sessionId
|
|
description: The session id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: consumerId
|
|
description: The consumer id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Index playlist for playing HLS content
|
|
content:
|
|
application/vnd.apple.mpegurl: {}
|
|
'404':
|
|
description: Session or consumer not found
|
|
/media/grabbers/devices/{deviceId}/thumb/{version}:
|
|
get:
|
|
summary: Get device thumb
|
|
operationId: getThumb
|
|
description: Get a device's thumb for display to the user
|
|
tags:
|
|
- Devices
|
|
security:
|
|
- token:
|
|
- admin
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: deviceId
|
|
description: The ID of the device.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: version
|
|
description: A version number of the thumb used for busting cache
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: The thumbnail for the device
|
|
'301':
|
|
description: The thumb URL on the device
|
|
'404':
|
|
description: No thumb found for this device
|
|
content:
|
|
text/html: {}
|
|
/playlists/{playlistId}/items/{generatorId}:
|
|
delete:
|
|
summary: Delete a Generator
|
|
operationId: deletePlaylistItem
|
|
description: Deletes an item from a playlist. Only works with dumb playlists.
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: generatorId
|
|
description: The generator item ID to delete.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist) or generator not found
|
|
content:
|
|
text/html: {}
|
|
get:
|
|
summary: Get a playlist generator
|
|
operationId: getPlaylistGenerator
|
|
description: Get a playlist's generator. Only used for optimized versions
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: generatorId
|
|
description: The generator item ID to delete.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Item:
|
|
items:
|
|
properties:
|
|
composite:
|
|
description: The composite thumbnail image path
|
|
type: string
|
|
Device:
|
|
properties:
|
|
profile:
|
|
type: string
|
|
type: object
|
|
id:
|
|
type: integer
|
|
Location:
|
|
properties:
|
|
librarySectionID:
|
|
type: integer
|
|
uri:
|
|
type: string
|
|
type: object
|
|
MediaSettings:
|
|
properties:
|
|
advancedSubtitles:
|
|
enum:
|
|
- auto
|
|
- burn
|
|
- none
|
|
- sidecar
|
|
- embedded
|
|
- segmented
|
|
type: string
|
|
audioBoost:
|
|
type: integer
|
|
audioChannelCount:
|
|
type: integer
|
|
autoAdjustQuality:
|
|
type: boolean
|
|
autoAdjustSubtitle:
|
|
type: boolean
|
|
directPlay:
|
|
type: boolean
|
|
directStream:
|
|
type: boolean
|
|
directStreamAudio:
|
|
type: boolean
|
|
disableResolutionRotation:
|
|
type: boolean
|
|
maxVideoBitrate:
|
|
type: integer
|
|
musicBitrate:
|
|
type: integer
|
|
peakBitrate:
|
|
type: integer
|
|
photoQuality:
|
|
maximum: 100
|
|
minimum: 0
|
|
type: integer
|
|
photoResolution:
|
|
type: string
|
|
secondsPerSegment:
|
|
type: integer
|
|
subtitles:
|
|
enum:
|
|
- auto
|
|
- burn
|
|
- none
|
|
- sidecar
|
|
- embedded
|
|
- segmented
|
|
type: string
|
|
subtitleSize:
|
|
type: integer
|
|
videoBitrate:
|
|
type: integer
|
|
videoQuality:
|
|
maximum: 100
|
|
minimum: 0
|
|
type: integer
|
|
videoResolution:
|
|
type: string
|
|
type: object
|
|
Policy:
|
|
properties:
|
|
scope:
|
|
enum:
|
|
- all
|
|
- count
|
|
type: string
|
|
unwatched:
|
|
description: True if only unwatched items are optimized
|
|
type: boolean
|
|
value:
|
|
description: If the scope is count, the number of items to optimize
|
|
type: integer
|
|
type: object
|
|
Status:
|
|
properties:
|
|
itemsCompleteCount:
|
|
type: integer
|
|
itemsCount:
|
|
type: integer
|
|
itemsSuccessfulCount:
|
|
type: integer
|
|
state:
|
|
enum:
|
|
- pending
|
|
- complete
|
|
- failed
|
|
type: string
|
|
totalSize:
|
|
type: integer
|
|
type: object
|
|
target:
|
|
type: string
|
|
targetTagID:
|
|
description: The tag of this generator's settings
|
|
type: integer
|
|
title:
|
|
type: string
|
|
type:
|
|
description: The type of this generator
|
|
enum:
|
|
- -1
|
|
- 42
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist) or generator not found
|
|
content:
|
|
text/html: {}
|
|
put:
|
|
summary: Modify a Generator
|
|
operationId: modifyPlaylistGenerator
|
|
description: Modify a playlist generator. Only used for optimizer
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: generatorId
|
|
description: The generator item ID to modify.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: Item
|
|
description: |
|
|
Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as:
|
|
|
|
Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0
|
|
in: query
|
|
style: deepObject
|
|
explode: true
|
|
schema:
|
|
type: object
|
|
properties:
|
|
Location:
|
|
type: object
|
|
properties:
|
|
uri:
|
|
type: string
|
|
locationID:
|
|
type: integer
|
|
Policy:
|
|
type: object
|
|
properties:
|
|
value:
|
|
type: integer
|
|
scope:
|
|
type: string
|
|
enum:
|
|
- all
|
|
- count
|
|
unwatched:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
target:
|
|
type: string
|
|
targetTagID:
|
|
type: integer
|
|
title:
|
|
type: string
|
|
type:
|
|
type: integer
|
|
example:
|
|
Location:
|
|
uri: library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146
|
|
locationID: -1
|
|
Policy:
|
|
value: ''
|
|
scope: all
|
|
unwatched: 0
|
|
target: ''
|
|
targetTagID: 1
|
|
title: Jack-Jack Attack
|
|
type: 42
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist) or generator not found
|
|
content:
|
|
text/html: {}
|
|
/playlists/{playlistId}/items/{generatorId}/items:
|
|
get:
|
|
summary: Get a playlist generator's items
|
|
operationId: getPlaylistGeneratorItems
|
|
description: Get a playlist generator's items
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: generatorId
|
|
description: The generator item ID to delete.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Metadata:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Metadata'
|
|
- properties:
|
|
processingState:
|
|
description: The state of processing if this generator is part of an optimizer playlist
|
|
enum:
|
|
- processed
|
|
- completed
|
|
- tombstoned
|
|
- disabled
|
|
- error
|
|
- pending
|
|
type: string
|
|
processingStateContext:
|
|
description: The error which could have occurred (or `good`)
|
|
enum:
|
|
- good
|
|
- sourceFileUnavailable
|
|
- sourceFileMetadataError
|
|
- clientProfileError
|
|
- ioError
|
|
- transcoderError
|
|
- unknownError
|
|
- mediaAnalysisError
|
|
- downloadFailed
|
|
- accessDenied
|
|
- cannotTranscode
|
|
- codecInstallError
|
|
type: string
|
|
type: object
|
|
type: object
|
|
type: object
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist) or generator not found
|
|
content:
|
|
text/html: {}
|
|
/playlists/{playlistId}/items/{playlistItemId}/move:
|
|
put:
|
|
summary: Moving items in a playlist
|
|
operationId: movePlaylistItem
|
|
description: Moves an item in a playlist. Only works with dumb playlists.
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: playlistItemId
|
|
description: The playlist item ID to move.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: after
|
|
description: The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist)
|
|
content:
|
|
text/html: {}
|
|
/playQueues/{playQueueId}/items/{playQueueItemId}:
|
|
delete:
|
|
summary: Delete an item from a play queue
|
|
operationId: deletePlayQueueItem
|
|
description: Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: playQueueItemId
|
|
description: The play queue item ID to delete.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue not found
|
|
content:
|
|
text/html: {}
|
|
/playQueues/{playQueueId}/items/{playQueueItemId}/move:
|
|
put:
|
|
summary: Move an item in a play queue
|
|
operationId: movePlayQueueItem
|
|
description: Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue.
|
|
tags:
|
|
- Play Queue
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playQueueId
|
|
description: The ID of the play queue.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: playQueueItemId
|
|
description: The play queue item ID to delete.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: after
|
|
description: The play queue item ID to insert the new item after. If not present, moves to the beginning.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/slash-post-responses-200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Play queue or queue item not found
|
|
content:
|
|
text/html: {}
|
|
/library/metadata/{ids}/{element}/{timestamp}:
|
|
get:
|
|
summary: Get an item's artwork, theme, etc
|
|
operationId: getItemArtwork
|
|
description: Get the artwork, thumb, element for a metadata item
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: ids
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: element
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- thumb
|
|
- art
|
|
- clearLogo
|
|
- banner
|
|
- poster
|
|
- theme
|
|
- name: timestamp
|
|
description: A timestamp on the element used for cache management in the client
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
audio/mpeg3:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
image/jpeg:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
/library/parts/{partId}/{changestamp}/{filename}:
|
|
get:
|
|
summary: Get a media part
|
|
operationId: getMediaPart
|
|
description: |
|
|
Get a media part for streaming or download.
|
|
- streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future.
|
|
- download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains.
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: partId
|
|
description: The part id who's index is to be fetched
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: changestamp
|
|
description: The changestamp of the part; used for busting potential caches. Provided in the `key` for the part
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: filename
|
|
description: A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: download
|
|
description: Whether this is a file download
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
Content-Disposition:
|
|
description: 'Note: This header is only included in download requests'
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Client requested download and server owner has forbidden download of media
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: The part doesn't exist
|
|
content:
|
|
text/html: {}
|
|
'503':
|
|
description: Client requested the part without a decision and no decision could be made or decision is for a transcode
|
|
content:
|
|
text/html: {}
|
|
'509':
|
|
description: Client requested the part without a decision and no decision could be made because there is insufficient bandwidth for client to direct play this part
|
|
content:
|
|
text/html: {}
|
|
/library/parts/{partId}/indexes/{index}/{offset}:
|
|
get:
|
|
summary: Get an image from part BIF
|
|
operationId: getImageFromBif
|
|
description: Extract an image from the BIF for a part at a particular offset
|
|
tags:
|
|
- Library
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: partId
|
|
description: The part id who's index is to be fetched
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: index
|
|
description: The type of index to grab.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- sd
|
|
- name: offset
|
|
description: The offset to seek in ms.
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
image/jpeg:
|
|
schema:
|
|
format: binary
|
|
type: string
|
|
'404':
|
|
description: The part or the index doesn't exist
|
|
content:
|
|
text/html: {}
|
|
/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups:
|
|
get:
|
|
summary: Get lineups for a region
|
|
operationId: listLineups
|
|
description: Get lineups for a region within an EPG provider
|
|
tags:
|
|
- EPG
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: country
|
|
description: 3 letter country code
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: epgId
|
|
description: The `providerIdentifier` of the provider
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: region
|
|
description: The region for the lineup
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of objects available
|
|
schema:
|
|
type: integer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithLineup'
|
|
'404':
|
|
description: No provider with the identifier was found
|
|
content:
|
|
text/html: {}
|
|
/livetv/sessions/{sessionId}/{consumerId}/{segmentId}:
|
|
get:
|
|
summary: Get a single session segment
|
|
operationId: getSessionSegment
|
|
description: Get a single LiveTV session segment
|
|
tags:
|
|
- Live TV
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: sessionId
|
|
description: The session id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: consumerId
|
|
description: The consumer id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: segmentId
|
|
description: The segment id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: MPEG-TS segment for playing HLS content
|
|
'404':
|
|
description: Session, consumer, or segment not found
|
|
/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}:
|
|
put:
|
|
summary: Reprocess a generator
|
|
operationId: refreshPlaylist
|
|
description: Make a generator reprocess (refresh)
|
|
tags:
|
|
- Library Playlists
|
|
parameters:
|
|
- $ref: "#/components/parameters/accepts"
|
|
- $ref: "#/components/parameters/X-Plex-Client-Identifier"
|
|
- $ref: "#/components/parameters/X-Plex-Product"
|
|
- $ref: "#/components/parameters/X-Plex-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Platform"
|
|
- $ref: "#/components/parameters/X-Plex-Platform-Version"
|
|
- $ref: "#/components/parameters/X-Plex-Device"
|
|
- $ref: "#/components/parameters/X-Plex-Model"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Vendor"
|
|
- $ref: "#/components/parameters/X-Plex-Device-Name"
|
|
- $ref: "#/components/parameters/X-Plex-Marketplace"
|
|
- name: playlistId
|
|
description: The ID of the playlist
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: generatorId
|
|
description: The generator item ID to act on
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: metadataId
|
|
description: The metadata item ID to act on
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
- name: action
|
|
description: The action to perform for this item on this optimizer queue
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- reprocess
|
|
- disable
|
|
- enable
|
|
responses:
|
|
'200':
|
|
$ref: '#/components/responses/200'
|
|
'400':
|
|
$ref: '#/components/responses/400'
|
|
'404':
|
|
description: Playlist not found (or user may not have permission to access playlist) or generator or metadata item not found
|
|
content:
|
|
text/html: {}
|
|
components:
|
|
securitySchemes:
|
|
token:
|
|
name: X-Plex-Token
|
|
description: |
|
|
The token which identifies the user accessing the PMS. This can be either:
|
|
- A traditional access token obtained from plex.tv
|
|
- A JWT token obtained through the JWT authentication flow
|
|
|
|
JWT tokens provide better security with:
|
|
- Short-lived tokens (7 days expiration)
|
|
- Public-key cryptography (ED25519)
|
|
- Better clock synchronization
|
|
- Individual device revocation capability
|
|
type: apiKey
|
|
in: header
|
|
parameters:
|
|
accepts:
|
|
name: accepts
|
|
description: Indicates the client accepts the indicated media types
|
|
in: header
|
|
schema:
|
|
type: string
|
|
default: application/xml
|
|
enum:
|
|
- application/json
|
|
- application/xml
|
|
advancedSubtitles:
|
|
name: advancedSubtitles
|
|
description: |
|
|
Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- burn
|
|
- text
|
|
- unknown
|
|
example: burn
|
|
audioBoost:
|
|
name: audioBoost
|
|
description: Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
example: 50
|
|
audioChannelCount:
|
|
name: audioChannelCount
|
|
description: Target video number of audio channels.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
maximum: 8
|
|
example: 5
|
|
autoAdjustQuality:
|
|
name: autoAdjustQuality
|
|
description: Indicates the client supports ABR.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
autoAdjustSubtitle:
|
|
name: autoAdjustSubtitle
|
|
description: Indicates if the server should adjust subtitles based on Voice Activity Data.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
composite:
|
|
name: composite
|
|
in: query
|
|
schema:
|
|
type: object
|
|
properties:
|
|
type:
|
|
description: Limit composite to specified metadata types
|
|
type: integer
|
|
format:
|
|
description: The image type
|
|
type: string
|
|
enum:
|
|
- jpg
|
|
- png
|
|
backgroundColor:
|
|
description: 6 character hex RGB value for background color for image
|
|
type: string
|
|
border:
|
|
description: The width of the intra-image border
|
|
type: integer
|
|
cols:
|
|
description: Number of columns to construct in the composite image
|
|
type: integer
|
|
crop:
|
|
description: Where to crop source images to fit into composite image proportions
|
|
type: string
|
|
enum:
|
|
- center
|
|
- top
|
|
height:
|
|
description: The height of the image
|
|
type: integer
|
|
media:
|
|
description: The default image type to use as the sources
|
|
type: string
|
|
enum:
|
|
- thumb
|
|
- art
|
|
- banner
|
|
repeat:
|
|
description: Allow repetion of images if there are not enough source images to fill grid
|
|
type: boolean
|
|
rows:
|
|
description: Number of rows to construct in the composite image
|
|
type: integer
|
|
width:
|
|
description: The width of the image
|
|
type: integer
|
|
count:
|
|
name: count
|
|
description: Limit results to count items
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
directPlay:
|
|
name: directPlay
|
|
description: Indicates the client supports direct playing the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
directStream:
|
|
name: directStream
|
|
description: Indicates the client supports direct streaming the video of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
directStreamAudio:
|
|
name: directStreamAudio
|
|
description: Indicates the client supports direct streaming the audio of the indicated content.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
disableResolutionRotation:
|
|
name: disableResolutionRotation
|
|
description: Indicates if resolution should be adjusted for orientation.
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
hasMDE:
|
|
name: hasMDE
|
|
description: Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1
|
|
in: query
|
|
schema:
|
|
$ref: "#/components/schemas/BoolInt"
|
|
example: 1
|
|
location:
|
|
name: location
|
|
description: Network type of the client, can be used to help determine target bitrate.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- lan
|
|
- wan
|
|
- cellular
|
|
example: wan
|
|
mediaBufferSize:
|
|
name: mediaBufferSize
|
|
description: Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 102400
|
|
mediaIndex:
|
|
name: mediaIndex
|
|
description: Index of the media to transcode. -1 or not specified indicates let the server choose.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
mediaQuery:
|
|
name: mediaQuery
|
|
description: This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries
|
|
in: query
|
|
schema:
|
|
type: object
|
|
musicBitrate:
|
|
name: musicBitrate
|
|
description: Target bitrate for audio only files (in kbps, used to transcode).
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 0
|
|
example: 5000
|
|
offset:
|
|
name: offset
|
|
description: Offset from the start of the media (in seconds).
|
|
in: query
|
|
schema:
|
|
type: number
|
|
example: 90.5
|
|
partIndex:
|
|
name: partIndex
|
|
description: Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 0
|
|
path:
|
|
name: path
|
|
description: Internal PMS path of the media to transcode.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
example: /library/metadata/151671
|
|
peakBitrate:
|
|
name: peakBitrate
|
|
description: Maximum bitrate (in kbps) to use in ABR.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 0
|
|
example: 12000
|
|
photoResolution:
|
|
name: photoResolution
|
|
description: Target photo resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
protocol:
|
|
name: protocol
|
|
description: |
|
|
Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- http
|
|
- hls
|
|
- dash
|
|
example: dash
|
|
secondsPerSegment:
|
|
name: secondsPerSegment
|
|
description: Number of seconds to include in each transcoded segment
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
example: 5
|
|
smart:
|
|
name: smart
|
|
description: Whether this is a smart collection/playlist
|
|
in: query
|
|
schema:
|
|
type: boolean
|
|
subtitles:
|
|
name: subtitles
|
|
description: |
|
|
Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
|
|
in: query
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- auto
|
|
- burn
|
|
- none
|
|
- sidecar
|
|
- embedded
|
|
- segmented
|
|
- unknown
|
|
example: Burn
|
|
subtitleSize:
|
|
name: subtitleSize
|
|
description: Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
example: 50
|
|
title:
|
|
name: title
|
|
description: The title to filter by or assign
|
|
in: query
|
|
schema:
|
|
type: string
|
|
transcodeSessionId:
|
|
name: transcodeSessionId
|
|
description: Transcode session UUID
|
|
in: query
|
|
schema:
|
|
type: string
|
|
transcodeType:
|
|
name: transcodeType
|
|
description: Type of transcode media
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- video
|
|
- music
|
|
- audio
|
|
- subtitles
|
|
type:
|
|
name: type
|
|
description: The metadata type to filter by
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
videoBitrate:
|
|
name: videoBitrate
|
|
description: Target video bitrate (in kbps).
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 0
|
|
example: 12000
|
|
videoQuality:
|
|
name: videoQuality
|
|
description: Target photo quality.
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 0
|
|
maximum: 99
|
|
example: 50
|
|
videoResolution:
|
|
name: videoResolution
|
|
description: Target maximum video resolution.
|
|
in: query
|
|
schema:
|
|
type: string
|
|
pattern: ^\d[x:]\d$
|
|
example: 1080x1080
|
|
X-Plex-Client-Identifier:
|
|
name: X-Plex-Client-Identifier
|
|
x-speakeasy-name-override: Client-Identifier
|
|
in: header
|
|
description: An opaque identifier unique to the client
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: abc123
|
|
example: abc123
|
|
X-Plex-Client-Profile-Extra:
|
|
name: X-Plex-Client-Profile-Extra
|
|
x-speakeasy-name-override: Client-Profile-Extra
|
|
description: See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
|
|
example: add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)
|
|
X-Plex-Client-Profile-Name:
|
|
name: X-Plex-Client-Profile-Name
|
|
x-speakeasy-name-override: Client-Profile-Name
|
|
description: Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: generic
|
|
example: generic
|
|
X-Plex-Session-Identifier:
|
|
name: X-Plex-Session-Identifier
|
|
x-speakeasy-name-override: Session-Identifier
|
|
description: Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)
|
|
in: header
|
|
schema:
|
|
type: string
|
|
example: abc123
|
|
example: abc123
|
|
X-Plex-Product:
|
|
name: X-Plex-Product
|
|
x-speakeasy-name-override: Product
|
|
in: header
|
|
description: The name of the client product
|
|
schema:
|
|
type: string
|
|
example: Plex for Roku
|
|
example: Plex for Roku
|
|
X-Plex-Version:
|
|
name: X-Plex-Version
|
|
x-speakeasy-name-override: Version
|
|
in: header
|
|
description: The version of the client application
|
|
schema:
|
|
type: string
|
|
example: 2.4.1
|
|
example: 2.4.1
|
|
X-Plex-Platform:
|
|
name: X-Plex-Platform
|
|
x-speakeasy-name-override: Platform
|
|
in: header
|
|
description: The platform of the client
|
|
schema:
|
|
type: string
|
|
example: Roku
|
|
example: Roku
|
|
X-Plex-Platform-Version:
|
|
name: X-Plex-Platform-Version
|
|
x-speakeasy-name-override: Platform-Version
|
|
in: header
|
|
description: The version of the platform
|
|
schema:
|
|
type: string
|
|
example: 4.3 build 1057
|
|
example: 4.3 build 1057
|
|
X-Plex-Device:
|
|
name: X-Plex-Device
|
|
x-speakeasy-name-override: Device
|
|
in: header
|
|
description: A relatively friendly name for the client device
|
|
schema:
|
|
type: string
|
|
example: Roku 3
|
|
example: Roku 3
|
|
X-Plex-Model:
|
|
name: X-Plex-Model
|
|
x-speakeasy-name-override: Model
|
|
in: header
|
|
description: A potentially less friendly identifier for the device model
|
|
schema:
|
|
type: string
|
|
example: 4200X
|
|
example: 4200X
|
|
X-Plex-Device-Vendor:
|
|
name: X-Plex-Device-Vendor
|
|
x-speakeasy-name-override: Device-Vendor
|
|
in: header
|
|
description: The device vendor
|
|
schema:
|
|
type: string
|
|
example: Roku
|
|
example: Roku
|
|
X-Plex-Device-Name:
|
|
name: X-Plex-Device-Name
|
|
x-speakeasy-name-override: Device-Name
|
|
in: header
|
|
description: A friendly name for the client
|
|
schema:
|
|
type: string
|
|
example: Living Room TV
|
|
example: Living Room TV
|
|
X-Plex-Marketplace:
|
|
name: X-Plex-Marketplace
|
|
x-speakeasy-name-override: Marketplace
|
|
in: header
|
|
description: The marketplace on which the client application is distributed
|
|
schema:
|
|
type: string
|
|
example: googlePlay
|
|
example: googlePlay
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
description: Provided on all MediaContainer objects indicating the offset of where this container page starts
|
|
schema:
|
|
type: integer
|
|
X-Plex-Container-Total-Size:
|
|
description: Provided on all MediaContainer objects indicating the total size of the collection
|
|
schema:
|
|
type: integer
|
|
minimum: 0
|
|
example: 100
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
content:
|
|
text/html: {}
|
|
'204':
|
|
description: No Content
|
|
content:
|
|
text/html: {}
|
|
'400':
|
|
description: Bad Request
|
|
content:
|
|
text/html: {}
|
|
'403':
|
|
description: Forbidden
|
|
content:
|
|
text/html: {}
|
|
'404':
|
|
description: Not Found
|
|
content:
|
|
text/html: {}
|
|
'500':
|
|
description: Internal Server Error
|
|
content:
|
|
text/html: {}
|
|
dvrRequestHandler_slash-get-responses-200:
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainerWithStatus'
|
|
- properties:
|
|
DVR:
|
|
items:
|
|
properties:
|
|
Device:
|
|
items:
|
|
$ref: '#/components/schemas/Device'
|
|
type: array
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
lineup:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
get-responses-200:
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Hub:
|
|
items:
|
|
properties:
|
|
homeVisibility:
|
|
description: |
|
|
Whether this hub is visible on the home screen
|
|
- all: Visible to all users
|
|
- none: Visible to no users
|
|
- admin: Visible to only admin users
|
|
- shared: Visible to shared users
|
|
enum:
|
|
- all
|
|
- none
|
|
- admin
|
|
- shared
|
|
type: string
|
|
identifier:
|
|
description: The identifier for this hub
|
|
type: string
|
|
promotedToOwnHome:
|
|
description: Whether this hub is visible to admin user home
|
|
type: boolean
|
|
promotedToRecommended:
|
|
description: Whether this hub is promoted to all for recommendations
|
|
type: boolean
|
|
promotedToSharedHome:
|
|
description: Whether this hub is visible to shared user's home
|
|
type: boolean
|
|
recommendationsVisibility:
|
|
description: |
|
|
The visibility of this hub in recommendations:
|
|
- all: Visible to all users
|
|
- none: Visible to no users
|
|
- admin: Visible to only admin users
|
|
- shared: Visible to shared users
|
|
enum:
|
|
- all
|
|
- none
|
|
- admin
|
|
- shared
|
|
type: string
|
|
title:
|
|
description: The title of this hub
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
historyAll-get-responses-200:
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- properties:
|
|
Metadata:
|
|
items:
|
|
properties:
|
|
accountID:
|
|
description: The account id of this playback
|
|
type: integer
|
|
deviceID:
|
|
description: The device id which played the item
|
|
type: integer
|
|
historyKey:
|
|
description: The key for this individual history item
|
|
type: string
|
|
key:
|
|
description: The metadata key for the item played
|
|
type: string
|
|
librarySectionID:
|
|
description: The library section id containing the item played
|
|
type: string
|
|
originallyAvailableAt:
|
|
description: The originally available at of the item played
|
|
type: string
|
|
ratingKey:
|
|
description: The rating key for the item played
|
|
type: string
|
|
thumb:
|
|
description: The thumb of the item played
|
|
type: string
|
|
title:
|
|
description: The title of the item played
|
|
type: string
|
|
type:
|
|
description: The metadata type of the item played
|
|
type: string
|
|
viewedAt:
|
|
description: The time when the item was played
|
|
type: integer
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
post-responses-200:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- additionalProperties: true
|
|
properties:
|
|
color:
|
|
type: string
|
|
endTimeOffset:
|
|
type: integer
|
|
id:
|
|
type: integer
|
|
startTimeOffset:
|
|
type: integer
|
|
title:
|
|
type: string
|
|
type:
|
|
enum:
|
|
- intro
|
|
- commercial
|
|
- bookmark
|
|
- resume
|
|
- credit
|
|
type: string
|
|
type: object
|
|
type: object
|
|
LibrarySections:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ServerConfiguration'
|
|
- properties:
|
|
Directory:
|
|
items:
|
|
properties:
|
|
count:
|
|
type: integer
|
|
key:
|
|
description: The key where this directory is found
|
|
type: string
|
|
title:
|
|
type: string
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
responses-200:
|
|
description: OK
|
|
headers:
|
|
X-Plex-Container-Start:
|
|
$ref: '#/components/headers/X-Plex-Container-Start'
|
|
X-Plex-Container-Total-Size:
|
|
$ref: '#/components/headers/X-Plex-Container-Total-Size'
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithHubs'
|
|
responses-400:
|
|
description: Request parameters are bad, such as an `endTimeOffset` prior to the `startTimeOffset`
|
|
content:
|
|
text/html: {}
|
|
responses-403:
|
|
description: The media is not accessible to the user
|
|
content:
|
|
text/html: {}
|
|
responses-404:
|
|
description: The stream doesn't exist, or the loudness feature is not available on this PMS
|
|
content:
|
|
text/html: {}
|
|
slash-get-responses-200:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
properties:
|
|
MediaContainer:
|
|
properties:
|
|
content:
|
|
description: |-
|
|
The flavors of directory found here:
|
|
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
|
|
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
|
|
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly.
|
|
type: string
|
|
allowSync:
|
|
type: boolean
|
|
art:
|
|
type: string
|
|
Directory:
|
|
items:
|
|
$ref: '#/components/schemas/Metadata'
|
|
type: array
|
|
identifier:
|
|
type: string
|
|
librarySectionID:
|
|
type: integer
|
|
mediaTagPrefix:
|
|
type: string
|
|
mediaTagVersion:
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
sortAsc:
|
|
type: boolean
|
|
thumb:
|
|
type: string
|
|
title1:
|
|
type: string
|
|
viewGroup:
|
|
type: string
|
|
viewMode:
|
|
type: integer
|
|
type: object
|
|
slash-post-responses-200:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/MediaContainerWithPlaylistMetadata'
|
|
schemas:
|
|
AllowSync:
|
|
type: boolean
|
|
Art:
|
|
type: string
|
|
BoolInt:
|
|
type: integer
|
|
enum:
|
|
- 0
|
|
- 1
|
|
Channel:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
callSign:
|
|
type: string
|
|
channelVcn:
|
|
type: string
|
|
hd:
|
|
type: boolean
|
|
identifier:
|
|
type: string
|
|
key:
|
|
type: string
|
|
language:
|
|
type: string
|
|
thumb:
|
|
type: string
|
|
ChannelMapping:
|
|
type: object
|
|
properties:
|
|
channelKey:
|
|
type: string
|
|
deviceIdentifier:
|
|
type: string
|
|
enabled:
|
|
type: string
|
|
lineupIdentifier:
|
|
type: string
|
|
Content:
|
|
type: boolean
|
|
Device:
|
|
type: object
|
|
properties:
|
|
ChannelMapping:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ChannelMapping'
|
|
key:
|
|
type: string
|
|
lastSeenAt:
|
|
type: integer
|
|
make:
|
|
type: string
|
|
model:
|
|
type: string
|
|
modelNumber:
|
|
type: string
|
|
protocol:
|
|
type: string
|
|
sources:
|
|
type: string
|
|
state:
|
|
type: string
|
|
status:
|
|
type: string
|
|
tuners:
|
|
type: string
|
|
uri:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
Directory:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
title:
|
|
type: string
|
|
type:
|
|
type: string
|
|
art:
|
|
type: string
|
|
content:
|
|
type: boolean
|
|
filter:
|
|
type: string
|
|
hasPrefs:
|
|
type: boolean
|
|
hasStoreServices:
|
|
type: boolean
|
|
hubKey:
|
|
type: string
|
|
identifier:
|
|
type: string
|
|
key:
|
|
type: string
|
|
lastAccessedAt:
|
|
type: integer
|
|
Pivot:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
type:
|
|
type: string
|
|
context:
|
|
type: string
|
|
id:
|
|
type: string
|
|
key:
|
|
type: string
|
|
symbol:
|
|
type: string
|
|
share:
|
|
type: integer
|
|
thumb:
|
|
type: string
|
|
titleBar:
|
|
type: string
|
|
Filter:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Directory'
|
|
- description: |
|
|
Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API.
|
|
type: object
|
|
properties:
|
|
title:
|
|
description: The title for the filter.
|
|
type: string
|
|
filter:
|
|
description: This represents the filter name used for the filter, which can be used to construct complex media queries with.
|
|
type: string
|
|
filterType:
|
|
description: This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter.
|
|
type: string
|
|
key:
|
|
description: This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element.
|
|
type: string
|
|
Hub:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
title:
|
|
description: A title for this grouping of content
|
|
type: string
|
|
type:
|
|
description: The type of the items contained in this hub, or possibly `mixed` if there are multiple types
|
|
type: string
|
|
example: track
|
|
context:
|
|
type: string
|
|
example: hub.home.onDeck
|
|
hubIdentifier:
|
|
description: A unique identifier for the hub
|
|
type: string
|
|
example: home.onDeck
|
|
hubKey:
|
|
description: |
|
|
A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional.
|
|
type: string
|
|
key:
|
|
description: The key at which all of the content for this hub can be retrieved
|
|
type: string
|
|
example: /hubs/sections/home/onDeck
|
|
Metadata:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Metadata'
|
|
more:
|
|
description: |
|
|
"A boolean indicating that the hub contains more than what's included in the current response."
|
|
type: boolean
|
|
promoted:
|
|
description: Indicating if the hub should be promoted to the user's homescreen
|
|
type: boolean
|
|
random:
|
|
description: Indicating that the contents of the hub may change on each request
|
|
type: boolean
|
|
size:
|
|
type: integer
|
|
example: 1
|
|
style:
|
|
description: A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell`
|
|
type: string
|
|
subtype:
|
|
description: The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types
|
|
type: string
|
|
example: podcast
|
|
totalSize:
|
|
type: integer
|
|
example: 8
|
|
Image:
|
|
description: |
|
|
Images such as movie posters and background artwork are represented by Image elements.
|
|
type: object
|
|
properties:
|
|
type:
|
|
description: Describes both the purpose and intended presentation of the image.
|
|
type: string
|
|
enum:
|
|
- background
|
|
- banner
|
|
- clearLogo
|
|
- coverPoster
|
|
- snapshot
|
|
alt:
|
|
description: Title to use for accessibility.
|
|
type: string
|
|
url:
|
|
description: The relative path or absolute url for the image.
|
|
type: string
|
|
Items:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/Metadata'
|
|
- type: object
|
|
properties:
|
|
MetadataItem:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Items'
|
|
description: Nested metadata items
|
|
type: object
|
|
Key:
|
|
type: string
|
|
LibrarySection:
|
|
type: object
|
|
properties:
|
|
title:
|
|
$ref: '#/components/schemas/Title'
|
|
type:
|
|
$ref: '#/components/schemas/Type'
|
|
agent:
|
|
type: string
|
|
allowSync:
|
|
type: boolean
|
|
art:
|
|
$ref: '#/components/schemas/Art'
|
|
composite:
|
|
type: string
|
|
content:
|
|
$ref: '#/components/schemas/Content'
|
|
contentChangedAt:
|
|
type: integer
|
|
createdAt:
|
|
type: integer
|
|
directory:
|
|
type: boolean
|
|
filters:
|
|
description: Indicates whether this section has filtering capabilities
|
|
type: boolean
|
|
hidden:
|
|
type: boolean
|
|
key:
|
|
$ref: '#/components/schemas/Key'
|
|
language:
|
|
type: string
|
|
Location:
|
|
type: array
|
|
items:
|
|
description: Represents a top-level location on disk where media in this library section is stored
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
path:
|
|
description: The path of where this directory exists on disk
|
|
refreshing:
|
|
description: Indicates whether this library section is currently scanning
|
|
type: boolean
|
|
scannedAt:
|
|
type: integer
|
|
scanner:
|
|
type: string
|
|
thumb:
|
|
$ref: '#/components/schemas/Thumb'
|
|
updatedAt:
|
|
type: integer
|
|
Lineup:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
type:
|
|
description: The type of this object (`lineup` in this case)
|
|
type: string
|
|
lineupType:
|
|
description: |
|
|
- `-1`: N/A
|
|
- `0`: Over the air
|
|
- `1`: Cable
|
|
- `2`: Satellite
|
|
- `3`: IPTV
|
|
- `4`: Virtual
|
|
type: integer
|
|
enum:
|
|
- -1
|
|
- 0
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
location:
|
|
type: string
|
|
uuid:
|
|
description: The uuid of this lineup
|
|
type: string
|
|
Media:
|
|
description: |
|
|
`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
aspectRatio:
|
|
type: number
|
|
example: 2.35
|
|
audioChannels:
|
|
type: integer
|
|
example: 2
|
|
audioCodec:
|
|
example: aac
|
|
audioProfile:
|
|
example: lc
|
|
bitrate:
|
|
type: integer
|
|
example: 5612
|
|
container:
|
|
example: mov
|
|
duration:
|
|
type: integer
|
|
example: 150192
|
|
has64bitOffsets:
|
|
type: boolean
|
|
example: false
|
|
hasVoiceActivity:
|
|
type: boolean
|
|
example: true
|
|
height:
|
|
type: integer
|
|
example: 544
|
|
id:
|
|
type: integer
|
|
example: 1
|
|
optimizedForStreaming:
|
|
type: boolean
|
|
example: false
|
|
Part:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Part'
|
|
videoCodec:
|
|
example: h264
|
|
videoFrameRate:
|
|
example: 24p
|
|
videoProfile:
|
|
example: main
|
|
videoResolution:
|
|
example: '720'
|
|
width:
|
|
type: integer
|
|
example: 1280
|
|
MediaContainer:
|
|
description: |
|
|
`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
|
|
Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
|
|
The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
|
|
type: object
|
|
properties:
|
|
identifier:
|
|
type: string
|
|
offset:
|
|
description: |
|
|
The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
|
|
type: integer
|
|
size:
|
|
type: integer
|
|
totalSize:
|
|
description: |
|
|
The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
|
|
type: integer
|
|
MediaContainerWithArtwork:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Metadata:
|
|
type: array
|
|
items:
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
title:
|
|
description: The title of the item
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum:
|
|
- image
|
|
key:
|
|
description: The path to the artwork
|
|
type: string
|
|
MediaContainerWithDecision:
|
|
description: |
|
|
`MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`).
|
|
|
|
It is also common for a `MediaContainer` to contain attributes "hoisted" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well.
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
availableBandwidth:
|
|
description: The maximum available bitrate when the decision was rendered.
|
|
type: integer
|
|
directPlayDecisionCode:
|
|
type: integer
|
|
directPlayDecisionText:
|
|
type: string
|
|
generalDecisionCode:
|
|
description: The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all.
|
|
type: integer
|
|
generalDecisionText:
|
|
type: string
|
|
mdeDecisionCode:
|
|
description: The code indicating the status of evaluation of playback when client indicates `hasMDE=1`
|
|
type: integer
|
|
mdeDecisionText:
|
|
description: Descriptive text for the above code
|
|
type: string
|
|
Metadata:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Metadata'
|
|
- type: object
|
|
properties:
|
|
Media:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Media'
|
|
- type: object
|
|
properties:
|
|
abr:
|
|
type: boolean
|
|
Part:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Part'
|
|
- type: object
|
|
properties:
|
|
decision:
|
|
type: string
|
|
enum:
|
|
- directplay
|
|
- transcode
|
|
- none
|
|
selected:
|
|
type: boolean
|
|
Stream:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Stream'
|
|
- type: object
|
|
properties:
|
|
decision:
|
|
type: string
|
|
enum:
|
|
- copy
|
|
- transcode
|
|
- burn
|
|
- unavailable
|
|
- ignore
|
|
- none
|
|
location:
|
|
type: string
|
|
enum:
|
|
- direct
|
|
- sidecar-subs
|
|
- segments-video
|
|
- segments-audio
|
|
- segments-av
|
|
- segments-subs
|
|
- embedded
|
|
- sidecar
|
|
resourceSession:
|
|
type: string
|
|
selected:
|
|
type: boolean
|
|
transcodeDecisionCode:
|
|
type: integer
|
|
transcodeDecisionText:
|
|
type: string
|
|
MediaContainerWithDevice:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Device:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
ChannelMapping:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ChannelMapping'
|
|
key:
|
|
type: string
|
|
lastSeenAt:
|
|
type: integer
|
|
make:
|
|
type: string
|
|
model:
|
|
type: string
|
|
modelNumber:
|
|
type: string
|
|
protocol:
|
|
type: string
|
|
sources:
|
|
type: string
|
|
state:
|
|
type: string
|
|
status:
|
|
type: string
|
|
tuners:
|
|
type: string
|
|
uri:
|
|
type: string
|
|
uuid:
|
|
type: string
|
|
MediaContainerWithDirectory:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Directory:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Directory'
|
|
MediaContainerWithHubs:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Hub:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Hub'
|
|
MediaContainerWithLineup:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Lineup:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Lineup'
|
|
uuid:
|
|
description: The UUID of this set lineups
|
|
type: string
|
|
MediaContainerWithMetadata:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Metadata:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Metadata'
|
|
MediaContainerWithNestedMetadata:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
MetadataItem:
|
|
type: array
|
|
items:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/Metadata'
|
|
- type: object
|
|
properties:
|
|
MetadataItem:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Items'
|
|
description: Nested metadata items
|
|
type: object
|
|
MediaContainerWithPlaylistMetadata:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Metadata:
|
|
type: array
|
|
items:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
readOnly:
|
|
description: If we return this as true then this playlist cannot be altered or deleted directly by the client.
|
|
type: boolean
|
|
composite:
|
|
description: A composite image for the playlist.
|
|
type: string
|
|
duration:
|
|
description: The total duration of the playlist in ms
|
|
type: integer
|
|
key:
|
|
description: Leads to a list of items in the playlist.
|
|
type: string
|
|
leafCount:
|
|
description: The number of items in the playlist.
|
|
type: integer
|
|
playlistType:
|
|
description: The type of the playlist.
|
|
type: string
|
|
enum:
|
|
- audio
|
|
- video
|
|
- photo
|
|
smart:
|
|
description: Whether or not the playlist is smart.
|
|
type: boolean
|
|
specialPlaylistType:
|
|
description: If this is a special playlist, this returns its type (e.g. favorites).
|
|
type: string
|
|
- $ref: '#/components/schemas/Metadata'
|
|
MediaContainerWithSettings:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
Setting:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Setting'
|
|
MediaContainerWithStatus:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
status:
|
|
description: A status indicator. If present and non-zero, indicates an error
|
|
type: integer
|
|
MediaContainerWithSubscription:
|
|
type: object
|
|
properties:
|
|
MediaContainer:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
MediaSubscription:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MediaSubscription'
|
|
MediaGrabOperation:
|
|
description: |
|
|
A media grab opration represents a scheduled or active recording of media
|
|
type: object
|
|
properties:
|
|
currentSize:
|
|
type: integer
|
|
grabberIdentifier:
|
|
type: string
|
|
grabberProtocol:
|
|
type: string
|
|
id:
|
|
type: string
|
|
key:
|
|
type: string
|
|
mediaIndex:
|
|
type: integer
|
|
mediaSubscriptionID:
|
|
type: integer
|
|
Metadata:
|
|
$ref: '#/components/schemas/Metadata'
|
|
percent:
|
|
type: number
|
|
provider:
|
|
type: string
|
|
status:
|
|
type: string
|
|
enum:
|
|
- inactive
|
|
- scheduled
|
|
- inprogress
|
|
- complete
|
|
- cancelled
|
|
- error
|
|
- postprocessing
|
|
- paused
|
|
MediaSubscription:
|
|
description: |
|
|
A media subscription contains a representation of metadata desired to be recorded
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
type:
|
|
description: The metadata type of the root item of the subscription
|
|
type: integer
|
|
airingsType:
|
|
type: string
|
|
enum:
|
|
- New Airings Only
|
|
- New and Repeat Airings
|
|
createdAt:
|
|
type: integer
|
|
Directory:
|
|
description: Media Matching Hints
|
|
additionalProperties: true
|
|
durationTotal:
|
|
description: Only included if `includeStorage` is specified
|
|
type: integer
|
|
key:
|
|
type: string
|
|
librarySectionTitle:
|
|
type: string
|
|
locationPath:
|
|
type: string
|
|
MediaGrabOperation:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/MediaGrabOperation'
|
|
Playlist:
|
|
description: Media Matching Hints
|
|
additionalProperties: true
|
|
Setting:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Setting'
|
|
storageTotal:
|
|
description: Only included if `includeStorage` is specified
|
|
type: integer
|
|
targetLibrarySectionID:
|
|
description: The library section id for where the item is to be recorded
|
|
type: integer
|
|
targetSectionLocationID:
|
|
description: The library section location id for where the item is to be recorded
|
|
type: integer
|
|
Video:
|
|
description: Media Matching Hints
|
|
additionalProperties: true
|
|
Metadata:
|
|
description: |
|
|
Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.
|
|
|
|
Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.
|
|
|
|
Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
title:
|
|
description: The title of the item (e.g. “300” or “The Simpsons”)
|
|
type:
|
|
description: The type of the video item, such as `movie`, `episode`, or `clip`.
|
|
absoluteIndex:
|
|
description: When present, contains the disc number for a track on multi-disc albums.
|
|
type: integer
|
|
addedAt:
|
|
description: In units of seconds since the epoch, returns the time at which the item was added to the library.
|
|
type: integer
|
|
art:
|
|
description: When present, the URL for the background artwork for the item.
|
|
audienceRating:
|
|
description: Some rating systems separate reviewer ratings from audience ratings
|
|
type: number
|
|
minimum: 0
|
|
maximum: 10
|
|
audienceRatingImage:
|
|
description: A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).
|
|
Autotag:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
banner:
|
|
description: When present, the URL for a banner graphic for the item.
|
|
chapterSource:
|
|
description: When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).
|
|
composite:
|
|
description: When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).
|
|
contentRating:
|
|
description: If known, the content rating (e.g. MPAA) for an item.
|
|
Country:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
Director:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
duration:
|
|
description: When present, the duration for the item, in units of milliseconds.
|
|
type: integer
|
|
Filter:
|
|
description: Typically only seen in metadata at a library's top level
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Filter'
|
|
Genre:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
grandparentArt:
|
|
description: The `art` of the grandparent
|
|
type: string
|
|
grandparentHero:
|
|
description: The `hero` of the grandparent
|
|
type: string
|
|
grandparentKey:
|
|
description: The `key` of the grandparent
|
|
type: string
|
|
grandparentRatingKey:
|
|
description: The `ratingKey` of the grandparent
|
|
type: string
|
|
grandparentTheme:
|
|
description: The `theme` of the grandparent
|
|
type: string
|
|
grandparentThumb:
|
|
description: The `thumb` of the grandparent
|
|
type: string
|
|
grandparentTitle:
|
|
description: The `title` of the grandparent
|
|
type: string
|
|
Guid:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
hero:
|
|
description: When present, the URL for a hero image for the item.
|
|
Image:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Image'
|
|
index:
|
|
description: When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.
|
|
type: integer
|
|
key:
|
|
description: The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.
|
|
lastViewedAt:
|
|
description: When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.
|
|
type: integer
|
|
leafCount:
|
|
description: For shows and seasons, contains the number of total episodes.
|
|
type: integer
|
|
Media:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Media'
|
|
originallyAvailableAt:
|
|
description: When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.
|
|
originalTitle:
|
|
description: When present, used to indicate an item's original title, e.g. a movie's foreign title.
|
|
parentHero:
|
|
description: The `hero` of the parent
|
|
type: string
|
|
parentIndex:
|
|
description: The `index` of the parent
|
|
type: integer
|
|
parentKey:
|
|
description: The `key` of the parent
|
|
type: string
|
|
parentRatingKey:
|
|
description: The `ratingKey` of the parent
|
|
type: string
|
|
parentThumb:
|
|
description: The `thumb` of the parent
|
|
type: string
|
|
parentTitle:
|
|
description: The `title` of the parent
|
|
type: string
|
|
primaryExtraKey:
|
|
description: Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.
|
|
prompt:
|
|
description: Prompt to give the user for this directory (such as `Search Movies`)
|
|
type: string
|
|
rating:
|
|
description: When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.
|
|
type: number
|
|
minimum: 0
|
|
maximum: 10
|
|
Rating:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
x-speakeasy-name-override: RatingArray
|
|
ratingCount:
|
|
description: Number of ratings under this metadata
|
|
type: integer
|
|
ratingImage:
|
|
description: When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.
|
|
ratingKey:
|
|
description: This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.
|
|
Role:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
search:
|
|
description: Indicates this is a search directory
|
|
type: boolean
|
|
secondary:
|
|
description: Used by old clients to provide nested menus allowing for primative (but structured) navigation.
|
|
type: boolean
|
|
skipChildren:
|
|
description: When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.
|
|
type: boolean
|
|
skipParent:
|
|
description: When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).
|
|
type: boolean
|
|
Sort:
|
|
description: Typically only seen in metadata at a library's top level
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Sort'
|
|
studio:
|
|
description: When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).
|
|
subtype:
|
|
description: The subtype of the video item, such as `photo` when the video item is in a photo library
|
|
summary:
|
|
description: When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).
|
|
tagline:
|
|
description: When present, a pithy one-liner about the item (usually only seen for movies).
|
|
theme:
|
|
description: When present, the URL for theme music for the item (usually only for TV shows).
|
|
thumb:
|
|
description: When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.
|
|
titleSort:
|
|
description: Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).
|
|
updatedAt:
|
|
description: In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).
|
|
type: integer
|
|
userRating:
|
|
description: When the user has rated an item, this contains the user rating
|
|
type: number
|
|
minimum: 0
|
|
maximum: 10
|
|
viewCount:
|
|
description: When a users has completed watched or listened to an item, this attribute contains the number of consumptions.
|
|
type: integer
|
|
viewedLeafCount:
|
|
description: For shows and seasons, contains the number of viewed episodes.
|
|
type: integer
|
|
viewOffset:
|
|
description: When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.
|
|
type: integer
|
|
Writer:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Tag'
|
|
year:
|
|
description: When present, the year associated with the item's release (e.g. release year for a movie).
|
|
type: integer
|
|
Part:
|
|
description: |
|
|
`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
audioProfile:
|
|
example: lc
|
|
container:
|
|
description: The container of the media file, such as `mp4` or `mkv`
|
|
example: mov
|
|
duration:
|
|
description: The duration of the media item, in milliseconds
|
|
type: integer
|
|
example: 150192
|
|
file:
|
|
description: The local file path at which the part is stored on the server
|
|
example: /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov
|
|
has64bitOffsets:
|
|
type: boolean
|
|
example: false
|
|
id:
|
|
type: integer
|
|
example: 1
|
|
key:
|
|
description: The key from which the media can be streamed
|
|
example: /library/parts/1/1531779263/file.mov
|
|
optimizedForStreaming:
|
|
type: boolean
|
|
example: false
|
|
size:
|
|
description: The size of the media, in bytes
|
|
type: integer
|
|
example: 105355654
|
|
Stream:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/Stream'
|
|
videoProfile:
|
|
example: main
|
|
Player:
|
|
description: Information about the player being used for playback
|
|
type: object
|
|
properties:
|
|
title:
|
|
description: The title of the client
|
|
type: string
|
|
address:
|
|
description: The remote address
|
|
type: string
|
|
local:
|
|
description: Indicating if the client is playing from the local LAN
|
|
type: boolean
|
|
machineIdentifier:
|
|
description: The identifier of the client
|
|
type: string
|
|
model:
|
|
description: The model of the client
|
|
type: string
|
|
platform:
|
|
description: The platform of the client
|
|
type: string
|
|
platformVersion:
|
|
description: The platformVersion of the client
|
|
type: string
|
|
product:
|
|
description: The product name of the client
|
|
type: string
|
|
relayed:
|
|
description: Indicating if the client is playing over a relay connection
|
|
type: boolean
|
|
remotePublicAddress:
|
|
description: The client's public address
|
|
type: string
|
|
secure:
|
|
description: Indicating if the client is playing over HTTPS
|
|
type: boolean
|
|
state:
|
|
description: The client's last reported state
|
|
type: string
|
|
userID:
|
|
description: The id of the user
|
|
type: integer
|
|
vendor:
|
|
description: The vendor of the client
|
|
type: string
|
|
version:
|
|
description: The version of the client
|
|
type: string
|
|
ServerConfiguration:
|
|
allOf:
|
|
- $ref: '#/components/schemas/MediaContainer'
|
|
- type: object
|
|
properties:
|
|
allowCameraUpload:
|
|
type: boolean
|
|
allowChannelAccess:
|
|
type: boolean
|
|
allowMediaDeletion:
|
|
type: boolean
|
|
allowSharing:
|
|
type: boolean
|
|
allowSync:
|
|
type: boolean
|
|
allowTuners:
|
|
type: boolean
|
|
backgroundProcessing:
|
|
type: boolean
|
|
certificate:
|
|
type: boolean
|
|
companionProxy:
|
|
type: boolean
|
|
countryCode:
|
|
type: string
|
|
diagnostics:
|
|
type: string
|
|
eventStream:
|
|
type: boolean
|
|
friendlyName:
|
|
type: string
|
|
hubSearch:
|
|
type: boolean
|
|
itemClusters:
|
|
type: boolean
|
|
livetv:
|
|
type: integer
|
|
example: 7
|
|
machineIdentifier:
|
|
example: 0123456789abcdef0123456789abcdef012345678
|
|
mediaProviders:
|
|
type: boolean
|
|
multiuser:
|
|
type: boolean
|
|
musicAnalysis:
|
|
type: integer
|
|
example: 2
|
|
myPlex:
|
|
type: boolean
|
|
myPlexMappingState:
|
|
example: mapped
|
|
myPlexSigninState:
|
|
example: ok
|
|
myPlexSubscription:
|
|
type: boolean
|
|
myPlexUsername:
|
|
type: string
|
|
offlineTranscode:
|
|
example: 1
|
|
ownerFeatures:
|
|
description: A comma-separated list of features which are enabled for the server owner
|
|
type: string
|
|
platform:
|
|
type: string
|
|
platformVersion:
|
|
type: string
|
|
pluginHost:
|
|
type: boolean
|
|
pushNotifications:
|
|
type: boolean
|
|
readOnlyLibraries:
|
|
type: boolean
|
|
streamingBrainABRVersion:
|
|
type: integer
|
|
streamingBrainVersion:
|
|
type: integer
|
|
sync:
|
|
type: boolean
|
|
transcoderActiveVideoSessions:
|
|
type: integer
|
|
transcoderAudio:
|
|
type: boolean
|
|
transcoderLyrics:
|
|
type: boolean
|
|
transcoderPhoto:
|
|
type: boolean
|
|
transcoderSubtitles:
|
|
type: boolean
|
|
transcoderVideo:
|
|
type: boolean
|
|
transcoderVideoBitrates:
|
|
description: The suggested video quality bitrates to present to the user
|
|
transcoderVideoQualities:
|
|
type: string
|
|
transcoderVideoResolutions:
|
|
description: The suggested video resolutions to the above quality bitrates
|
|
updatedAt:
|
|
type: integer
|
|
updater:
|
|
type: boolean
|
|
version:
|
|
type: string
|
|
voiceSearch:
|
|
type: boolean
|
|
Session:
|
|
description: Information about the playback session
|
|
type: object
|
|
properties:
|
|
bandwidth:
|
|
description: The bandwidth used by this client's playback in kbps
|
|
type: integer
|
|
id:
|
|
description: The id of the playback session
|
|
type: string
|
|
location:
|
|
description: The location of the client
|
|
type: string
|
|
enum:
|
|
- lan
|
|
- wan
|
|
Setting:
|
|
description: A configuration setting or preference
|
|
type: object
|
|
properties:
|
|
type:
|
|
description: The type of the value of this setting
|
|
type: string
|
|
enum:
|
|
- bool
|
|
- int
|
|
- text
|
|
- double
|
|
default:
|
|
description: The default value of this setting
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: boolean
|
|
advanced:
|
|
description: Whether the setting is considered advanced and normally hidden from the user
|
|
type: boolean
|
|
enumValues:
|
|
description: The possible values for this setting if restricted. The list is `|` separated with `value:name` entries.
|
|
type: string
|
|
group:
|
|
description: The group name of this setting to aid in display of a hierarchy
|
|
type: string
|
|
hidden:
|
|
description: Whether the setting is hidden or not
|
|
type: boolean
|
|
id:
|
|
description: The query parameter name for this setting
|
|
type: string
|
|
label:
|
|
description: A user-friendly name for the setting
|
|
type: string
|
|
summary:
|
|
description: A description of the setting
|
|
type: string
|
|
value:
|
|
description: The current value of this setting
|
|
oneOf:
|
|
- type: string
|
|
- type: number
|
|
- type: boolean
|
|
Sort:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Directory'
|
|
- description: |
|
|
Each `Sort` object contains a description of the sort field.
|
|
type: object
|
|
properties:
|
|
title:
|
|
description: The title of the field.
|
|
type: string
|
|
default:
|
|
description: If present, this sort is the default and in this direction
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
defaultDirection:
|
|
description: This default diction of this sort
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
descKey:
|
|
description: The key for sorting this field in reverse order
|
|
type: string
|
|
firstCharacterKey:
|
|
description: The key to use to get items sorted by this field and indexed by the first character
|
|
type: string
|
|
key:
|
|
description: The key to use in the sort field to make items sort by this item
|
|
type: string
|
|
Stream:
|
|
description: |
|
|
`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).
|
|
type: object
|
|
additionalProperties: true
|
|
properties:
|
|
default:
|
|
type: boolean
|
|
example: true
|
|
audioChannelLayout:
|
|
example: stereo
|
|
bitDepth:
|
|
type: integer
|
|
example: 8
|
|
bitrate:
|
|
type: integer
|
|
example: 5466
|
|
canAutoSync:
|
|
description: For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video.
|
|
type: boolean
|
|
example: true
|
|
chromaLocation:
|
|
example: topleft
|
|
chromaSubsampling:
|
|
example: '4:2:0'
|
|
codec:
|
|
description: The codec of the stream, such as `h264` or `aac`
|
|
example: h264
|
|
colorPrimaries:
|
|
example: bt709
|
|
colorRange:
|
|
example: tv
|
|
colorSpace:
|
|
example: bt709
|
|
colorTrc:
|
|
example: bt709
|
|
displayTitle:
|
|
description: A friendly name for the stream, often comprised of the language and codec information
|
|
example: English (H.264 Main)
|
|
frameRate:
|
|
type: number
|
|
example: 23.976
|
|
hasScalingMatrix:
|
|
example: false
|
|
height:
|
|
type: integer
|
|
example: 544
|
|
id:
|
|
type: integer
|
|
example: 1
|
|
index:
|
|
description: If the stream is part of the `Part` and not an external resource, the index of the stream within that part
|
|
type: integer
|
|
example: 0
|
|
key:
|
|
description: If the stream is independently streamable, the key from which it can be streamed
|
|
example: /library/streams/1
|
|
language:
|
|
example: English
|
|
languageCode:
|
|
description: The three character language code for the stream contents
|
|
example: eng
|
|
level:
|
|
type: integer
|
|
example: 31
|
|
profile:
|
|
example: main
|
|
refFrames:
|
|
type: integer
|
|
example: 2
|
|
samplingRate:
|
|
type: integer
|
|
example: 48000
|
|
selected:
|
|
type: boolean
|
|
streamIdentifier:
|
|
type: integer
|
|
example: 1
|
|
streamType:
|
|
description: A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics
|
|
type: integer
|
|
example: 1
|
|
width:
|
|
type: integer
|
|
example: 1280
|
|
Tag:
|
|
description: |
|
|
A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes.
|
|
type: object
|
|
properties:
|
|
confidence:
|
|
description: Measure of the confidence of an automatic tag
|
|
type: number
|
|
context:
|
|
type: string
|
|
filter:
|
|
description: A filter parameter that can be used to query for more content that matches this tag value.
|
|
example: actor=49
|
|
id:
|
|
type: integer
|
|
ratingKey:
|
|
type: string
|
|
role:
|
|
description: The role this actor played
|
|
example: Secretary
|
|
tag:
|
|
description: The value of the tag (the name)
|
|
example: Shaun Lawton
|
|
tagKey:
|
|
description: Plex identifier for this tag which can be used to fetch additional information from plex.tv
|
|
example: 5d3ee12c4cde6a001c3e0b27
|
|
tagType:
|
|
type: integer
|
|
thumb:
|
|
example: http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg
|
|
Thumb:
|
|
type: string
|
|
Title:
|
|
type: string
|
|
TranscodeSession:
|
|
description: The transcode session if item is currently being transcoded
|
|
type: object
|
|
properties:
|
|
complete:
|
|
type: boolean
|
|
context:
|
|
type: string
|
|
duration:
|
|
type: integer
|
|
error:
|
|
type: boolean
|
|
key:
|
|
type: string
|
|
progress:
|
|
type: number
|
|
minimum: 0
|
|
maximum: 100
|
|
protocol:
|
|
type: string
|
|
size:
|
|
type: integer
|
|
sourceAudioCodec:
|
|
type: string
|
|
sourceVideoCodec:
|
|
type: string
|
|
speed:
|
|
type: number
|
|
throttled:
|
|
type: boolean
|
|
transcodeHwFullPipeline:
|
|
type: boolean
|
|
transcodeHwRequested:
|
|
type: boolean
|
|
Type:
|
|
type: string
|
|
User:
|
|
description: The user playing the content
|
|
type: object
|
|
properties:
|
|
title:
|
|
description: The username
|
|
type: string
|
|
id:
|
|
description: The id of the user
|
|
type: string
|
|
thumb:
|
|
description: Thumb image to display for the user
|
|
type: string
|