Complete Overhaul

This commit is contained in:
Luke Hagar
2025-10-12 02:02:41 +00:00
parent 6c561d8861
commit 27f81a04ba
423 changed files with 16791 additions and 196399 deletions

2
.gitattributes vendored
View File

@@ -1,2 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto

View File

@@ -1,32 +0,0 @@
name: Build and Copy Dereferenced Plex Media Server API Spec
on:
push:
branches:
- main
paths:
- src/**
workflow_dispatch:
jobs:
dereference_api:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Project Setup
uses: ./.github/workflows/steps/project-setup
- name: Dereference Plex Media Server Specification
run: bun run build
- name: Commit Dereferenced Specification File
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "build: dereferenced Plex Media Server API Spec updated"
skip_checkout: true
skip_fetch: true
add_options: "-f"
file_pattern: "./output/*.yaml"
skip_dirty_check: true

View File

@@ -1,55 +0,0 @@
name: Checks
"on":
pull_request:
paths:
- src/**
- tests/**
jobs:
unit-test:
name: Run Unit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Project Setup
uses: ./.github/workflows/steps/project-setup
- name: Bundle OpenAPI Spec
run: bun run build
- name: Run Unit Tests
run: bun run test
type-check:
name: Run Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Project Setup
uses: ./.github/workflows/steps/project-setup
- name: Run Unit Tests
run: bun run type-check
lint:
name: Run OpenApi Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Project Setup
uses: ./.github/workflows/steps/project-setup
- name: OpenAPI Lint
run: bun run lint
- name: Install Speakeasy CLI
run: bun run setup-speakeasy-cli
- name: Bundle OpenAPI Spec
run: bun run build
- name: OpenAPI Lint On Bundled Spec
run: bun run lint-bundled

View File

@@ -18,7 +18,7 @@ permissions:
- main
paths:
- .github/workflows/sdk_generation.yaml
- output/plex-media-server-spec-dereferenced.yaml
- ./plex-api-spec.yaml
jobs:
generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15

View File

@@ -1,12 +0,0 @@
name: "Project Setup"
description: "Setup Bun and install dependencies"
runs:
using: "composite"
steps:
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: "latest"
- name: Clean install node_modules
shell: bash
run: bun install

40
.gitignore vendored
View File

@@ -1,8 +1,34 @@
.idea
.spectral.mjs
.vscode
.stoplight
.stoplight.json
# dependencies (bun install)
node_modules
output
build
# output
out
dist
*.tgz
# code coverage
coverage
*.lcov
# logs
logs
_.log
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# caches
.eslintcache
.cache
*.tsbuildinfo
# IntelliJ based IDEs
.idea
# Finder (MacOS) folder config
.DS_Store

View File

@@ -1,5 +1,8 @@
# Ignore artifacts:
build
coverage
output
LICENSE.md
package-lock.json
package.json
tsconfig.json
README.md

View File

@@ -1,11 +1,3 @@
{
"insertPragma": false,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": false,
"bracketSpacing": true,
"proseWrap": "preserve",
"trailingComma": "none",
"endOfLine": "lf"
"plugins": ["prettier-plugin-openapi"]
}

View File

@@ -4,7 +4,3 @@ rulesets:
PathParamRuleset:
rulesets:
- speakeasy-generation # Use the speakeasy-generation ruleset as a base
rules:
path-params: {
severity: warn, # drop the severity of the `path-params` rule as I don't want this to block the pipeline
}

View File

@@ -9,12 +9,10 @@ sources:
- main
plexapi:
sourceNamespace: plexapi
sourceRevisionDigest: sha256:64fe40513ecf067dfc73c0539155098dc6a5bdc615803089ebb9697b3d270aba
sourceBlobDigest: sha256:a4c8aa152d9b3f8084032bc5e2388fe9e8ba13510d796c7d88e9177ac7845500
sourceRevisionDigest: sha256:edf35a1fb3134c8b4075473e08d8327bc3538a75ac07e31c2aaa0c687ad209cf
sourceBlobDigest: sha256:f7d882c21a49905c7811067bf4e730a3a5807253b505f1a42e483121e10af150
tags:
- latest
- speakeasy-sdk-regen-1760232837
- 0.0.3
targets: {}
workflow:
workflowVersion: 1.0.0
@@ -22,7 +20,7 @@ workflow:
sources:
plexapi:
inputs:
- location: ./output/plex-media-server-spec-dereferenced.yaml
- location: ./plex-api-spec.yaml
registry:
location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi
targets: {}

View File

@@ -3,7 +3,7 @@ speakeasyVersion: latest
sources:
plexapi:
inputs:
- location: ./output/plex-media-server-spec-dereferenced.yaml
- location: ./plex-api-spec.yaml
registry:
location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi
targets: {}

View File

@@ -1,7 +0,0 @@
Copyright 2024 Luke Hagar
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -22,82 +22,3 @@ The following SDKs are generated from the OpenAPI Specification. They are automa
| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - |
| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - |
| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - |
## Project Structure
The main OpenAPI Specification is located in the root directory as [pms-spec.yaml](https://github.com/LukeHagar/plex-api-spec/blob/main/src/pms-spec.yaml), which references the following directories:
- [**/paths**](https://github.com/LukeHagar/plex-api-spec/tree/main/paths): The endpoints for the Plex Media Server API. Each endpoint is defined in a separate file.
- [**/models**](https://github.com/LukeHagar/plex-api-spec/tree/main/models): The schema models used in the specification.
- [**/parameters**](https://github.com/LukeHagar/plex-api-spec/tree/main/parameters): The parameters used in the specification.
- [**/responses**](https://github.com/LukeHagar/plex-api-spec/tree/main/responses): The responses used in the specification.
In addition, there is a bundled single file OpenAPI Specification, [plex-media-server-spec-dereferenced.yaml](https://github.com/LukeHagar/plex-api-spec/blob/main/plex-media-server-spec-dereferenced.yaml) which is automatically bundled on any changes to the main specification.
## Style Guide
All spec files should adhere to the 3.1 OpenAPI Specification.
Reference documentation can be found [Here](https://www.speakeasy.com/openapi) and [Here](https://spec.openapis.org/oas/v3.1.0.html#openapi-specification).
Every endpoint is defined in the `/paths` directory, with Each endpoint defined in a separate file.
The file name should be the endpoint name with the method type. For example, the endpoint `/library/sections` is defined in the file `/paths/library_sections.get.yaml`.
The file should contain data in the following order:
```yaml
[get/post/put/delete]:
servers: # only specify if the endpoint requires a different server than the users plex server
security: # only specify if the endpoint requires authentication different from the global security
tags:
- example # a list of tags that the endpoint belongs to, this is used for grouping in the documentation and SDKs
summary: a brief description of the endpoint
description: a more detailed description of the endpoint
operationId: anExampleOperationId # camel case summarizing the action being performed.
parameters: # parameters are defined in the /parameters directory, or inline if they are not reused very much
- $ref: "../../parameters/..." # a reference to a parameter file in the /parameters directory
- name: example # a parameter that is not a reference
in: query # the location of the parameter, can be query, path, header, or cookie
description: an example parameter
required: true # whether the parameter is required or not, path parameters are always required. Only specify this key if the parameter is required
schema:
type: string
responses:
2XX:
$ref: "../../responses/..." # a reference to a response file in the /responses directory
4XX:
5XX:
```
### Headers
Plex Media Server accept a variety of custom headers that follow the pattern `X-Plex-{name}`.
The full set of headers isn't enumerated here since some may only apply to certain endpoints, but common headers that can be included on all requests include:
| Header | Description | Sample |
| --- | --- | --- |
| X-Plex-Client-Identifier | An opaque identifier unique to the client | abc123 |
| X-Plex-Token | An authentication token, obtained from plex.tv | XXXXXXXXXXXX |
| X-Plex-Product | The name of the client product | Plex for Roku |
| X-Plex-Version | The version of the client application | 2.4.1 |
| X-Plex-Platform | The platform of the client | Roku |
| X-Plex-Platform-Version | The version of the platform | 4.3 build 1057 |
| X-Plex-Device | A relatively friendly name for the client device | Roku 3 |
| X-Plex-Model | A potentially less friendly identifier for the device model | 4200X |
| X-Plex-Device-Vendor | The device vendor | Roku |
| X-Plex-Device-Name | A friendly name for the client | Living Room TV |
| X-Plex-Marketplace | The marketplace on which the client application is distributed | googlePlay |
X-Plex-Client-Identifier is typically required, as is X-Plex-Token for authentication.
### Rules
- A property in the response is only marked as required if it is always returned, regardless of the parameters sent with the request.
- Although Plex.tv API uses the `X-Plex-Token` as a query parameter, this specification will always define this as a header parameter where supported since this follows industry security standards.
- Though Plex does default return `XML` unless the `accept` header is set to `application/json`, this specification will not include the `accept` header in the endpoints. Assume it should always be included in the request.
- Parameters added to endpoints via reference should always be specified at the bottom of the paramters set, since there is a large set of common parameters that are used across all endpoints.
## Questions?
Reach out to me on the [Discord Server](https://discord.gg/mxqjsJHwUm)

BIN
bun.lockb

Binary file not shown.

1616
description.md Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,50 +0,0 @@
{
"name": "plex-api-spec",
"version": "1.0.0",
"description": "An open source Plex Media Server API Specification",
"main": "src/pms-spec.yaml",
"type": "module",
"author": "LukeHagar",
"keywords": [
"plex",
"api",
"specification",
"openapi",
"swagger"
],
"license": "MIT",
"scripts": {
"dev": "redocly preview -d=./src",
"preview-docs": "redocly preview-docs src/pms-spec.yaml --config=./redocly.yaml",
"stats": "redocly stats ./src/pms-spec.yaml",
"build": "swagger-cli bundle --dereference ./src/pms-spec.yaml -t yaml -o ./output/plex-media-server-spec-dereferenced.yaml",
"build-watch": "bun run build && chokidar './src/**/*' -c 'bun run build'",
"build-redocly": "redocly bundle ./src/pms-spec.yaml --ext yaml -o ./output/plex-media-server-spec-dereferenced.yaml",
"test": "bun run build && vitest --run",
"type-check": "tsc",
"setup-speakeasy-cli": "curl -fsSL https://raw.githubusercontent.com/speakeasy-api/speakeasy/main/install.sh | sh",
"format": "bun prettier . --write",
"lint": "redocly lint",
"lint-speakeasy": "speakeasy lint openapi -s ./src/pms-spec.yaml",
"lint-bundled": "speakeasy lint openapi -s ./output/plex-media-server-spec-dereferenced.yaml"
},
"devDependencies": {
"@modyfi/vite-plugin-yaml": "^1.1.1",
"@ngneat/falso": "^7.4.0",
"@redocly/cli": "^1.34.3",
"@types/lodash-es": "^4.17.12",
"@types/node": "^22.15.30",
"chokidar-cli": "^3.0.0",
"prettier": "3.5.3",
"swagger-cli": "^4.0.4",
"typescript": "^5.8.3",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.2.2",
"xml-js": "^1.6.11"
},
"dependencies": {
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"lodash-es": "^4.17.21"
}
}

15130
plex-api-spec.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +0,0 @@
extends:
- recommended-strict
apis:
core@v1:
root: ./src/pms-spec.yaml
rules:
no-ambiguous-paths: off
no-server-trailing-slash: off

View File

@@ -1,102 +0,0 @@
type: object
x-examples:
Example 1:
id: 373040866
code: 7RQZ
product: "0"
trusted: false
qr: "https://plex.tv/api/v2/pins/qr/7RQZ"
clientIdentifier: 9klpwueublnfbvlx95w83ah9
location:
code: NL
european_union_member: true
continent_code: EU
country: The Netherlands
city: Breda
time_zone: Europe/Amsterdam
postal_code: "4814"
in_privacy_restricted_country: true
in_privacy_restricted_region: true
subdivisions: North Brabant
coordinates: "51.5869, 4.7471"
expiresIn: 876
createdAt: "2024-07-16T17:03:05Z"
expiresAt: "2024-07-16T17:18:05Z"
authToken: null
newRegistration: null
title: AuthPinContainer
examples:
- id: 308667304
code: 7RQZ
product: "0"
trusted: false
qr: "https://plex.tv/api/v2/pins/qr/7RQZ"
clientIdentifier: string
location:
code: VI
continent_code: NA
country: United States Virgin Islands
city: Amsterdam
european_union_member: true
time_zone: America/St_Thomas
postal_code: 802
in_privacy_restricted_country: true
in_privacy_restricted_region: true
subdivisions: Saint Thomas
coordinates: "18.3381, -64.8941"
expiresIn: 876
createdAt: "2024-07-16T17:03:05Z"
expiresAt: "2024-07-16T17:18:05Z"
authToken: null
newRegistration: null
required:
- id
- code
- product
- trusted
- qr
- clientIdentifier
- location
- expiresIn
- createdAt
- expiresAt
properties:
id:
type: integer
example: 308667304
code:
type: string
example: 7RQZ
product:
type: string
example: "Tautulli"
trusted:
type: boolean
default: false
qr:
type: string
example: "https://plex.tv/api/v2/pins/qr/7RQZ"
clientIdentifier:
type: string
description: The X-Client-Identifier used in the request
example: "Tautulli"
location:
$ref: ./GeoData.yaml
expiresIn:
type: integer
example: 876
description: "The number of seconds this pin expires, by default 900 seconds"
default: 900
createdAt:
type: string
example: "2024-07-16T17:03:05Z"
format: date-time
expiresAt:
type: string
format: date-time
example: "2024-07-16T17:18:05Z"
authToken:
type: [string, "null"]
example: "gcgzw5rz2xovp84b4vha3a40"
newRegistration:
type: "null"

View File

@@ -1,85 +0,0 @@
title: Friend
type: object
examples:
- email: username@email.com
friendlyName: exampleUser
home: true
id: 0
restricted: false
sharedServers: []
sharedSources: []
status: accepted
thumb: "https://plex.tv/users/7d1916e0d8f6e76b/avatar?c=1694481578"
title: username123
username: username123
uuid: 7d1916e0d8f6e76b
required:
- email
- friendlyName
- home
- id
- restricted
- sharedServers
- sharedSources
- status
- thumb
- title
- username
- uuid
properties:
email:
type: string
format: email
example: username@email.com
description: The account email address
friendlyName:
examples:
- exampleUser
- null
type:
- string
- "null"
description: The account full name
home:
type: boolean
description: If the account is a Plex Home user
id:
type: integer
format: int32
description: The Plex account ID
restricted:
type: boolean
default: false
description: If the account is a Plex Home managed user
sharedServers:
type: array
items:
type: object
sharedSources:
type: array
items:
type: object
status:
examples:
- accepted
x-speakeasy-unknown-values: allow
enum:
- accepted
description: Current friend request status
thumb:
type: string
example: "https://plex.tv/users/7d1916e0d8f6e76b/avatar?c=1694481578"
format: uri
description: URL of the account thumbnail
title:
type: string
example: username123
description: The title of the account (username or friendly name)
username:
type: string
example: username123
description: The account username
uuid:
type: string
example: 7d1916e0d8f6e76b
description: The account Universally Unique Identifier (UUID)

View File

@@ -1,75 +0,0 @@
title: GeoData
type: object
description: "Geo location data"
examples:
- code: VI
continent_code: NA
country: United States Virgin Islands
city: Amsterdam
european_union_member: true
time_zone: America/St_Thomas
postal_code: 802
in_privacy_restricted_country: true
in_privacy_restricted_region: true
subdivisions: Saint Thomas
coordinates: "18.3381, -64.8941"
required:
- code
- continent_code
- country
- city
- european_union_member
- time_zone
- postal_code
- in_privacy_restricted_country
- in_privacy_restricted_region
- subdivisions
- coordinates
properties:
code:
type: string
description: The ISO 3166-1 alpha-2 code of the country.
example: VI
continent_code:
type: string
description: The continent code where the country is located.
example: NA
country:
type: string
description: The official name of the country.
example: United States Virgin Islands
city:
type: string
description: The name of the city.
example: Amsterdam
european_union_member:
type: boolean
description: Indicates if the country is a member of the European Union.
example: true
default: false
time_zone:
type: string
description: The time zone of the country.
example: America/St_Thomas
postal_code:
type: string
description: The postal code of the location.
example: "802"
in_privacy_restricted_country:
type: boolean
description: Indicates if the country has privacy restrictions.
example: true
default: false
in_privacy_restricted_region:
type: boolean
description: Indicates if the region has privacy restrictions.
example: true
default: false
subdivisions:
type: string
description: The name of the primary administrative subdivision.
example: Saint Thomas
coordinates:
type: string
description: "The geographical coordinates (latitude, longitude) of the location."
example: "18.3381, -64.8941"

View File

@@ -1,403 +0,0 @@
type: array
description: "An array of media file data items."
items:
type: object
required:
- id
properties:
id:
type: integer
description: "Unique media identifier."
example: 387322
duration:
type: integer
format: int32
description: "Duration of the media in milliseconds."
example: 9610350
bitrate:
type: integer
format: int32
description: "Bitrate in bits per second."
example: 25512
width:
type: integer
description: "Video width in pixels."
example: 3840
format: int32
height:
type: integer
description: "Video height in pixels."
example: 1602
format: int32
aspectRatio:
type: number
format: float
description: "Aspect ratio of the video."
example: 2.35
audioChannels:
type: integer
description: "Number of audio channels."
example: 6
format: int32
displayOffset:
type: integer
format: int32
example: 50
audioCodec:
type: string
description: "Audio codec used."
example: "eac3"
videoCodec:
type: string
description: "Video codec used."
example: "hevc"
videoResolution:
type: string
description: "Video resolution (e.g., 4k)."
example: "4k"
container:
type: string
description: "File container type."
example: "mkv"
videoFrameRate:
type: string
description: |
Frame rate of the video. Values found include NTSC, PAL, 24p
example: "24p"
videoProfile:
type: string
description: "Video profile (e.g., main 10)."
example: "main 10"
hasVoiceActivity:
type: boolean
description: "Indicates whether voice activity is detected."
example: false
audioProfile:
type: string
description: "The audio profile used for the media (e.g., DTS, Dolby Digital, etc.)."
example: "dts"
optimizedForStreaming:
description: "Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true"
oneOf:
- type: integer
format: int32
enum: [0, 1]
- type: boolean
enum: [true, false]
has64bitOffsets:
type: boolean
example: false
Part:
type: array
description: "An array of parts for this media item."
items:
type: object
required:
- id
- key
- file
- size
properties:
accessible:
type: boolean
description: "Indicates if the part is accessible."
example: true
exists:
type: boolean
description: "Indicates if the part exists."
example: true
id:
type: integer
description: "Unique part identifier."
example: 418385
key:
type: string
description: "Key to access this part."
example: "/library/parts/418385/1735864239/file.mkv"
indexes:
type: string
example: "sd"
duration:
type: integer
format: int32
description: "Duration of the part in milliseconds."
example: 9610350
file:
type: string
description: "File path for the part."
example: "/mnt/Movies_1/W/Wicked (2024).mkv"
size:
description: "File size in bytes."
type: integer
example: 30649952104
packetLength:
type: integer
format: int32
example: 188
container:
type: string
description: "Container format of the part."
example: "mkv"
videoProfile:
type: string
description: "Video profile for the part."
example: "main 10"
audioProfile:
type: string
description: "The audio profile used for the media (e.g., DTS, Dolby Digital, etc.)."
example: "dts"
has64bitOffsets:
type: boolean
example: false
optimizedForStreaming:
description: "Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true"
oneOf:
- type: integer
format: int32
enum: [0, 1]
- type: boolean
enum: [true, false]
hasThumbnail:
allOf:
- description: "Indicates if the part has a thumbnail."
- $ref: "../models/common/PlexBooleanString.yaml"
Stream:
type: array
description: "An array of streams for this part."
items:
type: object
required:
- id
- streamType
- codec
- displayTitle
- extendedDisplayTitle
properties:
id:
type: integer
description: "Unique stream identifier."
example: 1002625
streamType:
type: integer
oneOf:
- title: VIDEO
const: 1
description: Video stream
- title: AUDIO
const: 2
description: Audio stream
- title: SUBTITLE
const: 3
description: Subtitle stream
example: 1
description: |
Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
format:
type: string
description: "Format of the stream (e.g., srt)."
example: "srt"
default:
type: boolean
description: "Indicates if this stream is default."
example: true
codec:
type: string
description: "Codec used by the stream."
example: "hevc"
index:
type: integer
format: int32
description: "Index of the stream."
example: 0
bitrate:
type: integer
format: int32
description: "Bitrate of the stream."
example: 24743
language:
type: string
description: "Language of the stream."
example: "English"
languageTag:
type: string
description: "Language tag (e.g., en)."
example: "en"
languageCode:
type: string
description: "ISO language code."
example: "eng"
headerCompression:
type: boolean
description: "Indicates whether header compression is enabled."
example: true
DOVIBLCompatID:
type: integer
format: int32
description: "Dolby Vision BL compatibility ID."
example: 1
DOVIBLPresent:
type: boolean
description: "Indicates if Dolby Vision BL is present."
example: true
DOVIELPresent:
type: boolean
description: "Indicates if Dolby Vision EL is present."
example: false
DOVILevel:
type: integer
format: int32
description: "Dolby Vision level."
example: 6
DOVIPresent:
type: boolean
description: "Indicates if Dolby Vision is present."
example: true
DOVIProfile:
type: integer
format: int32
description: "Dolby Vision profile."
example: 8
DOVIRPUPresent:
type: boolean
description: "Indicates if Dolby Vision RPU is present."
example: true
DOVIVersion:
type: string
description: "Dolby Vision version."
example: "1.0"
bitDepth:
type: integer
format: int32
description: "Bit depth of the video stream."
example: 10
chromaLocation:
type: string
description: "Chroma sample location."
example: "topleft"
chromaSubsampling:
type: string
description: "Chroma subsampling format."
example: "4:2:0"
codedHeight:
type: integer
format: int32
description: "Coded video height."
example: 1608
codedWidth:
type: integer
format: int32
description: "Coded video width."
example: 3840
closedCaptions:
type: boolean
example: true
colorPrimaries:
type: string
description: "Color primaries used."
example: "bt2020"
colorRange:
type: string
description: "Color range (e.g., tv)."
example: "tv"
colorSpace:
type: string
description: "Color space."
example: "bt2020nc"
colorTrc:
type: string
description: "Color transfer characteristics."
example: "smpte2084"
frameRate:
type: number
format: float
description: "Frame rate of the stream."
example: 23.976
key:
type: string
description: "Key to access this stream part."
example: "/library/streams/216389"
height:
type: integer
format: int32
description: "Height of the video stream."
example: 1602
level:
type: integer
format: int32
description: "Video level."
example: 150
original:
type: boolean
description: "Indicates if this is the original stream."
example: true
hasScalingMatrix:
type: boolean
example: false
profile:
type: string
description: "Video profile."
example: "main 10"
scanType:
type: string
example: "progressive"
embeddedInVideo:
type: string
example: "progressive"
refFrames:
type: integer
format: int32
description: "Number of reference frames."
example: 1
width:
type: integer
format: int32
description: "Width of the video stream."
example: 3840
displayTitle:
type: string
description: "Display title for the stream."
example: "4K DoVi/HDR10 (HEVC Main 10)"
extendedDisplayTitle:
type: string
description: "Extended display title for the stream."
example: "4K DoVi/HDR10 (HEVC Main 10)"
selected:
type: boolean
description: "Indicates if this stream is selected (applicable for audio streams)."
example: true
forced:
type: boolean
example: true
channels:
type: integer
format: int32
description: "Number of audio channels (for audio streams)."
example: 6
audioChannelLayout:
type: string
description: "Audio channel layout."
example: "5.1(side)"
samplingRate:
type: integer
format: int32
description: "Sampling rate for the audio stream."
example: 48000
canAutoSync:
type: boolean
description: "Indicates if the stream can auto-sync."
example: false
hearingImpaired:
type: boolean
description: "Indicates if the stream is for the hearing impaired."
example: true
dub:
type: boolean
description: "Indicates if the stream is a dub."
example: true
title:
type: string
description: "Optional title for the stream (e.g., language variant)."
example: "SDH"

View File

@@ -1,136 +0,0 @@
type: object
description: |
The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
properties:
Type:
type: array
items:
type: object
required:
- key
- type
- title
- active
properties:
key:
type: string
example: "/library/sections/2/all?type=2"
type:
type: string
example: filter
subtype:
type: string
example: "clip"
title:
type: string
example: "TV Shows"
active:
type: boolean
example: false
Filter:
type: array
items:
type: object
required:
- filter
- filterType
- key
- title
- type
properties:
filter:
type: string
example: "genre"
filterType:
type: string
example: "string"
key:
type: string
example: "/library/sections/2/genre?type=2"
title:
type: string
example: "Genre"
type:
type: string
example: "filter"
advanced:
type: boolean
example: true
Sort:
type: array
items:
type: object
required:
- key
- title
- defaultDirection
properties:
default:
type: string
example: "asc"
active:
type: boolean
example: false
activeDirection:
$ref: "../models/common/PlexSortDirection.yaml"
defaultDirection:
$ref: "../models/common/PlexSortDirection.yaml"
descKey:
type: string
example: "titleSort:desc"
firstCharacterKey:
type: string
example: "/library/sections/2/firstCharacter"
key:
type: string
example: "titleSort"
title:
type: string
example: "Title"
Field:
type: array
items:
type: object
required:
- key
- title
- type
properties:
key:
type: string
example: "show.title"
title:
type: string
example: "Show Title"
type:
type: string
example: "string"
subType:
type: string
example: "rating"
FieldType:
type: array
items:
type: object
required:
- type
- Operator
properties:
type:
type: string
example: "tag"
Operator:
type: array
items:
type: object
required:
- key
- title
properties:
key:
type: string
example: "="
title:
type: string
example: "is"

View File

@@ -1,87 +0,0 @@
title: PastSubscription
type: object
required:
- id
- mode
- renewsAt
- endsAt
- canceled
- gracePeriod
- onHold
- canReactivate
- canUpgrade
- canDowngrade
- canConvert
- type
- transfer
- state
- billing
properties:
id:
type:
- string
- "null"
mode:
type:
- string
- "null"
renewsAt:
oneOf:
- $ref: "./common/PlexDateTime.yaml"
- type: "null"
endsAt:
oneOf:
- $ref: "./common/PlexDateTime.yaml"
- type: "null"
canceled:
type: boolean
example: false
default: false
gracePeriod:
type: boolean
example: false
default: false
onHold:
type: boolean
example: false
default: false
canReactivate:
type: boolean
example: false
default: false
canUpgrade:
type: boolean
example: false
default: false
canDowngrade:
type: boolean
example: false
default: false
canConvert:
type: boolean
example: false
default: false
type:
type: string
example: plexpass
transfer:
type:
- string
- "null"
state:
example: ended
x-speakeasy-unknown-values: allow
enum:
- ended
billing:
type: object
required:
- internalPaymentMethod
- paymentMethodId
properties:
internalPaymentMethod:
type: object
paymentMethodId:
type:
- integer
- "null"

View File

@@ -1,128 +0,0 @@
title: PlexDevice
type: object
required:
- name
- product
- productVersion
- platform
- platformVersion
- device
- clientIdentifier
- createdAt
- lastSeenAt
- provides
- ownerId
- sourceTitle
- publicAddress
- accessToken
- owned
- home
- synced
- relay
- presence
- httpsRequired
- publicAddressMatches
- dnsRebindingProtection
- natLoopbackSupported
- connections
properties:
name:
type: string
product:
type: string
productVersion:
type: string
platform:
type:
- "null"
- string
platformVersion:
type:
- "null"
- string
device:
type:
- "null"
- string
clientIdentifier:
type: string
createdAt:
allOf:
- $ref: "./common/PlexDateTimeISO.yaml"
- description: The time the device was created/registered
lastSeenAt:
allOf:
- $ref: "./common/PlexDateTimeISO.yaml"
- description: The last time the device was seen
provides:
type: string
ownerId:
description: ownerId is null when the device is owned by the token used to send the request
type:
- "null"
- integer
sourceTitle:
type:
- "null"
- string
publicAddress:
type: string
accessToken:
type: string
owned:
type: boolean
home:
type: boolean
synced:
type: boolean
relay:
type: boolean
presence:
type: boolean
httpsRequired:
type: boolean
publicAddressMatches:
type: boolean
dnsRebindingProtection:
type: boolean
natLoopbackSupported:
type: boolean
connections:
type: array
items:
type: object
required:
- protocol
- address
- port
- uri
- local
- relay
- IPv6
properties:
protocol:
description: The protocol used for the connection (http, https, etc)
example: "http"
type: string
enum:
- http
- https
address:
description: The (ip) address or domain name used for the connection
type: string
port:
description: The port used for the connection
type: integer
format: int32
uri:
description: The full URI of the connection
type: string
local:
description: If the connection is local address
type: boolean
relay:
description: If the connection is relayed through plex.direct
type: boolean
IPv6:
description: If the connection is using IPv6
type: boolean

View File

@@ -1,141 +0,0 @@
title: Subscription
type: object
properties:
features:
description: List of features allowed on your Plex Pass subscription
type: array
items:
type: string
#TODO This should become an enum once all values are known
description: |
- Android - Dolby Vision
- Android - PiP
- CU Sunset
- HRK_enable_EUR
- TREBLE-show-features
- ad-countdown-timer
- adaptive_bitrate
- album-types
- allow_dvr
- amazon-loop-debug
- avod-ad-analysis
- avod-new-media
- blacklist_get_signin
- boost-voices
- camera_upload
- client-radio-stations
- cloudflare-turnstile-required
- cloudsync
- collections
- comments_and_replies_push_notifications
- community_access_plex_tv
- companions_sonos
- content_filter
- custom-home-removal
- disable_home_user_friendships
- disable_sharing_friendships
- downloads-gating
- drm_support
- dvr
- dvr-block-unsupported-countries
- epg-recent-channels
- exclude restrictions
- federated-auth
- friend_request_push_notifications
- grandfather-sync
- guided-upgrade
- hardware_transcoding
- home
- hwtranscode
- imagga-v2
- increase-password-complexity
- ios14-privacy-banner
- iterable-notification-tokens
- item_clusters
- keep-payment-method
- kevin-bacon
- korea-consent
- le_isrg_root_x1
- lets_encrypt
- lightning-dvr-pivot
- live-tv-support-incomplete-segments
- livetv
- lyrics
- metadata_search
- music-analysis
- music_videos
- new_plex_pass_prices
- news-provider-sunset-modal
- nominatim
- pass
- photos-favorites
- photos-metadata-edition
- photosV6-edit
- photosV6-tv-albums
- pms_health
- premium-dashboard
- premium_music_metadata
- radio
- rate-limit-client-token
- scrobbling-service-plex-tv
- session_bandwidth_restrictions
- session_kick
- shared_server_notification
- shared_source_notification
- signin_notification
- signin_with_apple
- silence-removal
- sleep-timer
- spring_serve_ad_provider
- sync
- sweet-fades
- transcoder_cache
- trailers
- tuner-sharing
- two-factor-authentication
- unsupportedtuners
- upgrade-3ds2
- visualizers
- vod-schema
- vod_cloudflare
- volume-leveling
- watch-together-invite
- watchlist-rss
- web_server_dashboard
- webhooks
- blacklist-subnets
- chromecast-music-mp
- Sync v3
- livetv-platform-specific
- nonAnonymousAccount
- parental-controls
- Subtitles on Demand
- ultrablur
- web-desktop-gracenote-banner
active:
description: If the account's Plex Pass subscription is active
type: boolean
example: true
subscribedAt:
description: Date the account subscribed to Plex Pass
type:
- string
- "null"
example: "2021-04-12T18:21:12Z"
status:
description: String representation of subscriptionActive
example: Inactive
x-speakeasy-unknown-values: allow
enum:
- Inactive
- Active
paymentService:
description: Payment service used for your Plex Pass subscription
type:
- string
- "null"
plan:
description: Name of Plex Pass subscription plan
type:
- string
- "null"

View File

@@ -1,247 +0,0 @@
title: UserPlexAccount
type: object
required:
- adsConsent
- adsConsentReminderAt
- adsConsentSetAt
- anonymous
- authToken
- backupCodesCreated
- confirmed
- country
- email
- emailOnlyAuth
- experimentalFeatures
- friendlyName
- entitlements
- guest
- hasPassword
- home
- homeAdmin
- homeSize
- id
- joinedAt
- locale
- mailingListActive
- mailingListStatus
- maxHomeSize
- profile
- protected
- rememberExpiresAt
- restricted
- scrobbleTypes
- services
- subscription
- subscriptionDescription
- thumb
- title
- twoFactorEnabled
- username
- uuid
- attributionPartner
properties:
adsConsent:
type:
- boolean
- "null"
description: Unknown
adsConsentReminderAt:
oneOf:
- $ref: "./common/PlexDateTime.yaml"
- type: "null"
adsConsentSetAt:
oneOf:
- $ref: "./common/PlexDateTime.yaml"
- type: "null"
anonymous:
type:
- boolean
- "null"
description: Unknown
default: false
authToken:
type: string
description: The account token
example: CxoUzBTSV5hsxjTpFKaf
backupCodesCreated:
type: boolean
description: If the two-factor authentication backup codes have been created
default: false
confirmed:
type: boolean
description: If the account has been confirmed
default: false
country:
type: string
description: The account country
example: US
maxLength: 2
minLength: 2
email:
type: string
description: The account email address
format: email
example: username@email.com
emailOnlyAuth:
type: boolean
description: If login with email only is enabled
default: false
experimentalFeatures:
type: boolean
description: If experimental features are enabled
default: false
friendlyName:
type: string
description: Your account full name
example: friendlyUsername
entitlements:
type: array
description: List of devices your allowed to use with this account
items:
type: string
example: "[]"
guest:
type: boolean
description: If the account is a Plex Home guest user
default: false
hasPassword:
type: boolean
description: If the account has a password
default: true
home:
type: boolean
description: If the account is a Plex Home user
default: false
homeAdmin:
type: boolean
description: If the account is the Plex Home admin
default: false
homeSize:
type: integer
description: The number of accounts in the Plex Home
example: 1
format: int32
id:
type: integer
description: The Plex account ID
example: 13692262
format: int32
joinedAt:
$ref: "./common/PlexDateTime.yaml"
locale:
type:
- string
- "null"
description: The account locale
mailingListActive:
type: boolean
description: If you are subscribed to the Plex newsletter
default: false
mailingListStatus:
description: Your current mailing list status (active or unsubscribed)
type: string
example: active
x-speakeasy-unknown-values: allow
enum:
- active
- unsubscribed
maxHomeSize:
type: integer
description: The maximum number of accounts allowed in the Plex Home
example: 15
format: int32
pin:
type: string
description: "[Might be removed] The hashed Plex Home PIN "
deprecated: true
profile:
$ref: ./UserProfile.yaml
protected:
type: boolean
description: If the account has a Plex Home PIN enabled
default: false
rememberExpiresAt:
$ref: "./common/PlexDateTime.yaml"
restricted:
type: boolean
description: If the account is a Plex Home managed user
default: false
roles:
type: array
description: "[Might be removed] List of account roles. Plexpass membership listed here"
items:
type: string
scrobbleTypes:
type: string
description: Unknown
services:
type: array
items:
type: object
required:
- identifier
- endpoint
- token
- secret
- status
properties:
identifier:
type: string
example: metadata-dev
endpoint:
type: string
example: "https://epg.provider.plex.tv"
format: uri
token:
type:
- string
- "null"
example: DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv
secret:
type:
- string
- "null"
status:
example: online
x-speakeasy-unknown-values: allow
enum:
- online
- offline
subscription:
$ref: ./Subscription.yaml
description: If the accounts Plex Pass subscription is active
subscriptionDescription:
type:
- string
- "null"
description: Description of the Plex Pass subscription
subscriptions:
type: array
items:
$ref: ./Subscription.yaml
thumb:
type: string
description: URL of the account thumbnail
format: uri
example: "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101"
title:
type: string
description: The title of the account (username or friendly name)
example: UsernameTitle
twoFactorEnabled:
type: boolean
description: If two-factor authentication is enabled
default: false
username:
type: string
description: The account username
example: Username
uuid:
type: string
description: The account UUID
example: dae343c1f45beb4f
attributionPartner:
type:
- string
- "null"
example: null

View File

@@ -1,56 +0,0 @@
title: UserProfile
type: object
required:
- autoSelectAudio
- defaultAudioLanguage
- defaultSubtitleLanguage
- autoSelectSubtitle
- defaultSubtitleAccessibility
- defaultSubtitleForced
- watchedIndicator
- mediaReviewsVisibility
properties:
autoSelectAudio:
description: If the account has automatically select audio and subtitle tracks enabled
type: boolean
example: true
default: true
defaultAudioLanguage:
description: The preferred audio language for the account
type:
- string
- "null"
example: ja
defaultSubtitleLanguage:
description: The preferred subtitle language for the account
type:
- string
- "null"
example: en
autoSelectSubtitle:
allOf:
- $ref: "./common/PlexBoolean.yaml"
- description: "The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)"
defaultSubtitleAccessibility:
allOf:
- $ref: "./common/PlexBoolean.yaml"
- description: "The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles)"
defaultSubtitleForced:
allOf:
- $ref: "./common/PlexBoolean.yaml"
- description: "The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles)"
watchedIndicator:
allOf:
- $ref: "./common/PlexBoolean.yaml"
- description: "Whether or not media watched indicators are enabled (little orange dot on media)"
mediaReviewsVisibility:
allOf:
- $ref: "./common/PlexBoolean.yaml"
- description: "Whether or not the account has media reviews visibility enabled"

View File

@@ -1,8 +0,0 @@
type: object
required:
- endTimeOffset
description: "The end time offset for the chapter"
properties:
endTimeOffset:
type: integer
example: 100100

View File

@@ -1,8 +0,0 @@
type: object
required:
- filter
description: "The filter for the chapter"
properties:
filter:
type: string
example: "thumb=4"

View File

@@ -1,8 +0,0 @@
type: object
required:
- id
description: "The identifier for the chapter"
properties:
id:
type: integer
example: 4

View File

@@ -1,8 +0,0 @@
type: object
required:
- index
description: "The index for the chapter"
properties:
index:
type: integer
example: 1

View File

@@ -1,8 +0,0 @@
type: object
required:
- startTimeOffset
description: "The start time offset for the chapter"
properties:
startTimeOffset:
type: integer
example: 0

View File

@@ -1,8 +0,0 @@
type: object
required:
- thumb
description: "The thumbnail for the chapter"
properties:
thumb:
type: string
example: "/library/media/46883/chapterImages/1"

View File

@@ -1,8 +0,0 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The user-made collection this media item belongs to
example: My Awesome Collection

View File

@@ -1,10 +0,0 @@
type: integer
format: int32
enum:
- 0
- 1
example: 1
default: 0
x-speakeasy-enums:
- DISABLE
- ENABLE

View File

@@ -1,9 +0,0 @@
type: string
enum:
- "0"
- "1"
example: "1"
default: "0"
x-speakeasy-enums:
- FALSE
- TRUE

View File

@@ -1,5 +0,0 @@
type:
- integer
example: 1556281940
description: Unix epoch datetime in seconds
format: int64

View File

@@ -1,3 +0,0 @@
type: string
format: date-time
example: "2019-06-24T11:38:02Z"

View File

@@ -1,23 +0,0 @@
type: integer
x-speakeasy-unknown-values: allow
enum:
- 1 # MOVIE
- 2 # TV_SHOW
- 3 # SEASON
- 4 # EPISODE
- 5 # ARTIST
- 6 # ALBUM
- 7 # TRACK
- 8 # PHOTO_ALBUM
- 9 # PHOTO
example: 2
x-speakeasy-enums:
- MOVIE
- TV_SHOW
- SEASON
- EPISODE
- ARTIST
- ALBUM
- TRACK
- PHOTO_ALBUM
- PHOTO

View File

@@ -1,27 +0,0 @@
type: string
x-speakeasy-unknown-values: allow
enum:
- movie
- show
- season
- episode
- artist
- album
- track
- photoalbum
- photo
- collection
example: "movie"
description: |
The type of media content in the Plex library. This can represent videos, music, or photos.
x-speakeasy-enums:
- MOVIE
- TV_SHOW
- SEASON
- EPISODE
- ARTIST
- ALBUM
- TRACK
- PHOTO_ALBUM
- PHOTO
- COLLECTION

View File

@@ -1,11 +0,0 @@
type: string
enum:
- asc
- desc
example: asc
default: asc
description: |
The direction of the sort. Can be either `asc` or `desc`.
x-speakeasy-enums:
- ASCENDING
- DESCENDING

View File

@@ -1,8 +0,0 @@
type: object
required:
- filter
description: "The filter query string for country media items."
properties:
filter:
type: string
example: "country=19"

View File

@@ -1,12 +0,0 @@
type: object
required:
- id
properties:
id:
description: |
The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
type: integer
format: int32
minimum: 1
example: 259

View File

@@ -1,8 +0,0 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The country of origin of this media item
example: United States of America

View File

@@ -1,8 +0,0 @@
type: object
required:
- filter
properties:
filter:
description: "The filter string used to query this director."
type: string
example: "director=235876"

View File

@@ -1,10 +0,0 @@
type: object
required:
- id
properties:
id:
description: "Unique identifier for the director."
type: integer
format: int32
minimum: 1
example: 126522

View File

@@ -1,9 +0,0 @@
type: object
required:
- tagKey
properties:
tagKey:
description: "A unique 24-character hexadecimal key associated with the director's tag, used for internal identification."
type: string
pattern: "^[a-fA-F0-9]{24}$"
example: "5d776831151a60001f24d031"

View File

@@ -1,8 +0,0 @@
type: object
required:
- tag
properties:
tag:
type: string
description: The role of Director
example: Danny Boyle

View File

@@ -1,6 +0,0 @@
type: object
properties:
thumb:
description: "The absolute URL of the thumbnail image for the director."
type: string
example: "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"

View File

@@ -1,8 +0,0 @@
type: object
required:
- agent
properties:
agent:
type: string
description: The Plex agent used to match and retrieve media metadata.
example: tv.plex.agents.movie

View File

@@ -1,8 +0,0 @@
type: object
required:
- composite
properties:
composite:
type: string
description: The relative path to the composite media item.
example: /library/sections/1/composite/1743824484

View File

@@ -1,11 +0,0 @@
type: object
required:
- contentChangedAt
properties:
contentChangedAt:
type: integer
format: int64
description: |
Timestamp (in seconds) representing the last time the content was modified.
NOTE: Some Plex server have some absurd values for this field, like 8457612157633039800 so it should be int64
example: 9173960

View File

@@ -1,8 +0,0 @@
type: object
required:
- content
properties:
content:
type: boolean
description: UNKNOWN
example: true

View File

@@ -1,8 +0,0 @@
type: object
properties:
createdAt:
allOf:
- $ref: "../../models/common/PlexDateTime.yaml"
- description: "The date and time when the library was created."
type: integer
format: int64

View File

@@ -1,8 +0,0 @@
type: object
required:
- directory
properties:
directory:
type: boolean
description: UNKNOWN
example: true

View File

@@ -1,8 +0,0 @@
type: object
required:
- filters
properties:
filters:
type: boolean
description: UNKNOWN
example: true

View File

@@ -1,18 +0,0 @@
type: object
required:
- hidden
properties:
hidden:
type: integer
format: int32
enum:
- 0
- 1
- 2
example: 1
default: 0
x-speakeasy-enums:
- VISIBLE
- EXCLUDE_HOME_SCREEN
- EXCLUDE_HOME_SCREEN_AND_GLOBAL_SEARCH
description: The Plex library visibility setting

View File

@@ -1,8 +0,0 @@
type: object
required:
- key
properties:
key:
type: string
description: The library key representing the unique identifier
example: "1"

View File

@@ -1,8 +0,0 @@
type: object
required:
- language
properties:
language:
type: string
description: The Plex library language that has been set
example: en-US

View File

@@ -1,8 +0,0 @@
type: object
required:
- refreshing
properties:
refreshing:
type: boolean
description: "Indicates whether the library is currently being refreshed or updated"
example: true

View File

@@ -1,6 +0,0 @@
type: object
required:
- scannedAt
properties:
scannedAt:
$ref: "../../models/common/PlexDateTime.yaml"

View File

@@ -1,8 +0,0 @@
type: object
required:
- scanner
properties:
scanner:
type: string
description: UNKNOWN
example: Plex Movie

View File

@@ -1,8 +0,0 @@
type: object
required:
- title
properties:
title:
type: string
description: "The title of the library"
example: "Movies"

View File

@@ -1,9 +0,0 @@
type: object
required:
- type
properties:
type:
allOf:
- $ref: "../common/PlexMediaTypeString.yaml"
- type: string
description: "The library type"

View File

@@ -1,6 +0,0 @@
type: object
required:
- updatedAt
properties:
updatedAt:
$ref: "../../models/common/PlexDateTime.yaml"

View File

@@ -1,8 +0,0 @@
type: object
required:
- uuid
properties:
uuid:
type: string
description: "The universally unique identifier for the library."
example: "e69655a2-ef48-4aba-bb19-01e7d3cc34d6"

View File

@@ -1,8 +0,0 @@
type: object
required:
- filter
description: "The filter query string for similar items."
properties:
filter:
type: string
example: "genre=19"

View File

@@ -1,12 +0,0 @@
type: object
required:
- id
properties:
id:
description: |
The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
type: integer
format: int32
minimum: 1
example: 259

View File

@@ -1,9 +0,0 @@
type: object
required:
- tag
properties:
tag:
type: string
description: |
The genre name of this media-item
example: "Crime"

View File

@@ -1,13 +0,0 @@
type: object
description: "Attributes associated with the marker."
required:
- id
properties:
id:
type: integer
description: "The identifier for the attributes."
example: 306970
version:
type: integer
description: "The version number of the marker attributes."
example: 4

View File

@@ -1,8 +0,0 @@
type: object
required:
- endTimeOffset
description: "The end time offset for the marker"
properties:
endTimeOffset:
type: integer
example: 4393389

View File

@@ -1,6 +0,0 @@
type: object
description: "The final status of the marker"
properties:
final:
type: boolean
example: true

View File

@@ -1,8 +0,0 @@
type: object
required:
- id
description: "The identifier for the marker"
properties:
id:
type: integer
example: 306970

View File

@@ -1,8 +0,0 @@
type: object
required:
- startTimeOffset
description: "The start time offset for the marker"
properties:
startTimeOffset:
type: integer
example: 4176050

View File

@@ -1,8 +0,0 @@
type: object
required:
- type
description: "The type of the marker"
properties:
type:
type: string
example: "credits"

View File

@@ -1,8 +0,0 @@
type: object
required:
- allowSync
properties:
allowSync:
type: boolean
description: "Indicates whether syncing is allowed."
example: false

View File

@@ -1,8 +0,0 @@
type: object
required:
- art
properties:
art:
type: string
description: "URL for the background artwork of the media container."
example: "/:/resources/show-fanart.jpg"

View File

@@ -1,8 +0,0 @@
type: object
required:
- content
properties:
content:
type: string
description: "The content type or mode."
example: "secondary"

View File

@@ -1,8 +0,0 @@
type: object
required:
- identifier
properties:
identifier:
type: string
description: "An plugin identifier for the media container."
example: "com.plexapp.plugins.library"

View File

@@ -1,6 +0,0 @@
type: object
properties:
librarySectionID:
type: integer
description: "The unique identifier for the library section."
example: 2

View File

@@ -1,8 +0,0 @@
type: object
required:
- librarySectionKey
properties:
librarySectionKey:
type: integer
description: "The unique identifier for the library section."
example: 2

View File

@@ -1,6 +0,0 @@
type: object
properties:
librarySectionTitle:
type: string
description: "The title of the library section."
example: "TV Series"

View File

@@ -1,6 +0,0 @@
type: object
properties:
librarySectionUUID:
type: string
description: "The universally unique identifier for the library section."
example: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36"

View File

@@ -1,8 +0,0 @@
type: object
required:
- mediaTagPrefix
properties:
mediaTagPrefix:
type: string
description: "The prefix used for media tag resource paths."
example: "/system/bundle/media/flags/"

View File

@@ -1,8 +0,0 @@
type: object
required:
- mediaTagVersion
properties:
mediaTagVersion:
type: integer
description: "The version number for media tags."
example: 1734362201

View File

@@ -1,6 +0,0 @@
type: object
properties:
mixedParents:
type: boolean
description: "Indicates if the media container has mixed parents."
example: true

View File

@@ -1,8 +0,0 @@
type: object
required:
- nocache
properties:
nocache:
type: boolean
description: "Specifies whether caching is disabled."
example: true

View File

@@ -1,8 +0,0 @@
type: object
required:
- offset
properties:
offset:
type: integer
description: "Offset value for pagination."
example: 0

View File

@@ -1,6 +0,0 @@
type: object
properties:
count:
description: "The number of items associated with this search result."
type: integer
example: 10

View File

@@ -1,6 +0,0 @@
type: object
properties:
filter:
description: "The filter string used to query this specific item in the library."
type: string
example: "actor=197429"

View File

@@ -1,5 +0,0 @@
type: object
properties:
id:
type: integer
example: 197429

View File

@@ -1,6 +0,0 @@
type: object
properties:
key:
description: "The unique identifier path for the search result item."
type: string
example: "/library/sections/3/all?actor=197429"

View File

@@ -1,6 +0,0 @@
type: object
properties:
librarySectionID:
description: "The unique identifier of the library section containing this item."
type: integer
example: 3

View File

@@ -1,6 +0,0 @@
type: object
properties:
librarySectionKey:
description: "The path to access the library section containing this item."
type: string
example: "/library/sections/3"

View File

@@ -1,5 +0,0 @@
type: object
properties:
librarySectionTitle:
type: string
example: "Movies"

View File

@@ -1,9 +0,0 @@
type: object
properties:
librarySectionType:
type: integer
oneOf:
- const: 1
title: Movie
- const: 2
title: TV Show

View File

@@ -1,6 +0,0 @@
type: object
properties:
tagKey:
description: "The unique identifier for the tag associated with this search result."
type: string
example: "5d776826999c64001ec2c606"

View File

@@ -1,10 +0,0 @@
type: object
properties:
tagType:
description: "The type of tag associated with this search result (e.g., Director, Actor)."
type: integer
oneOf:
- const: 4
title: Director
- const: 6
title: Actor

Some files were not shown because too many files have changed in this diff Show More