diff --git a/static/plex-media-server-spec-dereferenced.yaml b/static/plex-media-server-spec-dereferenced.yaml index fa8dfaa..fd3d4f6 100644 --- a/static/plex-media-server-spec-dereferenced.yaml +++ b/static/plex-media-server-spec-dereferenced.yaml @@ -1,16 +1,15 @@ openapi: 3.1.0 info: - title: Plex-API - summary: A Plex Media Server API Map - description: An Open API Spec for interacting with Plex.tv and Plex Servers version: 0.0.3 + title: Plex-API + description: An Open API Spec for interacting with Plex.tv contact: name: Luke Hagar url: 'https://www.LukeHagar.com' email: Lukeslakemail@gmail.com license: + url: 'https://opensource.org/license/mit' name: MIT - identifier: MIT servers: - url: '{protocol}://{ip}:{port}' description: The full address of your Plex Server @@ -1098,6 +1097,130 @@ paths: status: type: number example: 401 + /friends: + get: + servers: + - url: 'https://plex.tv/api/v2' + tags: + - Plex + summary: Get list of friends of the user logged in + description: Get friends of provided auth token. + operationId: getUserFriends + responses: + '200': + description: Friends Data + content: + application/json: + schema: + type: array + items: + 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 + 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) + '400': + description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' + '401': + description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + code: + type: number + example: 1001 + message: + type: string + example: User could not be authenticated + status: + type: number + example: 401 /geoip: get: servers: @@ -4715,6 +4838,165 @@ paths: status: type: number example: 401 + /resources: + get: + servers: + - url: 'https://plex.tv/api/v2' + security: [] + tags: + - Plex + summary: Get Devices + description: Get Devices + operationId: getDevices + parameters: + - name: X-Plex-Client-Identifier + description: | + The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + in: header + schema: + type: string + example: Postman + required: true + - name: includeHttps + in: query + description: Include Https entries in the results + schema: + type: integer + enum: + - 0 + - 1 + - name: includeRelay + in: query + description: Include Relay addresses in the results + schema: + type: integer + enum: + - 0 + - 1 + - name: includeIPv6 + in: query + description: Include IPv6 entries in the results + schema: + type: integer + enum: + - 0 + - 1 + responses: + '200': + description: List of Plex Devices. This includes Plex hosted servers and clients + content: + application/json: + schema: + type: array + items: + title: PlexDevice + type: object + required: + - name + - product + - productVersion + - platform + - platformVersion + - device + - clientIdentifier + - createdAt + - lastSeenAt + - provides + properties: + name: + type: string + product: + type: string + productVersion: + type: string + platform: + type: string + platformVersion: + type: string + device: + type: string + clientIdentifier: + type: string + createdAt: + type: string + format: date-time + lastSeenAt: + type: string + format: date-time + provides: + type: string + ownerId: + type: string + format: nullable + sourceTitle: + type: string + format: nullable + 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 + properties: + protocol: + type: string + address: + type: string + port: + type: number + uri: + type: string + local: + type: boolean + relay: + type: boolean + IPv6: + type: boolean + '400': + description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' + '401': + description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + code: + type: number + example: 1001 + message: + type: string + example: User could not be authenticated + status: + type: number + example: 401 /log: get: tags: @@ -5090,7 +5372,7 @@ paths: required: true responses: '200': - description: The Pin + description: Requests a new pin id used in the authentication flow content: application/json: schema: @@ -5269,46 +5551,37 @@ paths: newRegistration: type: 'null' '400': + description: Bad Request response when the X-Plex-Client-Identifier is missing content: application/json: schema: - description: Bad Request - X-Plex-Client-Identifier is missing - content: - application/json: - schema: + type: object + properties: + errors: + type: array + items: type: object properties: - errors: - type: array - items: - type: object - properties: - code: - type: integer - example: 1000 - message: - type: string - example: X-Plex-Client-Identifier is missing - status: - type: integer - example: 400 + code: + type: integer + example: 1000 + message: + type: string + example: X-Plex-Client-Identifier is missing + status: + type: integer + example: 400 '/pins/{pinID}': get: servers: - url: 'https://plex.tv/api/v2' + security: [] tags: - Plex - summary: Get Access Token - operationId: getToken - description: Retrieve an Access Token from Plex.tv after the Pin has already been authenticated - security: [] + summary: Get Access Token by PinId + description: Retrieve an Access Token from Plex.tv after the Pin has been authenticated + operationId: getTokenByPinId parameters: - - name: pinID - description: The PinID to retrieve an access token for - in: path - schema: - type: string - required: true - name: X-Plex-Client-Identifier description: | The unique identifier for the client application @@ -5319,9 +5592,15 @@ paths: type: string example: Postman required: true + - name: pinID + description: The PinID to retrieve an access token for + in: path + required: true + schema: + type: integer responses: '200': - description: The Pin + description: The Pin with a non-null authToken when it has been verified by the user content: application/json: schema: @@ -5503,7 +5782,7 @@ paths: content: application/json: schema: - description: Bad Request - X-Plex-Client-Identifier is missing + description: Bad Request response when the X-Plex-Client-Identifier is missing content: application/json: schema: @@ -5523,6 +5802,28 @@ paths: status: type: integer example: 400 + '404': + description: Not Found or Expired + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + code: + type: integer + example: 1020 + message: + type: string + example: Code not found or expired + example: + errors: + - code: 1020 + message: Code not found or expired /playlists: post: tags: @@ -8418,6 +8719,1325 @@ paths: status: type: number example: 401 + /user: + get: + servers: + - url: 'https://plex.tv/api/v2' + tags: + - Plex + summary: Get UserData By Token + description: Get the User data from the provided X-Plex-Token + operationId: getUserDetails + responses: + '200': + description: Logged in user details + content: + application/json: + schema: + title: UserPlexAccount + type: object + examples: + - adsConsent: true + adsConsentReminderAt: '2019-08-24T14:15:22Z' + adsConsentSetAt: '2019-08-24T14:15:22Z' + anonymous: false + authToken: CxoUzBTSV5hsxjTpFKaf + backupCodesCreated: false + confirmed: false + country: US + email: username@email.com + emailOnlyAuth: false + experimentalFeatures: false + friendlyName: friendlyUsername + entitlements: [] + guest: false + hasPassword: true + home: false + homeAdmin: false + homeSize: 1 + id: 13692262 + joinedAt: 1721154902 + locale: null + mailingListActive: false + mailingListStatus: subscribed + maxHomeSize: 15 + pastSubscriptions: + - id: string + mode: string + renewsAt: string + endsAt: '1556281940' + canceled: '0' + gracePeriod: '0' + onHold: '0' + canReactivate: '0' + canUpgrade: '0' + canDowngrade: '0' + canConvert: '0' + type: plexpass + transfer: string + state: ended + billing: + - internalPaymentMethod: string + paymentMethodId: string + pin: string + profile: + - autoSelectAudio: true + defaultAudioLanguage: ja + defaultSubtitleLanguage: en + autoSelectSubtitle: 1 + defaultSubtitleAccessibility: 1 + defaultSubtitleForced: 0 + watchedIndicator: 1 + mediaReviewsVisibility: 0 + protected: false + rememberExpiresAt: 1722364046 + restricted: false + roles: + - string + scrobbleTypes: '' + services: + - identifier: metadata-dev + endpoint: 'https://epg.provider.plex.tv' + token: DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv + secret: string + status: online + subscription: + features: + - Android - Dolby Vision + active: true + subscribedAt: '2021-04-12T18:21:12Z' + status: Inactive + paymentService: string + plan: string + subscriptionDescription: string + subscriptions: + - features: + - Android - Dolby Vision + active: true + subscribedAt: '2021-04-12T18:21:12Z' + status: Inactive + paymentService: string + plan: string + thumb: 'https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101' + title: UsernameTitle + trials: + - {} + twoFactorEnabled: false + username: Username + uuid: dae343c1f45beb4f + 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 + - subscriptions + - thumb + - title + - twoFactorEnabled + - username + - uuid + properties: + adsConsent: + type: + - boolean + - 'null' + description: Unknown + adsConsentReminderAt: + type: + - string + - 'null' + description: Unknown + format: date-time + adsConsentSetAt: + type: + - string + - 'null' + description: Unknown + format: date-time + anonymous: + type: boolean + 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: + type: integer + description: Unix epoch datetime the account joined Plex + format: int32 + example: 1721154902 + 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 + enum: + - subscribed + - 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: + type: array + items: + title: UserProfile + type: object + properties: + autoSelectAudio: + type: boolean + example: true + default: true + description: If the account has automatically select audio and subtitle tracks enabled + defaultAudioLanguage: + type: string + example: ja + description: The preferred audio language for the account + defaultSubtitleLanguage: + type: string + example: en + description: The preferred subtitle language for the account + autoSelectSubtitle: + type: integer + example: 1 + description: 'The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)' + defaultSubtitleAccessibility: + type: integer + example: 1 + 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 shown non-SDH subtitles)' + defaultSubtitleForced: + type: integer + example: 0 + 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: + type: integer + example: 1 + mediaReviewsVisibility: + type: integer + example: 0 + protected: + type: boolean + description: If the account has a Plex Home PIN enabled + default: false + rememberExpiresAt: + type: integer + description: Unix epoch datetime the authtoken expires + format: int32 + example: 1722364046 + 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 + enum: + - online + - offline + subscription: + description: If the account’s Plex Pass subscription is active + title: Subscription + type: object + properties: + features: + description: List of features allowed on your Plex Pass subscription + type: array + items: + enum: + - Android - Dolby Vision + - Android - PiP + - CU Sunset + - HRK_enable_EUR + - TREBLE-show-features + - ad-countdown-timer + - adaptive_bitrate + - amazon-loop-debug + - avod-ad-analysis + - avod-new-media + - blacklist_get_signin + - client-radio-stations + - cloudflare-turnstile-required + - collections + - comments_and_replies_push_notifications + - community_access_plex_tv + - companions_sonos + - custom-home-removal + - disable_home_user_friendships + - disable_sharing_friendships + - drm_support + - exclude restrictions + - federated-auth + - friend_request_push_notifications + - guided-upgrade + - home + - increase-password-complexity + - ios14-privacy-banner + - iterable-notification-tokens + - keep-payment-method + - kevin-bacon + - korea-consent + - le_isrg_root_x1 + - lets_encrypt + - lightning-dvr-pivot + - live-tv-support-incomplete-segments + - livetv + - metadata_search + - new_plex_pass_prices + - news-provider-sunset-modal + - photos-favorites + - photos-metadata-edition + - pms_health + - radio + - rate-limit-client-token + - scrobbling-service-plex-tv + - shared_server_notification + - shared_source_notification + - signin_with_apple + - spring_serve_ad_provider + - transcoder_cache + - tuner-sharing + - two-factor-authentication + - unsupportedtuners + - upgrade-3ds2 + - vod-schema + - vod_cloudflare + - watch-together-invite + - web_server_dashboard + 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 + example: '2021-04-12T18:21:12Z' + format: date-time + status: + description: String representation of subscriptionActive + example: Inactive + 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' + subscriptionDescription: + type: + - string + - 'null' + description: Description of the Plex Pass subscription + subscriptions: + type: array + items: + title: Subscription + type: object + properties: + features: + description: List of features allowed on your Plex Pass subscription + type: array + items: + enum: + - Android - Dolby Vision + - Android - PiP + - CU Sunset + - HRK_enable_EUR + - TREBLE-show-features + - ad-countdown-timer + - adaptive_bitrate + - amazon-loop-debug + - avod-ad-analysis + - avod-new-media + - blacklist_get_signin + - client-radio-stations + - cloudflare-turnstile-required + - collections + - comments_and_replies_push_notifications + - community_access_plex_tv + - companions_sonos + - custom-home-removal + - disable_home_user_friendships + - disable_sharing_friendships + - drm_support + - exclude restrictions + - federated-auth + - friend_request_push_notifications + - guided-upgrade + - home + - increase-password-complexity + - ios14-privacy-banner + - iterable-notification-tokens + - keep-payment-method + - kevin-bacon + - korea-consent + - le_isrg_root_x1 + - lets_encrypt + - lightning-dvr-pivot + - live-tv-support-incomplete-segments + - livetv + - metadata_search + - new_plex_pass_prices + - news-provider-sunset-modal + - photos-favorites + - photos-metadata-edition + - pms_health + - radio + - rate-limit-client-token + - scrobbling-service-plex-tv + - shared_server_notification + - shared_source_notification + - signin_with_apple + - spring_serve_ad_provider + - transcoder_cache + - tuner-sharing + - two-factor-authentication + - unsupportedtuners + - upgrade-3ds2 + - vod-schema + - vod_cloudflare + - watch-together-invite + - web_server_dashboard + 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 + example: '2021-04-12T18:21:12Z' + format: date-time + status: + description: String representation of subscriptionActive + example: Inactive + 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' + 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 + '400': + description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' + '401': + description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + code: + type: number + example: 1001 + message: + type: string + example: User could not be authenticated + status: + type: number + example: 401 + /users/signin: + post: + servers: + - url: 'https://plex.tv/api/v2' + security: [] + tags: + - User + summary: Get User SignIn Data + description: Sign in user with username and password and return user data with Plex authentication token + operationId: post-users-signin-data + parameters: + - name: X-Plex-Client-Identifier + description: | + The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + in: header + schema: + type: string + example: Postman + required: true + requestBody: + content: + application/x-www-form-urlencoded: + schema: + type: object + required: + - login + - password + properties: + login: + type: string + format: email + example: username@email.com + password: + type: string + format: password + example: password123 + rememberMe: + type: boolean + default: false + description: Login credentials + responses: + '201': + description: Returns the user account data with a valid auth token + content: + application/json: + schema: + allOf: + - title: UserPlexAccount + type: object + examples: + - adsConsent: true + adsConsentReminderAt: '2019-08-24T14:15:22Z' + adsConsentSetAt: '2019-08-24T14:15:22Z' + anonymous: false + authToken: CxoUzBTSV5hsxjTpFKaf + backupCodesCreated: false + confirmed: false + country: US + email: username@email.com + emailOnlyAuth: false + experimentalFeatures: false + friendlyName: friendlyUsername + entitlements: [] + guest: false + hasPassword: true + home: false + homeAdmin: false + homeSize: 1 + id: 13692262 + joinedAt: 1721154902 + locale: null + mailingListActive: false + mailingListStatus: subscribed + maxHomeSize: 15 + pastSubscriptions: + - id: string + mode: string + renewsAt: string + endsAt: '1556281940' + canceled: '0' + gracePeriod: '0' + onHold: '0' + canReactivate: '0' + canUpgrade: '0' + canDowngrade: '0' + canConvert: '0' + type: plexpass + transfer: string + state: ended + billing: + - internalPaymentMethod: string + paymentMethodId: string + pin: string + profile: + - autoSelectAudio: true + defaultAudioLanguage: ja + defaultSubtitleLanguage: en + autoSelectSubtitle: 1 + defaultSubtitleAccessibility: 1 + defaultSubtitleForced: 0 + watchedIndicator: 1 + mediaReviewsVisibility: 0 + protected: false + rememberExpiresAt: 1722364046 + restricted: false + roles: + - string + scrobbleTypes: '' + services: + - identifier: metadata-dev + endpoint: 'https://epg.provider.plex.tv' + token: DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv + secret: string + status: online + subscription: + features: + - Android - Dolby Vision + active: true + subscribedAt: '2021-04-12T18:21:12Z' + status: Inactive + paymentService: string + plan: string + subscriptionDescription: string + subscriptions: + - features: + - Android - Dolby Vision + active: true + subscribedAt: '2021-04-12T18:21:12Z' + status: Inactive + paymentService: string + plan: string + thumb: 'https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101' + title: UsernameTitle + trials: + - {} + twoFactorEnabled: false + username: Username + uuid: dae343c1f45beb4f + 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 + - subscriptions + - thumb + - title + - twoFactorEnabled + - username + - uuid + properties: + adsConsent: + type: + - boolean + - 'null' + description: Unknown + adsConsentReminderAt: + type: + - string + - 'null' + description: Unknown + format: date-time + adsConsentSetAt: + type: + - string + - 'null' + description: Unknown + format: date-time + anonymous: + type: boolean + 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: + type: integer + description: Unix epoch datetime the account joined Plex + format: int32 + example: 1721154902 + 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 + enum: + - subscribed + - 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: + type: array + items: + title: UserProfile + type: object + properties: + autoSelectAudio: + type: boolean + example: true + default: true + description: If the account has automatically select audio and subtitle tracks enabled + defaultAudioLanguage: + type: string + example: ja + description: The preferred audio language for the account + defaultSubtitleLanguage: + type: string + example: en + description: The preferred subtitle language for the account + autoSelectSubtitle: + type: integer + example: 1 + description: 'The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)' + defaultSubtitleAccessibility: + type: integer + example: 1 + 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 shown non-SDH subtitles)' + defaultSubtitleForced: + type: integer + example: 0 + 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: + type: integer + example: 1 + mediaReviewsVisibility: + type: integer + example: 0 + protected: + type: boolean + description: If the account has a Plex Home PIN enabled + default: false + rememberExpiresAt: + type: integer + description: Unix epoch datetime the authtoken expires + format: int32 + example: 1722364046 + 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 + enum: + - online + - offline + subscription: + description: If the account’s Plex Pass subscription is active + title: Subscription + type: object + properties: + features: + description: List of features allowed on your Plex Pass subscription + type: array + items: + enum: + - Android - Dolby Vision + - Android - PiP + - CU Sunset + - HRK_enable_EUR + - TREBLE-show-features + - ad-countdown-timer + - adaptive_bitrate + - amazon-loop-debug + - avod-ad-analysis + - avod-new-media + - blacklist_get_signin + - client-radio-stations + - cloudflare-turnstile-required + - collections + - comments_and_replies_push_notifications + - community_access_plex_tv + - companions_sonos + - custom-home-removal + - disable_home_user_friendships + - disable_sharing_friendships + - drm_support + - exclude restrictions + - federated-auth + - friend_request_push_notifications + - guided-upgrade + - home + - increase-password-complexity + - ios14-privacy-banner + - iterable-notification-tokens + - keep-payment-method + - kevin-bacon + - korea-consent + - le_isrg_root_x1 + - lets_encrypt + - lightning-dvr-pivot + - live-tv-support-incomplete-segments + - livetv + - metadata_search + - new_plex_pass_prices + - news-provider-sunset-modal + - photos-favorites + - photos-metadata-edition + - pms_health + - radio + - rate-limit-client-token + - scrobbling-service-plex-tv + - shared_server_notification + - shared_source_notification + - signin_with_apple + - spring_serve_ad_provider + - transcoder_cache + - tuner-sharing + - two-factor-authentication + - unsupportedtuners + - upgrade-3ds2 + - vod-schema + - vod_cloudflare + - watch-together-invite + - web_server_dashboard + 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 + example: '2021-04-12T18:21:12Z' + format: date-time + status: + description: String representation of subscriptionActive + example: Inactive + 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' + subscriptionDescription: + type: + - string + - 'null' + description: Description of the Plex Pass subscription + subscriptions: + type: array + items: + title: Subscription + type: object + properties: + features: + description: List of features allowed on your Plex Pass subscription + type: array + items: + enum: + - Android - Dolby Vision + - Android - PiP + - CU Sunset + - HRK_enable_EUR + - TREBLE-show-features + - ad-countdown-timer + - adaptive_bitrate + - amazon-loop-debug + - avod-ad-analysis + - avod-new-media + - blacklist_get_signin + - client-radio-stations + - cloudflare-turnstile-required + - collections + - comments_and_replies_push_notifications + - community_access_plex_tv + - companions_sonos + - custom-home-removal + - disable_home_user_friendships + - disable_sharing_friendships + - drm_support + - exclude restrictions + - federated-auth + - friend_request_push_notifications + - guided-upgrade + - home + - increase-password-complexity + - ios14-privacy-banner + - iterable-notification-tokens + - keep-payment-method + - kevin-bacon + - korea-consent + - le_isrg_root_x1 + - lets_encrypt + - lightning-dvr-pivot + - live-tv-support-incomplete-segments + - livetv + - metadata_search + - new_plex_pass_prices + - news-provider-sunset-modal + - photos-favorites + - photos-metadata-edition + - pms_health + - radio + - rate-limit-client-token + - scrobbling-service-plex-tv + - shared_server_notification + - shared_source_notification + - signin_with_apple + - spring_serve_ad_provider + - transcoder_cache + - tuner-sharing + - two-factor-authentication + - unsupportedtuners + - upgrade-3ds2 + - vod-schema + - vod_cloudflare + - watch-together-invite + - web_server_dashboard + 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 + example: '2021-04-12T18:21:12Z' + format: date-time + status: + description: String representation of subscriptionActive + example: Inactive + 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' + 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 + - type: object + required: + - pastSubscriptions + - trials + properties: + pastSubscriptions: + type: array + items: + 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: + type: + - integer + - 'null' + description: Unix epoch datetime + format: int32 + endsAt: + type: + - integer + - 'null' + example: 1556281940 + description: Unix epoch datetime + format: int32 + 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 + enum: + - ended + billing: + type: array + items: + type: object + required: + - internalPaymentMethod + - paymentMethodId + properties: + internalPaymentMethod: + type: object + paymentMethodId: + type: + - integer + - 'null' + trials: + type: array + items: + type: object + '400': + description: 'Bad Request - A parameter was not specified, or was specified incorrectly.' + '401': + description: Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + code: + type: number + example: 1001 + message: + type: string + example: User could not be authenticated + status: + type: number + example: 401 '/library/sections/watchlist/{filter}': servers: - url: 'https://metadata.provider.plex.tv'