diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 5e2950b4..1a6685c5 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 16f22cbf-f23f-4419-8924-3a4b06381947 management: - docChecksum: 2e1e3353e484ae5ccfa2c07317f86acf + docChecksum: 4ca36f4a819fe210480b785673b6572a docVersion: 0.0.3 - speakeasyVersion: 1.542.1 - generationVersion: 2.597.9 - releaseVersion: 0.37.2 - configChecksum: 93a6d519c728de6193c3a0fc8f03ddfd + speakeasyVersion: 1.555.2 + generationVersion: 2.620.2 + releaseVersion: 0.38.0 + configChecksum: 02a6d5f470beebea481df5593c220566 repoURL: https://github.com/LukeHagar/plexjs.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexjs @@ -15,26 +15,26 @@ features: typescript: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.11 - core: 3.21.7 + core: 3.21.10 defaultEnabledRetries: 0.1.0 deprecations: 2.81.1 downloadStreams: 0.1.1 enumUnions: 0.1.0 enums: 2.82.1 envVarSecurityUsage: 0.1.2 - errors: 2.84.0 + errors: 2.84.1 flattening: 2.82.1 globalSecurity: 2.82.13 globalSecurityCallbacks: 0.1.0 globalSecurityFlattening: 0.1.0 - globalServerURLs: 2.82.4 + globalServerURLs: 2.82.5 methodServerURLs: 2.82.1 nameOverrides: 2.81.2 nullables: 0.1.1 openEnums: 0.1.1 responseFormat: 0.2.3 retries: 2.83.0 - sdkHooks: 0.2.0 + sdkHooks: 0.3.0 unions: 2.85.8 uploadStreams: 0.1.0 generatedFiles: @@ -89,10 +89,6 @@ generatedFiles: - docs/sdk/models/errors/getalllibrarieserrors.md - docs/sdk/models/errors/getalllibrarieslibraryerrors.md - docs/sdk/models/errors/getalllibrariesunauthorized.md - - docs/sdk/models/errors/getallmedialibrarybadrequest.md - - docs/sdk/models/errors/getallmedialibraryerrors.md - - docs/sdk/models/errors/getallmedialibrarylibraryerrors.md - - docs/sdk/models/errors/getallmedialibraryunauthorized.md - docs/sdk/models/errors/getavailableclientsbadrequest.md - docs/sdk/models/errors/getavailableclientserrors.md - docs/sdk/models/errors/getavailableclientsservererrors.md @@ -153,6 +149,10 @@ generatedFiles: - docs/sdk/models/errors/getlibraryitemserrors.md - docs/sdk/models/errors/getlibraryitemslibraryerrors.md - docs/sdk/models/errors/getlibraryitemsunauthorized.md + - docs/sdk/models/errors/getlibrarysectionsallbadrequest.md + - docs/sdk/models/errors/getlibrarysectionsallerrors.md + - docs/sdk/models/errors/getlibrarysectionsalllibraryerrors.md + - docs/sdk/models/errors/getlibrarysectionsallunauthorized.md - docs/sdk/models/errors/getmediametadatabadrequest.md - docs/sdk/models/errors/getmediametadataerrors.md - docs/sdk/models/errors/getmediametadatalibraryerrors.md @@ -430,41 +430,6 @@ generatedFiles: - docs/sdk/models/operations/getalllibrariesresponse.md - docs/sdk/models/operations/getalllibrariesresponsebody.md - docs/sdk/models/operations/getalllibrariestype.md - - docs/sdk/models/operations/getallmedialibraryactivedirection.md - - docs/sdk/models/operations/getallmedialibrarycollection.md - - docs/sdk/models/operations/getallmedialibrarycountry.md - - docs/sdk/models/operations/getallmedialibrarydefaultdirection.md - - docs/sdk/models/operations/getallmedialibrarydirector.md - - docs/sdk/models/operations/getallmedialibraryfield.md - - docs/sdk/models/operations/getallmedialibraryfieldtype.md - - docs/sdk/models/operations/getallmedialibraryfilter.md - - docs/sdk/models/operations/getallmedialibrarygenre.md - - docs/sdk/models/operations/getallmedialibraryguids.md - - docs/sdk/models/operations/getallmedialibraryhasthumbnail.md - - docs/sdk/models/operations/getallmedialibraryimage.md - - docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md - - docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md - - docs/sdk/models/operations/getallmedialibrarylibrarytype.md - - docs/sdk/models/operations/getallmedialibrarymedia.md - - docs/sdk/models/operations/getallmedialibrarymediacontainer.md - - docs/sdk/models/operations/getallmedialibrarymeta.md - - docs/sdk/models/operations/getallmedialibrarymetadata.md - - docs/sdk/models/operations/getallmedialibraryoperator.md - - docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md - - docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md - - docs/sdk/models/operations/getallmedialibrarypart.md - - docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md - - docs/sdk/models/operations/getallmedialibraryqueryparamtype.md - - docs/sdk/models/operations/getallmedialibraryrequest.md - - docs/sdk/models/operations/getallmedialibraryresponse.md - - docs/sdk/models/operations/getallmedialibraryresponsebody.md - - docs/sdk/models/operations/getallmedialibraryrole.md - - docs/sdk/models/operations/getallmedialibrarysort.md - - docs/sdk/models/operations/getallmedialibrarystream.md - - docs/sdk/models/operations/getallmedialibrarystreamtype.md - - docs/sdk/models/operations/getallmedialibrarytype.md - - docs/sdk/models/operations/getallmedialibraryultrablurcolors.md - - docs/sdk/models/operations/getallmedialibrarywriter.md - docs/sdk/models/operations/getavailableclientsmediacontainer.md - docs/sdk/models/operations/getavailableclientsresponse.md - docs/sdk/models/operations/getavailableclientsresponsebody.md @@ -569,6 +534,41 @@ generatedFiles: - docs/sdk/models/operations/getlibraryitemstype.md - docs/sdk/models/operations/getlibraryitemsultrablurcolors.md - docs/sdk/models/operations/getlibraryitemswriter.md + - docs/sdk/models/operations/getlibrarysectionsallactivedirection.md + - docs/sdk/models/operations/getlibrarysectionsallcollection.md + - docs/sdk/models/operations/getlibrarysectionsallcountry.md + - docs/sdk/models/operations/getlibrarysectionsalldefaultdirection.md + - docs/sdk/models/operations/getlibrarysectionsalldirector.md + - docs/sdk/models/operations/getlibrarysectionsallfield.md + - docs/sdk/models/operations/getlibrarysectionsallfieldtype.md + - docs/sdk/models/operations/getlibrarysectionsallfilter.md + - docs/sdk/models/operations/getlibrarysectionsallgenre.md + - docs/sdk/models/operations/getlibrarysectionsallguids.md + - docs/sdk/models/operations/getlibrarysectionsallhasthumbnail.md + - docs/sdk/models/operations/getlibrarysectionsallimage.md + - docs/sdk/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md + - docs/sdk/models/operations/getlibrarysectionsalllibraryresponsetype.md + - docs/sdk/models/operations/getlibrarysectionsalllibrarytype.md + - docs/sdk/models/operations/getlibrarysectionsallmedia.md + - docs/sdk/models/operations/getlibrarysectionsallmediacontainer.md + - docs/sdk/models/operations/getlibrarysectionsallmeta.md + - docs/sdk/models/operations/getlibrarysectionsallmetadata.md + - docs/sdk/models/operations/getlibrarysectionsalloperator.md + - docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming.md + - docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming1.md + - docs/sdk/models/operations/getlibrarysectionsallpart.md + - docs/sdk/models/operations/getlibrarysectionsallqueryparamincludemeta.md + - docs/sdk/models/operations/getlibrarysectionsallqueryparamtype.md + - docs/sdk/models/operations/getlibrarysectionsallrequest.md + - docs/sdk/models/operations/getlibrarysectionsallresponse.md + - docs/sdk/models/operations/getlibrarysectionsallresponsebody.md + - docs/sdk/models/operations/getlibrarysectionsallrole.md + - docs/sdk/models/operations/getlibrarysectionsallsort.md + - docs/sdk/models/operations/getlibrarysectionsallstream.md + - docs/sdk/models/operations/getlibrarysectionsallstreamtype.md + - docs/sdk/models/operations/getlibrarysectionsalltype.md + - docs/sdk/models/operations/getlibrarysectionsallultrablurcolors.md + - docs/sdk/models/operations/getlibrarysectionsallwriter.md - docs/sdk/models/operations/getmediaartsmediacontainer.md - docs/sdk/models/operations/getmediaartsmetadata.md - docs/sdk/models/operations/getmediaartsrequest.md @@ -788,6 +788,7 @@ generatedFiles: - docs/sdk/models/operations/gettopwatchedcontentguids.md - docs/sdk/models/operations/gettopwatchedcontentmediacontainer.md - docs/sdk/models/operations/gettopwatchedcontentmetadata.md + - docs/sdk/models/operations/gettopwatchedcontentqueryparamincludeguids.md - docs/sdk/models/operations/gettopwatchedcontentqueryparamtype.md - docs/sdk/models/operations/gettopwatchedcontentrequest.md - docs/sdk/models/operations/gettopwatchedcontentresponse.md @@ -1000,12 +1001,12 @@ generatedFiles: - src/funcs/libraryDeleteLibrary.ts - src/funcs/libraryGetActorsLibrary.ts - src/funcs/libraryGetAllLibraries.ts - - src/funcs/libraryGetAllMediaLibrary.ts - src/funcs/libraryGetCountriesLibrary.ts - src/funcs/libraryGetFileHash.ts - src/funcs/libraryGetGenresLibrary.ts - src/funcs/libraryGetLibraryDetails.ts - src/funcs/libraryGetLibraryItems.ts + - src/funcs/libraryGetLibrarySectionsAll.ts - src/funcs/libraryGetMediaArts.ts - src/funcs/libraryGetMediaMetaData.ts - src/funcs/libraryGetMediaPosters.ts @@ -1105,7 +1106,6 @@ generatedFiles: - src/sdk/models/errors/enablepapertrail.ts - src/sdk/models/errors/getactorslibrary.ts - src/sdk/models/errors/getalllibraries.ts - - src/sdk/models/errors/getallmedialibrary.ts - src/sdk/models/errors/getavailableclients.ts - src/sdk/models/errors/getbandwidthstatistics.ts - src/sdk/models/errors/getbannerimage.ts @@ -1121,6 +1121,7 @@ generatedFiles: - src/sdk/models/errors/getlibrarydetails.ts - src/sdk/models/errors/getlibraryhubs.ts - src/sdk/models/errors/getlibraryitems.ts + - src/sdk/models/errors/getlibrarysectionsall.ts - src/sdk/models/errors/getmediametadata.ts - src/sdk/models/errors/getmediaproviders.ts - src/sdk/models/errors/getmetadatachildren.ts @@ -1188,7 +1189,6 @@ generatedFiles: - src/sdk/models/operations/enablepapertrail.ts - src/sdk/models/operations/getactorslibrary.ts - src/sdk/models/operations/getalllibraries.ts - - src/sdk/models/operations/getallmedialibrary.ts - src/sdk/models/operations/getavailableclients.ts - src/sdk/models/operations/getbandwidthstatistics.ts - src/sdk/models/operations/getbannerimage.ts @@ -1204,6 +1204,7 @@ generatedFiles: - src/sdk/models/operations/getlibrarydetails.ts - src/sdk/models/operations/getlibraryhubs.ts - src/sdk/models/operations/getlibraryitems.ts + - src/sdk/models/operations/getlibrarysectionsall.ts - src/sdk/models/operations/getmediaarts.ts - src/sdk/models/operations/getmediametadata.ts - src/sdk/models/operations/getmediaposters.ts @@ -1292,36 +1293,36 @@ examples: "200": application/json: {} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getServerPreferences: speakeasy-default-get-server-preferences: responses: "200": - application/json: {"MediaContainer": {"size": 161, "Setting": [{"id": "EnableDatabaseTrace", "label": "", "summary": "", "type": "bool", "default": false, "value": false, "hidden": true, "advanced": false, "group": "", "enumValues": "1:admin only|2:everyone"}, {"id": "EnableDatabaseTrace", "label": "", "summary": "", "type": "bool", "default": false, "value": false, "hidden": true, "advanced": false, "group": "", "enumValues": "1:admin only|2:everyone"}, {"id": "EnableDatabaseTrace", "label": "", "summary": "", "type": "bool", "default": false, "value": false, "hidden": true, "advanced": false, "group": "", "enumValues": "1:admin only|2:everyone"}]}} + application/json: {"MediaContainer": {"size": 161, "Setting": [{"id": "EnableDatabaseTrace", "label": "", "summary": "", "type": "bool", "default": false, "value": false, "hidden": true, "advanced": false, "group": "", "enumValues": "1:admin only|2:everyone"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getAvailableClients: speakeasy-default-get-available-clients: responses: "200": - application/json: {"MediaContainer": {"size": 1, "Server": [{"name": "iPad", "host": "10.10.10.102", "address": "10.10.10.102", "port": 32500, "machineIdentifier": "A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05", "version": "8.17", "protocol": "plex", "product": "Plex for iOS", "deviceClass": "tablet", "protocolVersion": 2, "protocolCapabilities": "playback,playqueues,timeline,provider-playback"}, {"name": "iPad", "host": "10.10.10.102", "address": "10.10.10.102", "port": 32500, "machineIdentifier": "A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05", "version": "8.17", "protocol": "plex", "product": "Plex for iOS", "deviceClass": "tablet", "protocolVersion": 2, "protocolCapabilities": "playback,playqueues,timeline,provider-playback"}, {"name": "iPad", "host": "10.10.10.102", "address": "10.10.10.102", "port": 32500, "machineIdentifier": "A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05", "version": "8.17", "protocol": "plex", "product": "Plex for iOS", "deviceClass": "tablet", "protocolVersion": 2, "protocolCapabilities": "playback,playqueues,timeline,provider-playback"}]}} + application/json: {"MediaContainer": {"size": 1, "Server": [{"name": "iPad", "host": "10.10.10.102", "address": "10.10.10.102", "port": 32500, "machineIdentifier": "A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05", "version": "8.17", "protocol": "plex", "product": "Plex for iOS", "deviceClass": "tablet", "protocolVersion": 2, "protocolCapabilities": "playback,playqueues,timeline,provider-playback"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getDevices: speakeasy-default-get-devices: responses: "200": - application/json: {"MediaContainer": {"size": 151, "identifier": "com.plexapp.system.devices", "Device": [{"id": 1, "name": "iPhone", "platform": "iOS", "createdAt": 1654131230}, {"id": 1, "name": "iPhone", "platform": "iOS", "createdAt": 1654131230}, {"id": 1, "name": "iPhone", "platform": "iOS", "createdAt": 1654131230}]}} + application/json: {"MediaContainer": {"size": 151, "identifier": "com.plexapp.system.devices", "Device": [{"id": 1, "name": "iPhone", "platform": "iOS", "createdAt": 1654131230}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-server-identity: speakeasy-default-get-server-identity: responses: @@ -1335,9 +1336,9 @@ examples: "200": application/json: {"MyPlex": {"authToken": "Z5v-PrNASDFpsaCi3CPK7", "username": "example.email@mail.com", "mappingState": "mapped", "signInState": "ok", "publicAddress": "140.20.68.140", "publicPort": 32400, "privateAddress": "10.10.10.47", "privatePort": 32400, "subscriptionFeatures": "federated-auth,hardware_transcoding,home,hwtranscode,item_clusters,kevin-bacon,livetv,loudness,lyrics,music-analysis,music_videos,pass,photo_autotags,photos-v5,photosV6-edit,photosV6-tv-albums,premium_music_metadata,radio,server-manager,session_bandwidth_restrictions,session_kick,shared-radio,sync,trailers,tuner-sharing,type-first,unsupportedtuners,webhooks", "subscriptionState": "Active"}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getResizedPhoto: speakeasy-default-get-resized-photo: parameters: @@ -1346,12 +1347,12 @@ examples: height: 165 opacity: 100 blur: 0 - minSize: 1 - upscale: 1 + minSize: 0 + upscale: 0 url: "/library/metadata/49564/thumb/1654258204" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-media-providers: @@ -1361,7 +1362,7 @@ examples: X-Plex-Token: "CV5xoxjTpFKUzBTShsaf" responses: "200": - application/json: {"MediaContainer": {"MediaProvider": [{"Feature": [{"type": "", "flavor": "global", "scrobbleKey": "/:/scrobble/new", "unscrobbleKey": "/:/unscrobble/new", "Action": [{"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}]}, {"type": "", "flavor": "global", "scrobbleKey": "/:/scrobble/new", "unscrobbleKey": "/:/unscrobble/new", "Action": [{"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}, {"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}]}, {"type": "", "flavor": "global", "scrobbleKey": "/:/scrobble/new", "unscrobbleKey": "/:/unscrobble/new", "Action": [{"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}, {"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}]}]}, {"Feature": [{"type": "", "flavor": "global", "scrobbleKey": "/:/scrobble/new", "unscrobbleKey": "/:/unscrobble/new", "Action": [{"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}]}]}]}} + application/json: {"MediaContainer": {"MediaProvider": [{"Feature": [{"type": "", "flavor": "global", "scrobbleKey": "/:/scrobble/new", "unscrobbleKey": "/:/unscrobble/new", "Action": [{"id": "addToContinueWatching", "key": "/actions/addToContinueWatching"}]}]}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -1370,11 +1371,11 @@ examples: speakeasy-default-get-server-list: responses: "200": - application/json: {"MediaContainer": {"size": 1, "Server": [{"name": "Hera", "host": "10.10.10.47", "address": "10.10.10.47", "port": 32400, "machineIdentifier": "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4", "version": "1.31.3.6868-28fc46b27"}, {"name": "Hera", "host": "10.10.10.47", "address": "10.10.10.47", "port": 32400, "machineIdentifier": "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4", "version": "1.31.3.6868-28fc46b27"}, {"name": "Hera", "host": "10.10.10.47", "address": "10.10.10.47", "port": 32400, "machineIdentifier": "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4", "version": "1.31.3.6868-28fc46b27"}]}} + application/json: {"MediaContainer": {"size": 1, "Server": [{"name": "Hera", "host": "10.10.10.47", "address": "10.10.10.47", "port": 32400, "machineIdentifier": "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4", "version": "1.31.3.6868-28fc46b27"}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} markPlayed: speakeasy-default-mark-played: parameters: @@ -1384,7 +1385,7 @@ examples: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} markUnplayed: speakeasy-default-mark-unplayed: parameters: @@ -1392,9 +1393,9 @@ examples: key: 59398 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} updatePlayProgress: "": parameters: @@ -1404,9 +1405,9 @@ examples: state: "played" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-banner-image: speakeasy-default-get-banner-image: parameters: @@ -1423,9 +1424,9 @@ examples: "200": image/jpeg: "x-file: example.file" "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-thumb-image: speakeasy-default-get-thumb-image: parameters: @@ -1463,7 +1464,7 @@ examples: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} startUniversalTranscode: "": parameters: @@ -1486,9 +1487,9 @@ examples: autoAdjustQuality: 0 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getServerActivities: speakeasy-default-get-server-activities: responses: @@ -1505,68 +1506,68 @@ examples: activityUUID: "25b71ed5-0f9d-461c-baa7-d404e9e10d3e" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getButlerTasks: speakeasy-default-get-butler-tasks: responses: "200": - application/json: {"ButlerTasks": {"ButlerTask": [{"name": "BackupDatabase", "interval": 3, "title": "Backup Database", "description": "Create a backup copy of the server's database in the configured backup directory"}, {"name": "BackupDatabase", "interval": 3, "title": "Backup Database", "description": "Create a backup copy of the server's database in the configured backup directory"}]}} + application/json: {"ButlerTasks": {"ButlerTask": [{"name": "BackupDatabase", "interval": 3, "title": "Backup Database", "description": "Create a backup copy of the server's database in the configured backup directory"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} startAllTasks: speakeasy-default-start-all-tasks: responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} stopAllTasks: speakeasy-default-stop-all-tasks: responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} startTask: speakeasy-default-start-task: parameters: path: - taskName: "CleanOldBundles" + taskName: "RefreshPeriodicMetadata" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} stopTask: speakeasy-default-stop-task: parameters: path: - taskName: "BackupDatabase" + taskName: "CleanOldCacheFiles" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getCompanionsData: speakeasy-default-get-companions-data: responses: "200": - application/json: [{"identifier": "tv.plex.sonos", "baseURL": "https://sonos.plex.tv", "title": "Sonos", "linkURL": "https://sonos.plex.tv/link", "provides": "client,player", "token": ""}, {"identifier": "tv.plex.sonos", "baseURL": "https://sonos.plex.tv", "title": "Sonos", "linkURL": "https://sonos.plex.tv/link", "provides": "client,player", "token": ""}] + application/json: [{"identifier": "tv.plex.sonos", "baseURL": "https://sonos.plex.tv", "title": "Sonos", "linkURL": "https://sonos.plex.tv/link", "provides": "client,player", "token": ""}] "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getUserFriends: speakeasy-default-get-user-friends: responses: "200": application/json: [{"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"}] "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getGeoData: @@ -1575,9 +1576,9 @@ examples: "200": application/json: {"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"} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getHomeData: speakeasy-default-get-home-data: responses: @@ -1598,11 +1599,11 @@ examples: X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58" responses: "200": - application/json: [{"name": "", "product": "Luxurious Frozen Bike", "productVersion": "", "platform": "", "platformVersion": "", "device": "Mobile", "clientIdentifier": "", "createdAt": "2019-06-24T11:38:02Z", "lastSeenAt": "2019-06-24T11:38:02Z", "provides": "", "ownerId": 575734, "sourceTitle": "", "publicAddress": "", "accessToken": "", "owned": false, "home": false, "synced": false, "relay": true, "presence": false, "httpsRequired": false, "publicAddressMatches": true, "dnsRebindingProtection": true, "natLoopbackSupported": true, "connections": []}] + application/json: [{"name": "", "product": "Ergonomic Plastic Hat", "productVersion": "", "platform": "", "platformVersion": "", "device": "Mobile", "clientIdentifier": "", "createdAt": "2019-06-24T11:38:02Z", "lastSeenAt": "2019-06-24T11:38:02Z", "provides": "", "ownerId": null, "sourceTitle": "", "publicAddress": "", "accessToken": "", "owned": true, "home": false, "synced": false, "relay": true, "presence": false, "httpsRequired": true, "publicAddressMatches": false, "dnsRebindingProtection": true, "natLoopbackSupported": false, "connections": [{"protocol": "http", "address": "5746 Mount Street", "port": 441996, "uri": "https://wide-kick.name/", "local": false, "relay": true, "IPv6": true}]}] "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getPin: "": parameters: @@ -1618,12 +1619,12 @@ examples: "201": application/json: {"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} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} getTokenByPinId: "": parameters: path: - pinID: 408895 + pinID: 232248 header: X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58" X-Plex-Product: "Plex for Roku" @@ -1637,16 +1638,16 @@ examples: speakeasy-default-get-global-hubs: responses: "200": - application/json: {"MediaContainer": {"size": 8, "allowSync": true, "identifier": "com.plexapp.plugins.library", "Hub": [{"hubKey": "/library/metadata/50768,65523,58188,57341,57302,57070", "key": "/playlists/all?type=15&sort=lastViewedAt:desc&playlistType=video,audio", "title": "Recent Playlists", "type": "playlist", "hubIdentifier": "home.playlists", "context": "hub.home.playlists", "size": 6, "more": true, "style": "shelf", "promoted": true, "Metadata": [{"ratingKey": "57070", "key": "/playlists/57070/items", "guid": "com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c", "type": "playlist", "title": "November Movie Day", "titleSort": "Tracks", "summary": "", "smart": false, "playlistType": "video", "composite": "/playlists/57070/composite/1668787730", "icon": "playlist://image.smart", "viewCount": 2, "lastViewedAt": 1668787732, "duration": 16873000, "leafCount": 3, "addedAt": 1668779618, "updatedAt": 1668787730}, {"ratingKey": "57070", "key": "/playlists/57070/items", "guid": "com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c", "type": "playlist", "title": "November Movie Day", "titleSort": "Tracks", "summary": "", "smart": false, "playlistType": "video", "composite": "/playlists/57070/composite/1668787730", "icon": "playlist://image.smart", "viewCount": 2, "lastViewedAt": 1668787732, "duration": 16873000, "leafCount": 3, "addedAt": 1668779618, "updatedAt": 1668787730}, {"ratingKey": "57070", "key": "/playlists/57070/items", "guid": "com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c", "type": "playlist", "title": "November Movie Day", "titleSort": "Tracks", "summary": "", "smart": false, "playlistType": "video", "composite": "/playlists/57070/composite/1668787730", "icon": "playlist://image.smart", "viewCount": 2, "lastViewedAt": 1668787732, "duration": 16873000, "leafCount": 3, "addedAt": 1668779618, "updatedAt": 1668787730}]}]}} + application/json: {"MediaContainer": {"size": 8, "allowSync": true, "identifier": "com.plexapp.plugins.library", "Hub": [{"hubKey": "/library/metadata/50768,65523,58188,57341,57302,57070", "key": "/playlists/all?type=15&sort=lastViewedAt:desc&playlistType=video,audio", "title": "Recent Playlists", "type": "playlist", "hubIdentifier": "home.playlists", "context": "hub.home.playlists", "size": 6, "more": true, "style": "shelf", "promoted": true, "Metadata": [{"ratingKey": "57070", "key": "/playlists/57070/items", "guid": "com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c", "type": "playlist", "title": "November Movie Day", "titleSort": "Tracks", "summary": "", "smart": false, "playlistType": "video", "composite": "/playlists/57070/composite/1668787730", "icon": "playlist://image.smart", "viewCount": 2, "lastViewedAt": 1668787732, "duration": 16873000, "leafCount": 3, "addedAt": 1668779618, "updatedAt": 1668787730}]}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-recently-added: speakeasy-default-get-recently-added: parameters: query: - contentDirectoryID: 470161 + contentDirectoryID: 39486 sectionID: 2 type: 2 includeMeta: 1 @@ -1654,31 +1655,30 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}, {"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}, {"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} + application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}]}, "Metadata": [{"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "filter": "director=235876", "tag": "Danny Boyle", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}], "Collection": [{"tag": "My Awesome Collection"}]}]}} getLibraryHubs: speakeasy-default-get-library-hubs: parameters: path: - sectionId: 6728.76 - query: {} + sectionId: 492.74 responses: "200": - application/json: {"MediaContainer": {"size": 7, "allowSync": true, "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "Hub": [{"key": "/library/sections/1/all?sort=lastViewedAt:desc&unwatched=0&viewOffset=0", "title": "Recently Played Movies", "type": "movie", "hubIdentifier": "movie.recentlyviewed.1", "context": "hub.movie.recentlyviewed", "size": 6, "more": true, "style": "shelf", "hubKey": "/library/metadata/66485,66098,57249,11449,5858,14944", "Metadata": [{"ratingKey": "14944", "key": "/library/metadata/14944", "guid": "plex://movie/5d77686eeb5d26001f1eb339", "studio": "Walt Disney Animation Studios", "type": "movie", "title": "Tangled", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG", "summary": "The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is.", "rating": 8.9, "audienceRating": 8.7, "viewCount": 1, "lastViewedAt": 1704936047, "year": 2010, "tagline": "They're taking adventure to new lengths.", "thumb": "/library/metadata/14944/thumb/1705739847", "art": "/library/metadata/14944/art/1705739847", "duration": 6017237, "originallyAvailableAt": "2010-11-24T00:00:00Z", "addedAt": 1589412494, "updatedAt": 1705739847, "audienceRatingImage": "rottentomatoes://image.rating.upright", "primaryExtraKey": "/library/metadata/14952", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 38247, "duration": 6017237, "bitrate": 2051, "width": 1920, "height": 1080, "aspectRatio": 1.78, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 1, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}, {"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}]}, {"id": 38247, "duration": 6017237, "bitrate": 2051, "width": 1920, "height": 1080, "aspectRatio": 1.78, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 1, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}, {"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}]}], "Genre": [{"tag": "Animation"}, {"tag": "Animation"}, {"tag": "Animation"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Nathan Greno"}, {"tag": "Nathan Greno"}], "Role": [{"tag": "Donna Murphy"}], "Writer": [{"tag": "Wilhelm Grimm"}, {"tag": "Wilhelm Grimm"}, {"tag": "Wilhelm Grimm"}], "skipCount": 1, "chapterSource": "media"}, {"ratingKey": "14944", "key": "/library/metadata/14944", "guid": "plex://movie/5d77686eeb5d26001f1eb339", "studio": "Walt Disney Animation Studios", "type": "movie", "title": "Tangled", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG", "summary": "The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is.", "rating": 8.9, "audienceRating": 8.7, "viewCount": 1, "lastViewedAt": 1704936047, "year": 2010, "tagline": "They're taking adventure to new lengths.", "thumb": "/library/metadata/14944/thumb/1705739847", "art": "/library/metadata/14944/art/1705739847", "duration": 6017237, "originallyAvailableAt": "2010-11-24T00:00:00Z", "addedAt": 1589412494, "updatedAt": 1705739847, "audienceRatingImage": "rottentomatoes://image.rating.upright", "primaryExtraKey": "/library/metadata/14952", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 38247, "duration": 6017237, "bitrate": 2051, "width": 1920, "height": 1080, "aspectRatio": 1.78, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 1, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}]}], "Genre": [{"tag": "Animation"}, {"tag": "Animation"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Nathan Greno"}], "Role": [{"tag": "Donna Murphy"}, {"tag": "Donna Murphy"}, {"tag": "Donna Murphy"}], "Writer": [{"tag": "Wilhelm Grimm"}, {"tag": "Wilhelm Grimm"}, {"tag": "Wilhelm Grimm"}], "skipCount": 1, "chapterSource": "media"}, {"ratingKey": "14944", "key": "/library/metadata/14944", "guid": "plex://movie/5d77686eeb5d26001f1eb339", "studio": "Walt Disney Animation Studios", "type": "movie", "title": "Tangled", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG", "summary": "The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is.", "rating": 8.9, "audienceRating": 8.7, "viewCount": 1, "lastViewedAt": 1704936047, "year": 2010, "tagline": "They're taking adventure to new lengths.", "thumb": "/library/metadata/14944/thumb/1705739847", "art": "/library/metadata/14944/art/1705739847", "duration": 6017237, "originallyAvailableAt": "2010-11-24T00:00:00Z", "addedAt": 1589412494, "updatedAt": 1705739847, "audienceRatingImage": "rottentomatoes://image.rating.upright", "primaryExtraKey": "/library/metadata/14952", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 38247, "duration": 6017237, "bitrate": 2051, "width": 1920, "height": 1080, "aspectRatio": 1.78, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 1, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}, {"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}, {"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}]}], "Genre": [{"tag": "Animation"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Nathan Greno"}, {"tag": "Nathan Greno"}, {"tag": "Nathan Greno"}], "Role": [{"tag": "Donna Murphy"}], "Writer": [{"tag": "Wilhelm Grimm"}, {"tag": "Wilhelm Grimm"}, {"tag": "Wilhelm Grimm"}], "skipCount": 1, "chapterSource": "media"}], "promoted": true, "random": true}]}} + application/json: {"MediaContainer": {"size": 7, "allowSync": true, "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "Hub": [{"key": "/library/sections/1/all?sort=lastViewedAt:desc&unwatched=0&viewOffset=0", "title": "Recently Played Movies", "type": "movie", "hubIdentifier": "movie.recentlyviewed.1", "context": "hub.movie.recentlyviewed", "size": 6, "more": true, "style": "shelf", "hubKey": "/library/metadata/66485,66098,57249,11449,5858,14944", "Metadata": [{"ratingKey": "14944", "key": "/library/metadata/14944", "guid": "plex://movie/5d77686eeb5d26001f1eb339", "studio": "Walt Disney Animation Studios", "type": "movie", "title": "Tangled", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG", "summary": "The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is.", "rating": 8.9, "audienceRating": 8.7, "viewCount": 1, "lastViewedAt": 1704936047, "year": 2010, "tagline": "They're taking adventure to new lengths.", "thumb": "/library/metadata/14944/thumb/1705739847", "art": "/library/metadata/14944/art/1705739847", "duration": 6017237, "originallyAvailableAt": "2010-11-24T00:00:00Z", "addedAt": 1589412494, "updatedAt": 1705739847, "audienceRatingImage": "rottentomatoes://image.rating.upright", "primaryExtraKey": "/library/metadata/14952", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 38247, "duration": 6017237, "bitrate": 2051, "width": 1920, "height": 1080, "aspectRatio": 1.78, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 1, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 38247, "key": "/library/parts/38247/1589412494/file.mp4", "duration": 6017237, "file": "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", "size": 1545647447, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": true, "videoProfile": "high"}]}], "Genre": [{"tag": "Animation"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "Nathan Greno"}], "Role": [{"tag": "Donna Murphy"}], "Writer": [{"tag": "Wilhelm Grimm"}], "skipCount": 1, "chapterSource": "media"}], "promoted": true, "random": true}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} performSearch: speakeasy-default-perform-search: parameters: query: - query: "dylan" + query: "arnold" limit: 5 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} performVoiceSearch: speakeasy-default-perform-voice-search: parameters: @@ -1687,9 +1687,9 @@ examples: limit: 5 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getSearchResults: speakeasy-default-get-search-results: parameters: @@ -1697,11 +1697,11 @@ examples: query: "110" responses: "200": - application/json: {"MediaContainer": {"size": 26, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "sourceTitle": "Hera", "ratingKey": 10398, "key": "/library/metadata/10398", "guid": "plex://movie/5d7768284de0ee001fcc8f52", "studio": "Paramount", "type": "movie", "title": "Mission: Impossible", "contentRating": "PG-13", "summary": "When Ethan Hunt the leader of a crack espionage team whose perilous operation has gone awry with no explanation discovers that a mole has penetrated the CIA he's surprised to learn that he's the No. 1 suspect. To clear his name Hunt now must ferret out the real double agent and in the process even the score.", "rating": 6.6, "audienceRating": 7.1, "year": 1996, "tagline": "Expect the impossible.", "thumb": "/library/metadata/10398/thumb/1679505055", "art": "/library/metadata/10398/art/1679505055", "duration": 6612628, "originallyAvailableAt": "1996-05-22T00:00:00Z", "addedAt": 1589234571, "updatedAt": 1679505055, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/10501", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 26610, "duration": 6612628, "bitrate": 4751, "width": 1916, "height": 796, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "aac", "videoCodec": "hevc", "videoResolution": 1080, "container": "mkv", "videoFrameRate": "24p", "audioProfile": "lc", "videoProfile": "main 10", "Part": [{"id": 26610, "key": "/library/parts/26610/1589234571/file.mkv", "duration": 6612628, "file": "/movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv", "size": 3926903851, "audioProfile": "lc", "container": "mkv", "videoProfile": "main 10"}, {"id": 26610, "key": "/library/parts/26610/1589234571/file.mkv", "duration": 6612628, "file": "/movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv", "size": 3926903851, "audioProfile": "lc", "container": "mkv", "videoProfile": "main 10"}]}, {"id": 26610, "duration": 6612628, "bitrate": 4751, "width": 1916, "height": 796, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "aac", "videoCodec": "hevc", "videoResolution": 1080, "container": "mkv", "videoFrameRate": "24p", "audioProfile": "lc", "videoProfile": "main 10", "Part": [{"id": 26610, "key": "/library/parts/26610/1589234571/file.mkv", "duration": 6612628, "file": "/movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv", "size": 3926903851, "audioProfile": "lc", "container": "mkv", "videoProfile": "main 10"}]}, {"id": 26610, "duration": 6612628, "bitrate": 4751, "width": 1916, "height": 796, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "aac", "videoCodec": "hevc", "videoResolution": 1080, "container": "mkv", "videoFrameRate": "24p", "audioProfile": "lc", "videoProfile": "main 10", "Part": [{"id": 26610, "key": "/library/parts/26610/1589234571/file.mkv", "duration": 6612628, "file": "/movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv", "size": 3926903851, "audioProfile": "lc", "container": "mkv", "videoProfile": "main 10"}]}], "Genre": [{"tag": "Action"}], "Director": [{"tag": "Brian De Palma"}, {"tag": "Brian De Palma"}, {"tag": "Brian De Palma"}], "Writer": [{"tag": "David Koepp"}, {"tag": "David Koepp"}, {"tag": "David Koepp"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Role": [{"tag": "Tom Cruise"}]}], "Provider": [{"key": "/system/search", "title": "Local Network", "type": "mixed"}, {"key": "/system/search", "title": "Local Network", "type": "mixed"}, {"key": "/system/search", "title": "Local Network", "type": "mixed"}]}} + application/json: {"MediaContainer": {"size": 26, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "sourceTitle": "Hera", "ratingKey": 10398, "key": "/library/metadata/10398", "guid": "plex://movie/5d7768284de0ee001fcc8f52", "studio": "Paramount", "type": "movie", "title": "Mission: Impossible", "contentRating": "PG-13", "summary": "When Ethan Hunt the leader of a crack espionage team whose perilous operation has gone awry with no explanation discovers that a mole has penetrated the CIA he's surprised to learn that he's the No. 1 suspect. To clear his name Hunt now must ferret out the real double agent and in the process even the score.", "rating": 6.6, "audienceRating": 7.1, "year": 1996, "tagline": "Expect the impossible.", "thumb": "/library/metadata/10398/thumb/1679505055", "art": "/library/metadata/10398/art/1679505055", "duration": 6612628, "originallyAvailableAt": "1996-05-22T00:00:00Z", "addedAt": 1589234571, "updatedAt": 1679505055, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/10501", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 26610, "duration": 6612628, "bitrate": 4751, "width": 1916, "height": 796, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "aac", "videoCodec": "hevc", "videoResolution": 1080, "container": "mkv", "videoFrameRate": "24p", "audioProfile": "lc", "videoProfile": "main 10", "Part": [{"id": 26610, "key": "/library/parts/26610/1589234571/file.mkv", "duration": 6612628, "file": "/movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv", "size": 3926903851, "audioProfile": "lc", "container": "mkv", "videoProfile": "main 10"}]}], "Genre": [{"tag": "Action"}], "Director": [{"tag": "Brian De Palma"}], "Writer": [{"tag": "David Koepp"}], "Country": [{"tag": "United States of America"}], "Role": [{"tag": "Tom Cruise"}]}], "Provider": [{"key": "/system/search", "title": "Local Network", "type": "mixed"}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getFileHash: speakeasy-default-get-file-hash: parameters: @@ -1709,9 +1709,9 @@ examples: url: "file://C:\\Image.png&type=13" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-recently-added-library: speakeasy-default-get-recently-added-library: parameters: @@ -1725,20 +1725,20 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}], "size": 50, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "ratingKey": 59398, "key": "/library/metadata/59398", "guid": "plex://movie/5e161a83bea6ac004126e148", "studio": "Marvel Studios", "type": "movie", "title": "Ant-Man and the Wasp: Quantumania", "contentRating": "PG-13", "summary": "Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible.", "rating": 4.7, "audienceRating": 8.3, "year": 2023, "tagline": "Witness the beginning of a new dynasty.", "thumb": "/library/metadata/59398/thumb/1681888010", "art": "/library/metadata/59398/art/1681888010", "duration": 7474422, "originallyAvailableAt": "2023-02-15T00:00:00Z", "addedAt": 1681803215, "updatedAt": 1681888010, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/59399", "ratingImage": "rottentomatoes://image.rating.rotten", "Media": [{"id": 120345, "duration": 7474422, "bitrate": 3623, "width": 1920, "height": 804, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "ac3", "videoCodec": "h264", "videoResolution": 1080, "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "videoProfile": "high", "Part": [{"id": 120353, "key": "/library/parts/120353/1681803203/file.mp4", "duration": 7474422, "file": "/movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4", "size": 3395307162, "container": "mp4", "hasThumbnail": 1, "videoProfile": "high"}]}], "Genre": [{"tag": "Comedy"}], "Director": [{"tag": "Peyton Reed"}], "Writer": [{"tag": "Jeff Loveness"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Role": [{"tag": "Paul Rudd"}]}]}} + application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}], "size": 50, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "ratingKey": 59398, "key": "/library/metadata/59398", "guid": "plex://movie/5e161a83bea6ac004126e148", "studio": "Marvel Studios", "type": "movie", "title": "Ant-Man and the Wasp: Quantumania", "contentRating": "PG-13", "summary": "Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible.", "rating": 4.7, "audienceRating": 8.3, "year": 2023, "tagline": "Witness the beginning of a new dynasty.", "thumb": "/library/metadata/59398/thumb/1681888010", "art": "/library/metadata/59398/art/1681888010", "duration": 7474422, "originallyAvailableAt": "2023-02-15T00:00:00Z", "addedAt": 1681803215, "updatedAt": 1681888010, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/59399", "ratingImage": "rottentomatoes://image.rating.rotten", "Media": [{"id": 120345, "duration": 7474422, "bitrate": 3623, "width": 1920, "height": 804, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "ac3", "videoCodec": "h264", "videoResolution": 1080, "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "videoProfile": "high", "Part": [{"id": 120353, "key": "/library/parts/120353/1681803203/file.mp4", "duration": 7474422, "file": "/movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4", "size": 3395307162, "container": "mp4", "hasThumbnail": 1, "videoProfile": "high"}]}], "Genre": [{"tag": "Comedy"}], "Director": [{"tag": "Peyton Reed"}], "Writer": [{"tag": "Jeff Loveness"}], "Country": [{"tag": "United States of America"}], "Role": [{"tag": "Paul Rudd"}]}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-all-libraries: speakeasy-default-get-all-libraries: responses: "200": - application/json: {"MediaContainer": {"size": 50, "allowSync": false, "title1": "TV Series", "Directory": [{"allowSync": false, "art": "/:/resources/show-fanart.jpg", "composite": "/library/sections/1/composite/1743824484", "filters": true, "refreshing": true, "thumb": "/:/resources/show.png", "key": "1", "type": "movie", "title": "Movies", "agent": "tv.plex.agents.movie", "scanner": "Plex Movie", "language": "en-US", "uuid": "e69655a2-ef48-4aba-bb19-01e7d3cc34d6", "updatedAt": 1556281940, "createdAt": 1556281940, "scannedAt": 1556281940, "content": true, "directory": true, "contentChangedAt": 9173960, "hidden": 1, "Location": [{"id": 1, "path": "/Movies"}, {"id": 1, "path": "/Movies"}]}, {"allowSync": false, "art": "/:/resources/show-fanart.jpg", "composite": "/library/sections/1/composite/1743824484", "filters": true, "refreshing": true, "thumb": "/:/resources/show.png", "key": "1", "type": "movie", "title": "Movies", "agent": "tv.plex.agents.movie", "scanner": "Plex Movie", "language": "en-US", "uuid": "e69655a2-ef48-4aba-bb19-01e7d3cc34d6", "updatedAt": 1556281940, "createdAt": 1556281940, "scannedAt": 1556281940, "content": true, "directory": true, "contentChangedAt": 9173960, "hidden": 1, "Location": [{"id": 1, "path": "/Movies"}, {"id": 1, "path": "/Movies"}]}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "title1": "TV Series", "Directory": [{"allowSync": false, "art": "/:/resources/show-fanart.jpg", "composite": "/library/sections/1/composite/1743824484", "filters": true, "refreshing": true, "thumb": "/:/resources/show.png", "key": "1", "type": "movie", "title": "Movies", "agent": "tv.plex.agents.movie", "scanner": "Plex Movie", "language": "en-US", "uuid": "e69655a2-ef48-4aba-bb19-01e7d3cc34d6", "updatedAt": 1556281940, "createdAt": 1556281940, "scannedAt": 1556281940, "content": true, "directory": true, "contentChangedAt": 9173960, "hidden": 1, "Location": [{"id": 1, "path": "/Movies"}]}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-library-details: speakeasy-default-get-library-details: parameters: @@ -1748,9 +1748,9 @@ examples: includeDetails: 0 responses: "200": - application/json: {"MediaContainer": {"size": 29, "allowSync": false, "art": "/:/resources/movie-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "viewGroup": "secondary", "viewMode": 65592, "Directory": [{"key": "search?type=1", "title": "Search...", "secondary": true, "prompt": "Search Movies", "search": true}], "Type": [{"key": "/library/sections/1/all?type=1", "type": "movie", "title": "Movies", "active": false, "Filter": [{"filter": "label", "filterType": "string", "key": "/library/sections/1/label", "title": "Labels", "type": "filter"}], "Sort": [{"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}, {"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}, {"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}], "Field": [{"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}, {"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}, {"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}]}, {"key": "/library/sections/1/all?type=1", "type": "movie", "title": "Movies", "active": false, "Filter": [{"filter": "label", "filterType": "string", "key": "/library/sections/1/label", "title": "Labels", "type": "filter"}, {"filter": "label", "filterType": "string", "key": "/library/sections/1/label", "title": "Labels", "type": "filter"}, {"filter": "label", "filterType": "string", "key": "/library/sections/1/label", "title": "Labels", "type": "filter"}], "Sort": [{"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}, {"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}, {"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}], "Field": [{"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}, {"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}, {"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}]}], "FieldType": [{"type": "resolution", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "resolution", "Operator": [{"key": "=", "title": "is"}]}]}} + application/json: {"MediaContainer": {"size": 29, "allowSync": false, "art": "/:/resources/movie-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "viewGroup": "secondary", "viewMode": 65592, "Directory": [{"key": "search?type=1", "title": "Search...", "secondary": true, "prompt": "Search Movies", "search": true}], "Type": [{"key": "/library/sections/1/all?type=1", "type": "movie", "title": "Movies", "active": false, "Filter": [{"filter": "label", "filterType": "string", "key": "/library/sections/1/label", "title": "Labels", "type": "filter"}], "Sort": [{"default": "asc", "defaultDirection": "desc", "descKey": "random:desc", "firstCharacterKey": "/library/sections/1/firstCharacter", "key": "random", "title": "Randomly"}], "Field": [{"key": "label", "title": "Label", "type": "tag", "subType": "bitrate"}]}], "FieldType": [{"type": "resolution", "Operator": [{"key": "=", "title": "is"}]}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} deleteLibrary: @@ -1760,14 +1760,14 @@ examples: sectionKey: 9518 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-library-items: speakeasy-default-get-library-items: parameters: path: - tag: "edition" + tag: "newest" sectionKey: 9518 query: includeGuids: 1 @@ -1777,13 +1777,13 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}], "size": 70, "totalSize": 170, "offset": 0, "content": "secondary", "allowSync": true, "nocache": true, "art": "/:/resources/movie-fanart.jpg", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "title2": "Recently Released", "viewGroup": "movie", "viewMode": 65592, "mixedParents": true, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": []}], "Genre": [{"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}, {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [{"tag": "Adventure"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}], "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}]}]}}} + application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}], "size": 70, "totalSize": 170, "offset": 0, "content": "secondary", "allowSync": true, "nocache": true, "art": "/:/resources/movie-fanart.jpg", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "title2": "Recently Released", "viewGroup": "movie", "viewMode": 65592, "mixedParents": true, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [{"tag": "Adventure"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}], "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} - get-all-media-library: - speakeasy-default-get-all-media-library: + get-library-sections-all: + speakeasy-default-get-library-sections-all: parameters: path: sectionKey: 9518 @@ -1798,11 +1798,11 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "Crime"}, {"tag": "Crime"}, {"tag": "Crime"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Jamie P. Hanson"}, {"tag": "Jamie P. Hanson"}], "Role": [{"tag": "Teller"}], "Guid": [{"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} + application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "Crime"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}], "Writer": [{"tag": "Jamie P. Hanson"}], "Role": [{"tag": "Teller"}], "Collection": [{"tag": "My Awesome Collection"}]}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-refresh-library-metadata: speakeasy-default-get-refresh-library-metadata: parameters: @@ -1812,9 +1812,9 @@ examples: force: 0 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-search-library: speakeasy-default-get-search-library: parameters: @@ -1826,9 +1826,9 @@ examples: "200": application/json: {"MediaContainer": {"size": 2, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1698860922, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Shows", "title2": "Search for ''", "viewGroup": "season", "viewMode": 65593, "Metadata": [{"ratingKey": "2", "key": "/library/metadata/2/children", "parentRatingKey": "1", "guid": "plex://season/602e67e766dfdb002c0a1b5b", "parentGuid": "plex://show/5d9c086c7d06d9001ffd27aa", "parentStudio": "Mutant Enemy Productions", "type": "season", "title": "Season 1", "parentKey": "/library/metadata/1", "parentTitle": "Firefly", "summary": "Captain Malcolm 'Mal' Reynolds is a former galactic war veteran who is the captain of the transport ship \"Serenity\". Mal and his crew, ensign Zoe Alleyne Washburne; Zoe's husband, pilot Hoban 'Wash' Washburne; muscular mercenary Jayne Cobb; young mechanic Kaylee Frye; former Alliance medical officer Simon Tam; his disturbed teenage sister River (both on the run from the interplanetary government \"The Alliance\"); the beautiful courtesan Inara Serra; and preacher Shepherd Book do any jobs, legal or illegal, they can find as the Serenity crew travels across the outskirts of outer space.", "index": 1, "parentIndex": 1, "parentYear": 2002, "thumb": "/library/metadata/2/thumb/1705636920", "art": "/library/metadata/1/art/1705636920", "parentThumb": "/library/metadata/1/thumb/1705636920", "parentTheme": "/library/metadata/1/theme/1705636920", "addedAt": 1705636916, "updatedAt": 1705636920}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-genres-library: speakeasy-default-get-genres-library: parameters: @@ -1842,7 +1842,7 @@ examples: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-countries-library: speakeasy-default-get-countries-library: parameters: @@ -1854,9 +1854,9 @@ examples: "200": application/json: {"MediaContainer": {"size": 50, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/2/all?country=15491", "key": "15491", "title": "Japan"}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-actors-library: speakeasy-default-get-actors-library: parameters: @@ -1866,11 +1866,11 @@ examples: type: 2 responses: "200": - application/json: {"MediaContainer": {"size": 50, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "viewMode": "131131", "Directory": [{"fastKey": "/library/sections/2/all?actor=134671", "thumb": "https://metadata-static.plex.tv/e/people/e2a915b537ef720252b6d408bc1f91b3.jpg", "key": "134671", "title": "Aaron Paul"}, {"fastKey": "/library/sections/2/all?actor=134671", "thumb": "https://metadata-static.plex.tv/e/people/e2a915b537ef720252b6d408bc1f91b3.jpg", "key": "134671", "title": "Aaron Paul"}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "viewMode": "131131", "Directory": [{"fastKey": "/library/sections/2/all?actor=134671", "thumb": "https://metadata-static.plex.tv/e/people/e2a915b537ef720252b6d408bc1f91b3.jpg", "key": "134671", "title": "Aaron Paul"}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-search-all-libraries: "": parameters: @@ -1883,16 +1883,16 @@ examples: X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58" responses: "200": - application/json: {"MediaContainer": {"size": 9266.91, "SearchResult": [{"score": 2698.71, "Metadata": {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [{"tag": "Adventure"}, {"tag": "Adventure"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}, {"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}}, {"score": 8744.37, "Metadata": {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": []}], "Genre": [{"tag": "Adventure"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}}, {"score": 6729.16, "Metadata": {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "episodeSort": "0", "enableCreditsMarkerGeneration": "-1", "showOrdering": "absolute", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}, {"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 0, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}, {"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "0", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}, {"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [{"tag": "Adventure"}, {"tag": "Adventure"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}], "Role": [{"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}, {"id": 294129, "filter": "actor=294129", "thumb": "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", "tag": "Mike Smith", "tagKey": "668e7e7b22bcad9064350c91", "role": "Self"}], "Location": [{"path": "/TV Shows/House"}], "Guid": [{"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}, {"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}}]}} + application/json: {"MediaContainer": {"size": 5709.89, "SearchResult": []}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-media-meta-data: speakeasy-default-get-media-meta-data: parameters: path: - ratingKey: 9518 + ratingKey: "21119,21617" query: includeConcerts: true includeExtras: true @@ -1909,11 +1909,11 @@ examples: asyncRefreshLocalMediaAgent: true responses: "200": - application/json: {"MediaContainer": {"size": 50, "allowSync": false, "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}, {"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}, {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}, {"id": 259, "tag": "Crime", "filter": "genre=19"}, {"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}, {"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Guid": [{"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}, {"path": "/TV Shows/Better Call Saul"}, {"path": "/TV Shows/Better Call Saul"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}, {"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}, {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}, {"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}, {"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}, {"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}, {"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}, {"path": "/TV Shows/Better Call Saul"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}, {"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "Guid": [{"id": "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}"}], "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "format": "srt", "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "key": "/library/streams/216389", "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "tag": "Crime", "filter": "genre=19"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"id": 126522, "tag": "Danny Boyle", "filter": "director=235876", "tagKey": "5d776831151a60001f24d031", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg"}], "Writer": [{"id": 126522, "tag": "Jamie P. Hanson", "filter": "writer=126522", "thumb": "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", "tagKey": "5d77683d85719b001f3a535e"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Role": [{"id": 126522, "tag": "Teller", "role": "Self - Judge", "filter": "actor=126522", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}], "Chapter": [{"id": 4, "filter": "thumb=4", "index": 1, "startTimeOffset": 0, "endTimeOffset": 100100, "thumb": "/library/media/46883/chapterImages/1"}], "Marker": [{"id": 306970, "type": "credits", "startTimeOffset": 4176050, "endTimeOffset": 4393389, "final": true, "Attributes": {"id": 306970, "version": 4}}], "Extras": {"size": 1}}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-media-arts: speakeasy-default-get-media-arts: parameters: @@ -1921,7 +1921,7 @@ examples: ratingKey: 16099 responses: "200": - application/json: {"MediaContainer": {"size": 50, "mediaTagVersion": 1734362201, "mediaTagPrefix": "/system/bundle/media/flags/", "identifier": "com.plexapp.plugins.library", "Metadata": [{"key": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "provider": "tmdb", "ratingKey": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "selected": true, "thumb": "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg"}, {"key": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "provider": "tmdb", "ratingKey": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "selected": true, "thumb": "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg"}, {"key": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "provider": "tmdb", "ratingKey": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "selected": true, "thumb": "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg"}]}} + application/json: {"MediaContainer": {"size": 50, "mediaTagVersion": 1734362201, "mediaTagPrefix": "/system/bundle/media/flags/", "identifier": "com.plexapp.plugins.library", "Metadata": [{"key": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "provider": "tmdb", "ratingKey": "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", "selected": true, "thumb": "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg"}]}} post-media-arts: speakeasy-default-post-media-arts: parameters: @@ -1936,7 +1936,7 @@ examples: ratingKey: 16099 responses: "200": - application/json: {"MediaContainer": {"size": 50, "mediaTagVersion": 1734362201, "mediaTagPrefix": "/system/bundle/media/flags/", "identifier": "com.plexapp.plugins.library", "Metadata": [{"key": "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", "provider": "tmdb", "ratingKey": "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", "selected": true, "thumb": "https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg"}, {"key": "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", "provider": "tmdb", "ratingKey": "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", "selected": true, "thumb": "https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg"}]}} + application/json: {"MediaContainer": {"size": 50, "mediaTagVersion": 1734362201, "mediaTagPrefix": "/system/bundle/media/flags/", "identifier": "com.plexapp.plugins.library", "Metadata": []}} post-media-poster: speakeasy-default-post-media-poster: parameters: @@ -1948,20 +1948,20 @@ examples: include-stream: parameters: path: - ratingKey: 1539.14 + ratingKey: 2403.67 query: includeElements: "Stream" responses: "200": - application/json: {"MediaContainer": {"size": 3, "allowSync": true, "art": "/library/metadata/30072/art/1705739923", "identifier": "com.plexapp.plugins.library", "key": "30072", "librarySectionID": 2, "librarySectionTitle": "TV Shows", "librarySectionUUID": "4bb2521c-8ba9-459b-aaee-8ab8bc35eabd", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "nocache": true, "parentIndex": 1, "parentTitle": "Reacher", "parentYear": 2022, "summary": "When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia.", "theme": "/library/metadata/30072/theme/1705739923", "thumb": "/library/metadata/30072/thumb/1705739923", "title1": "TV Shows", "title2": "Reacher", "viewGroup": "season", "viewMode": 65593, "Directory": [{"leafCount": 16, "thumb": "/library/metadata/30072/thumb/1705739923", "viewedLeafCount": 16, "key": "/library/metadata/30072/allLeaves", "title": "All episodes"}], "Metadata": [{"ratingKey": "66488", "key": "/library/metadata/66488/children", "parentRatingKey": "30072", "guid": "plex://season/652aea6549508477c34c6000", "parentGuid": "plex://show/5d9c09190aaccd001f8f42f0", "parentStudio": "Amazon Studios", "type": "season", "title": "Season 2", "parentKey": "/library/metadata/30072", "parentTitle": "Reacher", "summary": "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", "index": 2, "parentIndex": 1, "viewCount": 11, "lastViewedAt": 1705646565, "parentYear": 2022, "thumb": "/library/metadata/66488/thumb/1703065033", "art": "/library/metadata/30072/art/1705739923", "parentThumb": "/library/metadata/30072/thumb/1705739923", "parentTheme": "/library/metadata/30072/theme/1705739923", "leafCount": 8, "viewedLeafCount": 8, "addedAt": 1702602021, "updatedAt": 1703065033, "userRating": 9, "skipCount": 1, "lastRatedAt": 1703881224}, {"ratingKey": "66488", "key": "/library/metadata/66488/children", "parentRatingKey": "30072", "guid": "plex://season/652aea6549508477c34c6000", "parentGuid": "plex://show/5d9c09190aaccd001f8f42f0", "parentStudio": "Amazon Studios", "type": "season", "title": "Season 2", "parentKey": "/library/metadata/30072", "parentTitle": "Reacher", "summary": "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", "index": 2, "parentIndex": 1, "viewCount": 11, "lastViewedAt": 1705646565, "parentYear": 2022, "thumb": "/library/metadata/66488/thumb/1703065033", "art": "/library/metadata/30072/art/1705739923", "parentThumb": "/library/metadata/30072/thumb/1705739923", "parentTheme": "/library/metadata/30072/theme/1705739923", "leafCount": 8, "viewedLeafCount": 8, "addedAt": 1702602021, "updatedAt": 1703065033, "userRating": 9, "skipCount": 1, "lastRatedAt": 1703881224}]}} + application/json: {"MediaContainer": {"size": 3, "allowSync": true, "art": "/library/metadata/30072/art/1705739923", "identifier": "com.plexapp.plugins.library", "key": "30072", "librarySectionID": 2, "librarySectionTitle": "TV Shows", "librarySectionUUID": "4bb2521c-8ba9-459b-aaee-8ab8bc35eabd", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "nocache": true, "parentIndex": 1, "parentTitle": "Reacher", "parentYear": 2022, "summary": "When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia.", "theme": "/library/metadata/30072/theme/1705739923", "thumb": "/library/metadata/30072/thumb/1705739923", "title1": "TV Shows", "title2": "Reacher", "viewGroup": "season", "viewMode": 65593, "Directory": [{"leafCount": 16, "thumb": "/library/metadata/30072/thumb/1705739923", "viewedLeafCount": 16, "key": "/library/metadata/30072/allLeaves", "title": "All episodes"}], "Metadata": [{"ratingKey": "66488", "key": "/library/metadata/66488/children", "parentRatingKey": "30072", "guid": "plex://season/652aea6549508477c34c6000", "parentGuid": "plex://show/5d9c09190aaccd001f8f42f0", "parentStudio": "Amazon Studios", "type": "season", "title": "Season 2", "parentKey": "/library/metadata/30072", "parentTitle": "Reacher", "summary": "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", "index": 2, "parentIndex": 1, "viewCount": 11, "lastViewedAt": 1705646565, "parentYear": 2022, "thumb": "/library/metadata/66488/thumb/1703065033", "art": "/library/metadata/30072/art/1705739923", "parentThumb": "/library/metadata/30072/thumb/1705739923", "parentTheme": "/library/metadata/30072/theme/1705739923", "leafCount": 8, "viewedLeafCount": 8, "addedAt": 1702602021, "updatedAt": 1703065033, "userRating": 9, "skipCount": 1, "lastRatedAt": 1703881224}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} include-stream-otheritem: parameters: path: - ratingKey: 2900.64 + ratingKey: 5846.06 query: includeElements: "Stream,OtherItem" responses: @@ -1974,34 +1974,34 @@ examples: include-stream-otheritem-anotheritem: parameters: path: - ratingKey: 8466.85 + ratingKey: 8273.28 query: includeElements: "Stream,OtherItem,AnotherItem" responses: "200": - application/json: {"MediaContainer": {"size": 3, "allowSync": true, "art": "/library/metadata/30072/art/1705739923", "identifier": "com.plexapp.plugins.library", "key": "30072", "librarySectionID": 2, "librarySectionTitle": "TV Shows", "librarySectionUUID": "4bb2521c-8ba9-459b-aaee-8ab8bc35eabd", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "nocache": true, "parentIndex": 1, "parentTitle": "Reacher", "parentYear": 2022, "summary": "When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia.", "theme": "/library/metadata/30072/theme/1705739923", "thumb": "/library/metadata/30072/thumb/1705739923", "title1": "TV Shows", "title2": "Reacher", "viewGroup": "season", "viewMode": 65593, "Directory": [{"leafCount": 16, "thumb": "/library/metadata/30072/thumb/1705739923", "viewedLeafCount": 16, "key": "/library/metadata/30072/allLeaves", "title": "All episodes"}], "Metadata": [{"ratingKey": "66488", "key": "/library/metadata/66488/children", "parentRatingKey": "30072", "guid": "plex://season/652aea6549508477c34c6000", "parentGuid": "plex://show/5d9c09190aaccd001f8f42f0", "parentStudio": "Amazon Studios", "type": "season", "title": "Season 2", "parentKey": "/library/metadata/30072", "parentTitle": "Reacher", "summary": "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", "index": 2, "parentIndex": 1, "viewCount": 11, "lastViewedAt": 1705646565, "parentYear": 2022, "thumb": "/library/metadata/66488/thumb/1703065033", "art": "/library/metadata/30072/art/1705739923", "parentThumb": "/library/metadata/30072/thumb/1705739923", "parentTheme": "/library/metadata/30072/theme/1705739923", "leafCount": 8, "viewedLeafCount": 8, "addedAt": 1702602021, "updatedAt": 1703065033, "userRating": 9, "skipCount": 1, "lastRatedAt": 1703881224}, {"ratingKey": "66488", "key": "/library/metadata/66488/children", "parentRatingKey": "30072", "guid": "plex://season/652aea6549508477c34c6000", "parentGuid": "plex://show/5d9c09190aaccd001f8f42f0", "parentStudio": "Amazon Studios", "type": "season", "title": "Season 2", "parentKey": "/library/metadata/30072", "parentTitle": "Reacher", "summary": "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", "index": 2, "parentIndex": 1, "viewCount": 11, "lastViewedAt": 1705646565, "parentYear": 2022, "thumb": "/library/metadata/66488/thumb/1703065033", "art": "/library/metadata/30072/art/1705739923", "parentThumb": "/library/metadata/30072/thumb/1705739923", "parentTheme": "/library/metadata/30072/theme/1705739923", "leafCount": 8, "viewedLeafCount": 8, "addedAt": 1702602021, "updatedAt": 1703065033, "userRating": 9, "skipCount": 1, "lastRatedAt": 1703881224}]}} + application/json: {"MediaContainer": {"size": 3, "allowSync": true, "art": "/library/metadata/30072/art/1705739923", "identifier": "com.plexapp.plugins.library", "key": "30072", "librarySectionID": 2, "librarySectionTitle": "TV Shows", "librarySectionUUID": "4bb2521c-8ba9-459b-aaee-8ab8bc35eabd", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "nocache": true, "parentIndex": 1, "parentTitle": "Reacher", "parentYear": 2022, "summary": "When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia.", "theme": "/library/metadata/30072/theme/1705739923", "thumb": "/library/metadata/30072/thumb/1705739923", "title1": "TV Shows", "title2": "Reacher", "viewGroup": "season", "viewMode": 65593, "Directory": [{"leafCount": 16, "thumb": "/library/metadata/30072/thumb/1705739923", "viewedLeafCount": 16, "key": "/library/metadata/30072/allLeaves", "title": "All episodes"}], "Metadata": [{"ratingKey": "66488", "key": "/library/metadata/66488/children", "parentRatingKey": "30072", "guid": "plex://season/652aea6549508477c34c6000", "parentGuid": "plex://show/5d9c09190aaccd001f8f42f0", "parentStudio": "Amazon Studios", "type": "season", "title": "Season 2", "parentKey": "/library/metadata/30072", "parentTitle": "Reacher", "summary": "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", "index": 2, "parentIndex": 1, "viewCount": 11, "lastViewedAt": 1705646565, "parentYear": 2022, "thumb": "/library/metadata/66488/thumb/1703065033", "art": "/library/metadata/30072/art/1705739923", "parentThumb": "/library/metadata/30072/thumb/1705739923", "parentTheme": "/library/metadata/30072/theme/1705739923", "leafCount": 8, "viewedLeafCount": 8, "addedAt": 1702602021, "updatedAt": 1703065033, "userRating": 9, "skipCount": 1, "lastRatedAt": 1703881224}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getTopWatchedContent: - "": + speakeasy-default-get-top-watched-content: parameters: query: - includeGuids: 1 type: 2 + includeGuids: 1 responses: "200": - application/json: {"MediaContainer": {"size": 1, "allowSync": true, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1698860922, "Metadata": [{"ratingKey": "17", "key": "/library/metadata/17", "guid": "plex://movie/5d77683f6f4521001ea9dc53", "slug": "waterloo-road", "studio": "Universal Pictures", "type": "movie", "title": "Serenity", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG-13", "summary": "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", "index": 1, "audienceRating": 9.1, "year": 2005, "tagline": "They aim to misbehave.", "thumb": "/library/metadata/17/thumb/1705637165", "art": "/library/metadata/17/art/1705637165", "duration": 141417, "originallyAvailableAt": "2005-09-29T00:00:00Z", "leafCount": 222, "viewedLeafCount": 100, "childCount": 13, "addedAt": 1705637164, "updatedAt": 1705637165, "globalViewCount": 80, "audienceRatingImage": "rottentomatoes://image.rating.upright", "Genre": [{"id": 184, "filter": "genre=184", "tag": "Thriller"}], "Country": [{"id": 116, "filter": "country=116", "tag": "United States of America"}, {"id": 116, "filter": "country=116", "tag": "United States of America"}], "Guid": [{"id": "tvdb://2337"}], "Role": [{"id": 220, "filter": "actor=220", "tag": "Dennis Keiffer", "tagKey": "5d77683554f42c001f8c4708", "role": "Bar Guy (uncredited)", "thumb": "https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg"}, {"id": 220, "filter": "actor=220", "tag": "Dennis Keiffer", "tagKey": "5d77683554f42c001f8c4708", "role": "Bar Guy (uncredited)", "thumb": "https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg"}], "User": [{"id": 220}, {"id": 220}, {"id": 220}]}, {"ratingKey": "17", "key": "/library/metadata/17", "guid": "plex://movie/5d77683f6f4521001ea9dc53", "slug": "waterloo-road", "studio": "Universal Pictures", "type": "movie", "title": "Serenity", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG-13", "summary": "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", "index": 1, "audienceRating": 9.1, "year": 2005, "tagline": "They aim to misbehave.", "thumb": "/library/metadata/17/thumb/1705637165", "art": "/library/metadata/17/art/1705637165", "duration": 141417, "originallyAvailableAt": "2005-09-29T00:00:00Z", "leafCount": 222, "viewedLeafCount": 100, "childCount": 13, "addedAt": 1705637164, "updatedAt": 1705637165, "globalViewCount": 80, "audienceRatingImage": "rottentomatoes://image.rating.upright", "Genre": [{"id": 184, "filter": "genre=184", "tag": "Thriller"}], "Country": [{"id": 116, "filter": "country=116", "tag": "United States of America"}, {"id": 116, "filter": "country=116", "tag": "United States of America"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Role": [{"id": 220, "filter": "actor=220", "tag": "Dennis Keiffer", "tagKey": "5d77683554f42c001f8c4708", "role": "Bar Guy (uncredited)", "thumb": "https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg"}], "User": [{"id": 220}, {"id": 220}]}]}} + application/json: {"MediaContainer": {"size": 50, "allowSync": false, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "Metadata": [{"ratingKey": "17", "key": "/library/metadata/17", "guid": "plex://movie/5d77683f6f4521001ea9dc53", "slug": "waterloo-road", "studio": "Universal Pictures", "type": "movie", "title": "Serenity", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG-13", "summary": "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", "index": 1, "audienceRating": 9.1, "year": 2005, "tagline": "They aim to misbehave.", "thumb": "/library/metadata/17/thumb/1705637165", "art": "/library/metadata/17/art/1705637165", "duration": 141417, "originallyAvailableAt": "2005-09-29T00:00:00Z", "leafCount": 222, "viewedLeafCount": 100, "childCount": 13, "addedAt": 1705637164, "updatedAt": 1705637165, "globalViewCount": 80, "audienceRatingImage": "rottentomatoes://image.rating.upright", "Genre": [{"id": 184, "filter": "genre=184", "tag": "Thriller"}], "Country": [{"id": 116, "filter": "country=116", "tag": "United States of America"}], "Guid": [{"id": "tvdb://2337"}], "Role": [{"id": 220, "filter": "actor=220", "tag": "Dennis Keiffer", "tagKey": "5d77683554f42c001f8c4708", "role": "Bar Guy (uncredited)", "thumb": "https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg"}], "User": [{"id": 220}]}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-watch-list: speakeasy-default-get-watch-list: parameters: path: - filter: "available" + filter: "released" query: X-Plex-Container-Start: 0 X-Plex-Container-Size: 50 @@ -2011,7 +2011,7 @@ examples: "200": application/json: {} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} logLine: @@ -2023,7 +2023,7 @@ examples: source: "Postman" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} logMultiLine: @@ -2032,124 +2032,123 @@ examples: text/plain: "level=4&message=Test%20message%201&source=postman\nlevel=3&message=Test%20message%202&source=postman\nlevel=1&message=Test%20message%203&source=postman" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} enablePaperTrail: speakeasy-default-enable-paper-trail: responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} createPlaylist: speakeasy-default-create-playlist: parameters: query: title: "" - type: "photo" + type: "audio" smart: 1 - uri: "https://hoarse-testing.info/" + uri: "https://short-term-disconnection.name/" responses: "200": - application/json: {"MediaContainer": {"size": 7, "Metadata": [{"ratingKey": "96", "key": "/playlists/96/items", "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "type": "playlist", "title": "A Great Playlist", "summary": "What a great playlist", "smart": false, "playlistType": "video", "icon": "playlist://image.smart", "viewCount": 1, "lastViewedAt": 1705719589, "leafCount": 1, "addedAt": 1705719589, "updatedAt": 1705724593, "composite": "/playlists/96/composite/1705724593", "duration": 141000}, {"ratingKey": "96", "key": "/playlists/96/items", "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "type": "playlist", "title": "A Great Playlist", "summary": "What a great playlist", "smart": false, "playlistType": "video", "icon": "playlist://image.smart", "viewCount": 1, "lastViewedAt": 1705719589, "leafCount": 1, "addedAt": 1705719589, "updatedAt": 1705724593, "composite": "/playlists/96/composite/1705724593", "duration": 141000}]}} + application/json: {"MediaContainer": {"size": 7, "Metadata": [{"ratingKey": "96", "key": "/playlists/96/items", "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "type": "playlist", "title": "A Great Playlist", "summary": "What a great playlist", "smart": false, "playlistType": "video", "icon": "playlist://image.smart", "viewCount": 1, "lastViewedAt": 1705719589, "leafCount": 1, "addedAt": 1705719589, "updatedAt": 1705724593, "composite": "/playlists/96/composite/1705724593", "duration": 141000}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getPlaylists: speakeasy-default-get-playlists: responses: "200": application/json: {"MediaContainer": {"size": 4, "Metadata": [{"ratingKey": "92", "key": "/playlists/92/items", "guid": "com.plexapp.agents.none://7ca5aaef-58e8-4828-9e21-c009c97f2903", "type": "playlist", "title": "Static Playlist", "summary": "A Great Playlist", "smart": false, "playlistType": "video", "composite": "/playlists/92/composite/1705716440", "icon": "playlist://image.smart", "viewCount": 1, "lastViewedAt": 1705716298, "duration": 7328000, "leafCount": 32, "addedAt": 1705716298, "updatedAt": 1705716440}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getPlaylist: speakeasy-default-get-playlist: parameters: path: - playlistID: 4109.48 + playlistID: 8419.53 responses: "200": - application/json: {"MediaContainer": {"size": 1, "Metadata": [{"content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "ratingKey": "95", "key": "/playlists/95/items", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "type": "playlist", "title": "Smart Movie Playlist", "summary": "", "smart": true, "playlistType": "video", "composite": "/playlists/95/composite/1705717387", "icon": "playlist://image.smart", "duration": 282000, "leafCount": 2, "addedAt": 1705716493, "updatedAt": 1705717387}, {"content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "ratingKey": "95", "key": "/playlists/95/items", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "type": "playlist", "title": "Smart Movie Playlist", "summary": "", "smart": true, "playlistType": "video", "composite": "/playlists/95/composite/1705717387", "icon": "playlist://image.smart", "duration": 282000, "leafCount": 2, "addedAt": 1705716493, "updatedAt": 1705717387}, {"content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "ratingKey": "95", "key": "/playlists/95/items", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "type": "playlist", "title": "Smart Movie Playlist", "summary": "", "smart": true, "playlistType": "video", "composite": "/playlists/95/composite/1705717387", "icon": "playlist://image.smart", "duration": 282000, "leafCount": 2, "addedAt": 1705716493, "updatedAt": 1705717387}]}} + application/json: {"MediaContainer": {"size": 1, "Metadata": [{"content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "ratingKey": "95", "key": "/playlists/95/items", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "type": "playlist", "title": "Smart Movie Playlist", "summary": "", "smart": true, "playlistType": "video", "composite": "/playlists/95/composite/1705717387", "icon": "playlist://image.smart", "duration": 282000, "leafCount": 2, "addedAt": 1705716493, "updatedAt": 1705717387}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} deletePlaylist: speakeasy-default-delete-playlist: parameters: path: - playlistID: 216.22 + playlistID: 3432.93 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} updatePlaylist: speakeasy-default-update-playlist: parameters: path: - playlistID: 3915 - query: {} + playlistID: 1579.66 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getPlaylistContents: speakeasy-default-get-playlist-contents: parameters: path: - playlistID: 5004.46 + playlistID: 5535.42 query: type: 2 responses: "200": - application/json: {"MediaContainer": {"size": 2, "composite": "/playlists/95/composite/1705717521", "duration": 282, "leafCount": 2, "playlistType": "video", "ratingKey": "95", "smart": true, "title": "Smart Movie Playlist", "Metadata": [{"ratingKey": "17", "key": "/library/metadata/17", "guid": "plex://movie/5d77683f6f4521001ea9dc53", "studio": "Universal Pictures", "type": "movie", "title": "Serenity", "titleSort": "Amazing Spider-Man 2", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG-13", "summary": "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", "rating": 8.2, "audienceRating": 9.1, "year": 2005, "tagline": "They aim to misbehave.", "thumb": "/library/metadata/17/thumb/1705637165", "art": "/library/metadata/17/art/1705637165", "duration": 141416, "originallyAvailableAt": "2005-09-29T00:00:00Z", "addedAt": 1705637164, "updatedAt": 1705637165, "audienceRatingImage": "rottentomatoes://image.rating.upright", "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 15, "duration": 141416, "bitrate": 2273, "width": 1920, "height": 814, "aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 15, "key": "/library/parts/15/1705637151/file.mp4", "duration": 141416, "file": "/movies/Serenity (2005)/Serenity (2005).mp4", "size": 40271948, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "high"}, {"id": 15, "key": "/library/parts/15/1705637151/file.mp4", "duration": 141416, "file": "/movies/Serenity (2005)/Serenity (2005).mp4", "size": 40271948, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "high"}]}, {"id": 15, "duration": 141416, "bitrate": 2273, "width": 1920, "height": 814, "aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 15, "key": "/library/parts/15/1705637151/file.mp4", "duration": 141416, "file": "/movies/Serenity (2005)/Serenity (2005).mp4", "size": 40271948, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "high"}]}], "Genre": [{"tag": "Action"}, {"tag": "Action"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Joss Whedon"}], "Writer": [{"tag": "Joss Whedon"}, {"tag": "Joss Whedon"}, {"tag": "Joss Whedon"}], "Role": [{"tag": "Gina Torres"}, {"tag": "Gina Torres"}]}]}} + application/json: {"MediaContainer": {"size": 2, "composite": "/playlists/95/composite/1705717521", "duration": 282, "leafCount": 2, "playlistType": "video", "ratingKey": "95", "smart": true, "title": "Smart Movie Playlist", "Metadata": [{"ratingKey": "17", "key": "/library/metadata/17", "guid": "plex://movie/5d77683f6f4521001ea9dc53", "studio": "Universal Pictures", "type": "movie", "title": "Serenity", "titleSort": "Amazing Spider-Man 2", "librarySectionTitle": "Movies", "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "contentRating": "PG-13", "summary": "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", "rating": 8.2, "audienceRating": 9.1, "year": 2005, "tagline": "They aim to misbehave.", "thumb": "/library/metadata/17/thumb/1705637165", "art": "/library/metadata/17/art/1705637165", "duration": 141416, "originallyAvailableAt": "2005-09-29T00:00:00Z", "addedAt": 1705637164, "updatedAt": 1705637165, "audienceRatingImage": "rottentomatoes://image.rating.upright", "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "ratingImage": "rottentomatoes://image.rating.ripe", "Media": [{"id": 15, "duration": 141416, "bitrate": 2273, "width": 1920, "height": 814, "aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "videoCodec": "h264", "videoResolution": "1080", "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "audioProfile": "lc", "has64bitOffsets": false, "videoProfile": "high", "Part": [{"id": 15, "key": "/library/parts/15/1705637151/file.mp4", "duration": 141416, "file": "/movies/Serenity (2005)/Serenity (2005).mp4", "size": 40271948, "audioProfile": "lc", "container": "mp4", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "high"}]}], "Genre": [{"tag": "Action"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "Joss Whedon"}], "Writer": [{"tag": "Joss Whedon"}], "Role": [{"tag": "Gina Torres"}]}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} clearPlaylistContents: speakeasy-default-clear-playlist-contents: parameters: path: - playlistID: 1893.18 + playlistID: 4137.37 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} addPlaylistContents: speakeasy-default-add-playlist-contents: parameters: path: - playlistID: 8502.01 + playlistID: 7013.44 query: uri: "server://12345/com.plexapp.plugins.library/library/metadata/1" playQueueID: 123 responses: "200": - application/json: {"MediaContainer": {"size": 1, "leafCountAdded": 1, "leafCountRequested": 1, "Metadata": [{"ratingKey": "94", "key": "/playlists/94/items", "guid": "com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2", "type": "playlist", "title": "A great playlist", "summary": "One of my great playlists", "smart": false, "playlistType": "video", "composite": "/playlists/94/composite/1705800070", "duration": 423000, "leafCount": 3, "addedAt": 1705716458, "updatedAt": 1705800070}, {"ratingKey": "94", "key": "/playlists/94/items", "guid": "com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2", "type": "playlist", "title": "A great playlist", "summary": "One of my great playlists", "smart": false, "playlistType": "video", "composite": "/playlists/94/composite/1705800070", "duration": 423000, "leafCount": 3, "addedAt": 1705716458, "updatedAt": 1705800070}]}} + application/json: {"MediaContainer": {"size": 1, "leafCountAdded": 1, "leafCountRequested": 1, "Metadata": [{"ratingKey": "94", "key": "/playlists/94/items", "guid": "com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2", "type": "playlist", "title": "A great playlist", "summary": "One of my great playlists", "smart": false, "playlistType": "video", "composite": "/playlists/94/composite/1705800070", "duration": 423000, "leafCount": 3, "addedAt": 1705716458, "updatedAt": 1705800070}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} uploadPlaylist: speakeasy-default-upload-playlist: parameters: query: path: "/home/barkley/playlist.m3u" - force: 0 + force: 1 sectionID: 1 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getTransientToken: speakeasy-default-get-transient-token: parameters: @@ -2165,19 +2164,19 @@ examples: speakeasy-default-get-source-connection-information: parameters: query: - source: "provider://provider-identifier" + source: "server://client-identifier" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getTokenDetails: speakeasy-default-get-token-details: responses: "200": - application/json: {"adsConsent": false, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "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": 1556281940, "locale": "ja", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [{"identifier": "metadata-dev", "endpoint": "https://epg.provider.plex.tv", "token": "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", "secret": "", "status": "online"}], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null} + application/json: {"adsConsent": true, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "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": 1556281940, "locale": "it", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} post-users-sign-in-data: @@ -2193,11 +2192,11 @@ examples: application/x-www-form-urlencoded: {"login": "username@email.com", "password": "password123", "rememberMe": false, "verificationCode": "123456"} responses: "201": - application/json: {"adsConsent": false, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "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": 1556281940, "locale": "zh", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 0, "defaultSubtitleAccessibility": 0, "defaultSubtitleForced": 0, "watchedIndicator": 0, "mediaReviewsVisibility": 0}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [{"identifier": "metadata-dev", "endpoint": "https://epg.provider.plex.tv", "token": "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", "secret": "", "status": "online"}, {"identifier": "metadata-dev", "endpoint": "https://epg.provider.plex.tv", "token": "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", "secret": "", "status": "online"}, {"identifier": "metadata-dev", "endpoint": "https://epg.provider.plex.tv", "token": "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", "secret": "", "status": "online"}], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null, "pastSubscriptions": [{"id": "", "mode": "", "renewsAt": 1556281940, "endsAt": 1556281940, "canceled": false, "gracePeriod": false, "onHold": false, "canReactivate": false, "canUpgrade": false, "canDowngrade": false, "canConvert": false, "type": "plexpass", "transfer": "", "state": "ended", "billing": {"internalPaymentMethod": {}, "paymentMethodId": 778268}}, {"id": "", "mode": "", "renewsAt": 1556281940, "endsAt": 1556281940, "canceled": false, "gracePeriod": false, "onHold": false, "canReactivate": false, "canUpgrade": false, "canDowngrade": false, "canConvert": false, "type": "plexpass", "transfer": "", "state": "ended", "billing": {"internalPaymentMethod": {}, "paymentMethodId": 417052}}, {"id": "", "mode": "", "renewsAt": 1556281940, "endsAt": 1556281940, "canceled": false, "gracePeriod": false, "onHold": false, "canReactivate": false, "canUpgrade": false, "canDowngrade": false, "canConvert": false, "type": "plexpass", "transfer": "", "state": "ended", "billing": {"internalPaymentMethod": {}, "paymentMethodId": 860168}}], "trials": [{}, {}]} + application/json: {"adsConsent": null, "adsConsentReminderAt": 1556281940, "adsConsentSetAt": 1556281940, "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": 1556281940, "locale": "ru", "mailingListActive": false, "mailingListStatus": "active", "maxHomeSize": 15, "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1556281940, "restricted": false, "scrobbleTypes": "", "services": [], "subscription": {"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}, "subscriptionDescription": "", "subscriptions": [{"active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null, "pastSubscriptions": [], "trials": []} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getStatistics: "": parameters: @@ -2205,9 +2204,9 @@ examples: timespan: 4 responses: "200": - application/json: {"MediaContainer": {"size": 5497, "Device": [{"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}, {"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}], "Account": [{"id": 238960586, "key": "/accounts/238960586", "name": "Diane", "defaultAudioLanguage": "en", "autoSelectAudio": true, "defaultSubtitleLanguage": "en", "subtitleMode": 1, "thumb": "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967"}], "StatisticsMedia": [{"accountID": 1, "deviceID": 13, "timespan": 4, "at": 1707141600, "metadataType": 4, "count": 1, "duration": 1555}, {"accountID": 1, "deviceID": 13, "timespan": 4, "at": 1707141600, "metadataType": 4, "count": 1, "duration": 1555}, {"accountID": 1, "deviceID": 13, "timespan": 4, "at": 1707141600, "metadataType": 4, "count": 1, "duration": 1555}]}} + application/json: {"MediaContainer": {"size": 5497, "Device": [{"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}], "Account": [{"id": 238960586, "key": "/accounts/238960586", "name": "Diane", "defaultAudioLanguage": "en", "autoSelectAudio": true, "defaultSubtitleLanguage": "en", "subtitleMode": 1, "thumb": "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967"}], "StatisticsMedia": [{"accountID": 1, "deviceID": 13, "timespan": 4, "at": 1707141600, "metadataType": 4, "count": 1, "duration": 1555}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getResourcesStatistics: @@ -2217,11 +2216,11 @@ examples: timespan: 4 responses: "200": - application/json: {"MediaContainer": {"size": 5497, "StatisticsResources": [{"timespan": 6, "at": 1718384427, "hostCpuUtilization": 1.276, "processCpuUtilization": 0.025, "hostMemoryUtilization": 17.026, "processMemoryUtilization": 0.493}, {"timespan": 6, "at": 1718384427, "hostCpuUtilization": 1.276, "processCpuUtilization": 0.025, "hostMemoryUtilization": 17.026, "processMemoryUtilization": 0.493}]}} + application/json: {"MediaContainer": {"size": 5497, "StatisticsResources": [{"timespan": 6, "at": 1718384427, "hostCpuUtilization": 1.276, "processCpuUtilization": 0.025, "hostMemoryUtilization": 17.026, "processMemoryUtilization": 0.493}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getBandwidthStatistics: "": parameters: @@ -2229,18 +2228,18 @@ examples: timespan: 4 responses: "200": - application/json: {"MediaContainer": {"size": 5497, "Device": [{"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}, {"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}, {"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}], "Account": [{"id": 238960586, "key": "/accounts/238960586", "name": "Diane", "defaultAudioLanguage": "en", "autoSelectAudio": true, "defaultSubtitleLanguage": "en", "subtitleMode": 1, "thumb": "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967"}, {"id": 238960586, "key": "/accounts/238960586", "name": "Diane", "defaultAudioLanguage": "en", "autoSelectAudio": true, "defaultSubtitleLanguage": "en", "subtitleMode": 1, "thumb": "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967"}, {"id": 238960586, "key": "/accounts/238960586", "name": "Diane", "defaultAudioLanguage": "en", "autoSelectAudio": true, "defaultSubtitleLanguage": "en", "subtitleMode": 1, "thumb": "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967"}], "StatisticsBandwidth": [{"accountID": 238960586, "deviceID": 208, "timespan": 6, "at": 1718387650, "lan": true, "bytes": 22}, {"accountID": 238960586, "deviceID": 208, "timespan": 6, "at": 1718387650, "lan": true, "bytes": 22}]}} + application/json: {"MediaContainer": {"size": 5497, "Device": [{"id": 208, "name": "Roku Express", "platform": "Roku", "clientIdentifier": "793095d235660625108ef785cc7646e9", "createdAt": 1706470556}], "Account": [{"id": 238960586, "key": "/accounts/238960586", "name": "Diane", "defaultAudioLanguage": "en", "autoSelectAudio": true, "defaultSubtitleLanguage": "en", "subtitleMode": 1, "thumb": "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967"}], "StatisticsBandwidth": [{"accountID": 238960586, "deviceID": 208, "timespan": 6, "at": 1718387650, "lan": true, "bytes": 22}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getSessions: speakeasy-default-get-sessions: responses: "200": - application/json: {"MediaContainer": {"size": 1, "Metadata": [{"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}, {"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} + application/json: {"MediaContainer": {"size": 1, "Metadata": [{"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getSessionHistory: @@ -2249,75 +2248,81 @@ examples: query: sort: "viewedAt:desc" accountId: 1 + filter: {} librarySectionID: 12 responses: "200": - application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}, {"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} + application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} viewed-at-ascending: parameters: query: sort: "viewedAt:asc" accountId: 1 + filter: {} librarySectionID: 12 responses: "200": application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} rating-descending: parameters: query: sort: "rating:desc" accountId: 1 + filter: {} librarySectionID: 12 responses: "200": application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} rating-ascending: parameters: query: sort: "rating:asc" accountId: 1 + filter: {} librarySectionID: 12 responses: "200": application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} "": parameters: query: accountId: 1 + filter: {} librarySectionID: 12 responses: "200": - application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}, {"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} + application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} ViewedAt: parameters: query: accountId: 1 + filter: {} librarySectionID: 12 responses: "200": - application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}, {"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} + application/json: {"MediaContainer": {"size": 10855, "Metadata": [{"historyKey": "/status/sessions/history/1", "key": "/library/metadata/32171", "ratingKey": "32171", "librarySectionID": "2", "parentKey": "/library/metadata/32170", "grandparentKey": "/library/metadata/32132", "title": "The Noise That Blue Makes", "grandparentTitle": "Taskmaster", "type": "episode", "thumb": "/library/metadata/32171/thumb/-1", "parentThumb": "/library/metadata/32170/thumb/1654134301", "grandparentThumb": "/library/metadata/32132/thumb/1703933346", "grandparentArt": "/library/metadata/32132/art/1703933346", "index": 1, "parentIndex": 13, "originallyAvailableAt": "2022-04-14T00:00:00Z", "viewedAt": 1654139223, "accountID": 1, "deviceID": 5}]}} "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getTranscodeSessions: @@ -2328,7 +2333,7 @@ examples: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} stopTranscodeSession: speakeasy-default-stop-transcode-session: parameters: @@ -2336,9 +2341,9 @@ examples: sessionKey: "zz7llzqlx8w9vnrsbnwhbmep" responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} getUpdateStatus: speakeasy-default-get-update-status: responses: @@ -2347,7 +2352,7 @@ examples: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} checkForUpdates: "": parameters: @@ -2355,9 +2360,9 @@ examples: download: 1 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} applyUpdates: "": parameters: @@ -2366,7 +2371,7 @@ examples: skip: 1 responses: "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} get-users: @@ -2388,10 +2393,10 @@ examples: X-Plex-Token: "CV5xoxjTpFKUzBTShsaf" responses: "200": - application/xml: "0xa9CdebeF9E" + application/xml: "0xfD5052DbD1" "400": - application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": - application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} -examplesVersion: 1.0.1 + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} +examplesVersion: 1.0.2 generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 3233ba87..ccc2f625 100755 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -4,6 +4,7 @@ generation: maintainOpenAPIOrder: true usageSnippets: optionalPropertyRendering: withExample + sdkInitStyle: constructor useClassNamesForArrayFields: true fixes: nameResolutionDec2023: true @@ -16,7 +17,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false typescript: - version: 0.37.2 + version: 0.38.0 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 215b2060..954dedcb 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.542.1 +speakeasyVersion: 1.555.2 sources: my-source: sourceNamespace: my-source @@ -9,20 +9,20 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:37adc934a79841fb00cfe6ed569f5b1c88534b20202ecbde64b4e84828cee22a - sourceBlobDigest: sha256:ffb5b8d288111a763e4d035c8c9e37f5c89690d146b7297493b43a71d8298e6c + sourceRevisionDigest: sha256:78d07ad78ff60d0e9918696208d8c68a562e170d4e9c431797c02995fb8816d0 + sourceBlobDigest: sha256:d38dd2a36c1b2fd73409267f7b30c2d5d45d709616141803ea01db424ec68ae4 tags: - latest - - speakeasy-sdk-regen-1746403916 + - speakeasy-sdk-regen-1748995899 - 0.0.3 targets: plexjs: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:37adc934a79841fb00cfe6ed569f5b1c88534b20202ecbde64b4e84828cee22a - sourceBlobDigest: sha256:ffb5b8d288111a763e4d035c8c9e37f5c89690d146b7297493b43a71d8298e6c + sourceRevisionDigest: sha256:78d07ad78ff60d0e9918696208d8c68a562e170d4e9c431797c02995fb8816d0 + sourceBlobDigest: sha256:d38dd2a36c1b2fd73409267f7b30c2d5d45d709616141803ea01db424ec68ae4 codeSamplesNamespace: code-samples-typescript-plexjs - codeSamplesRevisionDigest: sha256:945657568eb11e06b45691a4a4a058c37170f5919329abbb42e23a5016781ba8 + codeSamplesRevisionDigest: sha256:132446d6299798fab8378bc875b16290ef126cdb50befe85a0a88bee8bf35799 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/FUNCTIONS.md b/FUNCTIONS.md index 6a1df179..cfa21a6f 100644 --- a/FUNCTIONS.md +++ b/FUNCTIONS.md @@ -21,7 +21,6 @@ specific category of applications. ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { serverGetServerCapabilities } from "@lukehagar/plexjs/funcs/serverGetServerCapabilities.js"; -import { SDKValidationError } from "@lukehagar/plexjs/sdk/models/errors/sdkvalidationerror.js"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -31,28 +30,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetServerCapabilities(plexAPI); - - switch (true) { - case res.ok: - // The success case will be handled outside of the switch block - break; - case res.error instanceof SDKValidationError: - // Pretty-print validation errors. - return console.log(res.error.pretty()); - case res.error instanceof Error: - return console.log(res.error); - default: - // TypeScript's type checking will fail on the following line if the above - // cases were not exhaustive. - res.error satisfies never; - throw new Error("Assertion failed: expected error checks to be exhaustive: " + res.error); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetServerCapabilities failed:", res.error); } - - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/README.md b/README.md index 9f78844a..137ec9ca 100644 --- a/README.md +++ b/README.md @@ -111,7 +111,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } @@ -160,7 +159,7 @@ run(); * [getLibraryDetails](docs/sdks/library/README.md#getlibrarydetails) - Get Library Details * [deleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section * [getLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items -* [getAllMediaLibrary](docs/sdks/library/README.md#getallmedialibrary) - Get all media of library +* [getLibrarySectionsAll](docs/sdks/library/README.md#getlibrarysectionsall) - Get Library section media by tag ALL * [getRefreshLibraryMetadata](docs/sdks/library/README.md#getrefreshlibrarymetadata) - Refresh Metadata Of The Library * [getSearchLibrary](docs/sdks/library/README.md#getsearchlibrary) - Search Library * [getGenresLibrary](docs/sdks/library/README.md#getgenreslibrary) - Get Genres of library media @@ -268,59 +267,46 @@ run(); ## Error Handling -Some methods specify known errors which can be thrown. All the known errors are enumerated in the `sdk/models/errors/errors.ts` module. The known errors for a method are documented under the *Errors* tables in SDK docs. For example, the `getServerCapabilities` method may throw the following errors: +This table shows properties which are common on error classes. For full details see [error classes](#error-classes). -| Error Type | Status Code | Content Type | -| ---------------------------------------- | ----------- | ---------------- | -| errors.GetServerCapabilitiesBadRequest | 400 | application/json | -| errors.GetServerCapabilitiesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -If the method throws an error and it is not captured by the known errors, it will default to throwing a `SDKError`. +| Property | Type | Description | +| ------------------- | ---------- | --------------------------------------------------------------------------------------- | +| `error.name` | `string` | Error class name eg `SDKError` | +| `error.message` | `string` | Error message | +| `error.statusCode` | `number` | HTTP status code eg `404` | +| `error.contentType` | `string` | HTTP content type eg `application/json` | +| `error.body` | `string` | HTTP body. Can be empty string if no body is returned. | +| `error.rawResponse` | `Response` | Raw HTTP response. Access to headers and more. | +| `error.data$` | | Optional. Some errors may contain structured data. [See Error Classes](#error-classes). | +### Example ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { - GetServerCapabilitiesBadRequest, - GetServerCapabilitiesUnauthorized, - SDKValidationError, -} from "@lukehagar/plexjs/sdk/models/errors"; +import * as errors from "@lukehagar/plexjs/sdk/models/errors"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - let result; try { - result = await plexAPI.server.getServerCapabilities(); + const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); - } catch (err) { - switch (true) { - // The server response does not match the expected SDK schema - case (err instanceof SDKValidationError): { - // Pretty-print will provide a human-readable multi-line error message - console.error(err.pretty()); - // Raw value may also be inspected - console.error(err.rawValue); - return; - } - case (err instanceof GetServerCapabilitiesBadRequest): { - // Handle err.data$: GetServerCapabilitiesBadRequestData - console.error(err); - return; - } - case (err instanceof GetServerCapabilitiesUnauthorized): { - // Handle err.data$: GetServerCapabilitiesUnauthorizedData - console.error(err); - return; - } - default: { - // Other errors such as network errors, see HTTPClientErrors for more details - throw err; - } + } catch (error) { + // Depending on the method different errors may be thrown + if (error instanceof errors.GetServerCapabilitiesBadRequest) { + console.log(error.message); + console.log(error.data$.errors); // Errors[] + console.log(error.data$.rawResponse); // Response + } + + // Fallback error class, if no other more specific error class is matched + if (error instanceof errors.SDKError) { + console.log(error.message); + console.log(error.statusCode); + console.log(error.body); + console.log(error.rawResponse.headers); } } } @@ -329,17 +315,178 @@ run(); ``` -Validation errors can also occur when either method arguments or data returned from the server do not match the expected format. The `SDKValidationError` that is thrown as a result will capture the raw value that failed validation in an attribute called `rawValue`. Additionally, a `pretty()` method is available on this error that can be used to log a nicely formatted multi-line string since validation errors can list many issues and the plain error string may be difficult read when debugging. +### Error Classes +* `SDKError`: The fallback error class, if no other more specific error class is matched. +* `SDKValidationError`: Type mismatch between the data returned from the server and the structure expected by the SDK. This can also be thrown for invalid method arguments. See `error.rawValue` for the raw value and `error.pretty()` for a nicely formatted multi-line string. +* Network errors: + * `ConnectionError`: HTTP client was unable to make a request to a server. + * `RequestTimeoutError`: HTTP request timed out due to an AbortSignal signal. + * `RequestAbortedError`: HTTP request was aborted by the client. + * `InvalidRequestError`: Any input used to create a request is invalid. + * `UnexpectedClientError`: Unrecognised or unexpected error. -In some rare cases, the SDK can fail to get a response from the server or even make the request due to unexpected circumstances such as network conditions. These types of errors are captured in the `sdk/models/errors/httpclienterrors.ts` module: +
Less common errors, applicable to a subset of methods (156) -| HTTP Client Error | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | -| RequestAbortedError | HTTP request was aborted by the client | -| RequestTimeoutError | HTTP request timed out due to an AbortSignal signal | -| ConnectionError | HTTP client was unable to make a request to a server | -| InvalidRequestError | Any input used to create a request is invalid | -| UnexpectedClientError | Unrecognised or unexpected error | +* [`GetServerCapabilitiesBadRequest`](docs/sdk/models/errors/getservercapabilitiesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetServerPreferencesBadRequest`](docs/sdk/models/errors/getserverpreferencesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetAvailableClientsBadRequest`](docs/sdk/models/errors/getavailableclientsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetDevicesBadRequest`](docs/sdk/models/errors/getdevicesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetMyPlexAccountBadRequest`](docs/sdk/models/errors/getmyplexaccountbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetResizedPhotoBadRequest`](docs/sdk/models/errors/getresizedphotobadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetMediaProvidersBadRequest`](docs/sdk/models/errors/getmediaprovidersbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetServerListBadRequest`](docs/sdk/models/errors/getserverlistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`MarkPlayedBadRequest`](docs/sdk/models/errors/markplayedbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`MarkUnplayedBadRequest`](docs/sdk/models/errors/markunplayedbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`UpdatePlayProgressBadRequest`](docs/sdk/models/errors/updateplayprogressbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetBannerImageBadRequest`](docs/sdk/models/errors/getbannerimagebadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetThumbImageBadRequest`](docs/sdk/models/errors/getthumbimagebadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetTimelineBadRequest`](docs/sdk/models/errors/gettimelinebadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`StartUniversalTranscodeBadRequest`](docs/sdk/models/errors/startuniversaltranscodebadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetServerActivitiesBadRequest`](docs/sdk/models/errors/getserveractivitiesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`CancelServerActivitiesBadRequest`](docs/sdk/models/errors/cancelserveractivitiesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetButlerTasksBadRequest`](docs/sdk/models/errors/getbutlertasksbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`StartAllTasksBadRequest`](docs/sdk/models/errors/startalltasksbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`StopAllTasksBadRequest`](docs/sdk/models/errors/stopalltasksbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`StartTaskBadRequest`](docs/sdk/models/errors/starttaskbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`StopTaskBadRequest`](docs/sdk/models/errors/stoptaskbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetCompanionsDataBadRequest`](docs/sdk/models/errors/getcompanionsdatabadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetUserFriendsBadRequest`](docs/sdk/models/errors/getuserfriendsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetGeoDataBadRequest`](docs/sdk/models/errors/getgeodatabadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetHomeDataBadRequest`](docs/sdk/models/errors/gethomedatabadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetServerResourcesBadRequest`](docs/sdk/models/errors/getserverresourcesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetPinBadRequest`](docs/sdk/models/errors/getpinbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetTokenByPinIdBadRequest`](docs/sdk/models/errors/gettokenbypinidbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetGlobalHubsBadRequest`](docs/sdk/models/errors/getglobalhubsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetLibraryHubsBadRequest`](docs/sdk/models/errors/getlibraryhubsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`PerformSearchBadRequest`](docs/sdk/models/errors/performsearchbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`PerformVoiceSearchBadRequest`](docs/sdk/models/errors/performvoicesearchbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetSearchResultsBadRequest`](docs/sdk/models/errors/getsearchresultsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetFileHashBadRequest`](docs/sdk/models/errors/getfilehashbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetRecentlyAddedLibraryBadRequest`](docs/sdk/models/errors/getrecentlyaddedlibrarybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetAllLibrariesBadRequest`](docs/sdk/models/errors/getalllibrariesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetLibraryDetailsBadRequest`](docs/sdk/models/errors/getlibrarydetailsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`DeleteLibraryBadRequest`](docs/sdk/models/errors/deletelibrarybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetLibraryItemsBadRequest`](docs/sdk/models/errors/getlibraryitemsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetLibrarySectionsAllBadRequest`](docs/sdk/models/errors/getlibrarysectionsallbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetRefreshLibraryMetadataBadRequest`](docs/sdk/models/errors/getrefreshlibrarymetadatabadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetSearchLibraryBadRequest`](docs/sdk/models/errors/getsearchlibrarybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetGenresLibraryBadRequest`](docs/sdk/models/errors/getgenreslibrarybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetCountriesLibraryBadRequest`](docs/sdk/models/errors/getcountrieslibrarybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetActorsLibraryBadRequest`](docs/sdk/models/errors/getactorslibrarybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetSearchAllLibrariesBadRequest`](docs/sdk/models/errors/getsearchalllibrariesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetMediaMetaDataBadRequest`](docs/sdk/models/errors/getmediametadatabadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetMetadataChildrenBadRequest`](docs/sdk/models/errors/getmetadatachildrenbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetTopWatchedContentBadRequest`](docs/sdk/models/errors/gettopwatchedcontentbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetWatchListBadRequest`](docs/sdk/models/errors/getwatchlistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`LogLineBadRequest`](docs/sdk/models/errors/loglinebadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`LogMultiLineBadRequest`](docs/sdk/models/errors/logmultilinebadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`EnablePaperTrailBadRequest`](docs/sdk/models/errors/enablepapertrailbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`CreatePlaylistBadRequest`](docs/sdk/models/errors/createplaylistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetPlaylistsBadRequest`](docs/sdk/models/errors/getplaylistsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetPlaylistBadRequest`](docs/sdk/models/errors/getplaylistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`DeletePlaylistBadRequest`](docs/sdk/models/errors/deleteplaylistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`UpdatePlaylistBadRequest`](docs/sdk/models/errors/updateplaylistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetPlaylistContentsBadRequest`](docs/sdk/models/errors/getplaylistcontentsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`ClearPlaylistContentsBadRequest`](docs/sdk/models/errors/clearplaylistcontentsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`AddPlaylistContentsBadRequest`](docs/sdk/models/errors/addplaylistcontentsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`UploadPlaylistBadRequest`](docs/sdk/models/errors/uploadplaylistbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetTransientTokenBadRequest`](docs/sdk/models/errors/gettransienttokenbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetSourceConnectionInformationBadRequest`](docs/sdk/models/errors/getsourceconnectioninformationbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetTokenDetailsBadRequest`](docs/sdk/models/errors/gettokendetailsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`PostUsersSignInDataBadRequest`](docs/sdk/models/errors/postuserssignindatabadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetStatisticsBadRequest`](docs/sdk/models/errors/getstatisticsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetResourcesStatisticsBadRequest`](docs/sdk/models/errors/getresourcesstatisticsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetBandwidthStatisticsBadRequest`](docs/sdk/models/errors/getbandwidthstatisticsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetSessionsBadRequest`](docs/sdk/models/errors/getsessionsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetSessionHistoryBadRequest`](docs/sdk/models/errors/getsessionhistorybadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetTranscodeSessionsBadRequest`](docs/sdk/models/errors/gettranscodesessionsbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`StopTranscodeSessionBadRequest`](docs/sdk/models/errors/stoptranscodesessionbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetUpdateStatusBadRequest`](docs/sdk/models/errors/getupdatestatusbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`CheckForUpdatesBadRequest`](docs/sdk/models/errors/checkforupdatesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`ApplyUpdatesBadRequest`](docs/sdk/models/errors/applyupdatesbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetUsersBadRequest`](docs/sdk/models/errors/getusersbadrequest.md): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* +* [`GetServerCapabilitiesUnauthorized`](docs/sdk/models/errors/getservercapabilitiesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetServerPreferencesUnauthorized`](docs/sdk/models/errors/getserverpreferencesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetAvailableClientsUnauthorized`](docs/sdk/models/errors/getavailableclientsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetDevicesUnauthorized`](docs/sdk/models/errors/getdevicesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetMyPlexAccountUnauthorized`](docs/sdk/models/errors/getmyplexaccountunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetResizedPhotoUnauthorized`](docs/sdk/models/errors/getresizedphotounauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetMediaProvidersUnauthorized`](docs/sdk/models/errors/getmediaprovidersunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetServerListUnauthorized`](docs/sdk/models/errors/getserverlistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`MarkPlayedUnauthorized`](docs/sdk/models/errors/markplayedunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`MarkUnplayedUnauthorized`](docs/sdk/models/errors/markunplayedunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`UpdatePlayProgressUnauthorized`](docs/sdk/models/errors/updateplayprogressunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetBannerImageUnauthorized`](docs/sdk/models/errors/getbannerimageunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetThumbImageUnauthorized`](docs/sdk/models/errors/getthumbimageunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetTimelineUnauthorized`](docs/sdk/models/errors/gettimelineunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`StartUniversalTranscodeUnauthorized`](docs/sdk/models/errors/startuniversaltranscodeunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetServerActivitiesUnauthorized`](docs/sdk/models/errors/getserveractivitiesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`CancelServerActivitiesUnauthorized`](docs/sdk/models/errors/cancelserveractivitiesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetButlerTasksUnauthorized`](docs/sdk/models/errors/getbutlertasksunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`StartAllTasksUnauthorized`](docs/sdk/models/errors/startalltasksunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`StopAllTasksUnauthorized`](docs/sdk/models/errors/stopalltasksunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`StartTaskUnauthorized`](docs/sdk/models/errors/starttaskunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`StopTaskUnauthorized`](docs/sdk/models/errors/stoptaskunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetCompanionsDataUnauthorized`](docs/sdk/models/errors/getcompanionsdataunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetUserFriendsUnauthorized`](docs/sdk/models/errors/getuserfriendsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetGeoDataUnauthorized`](docs/sdk/models/errors/getgeodataunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetHomeDataUnauthorized`](docs/sdk/models/errors/gethomedataunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetServerResourcesUnauthorized`](docs/sdk/models/errors/getserverresourcesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetGlobalHubsUnauthorized`](docs/sdk/models/errors/getglobalhubsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetLibraryHubsUnauthorized`](docs/sdk/models/errors/getlibraryhubsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`PerformSearchUnauthorized`](docs/sdk/models/errors/performsearchunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`PerformVoiceSearchUnauthorized`](docs/sdk/models/errors/performvoicesearchunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetSearchResultsUnauthorized`](docs/sdk/models/errors/getsearchresultsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetFileHashUnauthorized`](docs/sdk/models/errors/getfilehashunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetRecentlyAddedLibraryUnauthorized`](docs/sdk/models/errors/getrecentlyaddedlibraryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetAllLibrariesUnauthorized`](docs/sdk/models/errors/getalllibrariesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetLibraryDetailsUnauthorized`](docs/sdk/models/errors/getlibrarydetailsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`DeleteLibraryUnauthorized`](docs/sdk/models/errors/deletelibraryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetLibraryItemsUnauthorized`](docs/sdk/models/errors/getlibraryitemsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetLibrarySectionsAllUnauthorized`](docs/sdk/models/errors/getlibrarysectionsallunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetRefreshLibraryMetadataUnauthorized`](docs/sdk/models/errors/getrefreshlibrarymetadataunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetSearchLibraryUnauthorized`](docs/sdk/models/errors/getsearchlibraryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetGenresLibraryUnauthorized`](docs/sdk/models/errors/getgenreslibraryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetCountriesLibraryUnauthorized`](docs/sdk/models/errors/getcountrieslibraryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetActorsLibraryUnauthorized`](docs/sdk/models/errors/getactorslibraryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetSearchAllLibrariesUnauthorized`](docs/sdk/models/errors/getsearchalllibrariesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetMediaMetaDataUnauthorized`](docs/sdk/models/errors/getmediametadataunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetMetadataChildrenUnauthorized`](docs/sdk/models/errors/getmetadatachildrenunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetTopWatchedContentUnauthorized`](docs/sdk/models/errors/gettopwatchedcontentunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetWatchListUnauthorized`](docs/sdk/models/errors/getwatchlistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`LogLineUnauthorized`](docs/sdk/models/errors/loglineunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`LogMultiLineUnauthorized`](docs/sdk/models/errors/logmultilineunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`EnablePaperTrailUnauthorized`](docs/sdk/models/errors/enablepapertrailunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`CreatePlaylistUnauthorized`](docs/sdk/models/errors/createplaylistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetPlaylistsUnauthorized`](docs/sdk/models/errors/getplaylistsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetPlaylistUnauthorized`](docs/sdk/models/errors/getplaylistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`DeletePlaylistUnauthorized`](docs/sdk/models/errors/deleteplaylistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`UpdatePlaylistUnauthorized`](docs/sdk/models/errors/updateplaylistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetPlaylistContentsUnauthorized`](docs/sdk/models/errors/getplaylistcontentsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`ClearPlaylistContentsUnauthorized`](docs/sdk/models/errors/clearplaylistcontentsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`AddPlaylistContentsUnauthorized`](docs/sdk/models/errors/addplaylistcontentsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`UploadPlaylistUnauthorized`](docs/sdk/models/errors/uploadplaylistunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetTransientTokenUnauthorized`](docs/sdk/models/errors/gettransienttokenunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetSourceConnectionInformationUnauthorized`](docs/sdk/models/errors/getsourceconnectioninformationunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetTokenDetailsUnauthorized`](docs/sdk/models/errors/gettokendetailsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`PostUsersSignInDataUnauthorized`](docs/sdk/models/errors/postuserssignindataunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetStatisticsUnauthorized`](docs/sdk/models/errors/getstatisticsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetResourcesStatisticsUnauthorized`](docs/sdk/models/errors/getresourcesstatisticsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetBandwidthStatisticsUnauthorized`](docs/sdk/models/errors/getbandwidthstatisticsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetSessionsUnauthorized`](docs/sdk/models/errors/getsessionsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetSessionHistoryUnauthorized`](docs/sdk/models/errors/getsessionhistoryunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetTranscodeSessionsUnauthorized`](docs/sdk/models/errors/gettranscodesessionsunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`StopTranscodeSessionUnauthorized`](docs/sdk/models/errors/stoptranscodesessionunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetUpdateStatusUnauthorized`](docs/sdk/models/errors/getupdatestatusunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`CheckForUpdatesUnauthorized`](docs/sdk/models/errors/checkforupdatesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`ApplyUpdatesUnauthorized`](docs/sdk/models/errors/applyupdatesunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetUsersUnauthorized`](docs/sdk/models/errors/getusersunauthorized.md): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* +* [`GetTokenByPinIdResponseBody`](docs/sdk/models/errors/gettokenbypinidresponsebody.md): Not Found or Expired. Status code `404`. Applicable to 1 of 84 methods.* +* [`GetServerIdentityRequestTimeout`](docs/sdk/models/errors/getserveridentityrequesttimeout.md): Request Timeout. Status code `408`. Applicable to 1 of 84 methods.* +
+ + +\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable. @@ -362,15 +509,14 @@ import { PlexAPI } from "@lukehagar/plexjs"; const plexAPI = new PlexAPI({ protocol: "https", - ip: "e0c3:bcc0:6bac:dccc:c4ec:34b1:ca98:4cb9", - port: "40311", + ip: "4982:bc2a:b4f8:efb5:2394:5bc3:ab4f:0e6d", + port: "44765", accessToken: "", }); async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } @@ -392,7 +538,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } @@ -415,7 +560,6 @@ async function run() { serverURL: "https://plex.tv/api/v2", }); - // Handle the result console.log(result); } @@ -495,7 +639,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } @@ -542,12 +685,12 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`libraryDeleteLibrary`](docs/sdks/library/README.md#deletelibrary) - Delete Library Section - [`libraryGetActorsLibrary`](docs/sdks/library/README.md#getactorslibrary) - Get Actors of library media - [`libraryGetAllLibraries`](docs/sdks/library/README.md#getalllibraries) - Get All Libraries -- [`libraryGetAllMediaLibrary`](docs/sdks/library/README.md#getallmedialibrary) - Get all media of library - [`libraryGetCountriesLibrary`](docs/sdks/library/README.md#getcountrieslibrary) - Get Countries of library media - [`libraryGetFileHash`](docs/sdks/library/README.md#getfilehash) - Get Hash Value - [`libraryGetGenresLibrary`](docs/sdks/library/README.md#getgenreslibrary) - Get Genres of library media - [`libraryGetLibraryDetails`](docs/sdks/library/README.md#getlibrarydetails) - Get Library Details - [`libraryGetLibraryItems`](docs/sdks/library/README.md#getlibraryitems) - Get Library Items +- [`libraryGetLibrarySectionsAll`](docs/sdks/library/README.md#getlibrarysectionsall) - Get Library section media by tag ALL - [`libraryGetMediaArts`](docs/sdks/library/README.md#getmediaarts) - Get Media Background Artwork - [`libraryGetMediaMetaData`](docs/sdks/library/README.md#getmediametadata) - Get Media Metadata - [`libraryGetMediaPosters`](docs/sdks/library/README.md#getmediaposters) - Get Media Posters @@ -629,7 +772,6 @@ Certain SDK methods accept files as part of a multi-part request. It is possible ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", @@ -638,11 +780,9 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.postMediaArts( 2268, - await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b", ); - // Handle the result console.log(result); } @@ -678,7 +818,6 @@ async function run() { }, }); - // Handle the result console.log(result); } @@ -707,7 +846,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } diff --git a/RELEASES.md b/RELEASES.md index eb16751e..069b9351 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1338,4 +1338,14 @@ Based on: ### Generated - [typescript v0.37.2] . ### Releases -- [NPM v0.37.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.37.2 - . \ No newline at end of file +- [NPM v0.37.2] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.37.2 - . + +## 2025-06-04 00:11:21 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.555.2 (2.620.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [typescript v0.38.0] . +### Releases +- [NPM v0.38.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.38.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index 211f6d5c..e9a6d6d3 100644 --- a/USAGE.md +++ b/USAGE.md @@ -9,7 +9,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } diff --git a/codeSamples.yaml b/codeSamples.yaml index 4485a731..0707ca16 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -18,7 +18,6 @@ actions: async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } @@ -38,7 +37,6 @@ actions: async function run() { const result = await plexAPI.server.getServerPreferences(); - // Handle the result console.log(result); } @@ -58,7 +56,6 @@ actions: async function run() { const result = await plexAPI.media.updatePlayProgress("", 90000, "played"); - // Handle the result console.log(result); } @@ -78,7 +75,6 @@ actions: async function run() { const result = await plexAPI.media.markPlayed(59398); - // Handle the result console.log(result); } @@ -110,7 +106,6 @@ actions: row: 1, }); - // Handle the result console.log(result); } @@ -130,7 +125,6 @@ actions: async function run() { const result = await plexAPI.media.markUnplayed(59398); - // Handle the result console.log(result); } @@ -150,7 +144,6 @@ actions: async function run() { const result = await plexAPI.activities.getServerActivities(); - // Handle the result console.log(result); } @@ -170,7 +163,6 @@ actions: async function run() { const result = await plexAPI.activities.cancelServerActivities("25b71ed5-0f9d-461c-baa7-d404e9e10d3e"); - // Handle the result console.log(result); } @@ -190,7 +182,6 @@ actions: async function run() { const result = await plexAPI.butler.stopAllTasks(); - // Handle the result console.log(result); } @@ -210,7 +201,6 @@ actions: async function run() { const result = await plexAPI.butler.getButlerTasks(); - // Handle the result console.log(result); } @@ -230,7 +220,6 @@ actions: async function run() { const result = await plexAPI.butler.startAllTasks(); - // Handle the result console.log(result); } @@ -249,9 +238,8 @@ actions: }); async function run() { - const result = await plexAPI.butler.stopTask(PathParamTaskName.BackupDatabase); + const result = await plexAPI.butler.stopTask(PathParamTaskName.CleanOldCacheFiles); - // Handle the result console.log(result); } @@ -270,9 +258,8 @@ actions: }); async function run() { - const result = await plexAPI.butler.startTask(TaskName.CleanOldBundles); + const result = await plexAPI.butler.startTask(TaskName.RefreshPeriodicMetadata); - // Handle the result console.log(result); } @@ -292,7 +279,6 @@ actions: async function run() { const result = await plexAPI.server.getAvailableClients(); - // Handle the result console.log(result); } @@ -312,7 +298,6 @@ actions: async function run() { const result = await plexAPI.plex.getCompanionsData(); - // Handle the result console.log(result); } @@ -332,7 +317,6 @@ actions: async function run() { const result = await plexAPI.server.getDevices(); - // Handle the result console.log(result); } @@ -352,7 +336,6 @@ actions: async function run() { const result = await plexAPI.plex.getUserFriends(); - // Handle the result console.log(result); } @@ -370,7 +353,6 @@ actions: async function run() { const result = await plexAPI.plex.getGeoData(); - // Handle the result console.log(result); } @@ -390,7 +372,6 @@ actions: async function run() { const result = await plexAPI.plex.getHomeData(); - // Handle the result console.log(result); } @@ -410,7 +391,6 @@ actions: async function run() { const result = await plexAPI.hubs.getGlobalHubs(); - // Handle the result console.log(result); } @@ -422,7 +402,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { Type } from "@lukehagar/plexjs/sdk/models/operations"; + import { IncludeMeta, Type } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -430,12 +410,12 @@ actions: async function run() { const result = await plexAPI.hubs.getRecentlyAdded({ - contentDirectoryID: 470161, + contentDirectoryID: 39486, sectionID: 2, type: Type.TvShow, + includeMeta: IncludeMeta.Enable, }); - // Handle the result console.log(result); } @@ -453,9 +433,8 @@ actions: }); async function run() { - const result = await plexAPI.search.performSearch("dylan"); + const result = await plexAPI.search.performSearch("arnold"); - // Handle the result console.log(result); } @@ -475,7 +454,6 @@ actions: async function run() { const result = await plexAPI.search.performVoiceSearch("dead+poop"); - // Handle the result console.log(result); } @@ -493,9 +471,8 @@ actions: }); async function run() { - const result = await plexAPI.hubs.getLibraryHubs(6728.76); + const result = await plexAPI.hubs.getLibraryHubs(492.74); - // Handle the result console.log(result); } @@ -513,7 +490,6 @@ actions: async function run() { const result = await plexAPI.server.getServerIdentity(); - // Handle the result console.log(result); } @@ -532,9 +508,8 @@ actions: }); async function run() { - const result = await plexAPI.library.getTopWatchedContent(GetTopWatchedContentQueryParamType.TvShow, 1); + const result = await plexAPI.library.getTopWatchedContent(GetTopWatchedContentQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -554,7 +529,6 @@ actions: async function run() { const result = await plexAPI.library.getFileHash("file://C:\Image.png&type=13"); - // Handle the result console.log(result); } @@ -573,7 +547,7 @@ actions: async function run() { const result = await plexAPI.library.getMediaMetaData({ - ratingKey: 9518, + ratingKey: "21119,21617", includeConcerts: true, includeExtras: true, includeOnDeck: true, @@ -589,7 +563,6 @@ actions: asyncRefreshLocalMediaAgent: true, }); - // Handle the result console.log(result); } @@ -609,7 +582,6 @@ actions: async function run() { const result = await plexAPI.library.getMediaArts(16099); - // Handle the result console.log(result); } @@ -621,16 +593,14 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaArts(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaArts(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); - // Handle the result console.log(result); } @@ -657,7 +627,6 @@ actions: xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -675,9 +644,8 @@ actions: }); async function run() { - const result = await plexAPI.library.getMetadataChildren(1539.14, "Stream"); + const result = await plexAPI.library.getMetadataChildren(2403.67, "Stream"); - // Handle the result console.log(result); } @@ -697,7 +665,6 @@ actions: async function run() { const result = await plexAPI.library.getMediaPosters(16099); - // Handle the result console.log(result); } @@ -709,16 +676,14 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaPoster(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaPoster(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); - // Handle the result console.log(result); } @@ -745,7 +710,6 @@ actions: xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -757,7 +721,7 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; + import { QueryParamIncludeMeta, QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -782,9 +746,9 @@ actions: ], sectionID: 2, type: QueryParamType.TvShow, + includeMeta: QueryParamIncludeMeta.Enable, }); - // Handle the result console.log(result); } @@ -796,7 +760,11 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { SearchTypes } from "@lukehagar/plexjs/sdk/models/operations"; + import { + GetSearchAllLibrariesQueryParamIncludeCollections, + GetSearchAllLibrariesQueryParamIncludeExternalMedia, + SearchTypes, + } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -809,9 +777,10 @@ actions: searchTypes: [ SearchTypes.People, ], + includeCollections: GetSearchAllLibrariesQueryParamIncludeCollections.Enable, + includeExternalMedia: GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable, }); - // Handle the result console.log(result); } @@ -831,7 +800,6 @@ actions: async function run() { const result = await plexAPI.library.getAllLibraries(); - // Handle the result console.log(result); } @@ -851,11 +819,10 @@ actions: async function run() { const result = await plexAPI.watchlist.getWatchList({ - filter: Filter.Available, + filter: Filter.Released, xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -875,7 +842,6 @@ actions: async function run() { const result = await plexAPI.library.deleteLibrary(9518); - // Handle the result console.log(result); } @@ -895,7 +861,6 @@ actions: async function run() { const result = await plexAPI.library.getLibraryDetails(9518); - // Handle the result console.log(result); } @@ -916,7 +881,6 @@ actions: async function run() { const result = await plexAPI.library.getActorsLibrary(9518, GetActorsLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -928,19 +892,30 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; + import { + GetLibrarySectionsAllQueryParamIncludeMeta, + GetLibrarySectionsAllQueryParamType, + IncludeAdvanced, + QueryParamIncludeCollections, + QueryParamIncludeExternalMedia, + QueryParamIncludeGuids, + } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.getAllMediaLibrary({ + const result = await plexAPI.library.getLibrarySectionsAll({ sectionKey: 9518, - type: GetAllMediaLibraryQueryParamType.TvShow, + type: GetLibrarySectionsAllQueryParamType.TvShow, + includeMeta: GetLibrarySectionsAllQueryParamIncludeMeta.Enable, + includeGuids: QueryParamIncludeGuids.Enable, + includeAdvanced: IncludeAdvanced.Enable, + includeCollections: QueryParamIncludeCollections.Enable, + includeExternalMedia: QueryParamIncludeExternalMedia.Enable, }); - // Handle the result console.log(result); } @@ -961,7 +936,6 @@ actions: async function run() { const result = await plexAPI.library.getCountriesLibrary(9518, GetCountriesLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -982,7 +956,6 @@ actions: async function run() { const result = await plexAPI.library.getGenresLibrary(9518, GetGenresLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -1001,9 +974,8 @@ actions: }); async function run() { - const result = await plexAPI.library.getRefreshLibraryMetadata(9518, Force.One); + const result = await plexAPI.library.getRefreshLibraryMetadata(9518, Force.Zero); - // Handle the result console.log(result); } @@ -1024,7 +996,6 @@ actions: async function run() { const result = await plexAPI.library.getSearchLibrary(9518, GetSearchLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -1036,7 +1007,12 @@ actions: label: PlexJS source: |- import { PlexAPI } from "@lukehagar/plexjs"; - import { GetLibraryItemsQueryParamType, Tag } from "@lukehagar/plexjs/sdk/models/operations"; + import { + GetLibraryItemsQueryParamIncludeMeta, + GetLibraryItemsQueryParamType, + IncludeGuids, + Tag, + } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -1044,12 +1020,13 @@ actions: async function run() { const result = await plexAPI.library.getLibraryItems({ - tag: Tag.Edition, + tag: Tag.Newest, + includeGuids: IncludeGuids.Enable, type: GetLibraryItemsQueryParamType.TvShow, sectionKey: 9518, + includeMeta: GetLibraryItemsQueryParamIncludeMeta.Enable, }); - // Handle the result console.log(result); } @@ -1070,7 +1047,6 @@ actions: async function run() { const result = await plexAPI.log.logLine(Level.Three, "Test log message", "Postman"); - // Handle the result console.log(result); } @@ -1092,7 +1068,6 @@ actions: "level=3&message=Test%20message%202&source=postman\n" + "level=1&message=Test%20message%203&source=postman"); - // Handle the result console.log(result); } @@ -1112,7 +1087,6 @@ actions: async function run() { const result = await plexAPI.log.enablePaperTrail(); - // Handle the result console.log(result); } @@ -1132,7 +1106,6 @@ actions: async function run() { const result = await plexAPI.server.getMediaProviders("CV5xoxjTpFKUzBTShsaf"); - // Handle the result console.log(result); } @@ -1152,7 +1125,6 @@ actions: async function run() { const result = await plexAPI.server.getMyPlexAccount(); - // Handle the result console.log(result); } @@ -1174,14 +1146,12 @@ actions: const result = await plexAPI.server.getResizedPhoto({ width: 110, height: 165, - opacity: 100, blur: 0, - minSize: MinSize.One, - upscale: Upscale.One, + minSize: MinSize.Zero, + upscale: Upscale.Zero, url: "/library/metadata/49564/thumb/1654258204", }); - // Handle the result console.log(result); } @@ -1205,7 +1175,6 @@ actions: platform: "Roku", }); - // Handle the result console.log(result); } @@ -1222,7 +1191,7 @@ actions: async function run() { const result = await plexAPI.plex.getTokenByPinId({ - pinID: 408895, + pinID: 232248, clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", clientName: "Plex for Roku", deviceNickname: "Roku 3", @@ -1230,7 +1199,6 @@ actions: platform: "Roku", }); - // Handle the result console.log(result); } @@ -1250,7 +1218,6 @@ actions: async function run() { const result = await plexAPI.playlists.getPlaylists(); - // Handle the result console.log(result); } @@ -1271,12 +1238,11 @@ actions: async function run() { const result = await plexAPI.playlists.createPlaylist({ title: "", - type: CreatePlaylistQueryParamType.Photo, + type: CreatePlaylistQueryParamType.Audio, smart: Smart.One, - uri: "https://hoarse-testing.info/", + uri: "https://short-term-disconnection.name/", }); - // Handle the result console.log(result); } @@ -1295,9 +1261,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.uploadPlaylist("/home/barkley/playlist.m3u", QueryParamForce.Zero, 1); + const result = await plexAPI.playlists.uploadPlaylist("/home/barkley/playlist.m3u", QueryParamForce.One, 1); - // Handle the result console.log(result); } @@ -1315,9 +1280,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.deletePlaylist(216.22); + const result = await plexAPI.playlists.deletePlaylist(3432.93); - // Handle the result console.log(result); } @@ -1335,9 +1299,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.getPlaylist(4109.48); + const result = await plexAPI.playlists.getPlaylist(8419.53); - // Handle the result console.log(result); } @@ -1355,9 +1318,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.updatePlaylist(3915); + const result = await plexAPI.playlists.updatePlaylist(1579.66); - // Handle the result console.log(result); } @@ -1375,9 +1337,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.clearPlaylistContents(1893.18); + const result = await plexAPI.playlists.clearPlaylistContents(4137.37); - // Handle the result console.log(result); } @@ -1396,9 +1357,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.getPlaylistContents(5004.46, GetPlaylistContentsQueryParamType.TvShow); + const result = await plexAPI.playlists.getPlaylistContents(5535.42, GetPlaylistContentsQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -1416,9 +1376,8 @@ actions: }); async function run() { - const result = await plexAPI.playlists.addPlaylistContents(8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123); + const result = await plexAPI.playlists.addPlaylistContents(7013.44, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123); - // Handle the result console.log(result); } @@ -1438,7 +1397,6 @@ actions: async function run() { const result = await plexAPI.plex.getServerResources("3381b62b-9ab7-4e37-827b-203e9809eb58"); - // Handle the result console.log(result); } @@ -1458,7 +1416,6 @@ actions: async function run() { const result = await plexAPI.search.getSearchResults("110"); - // Handle the result console.log(result); } @@ -1476,9 +1433,8 @@ actions: }); async function run() { - const result = await plexAPI.authentication.getSourceConnectionInformation("provider://provider-identifier"); + const result = await plexAPI.authentication.getSourceConnectionInformation("server://client-identifier"); - // Handle the result console.log(result); } @@ -1499,7 +1455,6 @@ actions: async function run() { const result = await plexAPI.authentication.getTransientToken(GetTransientTokenQueryParamType.Delegation, Scope.All); - // Handle the result console.log(result); } @@ -1519,7 +1474,6 @@ actions: async function run() { const result = await plexAPI.server.getServerList(); - // Handle the result console.log(result); } @@ -1539,7 +1493,6 @@ actions: async function run() { const result = await plexAPI.statistics.getBandwidthStatistics(4); - // Handle the result console.log(result); } @@ -1559,7 +1512,6 @@ actions: async function run() { const result = await plexAPI.statistics.getStatistics(4); - // Handle the result console.log(result); } @@ -1579,7 +1531,6 @@ actions: async function run() { const result = await plexAPI.statistics.getResourcesStatistics(4); - // Handle the result console.log(result); } @@ -1599,7 +1550,6 @@ actions: async function run() { const result = await plexAPI.sessions.getSessions(); - // Handle the result console.log(result); } @@ -1619,7 +1569,6 @@ actions: async function run() { const result = await plexAPI.sessions.getSessionHistory("viewedAt:desc", 1, {}, 12); - // Handle the result console.log(result); } @@ -1639,7 +1588,6 @@ actions: async function run() { const result = await plexAPI.sessions.getTranscodeSessions(); - // Handle the result console.log(result); } @@ -1659,7 +1607,6 @@ actions: async function run() { const result = await plexAPI.sessions.stopTranscodeSession("zz7llzqlx8w9vnrsbnwhbmep"); - // Handle the result console.log(result); } @@ -1680,7 +1627,6 @@ actions: async function run() { const result = await plexAPI.updater.applyUpdates(Tonight.One, Skip.One); - // Handle the result console.log(result); } @@ -1701,7 +1647,6 @@ actions: async function run() { const result = await plexAPI.updater.checkForUpdates(Download.One); - // Handle the result console.log(result); } @@ -1721,7 +1666,6 @@ actions: async function run() { const result = await plexAPI.updater.getUpdateStatus(); - // Handle the result console.log(result); } @@ -1741,7 +1685,6 @@ actions: async function run() { const result = await plexAPI.authentication.getTokenDetails(); - // Handle the result console.log(result); } @@ -1773,7 +1716,6 @@ actions: xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -1802,7 +1744,6 @@ actions: }, }); - // Handle the result console.log(result); } @@ -1839,7 +1780,6 @@ actions: autoAdjustQuality: 0, }); - // Handle the result console.log(result); } diff --git a/docs/sdk/models/errors/getallmedialibrarybadrequest.md b/docs/sdk/models/errors/getallmedialibrarybadrequest.md deleted file mode 100644 index 400f1ffc..00000000 --- a/docs/sdk/models/errors/getallmedialibrarybadrequest.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetAllMediaLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - -## Example Usage - -```typescript -import { GetAllMediaLibraryBadRequest } from "@lukehagar/plexjs/sdk/models/errors"; - -// No examples available for this model -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `errors` | [errors.GetAllMediaLibraryErrors](../../../sdk/models/errors/getallmedialibraryerrors.md)[] | :heavy_minus_sign: | N/A | -| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/getallmedialibraryunauthorized.md b/docs/sdk/models/errors/getallmedialibraryunauthorized.md deleted file mode 100644 index 616fcb6b..00000000 --- a/docs/sdk/models/errors/getallmedialibraryunauthorized.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetAllMediaLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - -## Example Usage - -```typescript -import { GetAllMediaLibraryUnauthorized } from "@lukehagar/plexjs/sdk/models/errors"; - -// No examples available for this model -``` - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `errors` | [errors.GetAllMediaLibraryLibraryErrors](../../../sdk/models/errors/getallmedialibrarylibraryerrors.md)[] | :heavy_minus_sign: | N/A | -| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/getlibrarysectionsallbadrequest.md b/docs/sdk/models/errors/getlibrarysectionsallbadrequest.md new file mode 100644 index 00000000..90567f2e --- /dev/null +++ b/docs/sdk/models/errors/getlibrarysectionsallbadrequest.md @@ -0,0 +1,18 @@ +# GetLibrarySectionsAllBadRequest + +Bad Request - A parameter was not specified, or was specified incorrectly. + +## Example Usage + +```typescript +import { GetLibrarySectionsAllBadRequest } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `errors` | [errors.GetLibrarySectionsAllErrors](../../../sdk/models/errors/getlibrarysectionsallerrors.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/getallmedialibraryerrors.md b/docs/sdk/models/errors/getlibrarysectionsallerrors.md similarity index 87% rename from docs/sdk/models/errors/getallmedialibraryerrors.md rename to docs/sdk/models/errors/getlibrarysectionsallerrors.md index ca4dbc15..9f15d6cb 100644 --- a/docs/sdk/models/errors/getallmedialibraryerrors.md +++ b/docs/sdk/models/errors/getlibrarysectionsallerrors.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryErrors +# GetLibrarySectionsAllErrors ## Example Usage ```typescript -import { GetAllMediaLibraryErrors } from "@lukehagar/plexjs/sdk/models/errors"; +import { GetLibrarySectionsAllErrors } from "@lukehagar/plexjs/sdk/models/errors"; -let value: GetAllMediaLibraryErrors = { +let value: GetLibrarySectionsAllErrors = { code: 1000, message: "X-Plex-Client-Identifier is missing", status: 400, diff --git a/docs/sdk/models/errors/getallmedialibrarylibraryerrors.md b/docs/sdk/models/errors/getlibrarysectionsalllibraryerrors.md similarity index 84% rename from docs/sdk/models/errors/getallmedialibrarylibraryerrors.md rename to docs/sdk/models/errors/getlibrarysectionsalllibraryerrors.md index 73eaae65..ff20964b 100644 --- a/docs/sdk/models/errors/getallmedialibrarylibraryerrors.md +++ b/docs/sdk/models/errors/getlibrarysectionsalllibraryerrors.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryLibraryErrors +# GetLibrarySectionsAllLibraryErrors ## Example Usage ```typescript -import { GetAllMediaLibraryLibraryErrors } from "@lukehagar/plexjs/sdk/models/errors"; +import { GetLibrarySectionsAllLibraryErrors } from "@lukehagar/plexjs/sdk/models/errors"; -let value: GetAllMediaLibraryLibraryErrors = { +let value: GetLibrarySectionsAllLibraryErrors = { code: 1001, message: "User could not be authenticated", status: 401, diff --git a/docs/sdk/models/errors/getlibrarysectionsallunauthorized.md b/docs/sdk/models/errors/getlibrarysectionsallunauthorized.md new file mode 100644 index 00000000..ae5a0591 --- /dev/null +++ b/docs/sdk/models/errors/getlibrarysectionsallunauthorized.md @@ -0,0 +1,18 @@ +# GetLibrarySectionsAllUnauthorized + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + +## Example Usage + +```typescript +import { GetLibrarySectionsAllUnauthorized } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `errors` | [errors.GetLibrarySectionsAllLibraryErrors](../../../sdk/models/errors/getlibrarysectionsalllibraryerrors.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/operations/addplaylistcontentsresponse.md b/docs/sdk/models/operations/addplaylistcontentsresponse.md index d663876b..8810d017 100644 --- a/docs/sdk/models/operations/addplaylistcontentsresponse.md +++ b/docs/sdk/models/operations/addplaylistcontentsresponse.md @@ -5,38 +5,7 @@ ```typescript import { AddPlaylistContentsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: AddPlaylistContentsResponse = { - contentType: "", - statusCode: 207, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - leafCountAdded: 1, - leafCountRequested: 1, - metadata: [ - { - ratingKey: "94", - key: "/playlists/94/items", - guid: - "com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2", - type: "playlist", - title: "A great playlist", - summary: "One of my great playlists", - smart: false, - playlistType: "video", - composite: "/playlists/94/composite/1705800070", - duration: 423000, - leafCount: 3, - addedAt: 1705716458, - updatedAt: 1705800070, - }, - ], - }, - }, -}; +let value: AddPlaylistContentsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/applyupdatesresponse.md b/docs/sdk/models/operations/applyupdatesresponse.md index 57310d3e..90a7231c 100644 --- a/docs/sdk/models/operations/applyupdatesresponse.md +++ b/docs/sdk/models/operations/applyupdatesresponse.md @@ -5,13 +5,7 @@ ```typescript import { ApplyUpdatesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: ApplyUpdatesResponse = { - contentType: "", - statusCode: 200, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: ApplyUpdatesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/billing.md b/docs/sdk/models/operations/billing.md index ab1c701b..2eab8d46 100644 --- a/docs/sdk/models/operations/billing.md +++ b/docs/sdk/models/operations/billing.md @@ -7,7 +7,7 @@ import { Billing } from "@lukehagar/plexjs/sdk/models/operations"; let value: Billing = { internalPaymentMethod: {}, - paymentMethodId: 395427, + paymentMethodId: 575569, }; ``` diff --git a/docs/sdk/models/operations/cancelserveractivitiesresponse.md b/docs/sdk/models/operations/cancelserveractivitiesresponse.md index c1fd3d0d..b5ea6e19 100644 --- a/docs/sdk/models/operations/cancelserveractivitiesresponse.md +++ b/docs/sdk/models/operations/cancelserveractivitiesresponse.md @@ -5,13 +5,7 @@ ```typescript import { CancelServerActivitiesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: CancelServerActivitiesResponse = { - contentType: "", - statusCode: 405, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: CancelServerActivitiesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/checkforupdatesresponse.md b/docs/sdk/models/operations/checkforupdatesresponse.md index 921e6389..4a7e8f70 100644 --- a/docs/sdk/models/operations/checkforupdatesresponse.md +++ b/docs/sdk/models/operations/checkforupdatesresponse.md @@ -5,13 +5,7 @@ ```typescript import { CheckForUpdatesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: CheckForUpdatesResponse = { - contentType: "", - statusCode: 504, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: CheckForUpdatesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/clearplaylistcontentsresponse.md b/docs/sdk/models/operations/clearplaylistcontentsresponse.md index 3ae966be..2132e956 100644 --- a/docs/sdk/models/operations/clearplaylistcontentsresponse.md +++ b/docs/sdk/models/operations/clearplaylistcontentsresponse.md @@ -5,13 +5,7 @@ ```typescript import { ClearPlaylistContentsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: ClearPlaylistContentsResponse = { - contentType: "", - statusCode: 504, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: ClearPlaylistContentsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/connections.md b/docs/sdk/models/operations/connections.md index 75a23945..92204585 100644 --- a/docs/sdk/models/operations/connections.md +++ b/docs/sdk/models/operations/connections.md @@ -8,11 +8,11 @@ import { Connections, Protocol } from "@lukehagar/plexjs/sdk/models/operations"; let value: Connections = { protocol: Protocol.Http, address: "84577 W 9th Street", - port: 40036, + port: 610910, uri: "https://dearest-custom.net", - local: false, - relay: false, - iPv6: false, + local: true, + relay: true, + iPv6: true, }; ``` diff --git a/docs/sdk/models/operations/country.md b/docs/sdk/models/operations/country.md index 2d50d7ac..b9e97a81 100644 --- a/docs/sdk/models/operations/country.md +++ b/docs/sdk/models/operations/country.md @@ -16,8 +16,8 @@ let value: Country = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `id` | *number* | :heavy_check_mark: | N/A | 259 | -| `tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | -| `filter` | *string* | :heavy_minus_sign: | N/A | country=19 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | +| `tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | +| `filter` | *string* | :heavy_check_mark: | N/A | country=19 | \ No newline at end of file diff --git a/docs/sdk/models/operations/createplaylistresponse.md b/docs/sdk/models/operations/createplaylistresponse.md index 4948681a..7345dbc7 100644 --- a/docs/sdk/models/operations/createplaylistresponse.md +++ b/docs/sdk/models/operations/createplaylistresponse.md @@ -5,39 +5,7 @@ ```typescript import { CreatePlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: CreatePlaylistResponse = { - contentType: "", - statusCode: 510, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 7, - metadata: [ - { - ratingKey: "96", - key: "/playlists/96/items", - guid: - "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", - type: "playlist", - title: "A Great Playlist", - summary: "What a great playlist", - smart: false, - playlistType: "video", - icon: "playlist://image.smart", - viewCount: 1, - lastViewedAt: 1705719589, - leafCount: 1, - addedAt: 1705719589, - updatedAt: 1705724593, - composite: "/playlists/96/composite/1705724593", - duration: 141000, - }, - ], - }, - }, -}; +let value: CreatePlaylistResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/deletelibraryresponse.md b/docs/sdk/models/operations/deletelibraryresponse.md index 4e3fc419..28ccdb61 100644 --- a/docs/sdk/models/operations/deletelibraryresponse.md +++ b/docs/sdk/models/operations/deletelibraryresponse.md @@ -5,13 +5,7 @@ ```typescript import { DeleteLibraryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: DeleteLibraryResponse = { - contentType: "", - statusCode: 102, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: DeleteLibraryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/deleteplaylistresponse.md b/docs/sdk/models/operations/deleteplaylistresponse.md index 4fd5dda0..37dfec7c 100644 --- a/docs/sdk/models/operations/deleteplaylistresponse.md +++ b/docs/sdk/models/operations/deleteplaylistresponse.md @@ -5,13 +5,7 @@ ```typescript import { DeletePlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: DeletePlaylistResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: DeletePlaylistResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/director.md b/docs/sdk/models/operations/director.md index 470b8da9..a76521f5 100644 --- a/docs/sdk/models/operations/director.md +++ b/docs/sdk/models/operations/director.md @@ -6,12 +6,21 @@ import { Director } from "@lukehagar/plexjs/sdk/models/operations"; let value: Director = { + id: 126522, + filter: "director=235876", tag: "Danny Boyle", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -| `tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the director. | 126522 | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | +| `tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | +| `tagKey` | *string* | :heavy_check_mark: | A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/enablepapertrailresponse.md b/docs/sdk/models/operations/enablepapertrailresponse.md index f2a64b4d..31d72e7f 100644 --- a/docs/sdk/models/operations/enablepapertrailresponse.md +++ b/docs/sdk/models/operations/enablepapertrailresponse.md @@ -5,13 +5,7 @@ ```typescript import { EnablePaperTrailResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: EnablePaperTrailResponse = { - contentType: "", - statusCode: 416, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: EnablePaperTrailResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/genre.md b/docs/sdk/models/operations/genre.md index d4bbf5af..c0f63858 100644 --- a/docs/sdk/models/operations/genre.md +++ b/docs/sdk/models/operations/genre.md @@ -16,8 +16,8 @@ let value: Genre = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `id` | *number* | :heavy_check_mark: | N/A | 259 | -| `filter` | *string* | :heavy_check_mark: | N/A | genre=19 | -| `tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | +| `filter` | *string* | :heavy_check_mark: | N/A | genre=19 | +| `tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/sdk/models/operations/geodata.md b/docs/sdk/models/operations/geodata.md index 04eba193..82e40604 100644 --- a/docs/sdk/models/operations/geodata.md +++ b/docs/sdk/models/operations/geodata.md @@ -12,8 +12,11 @@ let value: GeoData = { continentCode: "NA", country: "United States Virgin Islands", city: "Amsterdam", + europeanUnionMember: true, timeZone: "America/St_Thomas", postalCode: "802", + inPrivacyRestrictedCountry: true, + inPrivacyRestrictedRegion: true, subdivisions: "Saint Thomas", coordinates: "18.3381, -64.8941", }; diff --git a/docs/sdk/models/operations/getactorslibraryqueryparamtype.md b/docs/sdk/models/operations/getactorslibraryqueryparamtype.md index 6f337e0d..e05ca848 100644 --- a/docs/sdk/models/operations/getactorslibraryqueryparamtype.md +++ b/docs/sdk/models/operations/getactorslibraryqueryparamtype.md @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getactorslibraryresponse.md b/docs/sdk/models/operations/getactorslibraryresponse.md index 1bc82632..764d1def 100644 --- a/docs/sdk/models/operations/getactorslibraryresponse.md +++ b/docs/sdk/models/operations/getactorslibraryresponse.md @@ -5,38 +5,7 @@ ```typescript import { GetActorsLibraryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetActorsLibraryResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - allowSync: false, - art: "/:/resources/show-fanart.jpg", - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1734362201, - nocache: true, - thumb: "/:/resources/show.png", - title1: "TV Series", - title2: "By Starring Actor", - viewGroup: "secondary", - viewMode: "131131", - directory: [ - { - fastKey: "/library/sections/2/all?actor=134671", - thumb: - "https://metadata-static.plex.tv/e/people/e2a915b537ef720252b6d408bc1f91b3.jpg", - key: "134671", - title: "Aaron Paul", - }, - ], - }, - }, -}; +let value: GetActorsLibraryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getalllibrariesdirectory.md b/docs/sdk/models/operations/getalllibrariesdirectory.md index c545042a..c41a09e4 100644 --- a/docs/sdk/models/operations/getalllibrariesdirectory.md +++ b/docs/sdk/models/operations/getalllibrariesdirectory.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetAllLibrariesDirectory, GetAllLibrariesType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllLibrariesDirectory, GetAllLibrariesType, Hidden } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetAllLibrariesDirectory = { allowSync: false, @@ -25,12 +25,8 @@ let value: GetAllLibrariesDirectory = { content: true, directory: true, contentChangedAt: 9173960, - location: [ - { - id: 1, - path: "/Movies", - }, - ], + hidden: Hidden.ExcludeHomeScreen, + location: [], }; ``` diff --git a/docs/sdk/models/operations/getalllibrariesmediacontainer.md b/docs/sdk/models/operations/getalllibrariesmediacontainer.md index 137a321d..51fd305f 100644 --- a/docs/sdk/models/operations/getalllibrariesmediacontainer.md +++ b/docs/sdk/models/operations/getalllibrariesmediacontainer.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetAllLibrariesMediaContainer, GetAllLibrariesType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllLibrariesMediaContainer, GetAllLibrariesType, Hidden } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetAllLibrariesMediaContainer = { size: 50, @@ -30,6 +30,7 @@ let value: GetAllLibrariesMediaContainer = { content: true, directory: true, contentChangedAt: 9173960, + hidden: Hidden.ExcludeHomeScreen, location: [ { id: 1, diff --git a/docs/sdk/models/operations/getalllibrariesresponse.md b/docs/sdk/models/operations/getalllibrariesresponse.md index 39fc5103..a21be008 100644 --- a/docs/sdk/models/operations/getalllibrariesresponse.md +++ b/docs/sdk/models/operations/getalllibrariesresponse.md @@ -3,51 +3,9 @@ ## Example Usage ```typescript -import { GetAllLibrariesResponse, GetAllLibrariesType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllLibrariesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllLibrariesResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - allowSync: false, - title1: "TV Series", - directory: [ - { - allowSync: false, - art: "/:/resources/show-fanart.jpg", - composite: "/library/sections/1/composite/1743824484", - filters: true, - refreshing: true, - thumb: "/:/resources/show.png", - key: "1", - type: GetAllLibrariesType.Movie, - title: "Movies", - agent: "tv.plex.agents.movie", - scanner: "Plex Movie", - language: "en-US", - uuid: "e69655a2-ef48-4aba-bb19-01e7d3cc34d6", - updatedAt: 1556281940, - createdAt: 1556281940, - scannedAt: 1556281940, - content: true, - directory: true, - contentChangedAt: 9173960, - location: [ - { - id: 1, - path: "/Movies", - }, - ], - }, - ], - }, - }, -}; +let value: GetAllLibrariesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getalllibrariesresponsebody.md b/docs/sdk/models/operations/getalllibrariesresponsebody.md index 9d62309a..31c3bac6 100644 --- a/docs/sdk/models/operations/getalllibrariesresponsebody.md +++ b/docs/sdk/models/operations/getalllibrariesresponsebody.md @@ -5,7 +5,7 @@ The libraries available on the Server ## Example Usage ```typescript -import { GetAllLibrariesResponseBody, GetAllLibrariesType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetAllLibrariesResponseBody, GetAllLibrariesType, Hidden } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetAllLibrariesResponseBody = { mediaContainer: { @@ -33,6 +33,7 @@ let value: GetAllLibrariesResponseBody = { content: true, directory: true, contentChangedAt: 9173960, + hidden: Hidden.ExcludeHomeScreen, location: [ { id: 1, diff --git a/docs/sdk/models/operations/getalllibrariestype.md b/docs/sdk/models/operations/getalllibrariestype.md index f7cb59e5..b1da1861 100644 --- a/docs/sdk/models/operations/getalllibrariestype.md +++ b/docs/sdk/models/operations/getalllibrariestype.md @@ -22,4 +22,8 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `Episode` | episode | | `Artist` | artist | | `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarydefaultdirection.md b/docs/sdk/models/operations/getallmedialibrarydefaultdirection.md deleted file mode 100644 index 890f8a3d..00000000 --- a/docs/sdk/models/operations/getallmedialibrarydefaultdirection.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetAllMediaLibraryDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - -## Example Usage - -```typescript -import { GetAllMediaLibraryDefaultDirection } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryDefaultDirection = - GetAllMediaLibraryDefaultDirection.Ascending; -``` - -## Values - -| Name | Value | -| ------------ | ------------ | -| `Ascending` | asc | -| `Descending` | desc | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryfieldtype.md b/docs/sdk/models/operations/getallmedialibraryfieldtype.md deleted file mode 100644 index 0700e88a..00000000 --- a/docs/sdk/models/operations/getallmedialibraryfieldtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetAllMediaLibraryFieldType - -## Example Usage - -```typescript -import { GetAllMediaLibraryFieldType } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryFieldType = { - type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `type` | *string* | :heavy_check_mark: | N/A | tag | -| `operator` | [operations.GetAllMediaLibraryOperator](../../../sdk/models/operations/getallmedialibraryoperator.md)[] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryguids.md b/docs/sdk/models/operations/getallmedialibraryguids.md deleted file mode 100644 index 0e1f879c..00000000 --- a/docs/sdk/models/operations/getallmedialibraryguids.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetAllMediaLibraryGuids - -## Example Usage - -```typescript -import { GetAllMediaLibraryGuids } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryGuids = { - id: "tvdb://2337", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_minus_sign: | The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
| tvdb://2337 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryhasthumbnail.md b/docs/sdk/models/operations/getallmedialibraryhasthumbnail.md deleted file mode 100644 index e290bfe9..00000000 --- a/docs/sdk/models/operations/getallmedialibraryhasthumbnail.md +++ /dev/null @@ -1,18 +0,0 @@ -# GetAllMediaLibraryHasThumbnail - -Indicates if the part has a thumbnail. - -## Example Usage - -```typescript -import { GetAllMediaLibraryHasThumbnail } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryHasThumbnail = GetAllMediaLibraryHasThumbnail.True; -``` - -## Values - -| Name | Value | -| ------- | ------- | -| `False` | 0 | -| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryimage.md b/docs/sdk/models/operations/getallmedialibraryimage.md deleted file mode 100644 index 24a05d6d..00000000 --- a/docs/sdk/models/operations/getallmedialibraryimage.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetAllMediaLibraryImage - -## Example Usage - -```typescript -import { GetAllMediaLibraryImage, GetAllMediaLibraryLibraryResponseType } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryImage = { - alt: "Episode 1", - type: GetAllMediaLibraryLibraryResponseType.Background, - url: "/library/metadata/45521/thumb/1644710589", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| `alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetAllMediaLibraryLibraryResponseType](../../../sdk/models/operations/getallmedialibrarylibraryresponsetype.md) | :heavy_check_mark: | N/A | background | -| `url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md deleted file mode 100644 index 6027b207..00000000 --- a/docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetAllMediaLibraryLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.GetAllMediaLibraryOptimizedForStreaming1` - -```typescript -const value: operations.GetAllMediaLibraryOptimizedForStreaming1 = - GetAllMediaLibraryOptimizedForStreaming1.One; -``` - -### `boolean` - -```typescript -const value: boolean = false; -``` - diff --git a/docs/sdk/models/operations/getallmedialibrarymedia.md b/docs/sdk/models/operations/getallmedialibrarymedia.md deleted file mode 100644 index d7848ac7..00000000 --- a/docs/sdk/models/operations/getallmedialibrarymedia.md +++ /dev/null @@ -1,123 +0,0 @@ -# GetAllMediaLibraryMedia - -## Example Usage - -```typescript -import { GetAllMediaLibraryMedia, GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryMedia = { - id: 387322, - duration: 9610350, - bitrate: 25512, - width: 3840, - height: 1602, - aspectRatio: 2.35, - audioChannels: 6, - displayOffset: 50, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - audioProfile: "dts", - has64bitOffsets: false, - part: [ - { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], - }, - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *number* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *number* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `width` | *number* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `height` | *number* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `aspectRatio` | *number* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `audioChannels` | *number* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `displayOffset` | *number* | :heavy_minus_sign: | N/A | 50 | -| `audioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | -| `videoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | -| `videoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `container` | *string* | :heavy_minus_sign: | File container type. | mkv | -| `videoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `videoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `hasVoiceActivity` | *boolean* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `audioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `optimizedForStreaming` | *operations.GetAllMediaLibraryOptimizedForStreaming* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | -| `part` | [operations.GetAllMediaLibraryPart](../../../sdk/models/operations/getallmedialibrarypart.md)[] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md b/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md deleted file mode 100644 index 32a9dfcf..00000000 --- a/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetAllMediaLibraryOptimizedForStreaming1 - -## Example Usage - -```typescript -import { GetAllMediaLibraryOptimizedForStreaming1 } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryOptimizedForStreaming1 = - GetAllMediaLibraryOptimizedForStreaming1.One; -``` - -## Values - -| Name | Value | -| ------ | ------ | -| `Zero` | 0 | -| `One` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarypart.md b/docs/sdk/models/operations/getallmedialibrarypart.md deleted file mode 100644 index 7e69da55..00000000 --- a/docs/sdk/models/operations/getallmedialibrarypart.md +++ /dev/null @@ -1,99 +0,0 @@ -# GetAllMediaLibraryPart - -## Example Usage - -```typescript -import { GetAllMediaLibraryPart, GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryPart = { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `accessible` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *number* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `duration` | *number* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `file` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `size` | *number* | :heavy_check_mark: | File size in bytes. | 30649952104 | -| `packetLength` | *number* | :heavy_minus_sign: | N/A | 188 | -| `container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | -| `videoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `audioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | -| `optimizedForStreaming` | *operations.GetAllMediaLibraryLibraryOptimizedForStreaming* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `hasThumbnail` | [operations.GetAllMediaLibraryHasThumbnail](../../../sdk/models/operations/getallmedialibraryhasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `stream` | [operations.GetAllMediaLibraryStream](../../../sdk/models/operations/getallmedialibrarystream.md)[] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md b/docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md deleted file mode 100644 index aac393a1..00000000 --- a/docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetAllMediaLibraryQueryParamIncludeMeta - -Adds the Meta object to the response - - -## Example Usage - -```typescript -import { GetAllMediaLibraryQueryParamIncludeMeta } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryQueryParamIncludeMeta = - GetAllMediaLibraryQueryParamIncludeMeta.Enable; -``` - -## Values - -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryresponse.md b/docs/sdk/models/operations/getallmedialibraryresponse.md deleted file mode 100644 index 47bae097..00000000 --- a/docs/sdk/models/operations/getallmedialibraryresponse.md +++ /dev/null @@ -1,304 +0,0 @@ -# GetAllMediaLibraryResponse - -## Example Usage - -```typescript -import { - GetAllMediaLibraryLibraryResponseType, - GetAllMediaLibraryLibraryType, - GetAllMediaLibraryResponse, - GetAllMediaLibraryStreamType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; - -let value: GetAllMediaLibraryResponse = { - contentType: "", - statusCode: 505, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - totalSize: 50, - offset: 0, - allowSync: false, - art: "/:/resources/show-fanart.jpg", - content: "secondary", - identifier: "com.plexapp.plugins.library", - librarySectionID: 2, - librarySectionTitle: "TV Series", - librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1734362201, - thumb: "/:/resources/show.png", - nocache: true, - title1: "TV Series", - title2: "By Starring Actor", - viewGroup: "secondary", - meta: { - type: [ - { - key: "/library/sections/2/all?type=2", - type: "filter", - subtype: "clip", - title: "TV Shows", - active: false, - filter: [ - { - filter: "genre", - filterType: "string", - key: "/library/sections/2/genre?type=2", - title: "Genre", - type: "filter", - advanced: true, - }, - ], - sort: [ - { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", - }, - ], - field: [ - { - key: "show.title", - title: "Show Title", - type: "string", - subType: "rating", - }, - ], - }, - ], - fieldType: [ - { - type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], - }, - ], - }, - metadata: [ - { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - slug: "4-for-texas", - studio: "20th Century Studios", - type: GetAllMediaLibraryLibraryType.Movie, - title: "Avatar: The Way of Water", - titleSort: "Whale", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" - + "Once a familiar threat returns to finish what was previously started, Jake must\n" - + "work with Neytiri and the army of the Na'vi race to protect their home.\n" - + "", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - tagline: "Return to Pandora.", - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - theme: "/library/metadata/1/theme/1705636920", - index: 1, - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - seasonCount: 2022, - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - parentRatingKey: "66", - grandparentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentSlug: "alice-in-borderland-2020", - grandparentKey: "/library/metadata/66", - parentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - grandparentArt: "/library/metadata/66/art/1705716261", - parentTitle: "Caprica", - parentIndex: 1, - parentThumb: "/library/metadata/66/thumb/1705716261", - ratingImage: "rottentomatoes://image.rating.ripe", - viewCount: 1, - viewOffset: 5222500, - skipCount: 1, - subtype: "clip", - lastRatedAt: 1721813113, - createdAtAccuracy: "epoch,local", - createdAtTZOffset: "0", - lastViewedAt: 1682752242, - userRating: 10, - image: [ - { - alt: "Episode 1", - type: GetAllMediaLibraryLibraryResponseType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - media: [ - { - id: 387322, - duration: 9610350, - bitrate: 25512, - width: 3840, - height: 1602, - aspectRatio: 2.35, - audioChannels: 6, - displayOffset: 50, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - audioProfile: "dts", - has64bitOffsets: false, - part: [ - { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], - }, - ], - }, - ], - genre: [ - { - tag: "Crime", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "Danny Boyle", - }, - ], - writer: [ - { - tag: "Jamie P. Hanson", - }, - ], - role: [ - { - tag: "Teller", - }, - ], - guids: [ - { - id: "tvdb://2337", - }, - ], - collection: [ - { - tag: "My Awesome Collection", - }, - ], - }, - ], - }, - }, -}; -``` - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | -| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | -| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [operations.GetAllMediaLibraryResponseBody](../../../sdk/models/operations/getallmedialibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarysort.md b/docs/sdk/models/operations/getallmedialibrarysort.md deleted file mode 100644 index 9fc133f5..00000000 --- a/docs/sdk/models/operations/getallmedialibrarysort.md +++ /dev/null @@ -1,29 +0,0 @@ -# GetAllMediaLibrarySort - -## Example Usage - -```typescript -import { GetAllMediaLibrarySort } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibrarySort = { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `default` | *string* | :heavy_minus_sign: | N/A | asc | -| `active` | *boolean* | :heavy_minus_sign: | N/A | false | -| `activeDirection` | [operations.GetAllMediaLibraryActiveDirection](../../../sdk/models/operations/getallmedialibraryactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `defaultDirection` | [operations.GetAllMediaLibraryDefaultDirection](../../../sdk/models/operations/getallmedialibrarydefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `descKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | -| `firstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `key` | *string* | :heavy_check_mark: | N/A | titleSort | -| `title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarystream.md b/docs/sdk/models/operations/getallmedialibrarystream.md deleted file mode 100644 index ddb9e8ab..00000000 --- a/docs/sdk/models/operations/getallmedialibrarystream.md +++ /dev/null @@ -1,117 +0,0 @@ -# GetAllMediaLibraryStream - -## Example Usage - -```typescript -import { GetAllMediaLibraryStream, GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryStream = { - id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `streamType` | [operations.GetAllMediaLibraryStreamType](../../../sdk/models/operations/getallmedialibrarystreamtype.md) | :heavy_check_mark: | Stream type:
- 1 = video
- 2 = audio
- 3 = subtitle
| 1 | -| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | -| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | -| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | -| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | -| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | -| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | -| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | -| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | -| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | -| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | -| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | -| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarytype.md b/docs/sdk/models/operations/getallmedialibrarytype.md deleted file mode 100644 index 9528968f..00000000 --- a/docs/sdk/models/operations/getallmedialibrarytype.md +++ /dev/null @@ -1,56 +0,0 @@ -# GetAllMediaLibraryType - -## Example Usage - -```typescript -import { GetAllMediaLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; - -let value: GetAllMediaLibraryType = { - key: "/library/sections/2/all?type=2", - type: "filter", - subtype: "clip", - title: "TV Shows", - active: false, - filter: [ - { - filter: "genre", - filterType: "string", - key: "/library/sections/2/genre?type=2", - title: "Genre", - type: "filter", - advanced: true, - }, - ], - sort: [ - { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", - }, - ], - field: [ - { - key: "show.title", - title: "Show Title", - type: "string", - subType: "rating", - }, - ], -}; -``` - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *string* | :heavy_check_mark: | N/A | filter | -| `subtype` | *string* | :heavy_minus_sign: | N/A | clip | -| `title` | *string* | :heavy_check_mark: | N/A | TV Shows | -| `active` | *boolean* | :heavy_check_mark: | N/A | false | -| `filter` | [operations.GetAllMediaLibraryFilter](../../../sdk/models/operations/getallmedialibraryfilter.md)[] | :heavy_minus_sign: | N/A | | -| `sort` | [operations.GetAllMediaLibrarySort](../../../sdk/models/operations/getallmedialibrarysort.md)[] | :heavy_minus_sign: | N/A | | -| `field` | [operations.GetAllMediaLibraryField](../../../sdk/models/operations/getallmedialibraryfield.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getavailableclientsresponse.md b/docs/sdk/models/operations/getavailableclientsresponse.md index 9ad1d1e5..965b887d 100644 --- a/docs/sdk/models/operations/getavailableclientsresponse.md +++ b/docs/sdk/models/operations/getavailableclientsresponse.md @@ -5,34 +5,7 @@ ```typescript import { GetAvailableClientsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAvailableClientsResponse = { - contentType: "", - statusCode: 308, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - server: [ - { - name: "iPad", - host: "10.10.10.102", - address: "10.10.10.102", - port: 32500, - machineIdentifier: "A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05", - version: "8.17", - protocol: "plex", - product: "Plex for iOS", - deviceClass: "tablet", - protocolVersion: 2, - protocolCapabilities: - "playback,playqueues,timeline,provider-playback", - }, - ], - }, - }, -}; +let value: GetAvailableClientsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getbandwidthstatisticsresponse.md b/docs/sdk/models/operations/getbandwidthstatisticsresponse.md index 00eda20a..fbf0c69c 100644 --- a/docs/sdk/models/operations/getbandwidthstatisticsresponse.md +++ b/docs/sdk/models/operations/getbandwidthstatisticsresponse.md @@ -5,49 +5,7 @@ ```typescript import { GetBandwidthStatisticsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetBandwidthStatisticsResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 5497, - device: [ - { - id: 208, - name: "Roku Express", - platform: "Roku", - clientIdentifier: "793095d235660625108ef785cc7646e9", - createdAt: 1706470556, - }, - ], - account: [ - { - id: 238960586, - key: "/accounts/238960586", - name: "Diane", - defaultAudioLanguage: "en", - autoSelectAudio: true, - defaultSubtitleLanguage: "en", - subtitleMode: 1, - thumb: "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967", - }, - ], - statisticsBandwidth: [ - { - accountID: 238960586, - deviceID: 208, - timespan: 6, - at: 1718387650, - lan: true, - bytes: 22, - }, - ], - }, - }, -}; +let value: GetBandwidthStatisticsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getbutlertasksresponse.md b/docs/sdk/models/operations/getbutlertasksresponse.md index 46d80591..e377afd0 100644 --- a/docs/sdk/models/operations/getbutlertasksresponse.md +++ b/docs/sdk/models/operations/getbutlertasksresponse.md @@ -5,26 +5,7 @@ ```typescript import { GetButlerTasksResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetButlerTasksResponse = { - contentType: "", - statusCode: 402, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - butlerTasks: { - butlerTask: [ - { - name: "BackupDatabase", - interval: 3, - title: "Backup Database", - description: - "Create a backup copy of the server's database in the configured backup directory", - }, - ], - }, - }, -}; +let value: GetButlerTasksResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getcompanionsdataresponse.md b/docs/sdk/models/operations/getcompanionsdataresponse.md index 3fe1253d..71199caa 100644 --- a/docs/sdk/models/operations/getcompanionsdataresponse.md +++ b/docs/sdk/models/operations/getcompanionsdataresponse.md @@ -5,23 +5,7 @@ ```typescript import { GetCompanionsDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetCompanionsDataResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - responseBodies: [ - { - identifier: "tv.plex.sonos", - baseURL: "https://sonos.plex.tv", - title: "Sonos", - linkURL: "https://sonos.plex.tv/link", - provides: "client,player", - token: "", - }, - ], -}; +let value: GetCompanionsDataResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getcountrieslibraryqueryparamtype.md b/docs/sdk/models/operations/getcountrieslibraryqueryparamtype.md index c3e25b28..f9105cda 100644 --- a/docs/sdk/models/operations/getcountrieslibraryqueryparamtype.md +++ b/docs/sdk/models/operations/getcountrieslibraryqueryparamtype.md @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getcountrieslibraryresponse.md b/docs/sdk/models/operations/getcountrieslibraryresponse.md index 79b43dc0..6bdab6a0 100644 --- a/docs/sdk/models/operations/getcountrieslibraryresponse.md +++ b/docs/sdk/models/operations/getcountrieslibraryresponse.md @@ -5,36 +5,7 @@ ```typescript import { GetCountriesLibraryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetCountriesLibraryResponse = { - contentType: "", - statusCode: 404, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - allowSync: false, - art: "/:/resources/show-fanart.jpg", - content: "secondary", - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1734362201, - nocache: true, - thumb: "/:/resources/show.png", - title1: "TV Series", - title2: "By Starring Actor", - viewGroup: "secondary", - directory: [ - { - fastKey: "/library/sections/2/all?country=15491", - key: "15491", - title: "Japan", - }, - ], - }, - }, -}; +let value: GetCountriesLibraryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getdevicesresponse.md b/docs/sdk/models/operations/getdevicesresponse.md index 15ee440b..4307c9b5 100644 --- a/docs/sdk/models/operations/getdevicesresponse.md +++ b/docs/sdk/models/operations/getdevicesresponse.md @@ -5,27 +5,7 @@ ```typescript import { GetDevicesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetDevicesResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 151, - identifier: "com.plexapp.system.devices", - device: [ - { - id: 1, - name: "iPhone", - platform: "iOS", - createdAt: 1654131230, - }, - ], - }, - }, -}; +let value: GetDevicesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getfilehashresponse.md b/docs/sdk/models/operations/getfilehashresponse.md index 01cd1fe0..afcec0d1 100644 --- a/docs/sdk/models/operations/getfilehashresponse.md +++ b/docs/sdk/models/operations/getfilehashresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetFileHashResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetFileHashResponse = { - contentType: "", - statusCode: 102, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetFileHashResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getgenreslibraryqueryparamtype.md b/docs/sdk/models/operations/getgenreslibraryqueryparamtype.md index 51c9c118..69539c97 100644 --- a/docs/sdk/models/operations/getgenreslibraryqueryparamtype.md +++ b/docs/sdk/models/operations/getgenreslibraryqueryparamtype.md @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getgenreslibraryresponse.md b/docs/sdk/models/operations/getgenreslibraryresponse.md index 4f1e70b2..c8070ecf 100644 --- a/docs/sdk/models/operations/getgenreslibraryresponse.md +++ b/docs/sdk/models/operations/getgenreslibraryresponse.md @@ -5,37 +5,7 @@ ```typescript import { GetGenresLibraryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetGenresLibraryResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - allowSync: false, - art: "/:/resources/show-fanart.jpg", - content: "secondary", - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1734362201, - nocache: true, - thumb: "/:/resources/show.png", - title1: "TV Series", - title2: "By Starring Actor", - viewGroup: "secondary", - directory: [ - { - fastKey: "/library/sections/10/all?genre=89", - key: "89", - title: "Action", - type: "genre", - }, - ], - }, - }, -}; +let value: GetGenresLibraryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getgeodatageodata.md b/docs/sdk/models/operations/getgeodatageodata.md index 8001b34f..bb6ba4b9 100644 --- a/docs/sdk/models/operations/getgeodatageodata.md +++ b/docs/sdk/models/operations/getgeodatageodata.md @@ -12,8 +12,11 @@ let value: GetGeoDataGeoData = { continentCode: "NA", country: "United States Virgin Islands", city: "Amsterdam", + europeanUnionMember: true, timeZone: "America/St_Thomas", postalCode: "802", + inPrivacyRestrictedCountry: true, + inPrivacyRestrictedRegion: true, subdivisions: "Saint Thomas", coordinates: "18.3381, -64.8941", }; diff --git a/docs/sdk/models/operations/getgeodataresponse.md b/docs/sdk/models/operations/getgeodataresponse.md index 04d9d9f8..f3b8a3ec 100644 --- a/docs/sdk/models/operations/getgeodataresponse.md +++ b/docs/sdk/models/operations/getgeodataresponse.md @@ -5,23 +5,7 @@ ```typescript import { GetGeoDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetGeoDataResponse = { - contentType: "", - statusCode: 103, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - geoData: { - code: "VI", - continentCode: "NA", - country: "United States Virgin Islands", - city: "Amsterdam", - timeZone: "America/St_Thomas", - postalCode: "802", - subdivisions: "Saint Thomas", - coordinates: "18.3381, -64.8941", - }, -}; +let value: GetGeoDataResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getglobalhubsresponse.md b/docs/sdk/models/operations/getglobalhubsresponse.md index 5a8a03d5..045b0037 100644 --- a/docs/sdk/models/operations/getglobalhubsresponse.md +++ b/docs/sdk/models/operations/getglobalhubsresponse.md @@ -5,57 +5,7 @@ ```typescript import { GetGlobalHubsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetGlobalHubsResponse = { - contentType: "", - statusCode: 306, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 8, - allowSync: true, - identifier: "com.plexapp.plugins.library", - hub: [ - { - hubKey: "/library/metadata/50768,65523,58188,57341,57302,57070", - key: - "/playlists/all?type=15&sort=lastViewedAt:desc&playlistType=video,audio", - title: "Recent Playlists", - type: "playlist", - hubIdentifier: "home.playlists", - context: "hub.home.playlists", - size: 6, - more: true, - style: "shelf", - promoted: true, - metadata: [ - { - ratingKey: "57070", - key: "/playlists/57070/items", - guid: - "com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c", - type: "playlist", - title: "November Movie Day", - titleSort: "Tracks", - summary: "", - smart: false, - playlistType: "video", - composite: "/playlists/57070/composite/1668787730", - icon: "playlist://image.smart", - viewCount: 2, - lastViewedAt: 1668787732, - duration: 16873000, - leafCount: 3, - addedAt: 1668779618, - updatedAt: 1668787730, - }, - ], - }, - ], - }, - }, -}; +let value: GetGlobalHubsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gethomedataresponse.md b/docs/sdk/models/operations/gethomedataresponse.md index e12efa1d..f84ef2dc 100644 --- a/docs/sdk/models/operations/gethomedataresponse.md +++ b/docs/sdk/models/operations/gethomedataresponse.md @@ -5,19 +5,7 @@ ```typescript import { GetHomeDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetHomeDataResponse = { - contentType: "", - statusCode: 404, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - id: 1841489, - name: "Blindkitty38's home", - guestUserID: 58815432, - guestUserUUID: "f3df4e01bfca0787", - }, -}; +let value: GetHomeDataResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getlibrarydetailsresponse.md b/docs/sdk/models/operations/getlibrarydetailsresponse.md index 3ce05da4..478bd93b 100644 --- a/docs/sdk/models/operations/getlibrarydetailsresponse.md +++ b/docs/sdk/models/operations/getlibrarydetailsresponse.md @@ -5,84 +5,7 @@ ```typescript import { GetLibraryDetailsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetLibraryDetailsResponse = { - contentType: "", - statusCode: 206, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 29, - allowSync: false, - art: "/:/resources/movie-fanart.jpg", - content: "secondary", - identifier: "com.plexapp.plugins.library", - librarySectionID: 1, - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1701731894, - thumb: "/:/resources/movie.png", - title1: "Movies", - viewGroup: "secondary", - viewMode: 65592, - directory: [ - { - key: "search?type=1", - title: "Search...", - secondary: true, - prompt: "Search Movies", - search: true, - }, - ], - type: [ - { - key: "/library/sections/1/all?type=1", - type: "movie", - title: "Movies", - active: false, - filter: [ - { - filter: "label", - filterType: "string", - key: "/library/sections/1/label", - title: "Labels", - type: "filter", - }, - ], - sort: [ - { - default: "asc", - defaultDirection: "desc", - descKey: "random:desc", - firstCharacterKey: "/library/sections/1/firstCharacter", - key: "random", - title: "Randomly", - }, - ], - field: [ - { - key: "label", - title: "Label", - type: "tag", - subType: "bitrate", - }, - ], - }, - ], - fieldType: [ - { - type: "resolution", - operator: [ - { - key: "=", - title: "is", - }, - ], - }, - ], - }, - }, -}; +let value: GetLibraryDetailsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getlibraryhubsresponse.md b/docs/sdk/models/operations/getlibraryhubsresponse.md index 0ec56160..f24f369d 100644 --- a/docs/sdk/models/operations/getlibraryhubsresponse.md +++ b/docs/sdk/models/operations/getlibraryhubsresponse.md @@ -4,134 +4,8 @@ ```typescript import { GetLibraryHubsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetLibraryHubsResponse = { - contentType: "", - statusCode: 304, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 7, - allowSync: true, - identifier: "com.plexapp.plugins.library", - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionUUID: "322a231a-b7f7-49f5-920f-14c61199cd30", - hub: [ - { - key: - "/library/sections/1/all?sort=lastViewedAt:desc&unwatched=0&viewOffset=0", - title: "Recently Played Movies", - type: "movie", - hubIdentifier: "movie.recentlyviewed.1", - context: "hub.movie.recentlyviewed", - size: 6, - more: true, - style: "shelf", - hubKey: "/library/metadata/66485,66098,57249,11449,5858,14944", - metadata: [ - { - ratingKey: "14944", - key: "/library/metadata/14944", - guid: "plex://movie/5d77686eeb5d26001f1eb339", - studio: "Walt Disney Animation Studios", - type: "movie", - title: "Tangled", - librarySectionTitle: "Movies", - librarySectionID: 1, - librarySectionKey: "/library/sections/1", - contentRating: "PG", - summary: - "The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is.", - rating: 8.9, - audienceRating: 8.7, - viewCount: 1, - lastViewedAt: 1704936047, - year: 2010, - tagline: "They're taking adventure to new lengths.", - thumb: "/library/metadata/14944/thumb/1705739847", - art: "/library/metadata/14944/art/1705739847", - duration: 6017237, - originallyAvailableAt: new RFCDate("2010-11-24T00:00:00Z"), - addedAt: 1589412494, - updatedAt: 1705739847, - audienceRatingImage: "rottentomatoes://image.rating.upright", - primaryExtraKey: "/library/metadata/14952", - ratingImage: "rottentomatoes://image.rating.ripe", - media: [ - { - id: 38247, - duration: 6017237, - bitrate: 2051, - width: 1920, - height: 1080, - aspectRatio: 1.78, - audioChannels: 2, - audioCodec: "aac", - videoCodec: "h264", - videoResolution: "1080", - container: "mp4", - videoFrameRate: "24p", - optimizedForStreaming: 1, - audioProfile: "lc", - has64bitOffsets: false, - videoProfile: "high", - part: [ - { - id: 38247, - key: "/library/parts/38247/1589412494/file.mp4", - duration: 6017237, - file: - "/movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4", - size: 1545647447, - audioProfile: "lc", - container: "mp4", - has64bitOffsets: false, - optimizedForStreaming: true, - videoProfile: "high", - }, - ], - }, - ], - genre: [ - { - tag: "Animation", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "Nathan Greno", - }, - ], - role: [ - { - tag: "Donna Murphy", - }, - ], - writer: [ - { - tag: "Wilhelm Grimm", - }, - ], - skipCount: 1, - chapterSource: "media", - }, - ], - promoted: true, - random: true, - }, - ], - }, - }, -}; +let value: GetLibraryHubsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getlibraryitemsfieldtype.md b/docs/sdk/models/operations/getlibraryitemsfieldtype.md index 3f264537..da0ee0e1 100644 --- a/docs/sdk/models/operations/getlibraryitemsfieldtype.md +++ b/docs/sdk/models/operations/getlibraryitemsfieldtype.md @@ -7,12 +7,7 @@ import { GetLibraryItemsFieldType } from "@lukehagar/plexjs/sdk/models/operation let value: GetLibraryItemsFieldType = { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }; ``` diff --git a/docs/sdk/models/operations/getlibraryitemslibraryfieldtype.md b/docs/sdk/models/operations/getlibraryitemslibraryfieldtype.md index 4e17a2dc..58866d23 100644 --- a/docs/sdk/models/operations/getlibraryitemslibraryfieldtype.md +++ b/docs/sdk/models/operations/getlibraryitemslibraryfieldtype.md @@ -7,12 +7,7 @@ import { GetLibraryItemsLibraryFieldType } from "@lukehagar/plexjs/sdk/models/op let value: GetLibraryItemsLibraryFieldType = { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }; ``` diff --git a/docs/sdk/models/operations/getlibraryitemslibrarytype.md b/docs/sdk/models/operations/getlibraryitemslibrarytype.md index 5c95f6c1..8a2e0adf 100644 --- a/docs/sdk/models/operations/getlibraryitemslibrarytype.md +++ b/docs/sdk/models/operations/getlibraryitemslibrarytype.md @@ -1,6 +1,6 @@ # GetLibraryItemsLibraryType -The type of media content +The type of media content in the Plex library. This can represent videos, music, or photos. ## Example Usage @@ -23,4 +23,8 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `Episode` | episode | | `Artist` | artist | | `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibraryitemsmedia.md b/docs/sdk/models/operations/getlibraryitemsmedia.md index 426bd440..3dba366a 100644 --- a/docs/sdk/models/operations/getlibraryitemsmedia.md +++ b/docs/sdk/models/operations/getlibraryitemsmedia.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetLibraryItemsMedia } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibraryItemsMedia, GetLibraryItemsOptimizedForStreaming } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetLibraryItemsMedia = { id: 119534, @@ -21,65 +21,9 @@ let value: GetLibraryItemsMedia = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: GetLibraryItemsOptimizedForStreaming.Enable, has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], + part: [], }; ``` diff --git a/docs/sdk/models/operations/getlibraryitemsmediacontainer.md b/docs/sdk/models/operations/getlibraryitemsmediacontainer.md index f1bf251d..c08f3445 100644 --- a/docs/sdk/models/operations/getlibraryitemsmediacontainer.md +++ b/docs/sdk/models/operations/getlibraryitemsmediacontainer.md @@ -13,6 +13,7 @@ import { GetLibraryItemsLibraryResponse200Type, GetLibraryItemsLibraryType, GetLibraryItemsMediaContainer, + GetLibraryItemsOptimizedForStreaming, ShowOrdering, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -58,12 +59,7 @@ let value: GetLibraryItemsMediaContainer = { fieldType: [ { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }, ], size: 70, @@ -148,65 +144,9 @@ let value: GetLibraryItemsMediaContainer = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: GetLibraryItemsOptimizedForStreaming.Enable, has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], + part: [], }, ], genre: [ @@ -338,12 +278,7 @@ let value: GetLibraryItemsMediaContainer = { fieldType: [ { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }, ], }, diff --git a/docs/sdk/models/operations/getlibraryitemsmeta.md b/docs/sdk/models/operations/getlibraryitemsmeta.md index 2c482fe0..4382d53f 100644 --- a/docs/sdk/models/operations/getlibraryitemsmeta.md +++ b/docs/sdk/models/operations/getlibraryitemsmeta.md @@ -47,12 +47,7 @@ let value: GetLibraryItemsMeta = { fieldType: [ { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }, ], }; diff --git a/docs/sdk/models/operations/getlibraryitemsmetadata.md b/docs/sdk/models/operations/getlibraryitemsmetadata.md index 3255df57..27bfa7c1 100644 --- a/docs/sdk/models/operations/getlibraryitemsmetadata.md +++ b/docs/sdk/models/operations/getlibraryitemsmetadata.md @@ -10,6 +10,7 @@ import { GetLibraryItemsLibraryResponse200Type, GetLibraryItemsLibraryType, GetLibraryItemsMetadata, + GetLibraryItemsOptimizedForStreaming, ShowOrdering, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -75,65 +76,9 @@ let value: GetLibraryItemsMetadata = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: GetLibraryItemsOptimizedForStreaming.Enable, has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], + part: [], }, ], genre: [ @@ -239,7 +184,7 @@ let value: GetLibraryItemsMetadata = { | `librarySectionID` | *number* | :heavy_minus_sign: | N/A | 1 | | `librarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | | `librarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `type` | [operations.GetLibraryItemsLibraryType](../../../sdk/models/operations/getlibraryitemslibrarytype.md) | :heavy_check_mark: | The type of media content
| movie | +| `type` | [operations.GetLibraryItemsLibraryType](../../../sdk/models/operations/getlibraryitemslibrarytype.md) | :heavy_check_mark: | The type of media content in the Plex library. This can represent videos, music, or photos.
| movie | | `title` | *string* | :heavy_check_mark: | N/A | Avatar: The Way of Water | | `slug` | *string* | :heavy_minus_sign: | N/A | 4-for-texas | | `contentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | diff --git a/docs/sdk/models/operations/getlibraryitemspart.md b/docs/sdk/models/operations/getlibraryitemspart.md index 7bf01037..adb07e07 100644 --- a/docs/sdk/models/operations/getlibraryitemspart.md +++ b/docs/sdk/models/operations/getlibraryitemspart.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetLibraryItemsPart } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibraryItemsHasThumbnail, GetLibraryItemsPart } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetLibraryItemsPart = { id: 119542, @@ -18,6 +18,7 @@ let value: GetLibraryItemsPart = { optimizedForStreaming: false, videoProfile: "main 10", indexes: "sd", + hasThumbnail: GetLibraryItemsHasThumbnail.True, stream: [ { id: 272796, diff --git a/docs/sdk/models/operations/getlibraryitemsqueryparamtype.md b/docs/sdk/models/operations/getlibraryitemsqueryparamtype.md index bf7e9d3d..e405de7d 100644 --- a/docs/sdk/models/operations/getlibraryitemsqueryparamtype.md +++ b/docs/sdk/models/operations/getlibraryitemsqueryparamtype.md @@ -26,7 +26,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibraryitemsrequest.md b/docs/sdk/models/operations/getlibraryitemsrequest.md index e3b18c4c..a42345cc 100644 --- a/docs/sdk/models/operations/getlibraryitemsrequest.md +++ b/docs/sdk/models/operations/getlibraryitemsrequest.md @@ -3,12 +3,20 @@ ## Example Usage ```typescript -import { GetLibraryItemsQueryParamType, GetLibraryItemsRequest, Tag } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetLibraryItemsQueryParamIncludeMeta, + GetLibraryItemsQueryParamType, + GetLibraryItemsRequest, + IncludeGuids, + Tag, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: GetLibraryItemsRequest = { tag: Tag.OnDeck, + includeGuids: IncludeGuids.Enable, type: GetLibraryItemsQueryParamType.TvShow, sectionKey: 9518, + includeMeta: GetLibraryItemsQueryParamIncludeMeta.Enable, }; ``` diff --git a/docs/sdk/models/operations/getlibraryitemsresponse.md b/docs/sdk/models/operations/getlibraryitemsresponse.md index 3a0eb14f..4b761224 100644 --- a/docs/sdk/models/operations/getlibraryitemsresponse.md +++ b/docs/sdk/models/operations/getlibraryitemsresponse.md @@ -3,357 +3,9 @@ ## Example Usage ```typescript -import { - EnableCreditsMarkerGeneration, - EpisodeSort, - FlattenSeasons, - GetLibraryItemsLibraryResponse200Type, - GetLibraryItemsLibraryType, - GetLibraryItemsResponse, - ShowOrdering, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetLibraryItemsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetLibraryItemsResponse = { - contentType: "", - statusCode: 102, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - type: [ - { - key: "/library/sections/2/all?type=2", - type: "filter", - subtype: "clip", - title: "TV Shows", - active: false, - filter: [ - { - filter: "genre", - filterType: "string", - key: "/library/sections/2/genre?type=2", - title: "Genre", - type: "filter", - advanced: true, - }, - ], - sort: [ - { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", - }, - ], - field: [ - { - key: "show.title", - title: "Show Title", - type: "string", - subType: "rating", - }, - ], - }, - ], - fieldType: [ - { - type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], - }, - ], - size: 70, - totalSize: 170, - offset: 0, - content: "secondary", - allowSync: true, - nocache: true, - art: "/:/resources/movie-fanart.jpg", - identifier: "com.plexapp.plugins.library", - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionUUID: "322a231a-b7f7-49f5-920f-14c61199cd30", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1701731894, - thumb: "/:/resources/movie.png", - title1: "Movies", - title2: "Recently Released", - viewGroup: "movie", - viewMode: 65592, - mixedParents: true, - metadata: [ - { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - studio: "20th Century Studios", - skipChildren: false, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - type: GetLibraryItemsLibraryType.Movie, - title: "Avatar: The Way of Water", - slug: "4-for-texas", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - seasonCount: 2022, - tagline: "Return to Pandora.", - flattenSeasons: FlattenSeasons.Show, - episodeSort: EpisodeSort.OldestFirst, - enableCreditsMarkerGeneration: - EnableCreditsMarkerGeneration.LibraryDefault, - showOrdering: ShowOrdering.TvdbAbsolute, - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - banner: "/library/metadata/58683/banner/1703239236", - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14T00:00:00Z"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - ratingImage: "rottentomatoes://image.rating.ripe", - grandparentRatingKey: "66", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - parentSlug: "alice-in-borderland-2020", - grandparentSlug: "alice-in-borderland-2020", - grandparentArt: "/library/metadata/66/art/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - media: [ - { - id: 119534, - duration: 11558112, - bitrate: 25025, - width: 3840, - height: 2072, - aspectRatio: 1.85, - audioProfile: "dts", - audioChannels: 6, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], - }, - ], - genre: [ - { - tag: "Adventure", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "James Cameron", - }, - ], - writer: [ - { - tag: "James Cameron", - }, - ], - collection: [ - { - tag: "Working NL Subs", - }, - ], - role: [ - { - id: 294129, - filter: "actor=294129", - thumb: - "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", - tag: "Mike Smith", - tagKey: "668e7e7b22bcad9064350c91", - role: "Self", - }, - ], - location: [ - { - path: "/TV Shows/House", - }, - ], - mediaGuid: [ - { - id: "imdb://tt13015952", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - metaDataRating: [ - { - image: "themoviedb://image.rating", - value: 3, - type: "audience", - }, - ], - image: [ - { - alt: "Episode 1", - type: GetLibraryItemsLibraryResponse200Type.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - titleSort: "Whale", - viewCount: 1, - lastViewedAt: 1682752242, - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - viewOffset: 5222500, - skipCount: 1, - index: 1, - theme: "/library/metadata/1/theme/1705636920", - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - hasPremiumExtras: "1", - hasPremiumPrimaryExtra: "1", - parentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - parentStudio: "UCP", - parentKey: "/library/metadata/66", - parentTitle: "Caprica", - parentIndex: 1, - parentYear: 2010, - parentThumb: "/library/metadata/66/thumb/1705716261", - parentTheme: "/library/metadata/66/theme/1705716261", - }, - ], - meta: { - type: [ - { - key: "/library/sections/2/all?type=2", - type: "show", - title: "TV Shows", - active: false, - filter: [ - { - filter: "genre", - filterType: "string", - key: "/library/sections/2/genre?type=2", - title: "Genre", - type: "filter", - }, - ], - sort: [ - { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", - }, - ], - field: [ - { - key: "show.title", - title: "Show Title", - type: "string", - subType: "rating", - }, - ], - }, - ], - fieldType: [ - { - type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], - }, - ], - }, - }, - }, -}; +let value: GetLibraryItemsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getlibraryitemsresponsebody.md b/docs/sdk/models/operations/getlibraryitemsresponsebody.md index 245a868d..06f2a144 100644 --- a/docs/sdk/models/operations/getlibraryitemsresponsebody.md +++ b/docs/sdk/models/operations/getlibraryitemsresponsebody.md @@ -11,6 +11,7 @@ import { FlattenSeasons, GetLibraryItemsLibraryResponse200Type, GetLibraryItemsLibraryType, + GetLibraryItemsOptimizedForStreaming, GetLibraryItemsResponseBody, ShowOrdering, } from "@lukehagar/plexjs/sdk/models/operations"; @@ -58,12 +59,7 @@ let value: GetLibraryItemsResponseBody = { fieldType: [ { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }, ], size: 70, @@ -148,65 +144,9 @@ let value: GetLibraryItemsResponseBody = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: GetLibraryItemsOptimizedForStreaming.Enable, has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], + part: [], }, ], genre: [ @@ -338,12 +278,7 @@ let value: GetLibraryItemsResponseBody = { fieldType: [ { type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], + operator: [], }, ], }, diff --git a/docs/sdk/models/operations/getallmedialibraryactivedirection.md b/docs/sdk/models/operations/getlibrarysectionsallactivedirection.md similarity index 50% rename from docs/sdk/models/operations/getallmedialibraryactivedirection.md rename to docs/sdk/models/operations/getlibrarysectionsallactivedirection.md index 5ba7646b..e24fcf96 100644 --- a/docs/sdk/models/operations/getallmedialibraryactivedirection.md +++ b/docs/sdk/models/operations/getlibrarysectionsallactivedirection.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryActiveDirection +# GetLibrarySectionsAllActiveDirection The direction of the sort. Can be either `asc` or `desc`. @@ -6,10 +6,10 @@ The direction of the sort. Can be either `asc` or `desc`. ## Example Usage ```typescript -import { GetAllMediaLibraryActiveDirection } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllActiveDirection } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryActiveDirection = - GetAllMediaLibraryActiveDirection.Ascending; +let value: GetLibrarySectionsAllActiveDirection = + GetLibrarySectionsAllActiveDirection.Ascending; ``` ## Values diff --git a/docs/sdk/models/operations/getallmedialibrarycollection.md b/docs/sdk/models/operations/getlibrarysectionsallcollection.md similarity index 83% rename from docs/sdk/models/operations/getallmedialibrarycollection.md rename to docs/sdk/models/operations/getlibrarysectionsallcollection.md index c6071674..8774287e 100644 --- a/docs/sdk/models/operations/getallmedialibrarycollection.md +++ b/docs/sdk/models/operations/getlibrarysectionsallcollection.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryCollection +# GetLibrarySectionsAllCollection ## Example Usage ```typescript -import { GetAllMediaLibraryCollection } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllCollection } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryCollection = { +let value: GetLibrarySectionsAllCollection = { tag: "My Awesome Collection", }; ``` diff --git a/docs/sdk/models/operations/getallmedialibrarycountry.md b/docs/sdk/models/operations/getlibrarysectionsallcountry.md similarity index 81% rename from docs/sdk/models/operations/getallmedialibrarycountry.md rename to docs/sdk/models/operations/getlibrarysectionsallcountry.md index e6d3c6dc..fada2417 100644 --- a/docs/sdk/models/operations/getallmedialibrarycountry.md +++ b/docs/sdk/models/operations/getlibrarysectionsallcountry.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryCountry +# GetLibrarySectionsAllCountry ## Example Usage ```typescript -import { GetAllMediaLibraryCountry } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllCountry } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryCountry = { +let value: GetLibrarySectionsAllCountry = { tag: "United States of America", }; ``` diff --git a/docs/sdk/models/operations/getlibrarysectionsalldefaultdirection.md b/docs/sdk/models/operations/getlibrarysectionsalldefaultdirection.md new file mode 100644 index 00000000..4c4764dd --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsalldefaultdirection.md @@ -0,0 +1,20 @@ +# GetLibrarySectionsAllDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + +## Example Usage + +```typescript +import { GetLibrarySectionsAllDefaultDirection } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllDefaultDirection = + GetLibrarySectionsAllDefaultDirection.Ascending; +``` + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Ascending` | asc | +| `Descending` | desc | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarydirector.md b/docs/sdk/models/operations/getlibrarysectionsalldirector.md similarity index 71% rename from docs/sdk/models/operations/getallmedialibrarydirector.md rename to docs/sdk/models/operations/getlibrarysectionsalldirector.md index fdd2445c..063b18ed 100644 --- a/docs/sdk/models/operations/getallmedialibrarydirector.md +++ b/docs/sdk/models/operations/getlibrarysectionsalldirector.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryDirector +# GetLibrarySectionsAllDirector ## Example Usage ```typescript -import { GetAllMediaLibraryDirector } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllDirector } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryDirector = { +let value: GetLibrarySectionsAllDirector = { tag: "Danny Boyle", }; ``` diff --git a/docs/sdk/models/operations/getallmedialibraryfield.md b/docs/sdk/models/operations/getlibrarysectionsallfield.md similarity index 83% rename from docs/sdk/models/operations/getallmedialibraryfield.md rename to docs/sdk/models/operations/getlibrarysectionsallfield.md index 10d42274..60c21273 100644 --- a/docs/sdk/models/operations/getallmedialibraryfield.md +++ b/docs/sdk/models/operations/getlibrarysectionsallfield.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryField +# GetLibrarySectionsAllField ## Example Usage ```typescript -import { GetAllMediaLibraryField } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllField } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryField = { +let value: GetLibrarySectionsAllField = { key: "show.title", title: "Show Title", type: "string", diff --git a/docs/sdk/models/operations/getlibrarysectionsallfieldtype.md b/docs/sdk/models/operations/getlibrarysectionsallfieldtype.md new file mode 100644 index 00000000..d382bd6a --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallfieldtype.md @@ -0,0 +1,19 @@ +# GetLibrarySectionsAllFieldType + +## Example Usage + +```typescript +import { GetLibrarySectionsAllFieldType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllFieldType = { + type: "tag", + operator: [], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `type` | *string* | :heavy_check_mark: | N/A | tag | +| `operator` | [operations.GetLibrarySectionsAllOperator](../../../sdk/models/operations/getlibrarysectionsalloperator.md)[] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryfilter.md b/docs/sdk/models/operations/getlibrarysectionsallfilter.md similarity index 90% rename from docs/sdk/models/operations/getallmedialibraryfilter.md rename to docs/sdk/models/operations/getlibrarysectionsallfilter.md index 6b3ee0ce..6ae077a6 100644 --- a/docs/sdk/models/operations/getallmedialibraryfilter.md +++ b/docs/sdk/models/operations/getlibrarysectionsallfilter.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryFilter +# GetLibrarySectionsAllFilter ## Example Usage ```typescript -import { GetAllMediaLibraryFilter } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllFilter } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryFilter = { +let value: GetLibrarySectionsAllFilter = { filter: "genre", filterType: "string", key: "/library/sections/2/genre?type=2", diff --git a/docs/sdk/models/operations/getallmedialibrarygenre.md b/docs/sdk/models/operations/getlibrarysectionsallgenre.md similarity index 80% rename from docs/sdk/models/operations/getallmedialibrarygenre.md rename to docs/sdk/models/operations/getlibrarysectionsallgenre.md index 262e459e..348ee626 100644 --- a/docs/sdk/models/operations/getallmedialibrarygenre.md +++ b/docs/sdk/models/operations/getlibrarysectionsallgenre.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryGenre +# GetLibrarySectionsAllGenre ## Example Usage ```typescript -import { GetAllMediaLibraryGenre } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllGenre } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryGenre = { +let value: GetLibrarySectionsAllGenre = { tag: "Crime", }; ``` diff --git a/docs/sdk/models/operations/getlibrarysectionsallguids.md b/docs/sdk/models/operations/getlibrarysectionsallguids.md new file mode 100644 index 00000000..e8567512 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallguids.md @@ -0,0 +1,18 @@ +# GetLibrarySectionsAllGuids + +## Example Usage + +```typescript +import { GetLibrarySectionsAllGuids } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllGuids = { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsallhasthumbnail.md b/docs/sdk/models/operations/getlibrarysectionsallhasthumbnail.md new file mode 100644 index 00000000..91da4d03 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallhasthumbnail.md @@ -0,0 +1,19 @@ +# GetLibrarySectionsAllHasThumbnail + +Indicates if the part has a thumbnail. + +## Example Usage + +```typescript +import { GetLibrarySectionsAllHasThumbnail } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllHasThumbnail = + GetLibrarySectionsAllHasThumbnail.True; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsallimage.md b/docs/sdk/models/operations/getlibrarysectionsallimage.md new file mode 100644 index 00000000..26afce7c --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallimage.md @@ -0,0 +1,21 @@ +# GetLibrarySectionsAllImage + +## Example Usage + +```typescript +import { GetLibrarySectionsAllImage, GetLibrarySectionsAllLibraryResponseType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllImage = { + alt: "Episode 1", + type: GetLibrarySectionsAllLibraryResponseType.Background, + url: "/library/metadata/45521/thumb/1644710589", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | +| `alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | +| `type` | [operations.GetLibrarySectionsAllLibraryResponseType](../../../sdk/models/operations/getlibrarysectionsalllibraryresponsetype.md) | :heavy_check_mark: | N/A | background | +| `url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md new file mode 100644 index 00000000..d9ac9ec8 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md @@ -0,0 +1,20 @@ +# GetLibrarySectionsAllLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.GetLibrarySectionsAllOptimizedForStreaming1` + +```typescript +const value: operations.GetLibrarySectionsAllOptimizedForStreaming1 = + GetLibrarySectionsAllOptimizedForStreaming1.Zero; +``` + +### `boolean` + +```typescript +const value: boolean = true; +``` + diff --git a/docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md b/docs/sdk/models/operations/getlibrarysectionsalllibraryresponsetype.md similarity index 67% rename from docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md rename to docs/sdk/models/operations/getlibrarysectionsalllibraryresponsetype.md index eaf6b0a9..b8ba9a66 100644 --- a/docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md +++ b/docs/sdk/models/operations/getlibrarysectionsalllibraryresponsetype.md @@ -1,12 +1,12 @@ -# GetAllMediaLibraryLibraryResponseType +# GetLibrarySectionsAllLibraryResponseType ## Example Usage ```typescript -import { GetAllMediaLibraryLibraryResponseType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllLibraryResponseType } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryLibraryResponseType = - GetAllMediaLibraryLibraryResponseType.Background; +let value: GetLibrarySectionsAllLibraryResponseType = + GetLibrarySectionsAllLibraryResponseType.Background; ``` ## Values diff --git a/docs/sdk/models/operations/getallmedialibrarylibrarytype.md b/docs/sdk/models/operations/getlibrarysectionsalllibrarytype.md similarity index 54% rename from docs/sdk/models/operations/getallmedialibrarylibrarytype.md rename to docs/sdk/models/operations/getlibrarysectionsalllibrarytype.md index a73c6389..0f146f00 100644 --- a/docs/sdk/models/operations/getallmedialibrarylibrarytype.md +++ b/docs/sdk/models/operations/getlibrarysectionsalllibrarytype.md @@ -1,14 +1,15 @@ -# GetAllMediaLibraryLibraryType +# GetLibrarySectionsAllLibraryType -The type of media content +The type of media content in the Plex library. This can represent videos, music, or photos. ## Example Usage ```typescript -import { GetAllMediaLibraryLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryLibraryType = GetAllMediaLibraryLibraryType.Movie; +let value: GetLibrarySectionsAllLibraryType = + GetLibrarySectionsAllLibraryType.Movie; ``` ## Values @@ -23,4 +24,8 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `Episode` | episode | | `Artist` | artist | | `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsallmedia.md b/docs/sdk/models/operations/getlibrarysectionsallmedia.md new file mode 100644 index 00000000..f54c7992 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallmedia.md @@ -0,0 +1,128 @@ +# GetLibrarySectionsAllMedia + +## Example Usage + +```typescript +import { + GetLibrarySectionsAllHasThumbnail, + GetLibrarySectionsAllMedia, + GetLibrarySectionsAllStreamType, +} from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllMedia = { + id: 387322, + duration: 9610350, + bitrate: 25512, + width: 3840, + height: 1602, + aspectRatio: 2.35, + audioChannels: 6, + displayOffset: 50, + audioCodec: "eac3", + videoCodec: "hevc", + videoResolution: "4k", + container: "mkv", + videoFrameRate: "24p", + videoProfile: "main 10", + hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, + part: [ + { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + hasThumbnail: GetLibrarySectionsAllHasThumbnail.True, + stream: [ + { + id: 1002625, + streamType: GetLibrarySectionsAllStreamType.Video, + format: "srt", + default: true, + codec: "hevc", + index: 0, + bitrate: 24743, + language: "English", + languageTag: "en", + languageCode: "eng", + headerCompression: true, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitDepth: 10, + chromaLocation: "topleft", + chromaSubsampling: "4:2:0", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + colorPrimaries: "bt2020", + colorRange: "tv", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + frameRate: 23.976, + key: "/library/streams/216389", + height: 1602, + level: 150, + original: true, + hasScalingMatrix: false, + profile: "main 10", + scanType: "progressive", + embeddedInVideo: "progressive", + refFrames: 1, + width: 3840, + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + selected: true, + forced: true, + channels: 6, + audioChannelLayout: "5.1(side)", + samplingRate: 48000, + canAutoSync: false, + hearingImpaired: true, + dub: true, + title: "SDH", + }, + ], + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `duration` | *number* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `width` | *number* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `height` | *number* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `aspectRatio` | *number* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `audioChannels` | *number* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `displayOffset` | *number* | :heavy_minus_sign: | N/A | 50 | +| `audioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | +| `videoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | +| `videoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | +| `container` | *string* | :heavy_minus_sign: | File container type. | mkv | +| `videoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | +| `videoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `hasVoiceActivity` | *boolean* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | +| `audioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `optimizedForStreaming` | *operations.GetLibrarySectionsAllOptimizedForStreaming* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | +| `part` | [operations.GetLibrarySectionsAllPart](../../../sdk/models/operations/getlibrarysectionsallpart.md)[] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymediacontainer.md b/docs/sdk/models/operations/getlibrarysectionsallmediacontainer.md similarity index 56% rename from docs/sdk/models/operations/getallmedialibrarymediacontainer.md rename to docs/sdk/models/operations/getlibrarysectionsallmediacontainer.md index 36bb4f1b..993847ac 100644 --- a/docs/sdk/models/operations/getallmedialibrarymediacontainer.md +++ b/docs/sdk/models/operations/getlibrarysectionsallmediacontainer.md @@ -1,17 +1,18 @@ -# GetAllMediaLibraryMediaContainer +# GetLibrarySectionsAllMediaContainer ## Example Usage ```typescript import { - GetAllMediaLibraryLibraryResponseType, - GetAllMediaLibraryLibraryType, - GetAllMediaLibraryMediaContainer, - GetAllMediaLibraryStreamType, + GetLibrarySectionsAllHasThumbnail, + GetLibrarySectionsAllLibraryResponseType, + GetLibrarySectionsAllLibraryType, + GetLibrarySectionsAllMediaContainer, + GetLibrarySectionsAllStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetAllMediaLibraryMediaContainer = { +let value: GetLibrarySectionsAllMediaContainer = { size: 50, totalSize: 50, offset: 0, @@ -86,7 +87,7 @@ let value: GetAllMediaLibraryMediaContainer = { guid: "plex://movie/5d7768ba96b655001fdc0408", slug: "4-for-texas", studio: "20th Century Studios", - type: GetAllMediaLibraryLibraryType.Movie, + type: GetLibrarySectionsAllLibraryType.Movie, title: "Avatar: The Way of Water", titleSort: "Whale", contentRating: "PG-13", @@ -142,7 +143,7 @@ let value: GetAllMediaLibraryMediaContainer = { image: [ { alt: "Episode 1", - type: GetAllMediaLibraryLibraryResponseType.Background, + type: GetLibrarySectionsAllLibraryResponseType.Background, url: "/library/metadata/45521/thumb/1644710589", }, ], @@ -152,6 +153,12 @@ let value: GetAllMediaLibraryMediaContainer = { bottomRight: "73958", bottomLeft: "1f5066", }, + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -186,10 +193,11 @@ let value: GetAllMediaLibraryMediaContainer = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: GetLibrarySectionsAllHasThumbnail.True, stream: [ { id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, + streamType: GetLibrarySectionsAllStreamType.Video, format: "srt", default: true, codec: "hevc", @@ -270,11 +278,6 @@ let value: GetAllMediaLibraryMediaContainer = { tag: "Teller", }, ], - guids: [ - { - id: "tvdb://2337", - }, - ], collection: [ { tag: "My Awesome Collection", @@ -287,24 +290,24 @@ let value: GetAllMediaLibraryMediaContainer = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `size` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `totalSize` | *number* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `offset` | *number* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | -| `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `librarySectionID` | *number* | :heavy_check_mark: | The unique identifier for the library section. | 2 | -| `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | TV Series | -| `librarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `mediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `mediaTagVersion` | *number* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `nocache` | *boolean* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `viewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `meta` | [operations.GetAllMediaLibraryMeta](../../../sdk/models/operations/getallmedialibrarymeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `metadata` | [operations.GetAllMediaLibraryMetadata](../../../sdk/models/operations/getallmedialibrarymetadata.md)[] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `size` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `totalSize` | *number* | :heavy_check_mark: | Total number of media items in the library. | 50 | +| `offset` | *number* | :heavy_check_mark: | Offset value for pagination. | 0 | +| `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `librarySectionID` | *number* | :heavy_check_mark: | The unique identifier for the library section. | 2 | +| `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | TV Series | +| `librarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | +| `mediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `mediaTagVersion` | *number* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `nocache` | *boolean* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | +| `title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | +| `viewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | +| `meta` | [operations.GetLibrarySectionsAllMeta](../../../sdk/models/operations/getlibrarysectionsallmeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | +| `metadata` | [operations.GetLibrarySectionsAllMetadata](../../../sdk/models/operations/getlibrarysectionsallmetadata.md)[] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymeta.md b/docs/sdk/models/operations/getlibrarysectionsallmeta.md similarity index 56% rename from docs/sdk/models/operations/getallmedialibrarymeta.md rename to docs/sdk/models/operations/getlibrarysectionsallmeta.md index fb08c672..e553fb6a 100644 --- a/docs/sdk/models/operations/getallmedialibrarymeta.md +++ b/docs/sdk/models/operations/getlibrarysectionsallmeta.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryMeta +# GetLibrarySectionsAllMeta The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. @@ -6,9 +6,9 @@ The Meta object is only included in the response if the `includeMeta` parameter ## Example Usage ```typescript -import { GetAllMediaLibraryMeta } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllMeta } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryMeta = { +let value: GetLibrarySectionsAllMeta = { type: [ { key: "/library/sections/2/all?type=2", @@ -62,7 +62,7 @@ let value: GetAllMediaLibraryMeta = { ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `type` | [operations.GetAllMediaLibraryType](../../../sdk/models/operations/getallmedialibrarytype.md)[] | :heavy_minus_sign: | N/A | -| `fieldType` | [operations.GetAllMediaLibraryFieldType](../../../sdk/models/operations/getallmedialibraryfieldtype.md)[] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `type` | [operations.GetLibrarySectionsAllType](../../../sdk/models/operations/getlibrarysectionsalltype.md)[] | :heavy_minus_sign: | N/A | +| `fieldType` | [operations.GetLibrarySectionsAllFieldType](../../../sdk/models/operations/getlibrarysectionsallfieldtype.md)[] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymetadata.md b/docs/sdk/models/operations/getlibrarysectionsallmetadata.md similarity index 96% rename from docs/sdk/models/operations/getallmedialibrarymetadata.md rename to docs/sdk/models/operations/getlibrarysectionsallmetadata.md index 8bb33578..d307bc1e 100644 --- a/docs/sdk/models/operations/getallmedialibrarymetadata.md +++ b/docs/sdk/models/operations/getlibrarysectionsallmetadata.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryMetadata +# GetLibrarySectionsAllMetadata Unknown @@ -7,20 +7,21 @@ Unknown ```typescript import { - GetAllMediaLibraryLibraryResponseType, - GetAllMediaLibraryLibraryType, - GetAllMediaLibraryMetadata, - GetAllMediaLibraryStreamType, + GetLibrarySectionsAllHasThumbnail, + GetLibrarySectionsAllLibraryResponseType, + GetLibrarySectionsAllLibraryType, + GetLibrarySectionsAllMetadata, + GetLibrarySectionsAllStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetAllMediaLibraryMetadata = { +let value: GetLibrarySectionsAllMetadata = { ratingKey: "58683", key: "/library/metadata/58683", guid: "plex://movie/5d7768ba96b655001fdc0408", slug: "4-for-texas", studio: "20th Century Studios", - type: GetAllMediaLibraryLibraryType.Movie, + type: GetLibrarySectionsAllLibraryType.Movie, title: "Avatar: The Way of Water", titleSort: "Whale", contentRating: "PG-13", @@ -76,7 +77,7 @@ let value: GetAllMediaLibraryMetadata = { image: [ { alt: "Episode 1", - type: GetAllMediaLibraryLibraryResponseType.Background, + type: GetLibrarySectionsAllLibraryResponseType.Background, url: "/library/metadata/45521/thumb/1644710589", }, ], @@ -86,6 +87,12 @@ let value: GetAllMediaLibraryMetadata = { bottomRight: "73958", bottomLeft: "1f5066", }, + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -120,10 +127,11 @@ let value: GetAllMediaLibraryMetadata = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: GetLibrarySectionsAllHasThumbnail.True, stream: [ { id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, + streamType: GetLibrarySectionsAllStreamType.Video, format: "srt", default: true, codec: "hevc", @@ -204,11 +212,6 @@ let value: GetAllMediaLibraryMetadata = { tag: "Teller", }, ], - guids: [ - { - id: "tvdb://2337", - }, - ], collection: [ { tag: "My Awesome Collection", @@ -226,7 +229,7 @@ let value: GetAllMediaLibraryMetadata = { | `guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | | `slug` | *string* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | | `studio` | *string* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `type` | [operations.GetAllMediaLibraryLibraryType](../../../sdk/models/operations/getallmedialibrarylibrarytype.md) | :heavy_check_mark: | N/A | movie | +| `type` | [operations.GetLibrarySectionsAllLibraryType](../../../sdk/models/operations/getlibrarysectionsalllibrarytype.md) | :heavy_check_mark: | N/A | movie | | `title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | | `titleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | | `contentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | @@ -275,13 +278,13 @@ let value: GetAllMediaLibraryMetadata = { | `createdAtTZOffset` | *string* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | | `lastViewedAt` | *number* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | | `userRating` | *number* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `image` | [operations.GetAllMediaLibraryImage](../../../sdk/models/operations/getallmedialibraryimage.md)[] | :heavy_minus_sign: | N/A | | -| `ultraBlurColors` | [operations.GetAllMediaLibraryUltraBlurColors](../../../sdk/models/operations/getallmedialibraryultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `media` | [operations.GetAllMediaLibraryMedia](../../../sdk/models/operations/getallmedialibrarymedia.md)[] | :heavy_minus_sign: | N/A | | -| `genre` | [operations.GetAllMediaLibraryGenre](../../../sdk/models/operations/getallmedialibrarygenre.md)[] | :heavy_minus_sign: | N/A | | -| `country` | [operations.GetAllMediaLibraryCountry](../../../sdk/models/operations/getallmedialibrarycountry.md)[] | :heavy_minus_sign: | N/A | | -| `director` | [operations.GetAllMediaLibraryDirector](../../../sdk/models/operations/getallmedialibrarydirector.md)[] | :heavy_minus_sign: | N/A | | -| `writer` | [operations.GetAllMediaLibraryWriter](../../../sdk/models/operations/getallmedialibrarywriter.md)[] | :heavy_minus_sign: | N/A | | -| `role` | [operations.GetAllMediaLibraryRole](../../../sdk/models/operations/getallmedialibraryrole.md)[] | :heavy_minus_sign: | N/A | | -| `guids` | [operations.GetAllMediaLibraryGuids](../../../sdk/models/operations/getallmedialibraryguids.md)[] | :heavy_minus_sign: | N/A | | -| `collection` | [operations.GetAllMediaLibraryCollection](../../../sdk/models/operations/getallmedialibrarycollection.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `image` | [operations.GetLibrarySectionsAllImage](../../../sdk/models/operations/getlibrarysectionsallimage.md)[] | :heavy_minus_sign: | N/A | | +| `ultraBlurColors` | [operations.GetLibrarySectionsAllUltraBlurColors](../../../sdk/models/operations/getlibrarysectionsallultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `guids` | [operations.GetLibrarySectionsAllGuids](../../../sdk/models/operations/getlibrarysectionsallguids.md)[] | :heavy_minus_sign: | N/A | | +| `media` | [operations.GetLibrarySectionsAllMedia](../../../sdk/models/operations/getlibrarysectionsallmedia.md)[] | :heavy_minus_sign: | N/A | | +| `genre` | [operations.GetLibrarySectionsAllGenre](../../../sdk/models/operations/getlibrarysectionsallgenre.md)[] | :heavy_minus_sign: | N/A | | +| `country` | [operations.GetLibrarySectionsAllCountry](../../../sdk/models/operations/getlibrarysectionsallcountry.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [operations.GetLibrarySectionsAllDirector](../../../sdk/models/operations/getlibrarysectionsalldirector.md)[] | :heavy_minus_sign: | N/A | | +| `writer` | [operations.GetLibrarySectionsAllWriter](../../../sdk/models/operations/getlibrarysectionsallwriter.md)[] | :heavy_minus_sign: | N/A | | +| `role` | [operations.GetLibrarySectionsAllRole](../../../sdk/models/operations/getlibrarysectionsallrole.md)[] | :heavy_minus_sign: | N/A | | +| `collection` | [operations.GetLibrarySectionsAllCollection](../../../sdk/models/operations/getlibrarysectionsallcollection.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryoperator.md b/docs/sdk/models/operations/getlibrarysectionsalloperator.md similarity index 75% rename from docs/sdk/models/operations/getallmedialibraryoperator.md rename to docs/sdk/models/operations/getlibrarysectionsalloperator.md index f1773e78..44bb8e47 100644 --- a/docs/sdk/models/operations/getallmedialibraryoperator.md +++ b/docs/sdk/models/operations/getlibrarysectionsalloperator.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryOperator +# GetLibrarySectionsAllOperator ## Example Usage ```typescript -import { GetAllMediaLibraryOperator } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllOperator } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryOperator = { +let value: GetLibrarySectionsAllOperator = { key: "=", title: "is", }; diff --git a/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming.md similarity index 78% rename from docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md rename to docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming.md index 0420624d..8961f0ee 100644 --- a/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md +++ b/docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryOptimizedForStreaming +# GetLibrarySectionsAllOptimizedForStreaming Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true @@ -14,6 +14,6 @@ const value: operations.OptimizedForStreaming1 = OptimizedForStreaming1.One; ### `boolean` ```typescript -const value: boolean = false; +const value: boolean = true; ``` diff --git a/docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming1.md b/docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming1.md new file mode 100644 index 00000000..5fbe61c7 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsalloptimizedforstreaming1.md @@ -0,0 +1,17 @@ +# GetLibrarySectionsAllOptimizedForStreaming1 + +## Example Usage + +```typescript +import { GetLibrarySectionsAllOptimizedForStreaming1 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllOptimizedForStreaming1 = + GetLibrarySectionsAllOptimizedForStreaming1.One; +``` + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsallpart.md b/docs/sdk/models/operations/getlibrarysectionsallpart.md new file mode 100644 index 00000000..8df5716b --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallpart.md @@ -0,0 +1,104 @@ +# GetLibrarySectionsAllPart + +## Example Usage + +```typescript +import { + GetLibrarySectionsAllHasThumbnail, + GetLibrarySectionsAllPart, + GetLibrarySectionsAllStreamType, +} from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllPart = { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + hasThumbnail: GetLibrarySectionsAllHasThumbnail.True, + stream: [ + { + id: 1002625, + streamType: GetLibrarySectionsAllStreamType.Video, + format: "srt", + default: true, + codec: "hevc", + index: 0, + bitrate: 24743, + language: "English", + languageTag: "en", + languageCode: "eng", + headerCompression: true, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitDepth: 10, + chromaLocation: "topleft", + chromaSubsampling: "4:2:0", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + colorPrimaries: "bt2020", + colorRange: "tv", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + frameRate: 23.976, + key: "/library/streams/216389", + height: 1602, + level: 150, + original: true, + hasScalingMatrix: false, + profile: "main 10", + scanType: "progressive", + embeddedInVideo: "progressive", + refFrames: 1, + width: 3840, + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + selected: true, + forced: true, + channels: 6, + audioChannelLayout: "5.1(side)", + samplingRate: 48000, + canAutoSync: false, + hearingImpaired: true, + dub: true, + title: "SDH", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| `accessible` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `id` | *number* | :heavy_check_mark: | Unique part identifier. | 418385 | +| `key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | +| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | +| `duration` | *number* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | +| `file` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | +| `size` | *number* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `packetLength` | *number* | :heavy_minus_sign: | N/A | 188 | +| `container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | +| `videoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | +| `audioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | +| `optimizedForStreaming` | *operations.GetLibrarySectionsAllLibraryOptimizedForStreaming* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `hasThumbnail` | [operations.GetLibrarySectionsAllHasThumbnail](../../../sdk/models/operations/getlibrarysectionsallhasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | [operations.GetLibrarySectionsAllStream](../../../sdk/models/operations/getlibrarysectionsallstream.md)[] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsallqueryparamincludemeta.md b/docs/sdk/models/operations/getlibrarysectionsallqueryparamincludemeta.md new file mode 100644 index 00000000..3cc02a00 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallqueryparamincludemeta.md @@ -0,0 +1,20 @@ +# GetLibrarySectionsAllQueryParamIncludeMeta + +Adds the Meta object to the response + + +## Example Usage + +```typescript +import { GetLibrarySectionsAllQueryParamIncludeMeta } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllQueryParamIncludeMeta = + GetLibrarySectionsAllQueryParamIncludeMeta.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryqueryparamtype.md b/docs/sdk/models/operations/getlibrarysectionsallqueryparamtype.md similarity index 59% rename from docs/sdk/models/operations/getallmedialibraryqueryparamtype.md rename to docs/sdk/models/operations/getlibrarysectionsallqueryparamtype.md index d0c79ecd..173f5bfb 100644 --- a/docs/sdk/models/operations/getallmedialibraryqueryparamtype.md +++ b/docs/sdk/models/operations/getlibrarysectionsallqueryparamtype.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryQueryParamType +# GetLibrarySectionsAllQueryParamType The type of media to retrieve or filter by. 1 = movie @@ -11,10 +11,10 @@ E.g. A movie library will not return anything with type 3 as there are no season ## Example Usage ```typescript -import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryQueryParamType = - GetAllMediaLibraryQueryParamType.TvShow; +let value: GetLibrarySectionsAllQueryParamType = + GetLibrarySectionsAllQueryParamType.TvShow; ``` ## Values @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryrequest.md b/docs/sdk/models/operations/getlibrarysectionsallrequest.md similarity index 91% rename from docs/sdk/models/operations/getallmedialibraryrequest.md rename to docs/sdk/models/operations/getlibrarysectionsallrequest.md index bc8bdc21..7d5cbcb8 100644 --- a/docs/sdk/models/operations/getallmedialibraryrequest.md +++ b/docs/sdk/models/operations/getlibrarysectionsallrequest.md @@ -1,13 +1,26 @@ -# GetAllMediaLibraryRequest +# GetLibrarySectionsAllRequest ## Example Usage ```typescript -import { GetAllMediaLibraryQueryParamType, GetAllMediaLibraryRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetLibrarySectionsAllQueryParamIncludeMeta, + GetLibrarySectionsAllQueryParamType, + GetLibrarySectionsAllRequest, + IncludeAdvanced, + QueryParamIncludeCollections, + QueryParamIncludeExternalMedia, + QueryParamIncludeGuids, +} from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryRequest = { +let value: GetLibrarySectionsAllRequest = { sectionKey: 9518, - type: GetAllMediaLibraryQueryParamType.TvShow, + type: GetLibrarySectionsAllQueryParamType.TvShow, + includeMeta: GetLibrarySectionsAllQueryParamIncludeMeta.Enable, + includeGuids: QueryParamIncludeGuids.Enable, + includeAdvanced: IncludeAdvanced.Enable, + includeCollections: QueryParamIncludeCollections.Enable, + includeExternalMedia: QueryParamIncludeExternalMedia.Enable, }; ``` @@ -16,8 +29,8 @@ let value: GetAllMediaLibraryRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sectionKey` | *number* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetAllMediaLibraryQueryParamType](../../../sdk/models/operations/getallmedialibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `includeMeta` | [operations.GetAllMediaLibraryQueryParamIncludeMeta](../../../sdk/models/operations/getallmedialibraryqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | +| `type` | [operations.GetLibrarySectionsAllQueryParamType](../../../sdk/models/operations/getlibrarysectionsallqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `includeMeta` | [operations.GetLibrarySectionsAllQueryParamIncludeMeta](../../../sdk/models/operations/getlibrarysectionsallqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | | `includeGuids` | [operations.QueryParamIncludeGuids](../../../sdk/models/operations/queryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | | `includeAdvanced` | [operations.IncludeAdvanced](../../../sdk/models/operations/includeadvanced.md) | :heavy_minus_sign: | N/A | 1 | | `includeCollections` | [operations.QueryParamIncludeCollections](../../../sdk/models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | N/A | 1 | diff --git a/docs/sdk/models/operations/getlibrarysectionsallresponse.md b/docs/sdk/models/operations/getlibrarysectionsallresponse.md new file mode 100644 index 00000000..c9364301 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallresponse.md @@ -0,0 +1,18 @@ +# GetLibrarySectionsAllResponse + +## Example Usage + +```typescript +import { GetLibrarySectionsAllResponse } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllResponse = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [operations.GetLibrarySectionsAllResponseBody](../../../sdk/models/operations/getlibrarysectionsallresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryresponsebody.md b/docs/sdk/models/operations/getlibrarysectionsallresponsebody.md similarity index 85% rename from docs/sdk/models/operations/getallmedialibraryresponsebody.md rename to docs/sdk/models/operations/getlibrarysectionsallresponsebody.md index 6eb981f4..47d20b87 100644 --- a/docs/sdk/models/operations/getallmedialibraryresponsebody.md +++ b/docs/sdk/models/operations/getlibrarysectionsallresponsebody.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryResponseBody +# GetLibrarySectionsAllResponseBody Successful response containing media container data. @@ -6,14 +6,15 @@ Successful response containing media container data. ```typescript import { - GetAllMediaLibraryLibraryResponseType, - GetAllMediaLibraryLibraryType, - GetAllMediaLibraryResponseBody, - GetAllMediaLibraryStreamType, + GetLibrarySectionsAllHasThumbnail, + GetLibrarySectionsAllLibraryResponseType, + GetLibrarySectionsAllLibraryType, + GetLibrarySectionsAllResponseBody, + GetLibrarySectionsAllStreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetAllMediaLibraryResponseBody = { +let value: GetLibrarySectionsAllResponseBody = { mediaContainer: { size: 50, totalSize: 50, @@ -89,7 +90,7 @@ let value: GetAllMediaLibraryResponseBody = { guid: "plex://movie/5d7768ba96b655001fdc0408", slug: "4-for-texas", studio: "20th Century Studios", - type: GetAllMediaLibraryLibraryType.Movie, + type: GetLibrarySectionsAllLibraryType.Movie, title: "Avatar: The Way of Water", titleSort: "Whale", contentRating: "PG-13", @@ -145,7 +146,7 @@ let value: GetAllMediaLibraryResponseBody = { image: [ { alt: "Episode 1", - type: GetAllMediaLibraryLibraryResponseType.Background, + type: GetLibrarySectionsAllLibraryResponseType.Background, url: "/library/metadata/45521/thumb/1644710589", }, ], @@ -155,6 +156,12 @@ let value: GetAllMediaLibraryResponseBody = { bottomRight: "73958", bottomLeft: "1f5066", }, + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -189,10 +196,11 @@ let value: GetAllMediaLibraryResponseBody = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: GetLibrarySectionsAllHasThumbnail.True, stream: [ { id: 1002625, - streamType: GetAllMediaLibraryStreamType.Video, + streamType: GetLibrarySectionsAllStreamType.Video, format: "srt", default: true, codec: "hevc", @@ -273,11 +281,6 @@ let value: GetAllMediaLibraryResponseBody = { tag: "Teller", }, ], - guids: [ - { - id: "tvdb://2337", - }, - ], collection: [ { tag: "My Awesome Collection", @@ -291,6 +294,6 @@ let value: GetAllMediaLibraryResponseBody = { ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `mediaContainer` | [operations.GetAllMediaLibraryMediaContainer](../../../sdk/models/operations/getallmedialibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `mediaContainer` | [operations.GetLibrarySectionsAllMediaContainer](../../../sdk/models/operations/getlibrarysectionsallmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryrole.md b/docs/sdk/models/operations/getlibrarysectionsallrole.md similarity index 86% rename from docs/sdk/models/operations/getallmedialibraryrole.md rename to docs/sdk/models/operations/getlibrarysectionsallrole.md index 710dc85f..338f1659 100644 --- a/docs/sdk/models/operations/getallmedialibraryrole.md +++ b/docs/sdk/models/operations/getlibrarysectionsallrole.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryRole +# GetLibrarySectionsAllRole ## Example Usage ```typescript -import { GetAllMediaLibraryRole } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllRole } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryRole = { +let value: GetLibrarySectionsAllRole = { tag: "Teller", }; ``` diff --git a/docs/sdk/models/operations/getlibrarysectionsallsort.md b/docs/sdk/models/operations/getlibrarysectionsallsort.md new file mode 100644 index 00000000..56bbd46d --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallsort.md @@ -0,0 +1,29 @@ +# GetLibrarySectionsAllSort + +## Example Usage + +```typescript +import { GetLibrarySectionsAllSort } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllSort = { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `default` | *string* | :heavy_minus_sign: | N/A | asc | +| `active` | *boolean* | :heavy_minus_sign: | N/A | false | +| `activeDirection` | [operations.GetLibrarySectionsAllActiveDirection](../../../sdk/models/operations/getlibrarysectionsallactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `defaultDirection` | [operations.GetLibrarySectionsAllDefaultDirection](../../../sdk/models/operations/getlibrarysectionsalldefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `descKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | +| `firstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | +| `key` | *string* | :heavy_check_mark: | N/A | titleSort | +| `title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibrarysectionsallstream.md b/docs/sdk/models/operations/getlibrarysectionsallstream.md new file mode 100644 index 00000000..895a9628 --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsallstream.md @@ -0,0 +1,117 @@ +# GetLibrarySectionsAllStream + +## Example Usage + +```typescript +import { GetLibrarySectionsAllStream, GetLibrarySectionsAllStreamType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllStream = { + id: 1002625, + streamType: GetLibrarySectionsAllStreamType.Video, + format: "srt", + default: true, + codec: "hevc", + index: 0, + bitrate: 24743, + language: "English", + languageTag: "en", + languageCode: "eng", + headerCompression: true, + doviblCompatID: 1, + doviblPresent: true, + dovielPresent: false, + doviLevel: 6, + doviPresent: true, + doviProfile: 8, + dovirpuPresent: true, + doviVersion: "1.0", + bitDepth: 10, + chromaLocation: "topleft", + chromaSubsampling: "4:2:0", + codedHeight: 1608, + codedWidth: 3840, + closedCaptions: true, + colorPrimaries: "bt2020", + colorRange: "tv", + colorSpace: "bt2020nc", + colorTrc: "smpte2084", + frameRate: 23.976, + key: "/library/streams/216389", + height: 1602, + level: 150, + original: true, + hasScalingMatrix: false, + profile: "main 10", + scanType: "progressive", + embeddedInVideo: "progressive", + refFrames: 1, + width: 3840, + displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", + selected: true, + forced: true, + channels: 6, + audioChannelLayout: "5.1(side)", + samplingRate: 48000, + canAutoSync: false, + hearingImpaired: true, + dub: true, + title: "SDH", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `streamType` | [operations.GetLibrarySectionsAllStreamType](../../../sdk/models/operations/getlibrarysectionsallstreamtype.md) | :heavy_check_mark: | Stream type:
- 1 = video
- 2 = audio
- 3 = subtitle
| 1 | +| `format` | *string* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `index` | *number* | :heavy_minus_sign: | Index of the stream. | 0 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `headerCompression` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *boolean* | :heavy_minus_sign: | N/A | true | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `key` | *string* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarystreamtype.md b/docs/sdk/models/operations/getlibrarysectionsallstreamtype.md similarity index 71% rename from docs/sdk/models/operations/getallmedialibrarystreamtype.md rename to docs/sdk/models/operations/getlibrarysectionsallstreamtype.md index 49db0671..65ee0819 100644 --- a/docs/sdk/models/operations/getallmedialibrarystreamtype.md +++ b/docs/sdk/models/operations/getlibrarysectionsallstreamtype.md @@ -1,4 +1,4 @@ -# GetAllMediaLibraryStreamType +# GetLibrarySectionsAllStreamType Stream type: - 1 = video @@ -9,9 +9,10 @@ Stream type: ## Example Usage ```typescript -import { GetAllMediaLibraryStreamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllStreamType } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryStreamType = GetAllMediaLibraryStreamType.Video; +let value: GetLibrarySectionsAllStreamType = + GetLibrarySectionsAllStreamType.Video; ``` ## Values diff --git a/docs/sdk/models/operations/getlibrarysectionsalltype.md b/docs/sdk/models/operations/getlibrarysectionsalltype.md new file mode 100644 index 00000000..a7c405ce --- /dev/null +++ b/docs/sdk/models/operations/getlibrarysectionsalltype.md @@ -0,0 +1,56 @@ +# GetLibrarySectionsAllType + +## Example Usage + +```typescript +import { GetLibrarySectionsAllType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetLibrarySectionsAllType = { + key: "/library/sections/2/all?type=2", + type: "filter", + subtype: "clip", + title: "TV Shows", + active: false, + filter: [ + { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, + }, + ], + sort: [ + { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", + }, + ], + field: [ + { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *string* | :heavy_check_mark: | N/A | filter | +| `subtype` | *string* | :heavy_minus_sign: | N/A | clip | +| `title` | *string* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *boolean* | :heavy_check_mark: | N/A | false | +| `filter` | [operations.GetLibrarySectionsAllFilter](../../../sdk/models/operations/getlibrarysectionsallfilter.md)[] | :heavy_minus_sign: | N/A | | +| `sort` | [operations.GetLibrarySectionsAllSort](../../../sdk/models/operations/getlibrarysectionsallsort.md)[] | :heavy_minus_sign: | N/A | | +| `field` | [operations.GetLibrarySectionsAllField](../../../sdk/models/operations/getlibrarysectionsallfield.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryultrablurcolors.md b/docs/sdk/models/operations/getlibrarysectionsallultrablurcolors.md similarity index 80% rename from docs/sdk/models/operations/getallmedialibraryultrablurcolors.md rename to docs/sdk/models/operations/getlibrarysectionsallultrablurcolors.md index 09aa5666..00bfe6e6 100644 --- a/docs/sdk/models/operations/getallmedialibraryultrablurcolors.md +++ b/docs/sdk/models/operations/getlibrarysectionsallultrablurcolors.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryUltraBlurColors +# GetLibrarySectionsAllUltraBlurColors ## Example Usage ```typescript -import { GetAllMediaLibraryUltraBlurColors } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllUltraBlurColors } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryUltraBlurColors = { +let value: GetLibrarySectionsAllUltraBlurColors = { topLeft: "11333b", topRight: "0a232d", bottomRight: "73958", diff --git a/docs/sdk/models/operations/getallmedialibrarywriter.md b/docs/sdk/models/operations/getlibrarysectionsallwriter.md similarity index 71% rename from docs/sdk/models/operations/getallmedialibrarywriter.md rename to docs/sdk/models/operations/getlibrarysectionsallwriter.md index bce2e648..be921fdc 100644 --- a/docs/sdk/models/operations/getallmedialibrarywriter.md +++ b/docs/sdk/models/operations/getlibrarysectionsallwriter.md @@ -1,11 +1,11 @@ -# GetAllMediaLibraryWriter +# GetLibrarySectionsAllWriter ## Example Usage ```typescript -import { GetAllMediaLibraryWriter } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetLibrarySectionsAllWriter } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetAllMediaLibraryWriter = { +let value: GetLibrarySectionsAllWriter = { tag: "Jamie P. Hanson", }; ``` diff --git a/docs/sdk/models/operations/getmediaartsmediacontainer.md b/docs/sdk/models/operations/getmediaartsmediacontainer.md index 104ea496..85d4bbba 100644 --- a/docs/sdk/models/operations/getmediaartsmediacontainer.md +++ b/docs/sdk/models/operations/getmediaartsmediacontainer.md @@ -10,18 +10,7 @@ let value: GetMediaArtsMediaContainer = { mediaTagVersion: 1734362201, mediaTagPrefix: "/system/bundle/media/flags/", identifier: "com.plexapp.plugins.library", - metadata: [ - { - key: - "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", - provider: "tmdb", - ratingKey: - "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", - selected: true, - thumb: - "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg", - }, - ], + metadata: [], }; ``` diff --git a/docs/sdk/models/operations/getmediaartsresponse.md b/docs/sdk/models/operations/getmediaartsresponse.md index d086004b..ec633b43 100644 --- a/docs/sdk/models/operations/getmediaartsresponse.md +++ b/docs/sdk/models/operations/getmediaartsresponse.md @@ -5,33 +5,7 @@ ```typescript import { GetMediaArtsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetMediaArtsResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - mediaTagVersion: 1734362201, - mediaTagPrefix: "/system/bundle/media/flags/", - identifier: "com.plexapp.plugins.library", - metadata: [ - { - key: - "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", - provider: "tmdb", - ratingKey: - "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", - selected: true, - thumb: - "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg", - }, - ], - }, - }, -}; +let value: GetMediaArtsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getmediaartsresponsebody.md b/docs/sdk/models/operations/getmediaartsresponsebody.md index 085b7383..3b191967 100644 --- a/docs/sdk/models/operations/getmediaartsresponsebody.md +++ b/docs/sdk/models/operations/getmediaartsresponsebody.md @@ -13,18 +13,7 @@ let value: GetMediaArtsResponseBody = { mediaTagVersion: 1734362201, mediaTagPrefix: "/system/bundle/media/flags/", identifier: "com.plexapp.plugins.library", - metadata: [ - { - key: - "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", - provider: "tmdb", - ratingKey: - "https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg", - selected: true, - thumb: - "https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg", - }, - ], + metadata: [], }, }; ``` diff --git a/docs/sdk/models/operations/getmediametadatacountry.md b/docs/sdk/models/operations/getmediametadatacountry.md index 817f8705..8d87ade4 100644 --- a/docs/sdk/models/operations/getmediametadatacountry.md +++ b/docs/sdk/models/operations/getmediametadatacountry.md @@ -16,8 +16,8 @@ let value: GetMediaMetaDataCountry = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `id` | *number* | :heavy_check_mark: | N/A | 259 | -| `tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | -| `filter` | *string* | :heavy_minus_sign: | N/A | country=19 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | +| `tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | +| `filter` | *string* | :heavy_check_mark: | N/A | country=19 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatadirector.md b/docs/sdk/models/operations/getmediametadatadirector.md index 5dfa03f5..3acb29dc 100644 --- a/docs/sdk/models/operations/getmediametadatadirector.md +++ b/docs/sdk/models/operations/getmediametadatadirector.md @@ -17,10 +17,10 @@ let value: GetMediaMetaDataDirector = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `filter` | *string* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | -| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | -| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the director. | 126522 | +| `tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | +| `tagKey` | *string* | :heavy_check_mark: | A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatagenre.md b/docs/sdk/models/operations/getmediametadatagenre.md index b922c314..cffd0d20 100644 --- a/docs/sdk/models/operations/getmediametadatagenre.md +++ b/docs/sdk/models/operations/getmediametadatagenre.md @@ -16,8 +16,8 @@ let value: GetMediaMetaDataGenre = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `id` | *number* | :heavy_check_mark: | N/A | 259 | -| `tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | -| `filter` | *string* | :heavy_check_mark: | N/A | genre=19 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | +| `tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | +| `filter` | *string* | :heavy_check_mark: | N/A | genre=19 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadataguids.md b/docs/sdk/models/operations/getmediametadataguids.md index df28758b..ad8fad3f 100644 --- a/docs/sdk/models/operations/getmediametadataguids.md +++ b/docs/sdk/models/operations/getmediametadataguids.md @@ -6,12 +6,13 @@ import { GetMediaMetaDataGuids } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataGuids = { - id: "imdb://tt3032476", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `id` | *string* | :heavy_check_mark: | The GUID value. | imdb://tt3032476 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md index 3cb9e0f5..78366fdc 100644 --- a/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md +++ b/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md @@ -15,6 +15,6 @@ const value: operations.GetMediaMetaDataOptimizedForStreamingLibrary1 = ### `boolean` ```typescript -const value: boolean = false; +const value: boolean = true; ``` diff --git a/docs/sdk/models/operations/getmediametadatamedia.md b/docs/sdk/models/operations/getmediametadatamedia.md index 0b7fe3fc..ddb19af0 100644 --- a/docs/sdk/models/operations/getmediametadatamedia.md +++ b/docs/sdk/models/operations/getmediametadatamedia.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetMediaMetaDataMedia, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetMediaMetaDataHasThumbnail, GetMediaMetaDataMedia, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataMedia = { id: 387322, @@ -38,6 +38,7 @@ let value: GetMediaMetaDataMedia = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: GetMediaMetaDataHasThumbnail.True, stream: [ { id: 1002625, diff --git a/docs/sdk/models/operations/getmediametadatamediacontainer.md b/docs/sdk/models/operations/getmediametadatamediacontainer.md index 0e633baf..338cc8b9 100644 --- a/docs/sdk/models/operations/getmediametadatamediacontainer.md +++ b/docs/sdk/models/operations/getmediametadatamediacontainer.md @@ -3,13 +3,7 @@ ## Example Usage ```typescript -import { - GetMediaMetaDataLibraryType, - GetMediaMetaDataMediaContainer, - GetMediaMetaDataStreamType, - GetMediaMetaDataType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetMediaMetaDataMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataMediaContainer = { size: 50, @@ -20,283 +14,7 @@ let value: GetMediaMetaDataMediaContainer = { librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", mediaTagPrefix: "/system/bundle/media/flags/", mediaTagVersion: 1734362201, - metadata: [ - { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - slug: "4-for-texas", - studio: "20th Century Studios", - type: GetMediaMetaDataType.Movie, - title: "Avatar: The Way of Water", - titleSort: "Whale", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" - + "Once a familiar threat returns to finish what was previously started, Jake must\n" - + "work with Neytiri and the army of the Na'vi race to protect their home.\n" - + "", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - tagline: "Return to Pandora.", - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - theme: "/library/metadata/1/theme/1705636920", - index: 1, - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - seasonCount: 2022, - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - parentRatingKey: "66", - grandparentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentSlug: "alice-in-borderland-2020", - grandparentKey: "/library/metadata/66", - parentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - grandparentArt: "/library/metadata/66/art/1705716261", - parentTitle: "Caprica", - parentIndex: 1, - parentThumb: "/library/metadata/66/thumb/1705716261", - ratingImage: "rottentomatoes://image.rating.ripe", - viewCount: 1, - viewOffset: 5222500, - skipCount: 1, - subtype: "clip", - lastRatedAt: 1721813113, - createdAtAccuracy: "epoch,local", - createdAtTZOffset: "0", - lastViewedAt: 1682752242, - userRating: 10, - image: [ - { - alt: "Episode 1", - type: GetMediaMetaDataLibraryType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - media: [ - { - id: 387322, - duration: 9610350, - bitrate: 25512, - width: 3840, - height: 1602, - aspectRatio: 2.35, - audioChannels: 6, - displayOffset: 50, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - audioProfile: "dts", - has64bitOffsets: false, - part: [ - { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: GetMediaMetaDataStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], - }, - ], - }, - ], - genre: [ - { - id: 259, - tag: "Crime", - filter: "genre=19", - }, - ], - country: [ - { - id: 259, - tag: "United States of America", - filter: "country=19", - }, - ], - director: [ - { - id: 126522, - tag: "Danny Boyle", - filter: "director=235876", - tagKey: "5d776831151a60001f24d031", - thumb: - "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", - }, - ], - writer: [ - { - id: 126522, - tag: "Jamie P. Hanson", - filter: "writer=126522", - thumb: - "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", - tagKey: "5d77683d85719b001f3a535e", - }, - ], - producer: [ - { - id: 109501, - filter: "actor=109501", - tag: "Bob Odenkirk", - tagKey: "5d77683254f42c001f8c3f69", - role: "Jimmy McGill", - thumb: - "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", - }, - ], - role: [ - { - id: 126522, - tag: "Teller", - role: "Self - Judge", - filter: "actor=126522", - tagKey: "5d77683d85719b001f3a535e", - thumb: - "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", - }, - ], - guids: [ - { - id: "imdb://tt3032476", - }, - ], - ratings: [ - { - image: "imdb://image.rating", - value: 9, - type: "audience", - }, - ], - similar: [ - { - id: 26, - filter: "similar=26", - tag: "Breaking Bad", - }, - ], - location: [ - { - path: "/TV Shows/Better Call Saul", - }, - ], - chapter: [ - { - id: 4, - filter: "thumb=4", - index: 1, - startTimeOffset: 0, - endTimeOffset: 100100, - thumb: "/library/media/46883/chapterImages/1", - }, - ], - marker: [ - { - id: 306970, - type: "credits", - startTimeOffset: 4176050, - endTimeOffset: 4393389, - final: true, - attributes: { - id: 306970, - version: 4, - }, - }, - ], - extras: { - size: 1, - }, - }, - ], + metadata: [], }; ``` diff --git a/docs/sdk/models/operations/getmediametadatametadata.md b/docs/sdk/models/operations/getmediametadatametadata.md index 9eb2e14f..34f95d32 100644 --- a/docs/sdk/models/operations/getmediametadatametadata.md +++ b/docs/sdk/models/operations/getmediametadatametadata.md @@ -7,6 +7,7 @@ Unknown ```typescript import { + GetMediaMetaDataHasThumbnail, GetMediaMetaDataLibraryType, GetMediaMetaDataMetadata, GetMediaMetaDataStreamType, @@ -89,6 +90,12 @@ let value: GetMediaMetaDataMetadata = { librarySectionID: 1, librarySectionTitle: "Movies", librarySectionKey: "/library/sections/1", + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -123,6 +130,7 @@ let value: GetMediaMetaDataMetadata = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: GetMediaMetaDataHasThumbnail.True, stream: [ { id: 1002625, @@ -238,11 +246,6 @@ let value: GetMediaMetaDataMetadata = { "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", }, ], - guids: [ - { - id: "imdb://tt3032476", - }, - ], ratings: [ { image: "imdb://image.rating", @@ -354,6 +357,7 @@ let value: GetMediaMetaDataMetadata = { | `librarySectionID` | *number* | :heavy_check_mark: | The identifier for the library section. | 1 | | `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | Movies | | `librarySectionKey` | *string* | :heavy_check_mark: | The key corresponding to the library section. | /library/sections/1 | +| `guids` | [operations.GetMediaMetaDataGuids](../../../sdk/models/operations/getmediametadataguids.md)[] | :heavy_minus_sign: | N/A | | | `media` | [operations.GetMediaMetaDataMedia](../../../sdk/models/operations/getmediametadatamedia.md)[] | :heavy_minus_sign: | N/A | | | `genre` | [operations.GetMediaMetaDataGenre](../../../sdk/models/operations/getmediametadatagenre.md)[] | :heavy_minus_sign: | N/A | | | `country` | [operations.GetMediaMetaDataCountry](../../../sdk/models/operations/getmediametadatacountry.md)[] | :heavy_minus_sign: | N/A | | @@ -361,7 +365,6 @@ let value: GetMediaMetaDataMetadata = { | `writer` | [operations.GetMediaMetaDataWriter](../../../sdk/models/operations/getmediametadatawriter.md)[] | :heavy_minus_sign: | N/A | | | `producer` | [operations.GetMediaMetaDataProducer](../../../sdk/models/operations/getmediametadataproducer.md)[] | :heavy_minus_sign: | N/A | | | `role` | [operations.GetMediaMetaDataRole](../../../sdk/models/operations/getmediametadatarole.md)[] | :heavy_minus_sign: | N/A | | -| `guids` | [operations.GetMediaMetaDataGuids](../../../sdk/models/operations/getmediametadataguids.md)[] | :heavy_minus_sign: | N/A | | | `ratings` | [operations.Ratings](../../../sdk/models/operations/ratings.md)[] | :heavy_minus_sign: | N/A | | | `similar` | [operations.GetMediaMetaDataSimilar](../../../sdk/models/operations/getmediametadatasimilar.md)[] | :heavy_minus_sign: | N/A | | | `location` | [operations.GetMediaMetaDataLocation](../../../sdk/models/operations/getmediametadatalocation.md)[] | :heavy_minus_sign: | N/A | | diff --git a/docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md b/docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md index 7ced429b..beae8fea 100644 --- a/docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md +++ b/docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md @@ -15,6 +15,6 @@ const value: operations.GetMediaMetaDataOptimizedForStreaming1 = ### `boolean` ```typescript -const value: boolean = false; +const value: boolean = true; ``` diff --git a/docs/sdk/models/operations/getmediametadatapart.md b/docs/sdk/models/operations/getmediametadatapart.md index 45d5d953..c8a08175 100644 --- a/docs/sdk/models/operations/getmediametadatapart.md +++ b/docs/sdk/models/operations/getmediametadatapart.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetMediaMetaDataPart, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetMediaMetaDataHasThumbnail, GetMediaMetaDataPart, GetMediaMetaDataStreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataPart = { accessible: true, @@ -19,6 +19,7 @@ let value: GetMediaMetaDataPart = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: GetMediaMetaDataHasThumbnail.True, stream: [ { id: 1002625, diff --git a/docs/sdk/models/operations/getmediametadatarequest.md b/docs/sdk/models/operations/getmediametadatarequest.md index 71525e05..3d00d3fa 100644 --- a/docs/sdk/models/operations/getmediametadatarequest.md +++ b/docs/sdk/models/operations/getmediametadatarequest.md @@ -6,7 +6,7 @@ import { GetMediaMetaDataRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataRequest = { - ratingKey: 9518, + ratingKey: "21119,21617", includeConcerts: true, includeExtras: true, includeOnDeck: true, @@ -25,19 +25,19 @@ let value: GetMediaMetaDataRequest = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `ratingKey` | *number* | :heavy_check_mark: | the id of the library item to return the children of. | 9518 | -| `includeConcerts` | *boolean* | :heavy_minus_sign: | Include concerts data if set to true. | true | -| `includeExtras` | *boolean* | :heavy_minus_sign: | Include extra content (e.g. bonus features). | true | -| `includeOnDeck` | *boolean* | :heavy_minus_sign: | Include on-deck items. | true | -| `includePopularLeaves` | *boolean* | :heavy_minus_sign: | Include popular leaves (episodes/chapters). | true | -| `includePreferences` | *boolean* | :heavy_minus_sign: | Include preferences information. | true | -| `includeReviews` | *boolean* | :heavy_minus_sign: | Include reviews for the content. | true | -| `includeChapters` | *boolean* | :heavy_minus_sign: | Include chapter details. | true | -| `includeStations` | *boolean* | :heavy_minus_sign: | Include station data. | true | -| `includeExternalMedia` | *boolean* | :heavy_minus_sign: | Include external media data. | true | -| `asyncAugmentMetadata` | *boolean* | :heavy_minus_sign: | Trigger asynchronous metadata augmentation. | true | -| `asyncCheckFiles` | *boolean* | :heavy_minus_sign: | Trigger asynchronous file checking. | true | -| `asyncRefreshAnalysis` | *boolean* | :heavy_minus_sign: | Trigger asynchronous refresh of analysis. | true | -| `asyncRefreshLocalMediaAgent` | *boolean* | :heavy_minus_sign: | Trigger asynchronous refresh of the local media agent. | true | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `ratingKey` | *string* | :heavy_check_mark: | The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs. | 21119,21617 | +| `includeConcerts` | *boolean* | :heavy_minus_sign: | Include concerts data if set to true. | true | +| `includeExtras` | *boolean* | :heavy_minus_sign: | Include extra content (e.g. bonus features). | true | +| `includeOnDeck` | *boolean* | :heavy_minus_sign: | Include on-deck items. | true | +| `includePopularLeaves` | *boolean* | :heavy_minus_sign: | Include popular leaves (episodes/chapters). | true | +| `includePreferences` | *boolean* | :heavy_minus_sign: | Include preferences information. | true | +| `includeReviews` | *boolean* | :heavy_minus_sign: | Include reviews for the content. | true | +| `includeChapters` | *boolean* | :heavy_minus_sign: | Include chapter details. | true | +| `includeStations` | *boolean* | :heavy_minus_sign: | Include station data. | true | +| `includeExternalMedia` | *boolean* | :heavy_minus_sign: | Include external media data. | true | +| `asyncAugmentMetadata` | *boolean* | :heavy_minus_sign: | Trigger asynchronous metadata augmentation. | true | +| `asyncCheckFiles` | *boolean* | :heavy_minus_sign: | Trigger asynchronous file checking. | true | +| `asyncRefreshAnalysis` | *boolean* | :heavy_minus_sign: | Trigger asynchronous refresh of analysis. | true | +| `asyncRefreshLocalMediaAgent` | *boolean* | :heavy_minus_sign: | Trigger asynchronous refresh of the local media agent. | true | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadataresponse.md b/docs/sdk/models/operations/getmediametadataresponse.md index 99696cdc..4812404b 100644 --- a/docs/sdk/models/operations/getmediametadataresponse.md +++ b/docs/sdk/models/operations/getmediametadataresponse.md @@ -3,310 +3,9 @@ ## Example Usage ```typescript -import { - GetMediaMetaDataLibraryType, - GetMediaMetaDataResponse, - GetMediaMetaDataStreamType, - GetMediaMetaDataType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetMediaMetaDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetMediaMetaDataResponse = { - contentType: "", - statusCode: 100, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - allowSync: false, - identifier: "com.plexapp.plugins.library", - librarySectionID: 2, - librarySectionTitle: "TV Series", - librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1734362201, - metadata: [ - { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - slug: "4-for-texas", - studio: "20th Century Studios", - type: GetMediaMetaDataType.Movie, - title: "Avatar: The Way of Water", - titleSort: "Whale", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" - + "Once a familiar threat returns to finish what was previously started, Jake must\n" - + "work with Neytiri and the army of the Na'vi race to protect their home.\n" - + "", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - tagline: "Return to Pandora.", - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - theme: "/library/metadata/1/theme/1705636920", - index: 1, - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - seasonCount: 2022, - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - parentRatingKey: "66", - grandparentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentSlug: "alice-in-borderland-2020", - grandparentKey: "/library/metadata/66", - parentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - grandparentArt: "/library/metadata/66/art/1705716261", - parentTitle: "Caprica", - parentIndex: 1, - parentThumb: "/library/metadata/66/thumb/1705716261", - ratingImage: "rottentomatoes://image.rating.ripe", - viewCount: 1, - viewOffset: 5222500, - skipCount: 1, - subtype: "clip", - lastRatedAt: 1721813113, - createdAtAccuracy: "epoch,local", - createdAtTZOffset: "0", - lastViewedAt: 1682752242, - userRating: 10, - image: [ - { - alt: "Episode 1", - type: GetMediaMetaDataLibraryType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - media: [ - { - id: 387322, - duration: 9610350, - bitrate: 25512, - width: 3840, - height: 1602, - aspectRatio: 2.35, - audioChannels: 6, - displayOffset: 50, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - audioProfile: "dts", - has64bitOffsets: false, - part: [ - { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: GetMediaMetaDataStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], - }, - ], - }, - ], - genre: [ - { - id: 259, - tag: "Crime", - filter: "genre=19", - }, - ], - country: [ - { - id: 259, - tag: "United States of America", - filter: "country=19", - }, - ], - director: [ - { - id: 126522, - tag: "Danny Boyle", - filter: "director=235876", - tagKey: "5d776831151a60001f24d031", - thumb: - "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", - }, - ], - writer: [ - { - id: 126522, - tag: "Jamie P. Hanson", - filter: "writer=126522", - thumb: - "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", - tagKey: "5d77683d85719b001f3a535e", - }, - ], - producer: [ - { - id: 109501, - filter: "actor=109501", - tag: "Bob Odenkirk", - tagKey: "5d77683254f42c001f8c3f69", - role: "Jimmy McGill", - thumb: - "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", - }, - ], - role: [ - { - id: 126522, - tag: "Teller", - role: "Self - Judge", - filter: "actor=126522", - tagKey: "5d77683d85719b001f3a535e", - thumb: - "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", - }, - ], - guids: [ - { - id: "imdb://tt3032476", - }, - ], - ratings: [ - { - image: "imdb://image.rating", - value: 9, - type: "audience", - }, - ], - similar: [ - { - id: 26, - filter: "similar=26", - tag: "Breaking Bad", - }, - ], - location: [ - { - path: "/TV Shows/Better Call Saul", - }, - ], - chapter: [ - { - id: 4, - filter: "thumb=4", - index: 1, - startTimeOffset: 0, - endTimeOffset: 100100, - thumb: "/library/media/46883/chapterImages/1", - }, - ], - marker: [ - { - id: 306970, - type: "credits", - startTimeOffset: 4176050, - endTimeOffset: 4393389, - final: true, - attributes: { - id: 306970, - version: 4, - }, - }, - ], - extras: { - size: 1, - }, - }, - ], - }, - }, -}; +let value: GetMediaMetaDataResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getmediametadataresponsebody.md b/docs/sdk/models/operations/getmediametadataresponsebody.md index 5592b728..692f41fd 100644 --- a/docs/sdk/models/operations/getmediametadataresponsebody.md +++ b/docs/sdk/models/operations/getmediametadataresponsebody.md @@ -5,13 +5,7 @@ The metadata of the library item. ## Example Usage ```typescript -import { - GetMediaMetaDataLibraryType, - GetMediaMetaDataResponseBody, - GetMediaMetaDataStreamType, - GetMediaMetaDataType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetMediaMetaDataResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMediaMetaDataResponseBody = { mediaContainer: { @@ -23,283 +17,7 @@ let value: GetMediaMetaDataResponseBody = { librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", mediaTagPrefix: "/system/bundle/media/flags/", mediaTagVersion: 1734362201, - metadata: [ - { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - slug: "4-for-texas", - studio: "20th Century Studios", - type: GetMediaMetaDataType.Movie, - title: "Avatar: The Way of Water", - titleSort: "Whale", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" - + "Once a familiar threat returns to finish what was previously started, Jake must\n" - + "work with Neytiri and the army of the Na'vi race to protect their home.\n" - + "", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - tagline: "Return to Pandora.", - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - theme: "/library/metadata/1/theme/1705636920", - index: 1, - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - seasonCount: 2022, - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - parentRatingKey: "66", - grandparentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentSlug: "alice-in-borderland-2020", - grandparentKey: "/library/metadata/66", - parentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - grandparentArt: "/library/metadata/66/art/1705716261", - parentTitle: "Caprica", - parentIndex: 1, - parentThumb: "/library/metadata/66/thumb/1705716261", - ratingImage: "rottentomatoes://image.rating.ripe", - viewCount: 1, - viewOffset: 5222500, - skipCount: 1, - subtype: "clip", - lastRatedAt: 1721813113, - createdAtAccuracy: "epoch,local", - createdAtTZOffset: "0", - lastViewedAt: 1682752242, - userRating: 10, - image: [ - { - alt: "Episode 1", - type: GetMediaMetaDataLibraryType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - media: [ - { - id: 387322, - duration: 9610350, - bitrate: 25512, - width: 3840, - height: 1602, - aspectRatio: 2.35, - audioChannels: 6, - displayOffset: 50, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - audioProfile: "dts", - has64bitOffsets: false, - part: [ - { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: GetMediaMetaDataStreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], - }, - ], - }, - ], - genre: [ - { - id: 259, - tag: "Crime", - filter: "genre=19", - }, - ], - country: [ - { - id: 259, - tag: "United States of America", - filter: "country=19", - }, - ], - director: [ - { - id: 126522, - tag: "Danny Boyle", - filter: "director=235876", - tagKey: "5d776831151a60001f24d031", - thumb: - "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", - }, - ], - writer: [ - { - id: 126522, - tag: "Jamie P. Hanson", - filter: "writer=126522", - thumb: - "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", - tagKey: "5d77683d85719b001f3a535e", - }, - ], - producer: [ - { - id: 109501, - filter: "actor=109501", - tag: "Bob Odenkirk", - tagKey: "5d77683254f42c001f8c3f69", - role: "Jimmy McGill", - thumb: - "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg", - }, - ], - role: [ - { - id: 126522, - tag: "Teller", - role: "Self - Judge", - filter: "actor=126522", - tagKey: "5d77683d85719b001f3a535e", - thumb: - "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", - }, - ], - guids: [ - { - id: "imdb://tt3032476", - }, - ], - ratings: [ - { - image: "imdb://image.rating", - value: 9, - type: "audience", - }, - ], - similar: [ - { - id: 26, - filter: "similar=26", - tag: "Breaking Bad", - }, - ], - location: [ - { - path: "/TV Shows/Better Call Saul", - }, - ], - chapter: [ - { - id: 4, - filter: "thumb=4", - index: 1, - startTimeOffset: 0, - endTimeOffset: 100100, - thumb: "/library/media/46883/chapterImages/1", - }, - ], - marker: [ - { - id: 306970, - type: "credits", - startTimeOffset: 4176050, - endTimeOffset: 4393389, - final: true, - attributes: { - id: 306970, - version: 4, - }, - }, - ], - extras: { - size: 1, - }, - }, - ], + metadata: [], }, }; ``` diff --git a/docs/sdk/models/operations/getmediametadatarole.md b/docs/sdk/models/operations/getmediametadatarole.md index f3159199..7fdc7310 100644 --- a/docs/sdk/models/operations/getmediametadatarole.md +++ b/docs/sdk/models/operations/getmediametadatarole.md @@ -18,11 +18,11 @@ let value: GetMediaMetaDataRole = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique identifier for the actor or role. | 126522 | -| `tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | -| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the actor's tag, used for internal identification. | 5d77683d85719b001f3a535e | -| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | +| `tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | +| `role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | +| `tagKey` | *string* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
NOTE: This is globally unique across all Plex Servers.
| 5d77683d85719b001f3a535e | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatatype.md b/docs/sdk/models/operations/getmediametadatatype.md index dea8e4ef..30e4a936 100644 --- a/docs/sdk/models/operations/getmediametadatatype.md +++ b/docs/sdk/models/operations/getmediametadatatype.md @@ -1,6 +1,6 @@ # GetMediaMetaDataType -The type of media content +The type of media content in the Plex library. This can represent videos, music, or photos. ## Example Usage @@ -23,4 +23,8 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `Episode` | episode | | `Artist` | artist | | `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatawriter.md b/docs/sdk/models/operations/getmediametadatawriter.md index 7b4f6329..b6964fc6 100644 --- a/docs/sdk/models/operations/getmediametadatawriter.md +++ b/docs/sdk/models/operations/getmediametadatawriter.md @@ -17,10 +17,10 @@ let value: GetMediaMetaDataWriter = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | -| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | -| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the writers tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | +| `tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | +| `tagKey` | *string* | :heavy_minus_sign: | A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediapostersmediacontainer.md b/docs/sdk/models/operations/getmediapostersmediacontainer.md index 0c0cef5c..b1ff7551 100644 --- a/docs/sdk/models/operations/getmediapostersmediacontainer.md +++ b/docs/sdk/models/operations/getmediapostersmediacontainer.md @@ -10,18 +10,7 @@ let value: GetMediaPostersMediaContainer = { mediaTagVersion: 1734362201, mediaTagPrefix: "/system/bundle/media/flags/", identifier: "com.plexapp.plugins.library", - metadata: [ - { - key: - "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", - provider: "tmdb", - ratingKey: - "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", - selected: true, - thumb: - "https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg", - }, - ], + metadata: [], }; ``` diff --git a/docs/sdk/models/operations/getmediapostersresponse.md b/docs/sdk/models/operations/getmediapostersresponse.md index 2eeb0499..e771bc28 100644 --- a/docs/sdk/models/operations/getmediapostersresponse.md +++ b/docs/sdk/models/operations/getmediapostersresponse.md @@ -5,33 +5,7 @@ ```typescript import { GetMediaPostersResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetMediaPostersResponse = { - contentType: "", - statusCode: 307, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - mediaTagVersion: 1734362201, - mediaTagPrefix: "/system/bundle/media/flags/", - identifier: "com.plexapp.plugins.library", - metadata: [ - { - key: - "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", - provider: "tmdb", - ratingKey: - "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", - selected: true, - thumb: - "https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg", - }, - ], - }, - }, -}; +let value: GetMediaPostersResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getmediapostersresponsebody.md b/docs/sdk/models/operations/getmediapostersresponsebody.md index b386b890..ee871f51 100644 --- a/docs/sdk/models/operations/getmediapostersresponsebody.md +++ b/docs/sdk/models/operations/getmediapostersresponsebody.md @@ -13,18 +13,7 @@ let value: GetMediaPostersResponseBody = { mediaTagVersion: 1734362201, mediaTagPrefix: "/system/bundle/media/flags/", identifier: "com.plexapp.plugins.library", - metadata: [ - { - key: - "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", - provider: "tmdb", - ratingKey: - "https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg", - selected: true, - thumb: - "https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg", - }, - ], + metadata: [], }, }; ``` diff --git a/docs/sdk/models/operations/getmediaprovidersresponse.md b/docs/sdk/models/operations/getmediaprovidersresponse.md index b40ff136..1a4d4321 100644 --- a/docs/sdk/models/operations/getmediaprovidersresponse.md +++ b/docs/sdk/models/operations/getmediaprovidersresponse.md @@ -5,35 +5,7 @@ ```typescript import { GetMediaProvidersResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetMediaProvidersResponse = { - contentType: "", - statusCode: 102, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - mediaProvider: [ - { - feature: [ - { - type: "", - flavor: "global", - scrobbleKey: "/:/scrobble/new", - unscrobbleKey: "/:/unscrobble/new", - action: [ - { - id: "addToContinueWatching", - key: "/actions/addToContinueWatching", - }, - ], - }, - ], - }, - ], - }, - }, -}; +let value: GetMediaProvidersResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getmetadatachildrenresponse.md b/docs/sdk/models/operations/getmetadatachildrenresponse.md index 7ad1d831..f85cf275 100644 --- a/docs/sdk/models/operations/getmetadatachildrenresponse.md +++ b/docs/sdk/models/operations/getmetadatachildrenresponse.md @@ -5,80 +5,7 @@ ```typescript import { GetMetadataChildrenResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetMetadataChildrenResponse = { - contentType: "", - statusCode: 305, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 3, - allowSync: true, - art: "/library/metadata/30072/art/1705739923", - identifier: "com.plexapp.plugins.library", - key: "30072", - librarySectionID: 2, - librarySectionTitle: "TV Shows", - librarySectionUUID: "4bb2521c-8ba9-459b-aaee-8ab8bc35eabd", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1701731894, - nocache: true, - parentIndex: 1, - parentTitle: "Reacher", - parentYear: 2022, - summary: - "When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia.", - theme: "/library/metadata/30072/theme/1705739923", - thumb: "/library/metadata/30072/thumb/1705739923", - title1: "TV Shows", - title2: "Reacher", - viewGroup: "season", - viewMode: 65593, - directory: [ - { - leafCount: 16, - thumb: "/library/metadata/30072/thumb/1705739923", - viewedLeafCount: 16, - key: "/library/metadata/30072/allLeaves", - title: "All episodes", - }, - ], - metadata: [ - { - ratingKey: "66488", - key: "/library/metadata/66488/children", - parentRatingKey: "30072", - guid: "plex://season/652aea6549508477c34c6000", - parentGuid: "plex://show/5d9c09190aaccd001f8f42f0", - parentStudio: "Amazon Studios", - type: "season", - title: "Season 2", - parentKey: "/library/metadata/30072", - parentTitle: "Reacher", - summary: - "Based on\"Bad Luck and Trouble,\" when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge.", - index: 2, - parentIndex: 1, - viewCount: 11, - lastViewedAt: 1705646565, - parentYear: 2022, - thumb: "/library/metadata/66488/thumb/1703065033", - art: "/library/metadata/30072/art/1705739923", - parentThumb: "/library/metadata/30072/thumb/1705739923", - parentTheme: "/library/metadata/30072/theme/1705739923", - leafCount: 8, - viewedLeafCount: 8, - addedAt: 1702602021, - updatedAt: 1703065033, - userRating: 9, - skipCount: 1, - lastRatedAt: 1703881224, - }, - ], - }, - }, -}; +let value: GetMetadataChildrenResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getmyplexaccountresponse.md b/docs/sdk/models/operations/getmyplexaccountresponse.md index f380a086..4bbfc273 100644 --- a/docs/sdk/models/operations/getmyplexaccountresponse.md +++ b/docs/sdk/models/operations/getmyplexaccountresponse.md @@ -5,28 +5,7 @@ ```typescript import { GetMyPlexAccountResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetMyPlexAccountResponse = { - contentType: "", - statusCode: 504, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - myPlex: { - authToken: "Z5v-PrNASDFpsaCi3CPK7", - username: "example.email@mail.com", - mappingState: "mapped", - signInState: "ok", - publicAddress: "140.20.68.140", - publicPort: 32400, - privateAddress: "10.10.10.47", - privatePort: 32400, - subscriptionFeatures: - "federated-auth,hardware_transcoding,home,hwtranscode,item_clusters,kevin-bacon,livetv,loudness,lyrics,music-analysis,music_videos,pass,photo_autotags,photos-v5,photosV6-edit,photosV6-tv-albums,premium_music_metadata,radio,server-manager,session_bandwidth_restrictions,session_kick,shared-radio,sync,trailers,tuner-sharing,type-first,unsupportedtuners,webhooks", - subscriptionState: "Active", - }, - }, -}; +let value: GetMyPlexAccountResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getpinauthpincontainer.md b/docs/sdk/models/operations/getpinauthpincontainer.md index dd1caf71..1f6d51f6 100644 --- a/docs/sdk/models/operations/getpinauthpincontainer.md +++ b/docs/sdk/models/operations/getpinauthpincontainer.md @@ -18,11 +18,15 @@ let value: GetPinAuthPinContainer = { continentCode: "NA", country: "United States Virgin Islands", city: "Amsterdam", + europeanUnionMember: true, timeZone: "America/St_Thomas", postalCode: "802", + inPrivacyRestrictedCountry: true, + inPrivacyRestrictedRegion: true, subdivisions: "Saint Thomas", coordinates: "18.3381, -64.8941", }, + expiresIn: 876, createdAt: new Date("2024-07-16T17:03:05Z"), expiresAt: new Date("2024-07-16T17:18:05Z"), authToken: null, diff --git a/docs/sdk/models/operations/getpinresponse.md b/docs/sdk/models/operations/getpinresponse.md index a137367d..e050e167 100644 --- a/docs/sdk/models/operations/getpinresponse.md +++ b/docs/sdk/models/operations/getpinresponse.md @@ -5,34 +5,7 @@ ```typescript import { GetPinResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetPinResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - authPinContainer: { - id: 308667304, - code: "7RQZ", - product: "0", - qr: "https://plex.tv/api/v2/pins/qr/7RQZ", - clientIdentifier: "string", - location: { - code: "VI", - continentCode: "NA", - country: "United States Virgin Islands", - city: "Amsterdam", - timeZone: "America/St_Thomas", - postalCode: "802", - subdivisions: "Saint Thomas", - coordinates: "18.3381, -64.8941", - }, - createdAt: new Date("2024-07-16T17:03:05Z"), - expiresAt: new Date("2024-07-16T17:18:05Z"), - authToken: null, - newRegistration: null, - }, -}; +let value: GetPinResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getplaylistcontentsqueryparamtype.md b/docs/sdk/models/operations/getplaylistcontentsqueryparamtype.md index fc87272e..1f556d09 100644 --- a/docs/sdk/models/operations/getplaylistcontentsqueryparamtype.md +++ b/docs/sdk/models/operations/getplaylistcontentsqueryparamtype.md @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getplaylistcontentsresponse.md b/docs/sdk/models/operations/getplaylistcontentsresponse.md index 0016fbf2..6aecb1e8 100644 --- a/docs/sdk/models/operations/getplaylistcontentsresponse.md +++ b/docs/sdk/models/operations/getplaylistcontentsresponse.md @@ -4,117 +4,8 @@ ```typescript import { GetPlaylistContentsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetPlaylistContentsResponse = { - contentType: "", - statusCode: 426, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 2, - composite: "/playlists/95/composite/1705717521", - duration: 282, - leafCount: 2, - playlistType: "video", - ratingKey: "95", - smart: true, - title: "Smart Movie Playlist", - metadata: [ - { - ratingKey: "17", - key: "/library/metadata/17", - guid: "plex://movie/5d77683f6f4521001ea9dc53", - studio: "Universal Pictures", - type: "movie", - title: "Serenity", - titleSort: "Amazing Spider-Man 2", - librarySectionTitle: "Movies", - librarySectionID: 1, - librarySectionKey: "/library/sections/1", - contentRating: "PG-13", - summary: - "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", - rating: 8.2, - audienceRating: 9.1, - year: 2005, - tagline: "They aim to misbehave.", - thumb: "/library/metadata/17/thumb/1705637165", - art: "/library/metadata/17/art/1705637165", - duration: 141416, - originallyAvailableAt: new RFCDate("2005-09-29T00:00:00Z"), - addedAt: 1705637164, - updatedAt: 1705637165, - audienceRatingImage: "rottentomatoes://image.rating.upright", - hasPremiumExtras: "1", - hasPremiumPrimaryExtra: "1", - ratingImage: "rottentomatoes://image.rating.ripe", - media: [ - { - id: 15, - duration: 141416, - bitrate: 2273, - width: 1920, - height: 814, - aspectRatio: 2.35, - audioChannels: 2, - audioCodec: "aac", - videoCodec: "h264", - videoResolution: "1080", - container: "mp4", - videoFrameRate: "24p", - optimizedForStreaming: 0, - audioProfile: "lc", - has64bitOffsets: false, - videoProfile: "high", - part: [ - { - id: 15, - key: "/library/parts/15/1705637151/file.mp4", - duration: 141416, - file: "/movies/Serenity (2005)/Serenity (2005).mp4", - size: 40271948, - audioProfile: "lc", - container: "mp4", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "high", - }, - ], - }, - ], - genre: [ - { - tag: "Action", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "Joss Whedon", - }, - ], - writer: [ - { - tag: "Joss Whedon", - }, - ], - role: [ - { - tag: "Gina Torres", - }, - ], - }, - ], - }, - }, -}; +let value: GetPlaylistContentsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getplaylistresponse.md b/docs/sdk/models/operations/getplaylistresponse.md index 91ddd401..9248a3df 100644 --- a/docs/sdk/models/operations/getplaylistresponse.md +++ b/docs/sdk/models/operations/getplaylistresponse.md @@ -5,39 +5,7 @@ ```typescript import { GetPlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetPlaylistResponse = { - contentType: "", - statusCode: 307, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - metadata: [ - { - content: - "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", - ratingKey: "95", - key: "/playlists/95/items", - guid: - "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", - type: "playlist", - title: "Smart Movie Playlist", - summary: "", - smart: true, - playlistType: "video", - composite: "/playlists/95/composite/1705717387", - icon: "playlist://image.smart", - duration: 282000, - leafCount: 2, - addedAt: 1705716493, - updatedAt: 1705717387, - }, - ], - }, - }, -}; +let value: GetPlaylistResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getplaylistsresponse.md b/docs/sdk/models/operations/getplaylistsresponse.md index 4ad17124..d7b4c327 100644 --- a/docs/sdk/models/operations/getplaylistsresponse.md +++ b/docs/sdk/models/operations/getplaylistsresponse.md @@ -5,39 +5,7 @@ ```typescript import { GetPlaylistsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetPlaylistsResponse = { - contentType: "", - statusCode: 306, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 4, - metadata: [ - { - ratingKey: "92", - key: "/playlists/92/items", - guid: - "com.plexapp.agents.none://7ca5aaef-58e8-4828-9e21-c009c97f2903", - type: "playlist", - title: "Static Playlist", - summary: "A Great Playlist", - smart: false, - playlistType: "video", - composite: "/playlists/92/composite/1705716440", - icon: "playlist://image.smart", - viewCount: 1, - lastViewedAt: 1705716298, - duration: 7328000, - leafCount: 32, - addedAt: 1705716298, - updatedAt: 1705716440, - }, - ], - }, - }, -}; +let value: GetPlaylistsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getrecentlyaddedhubstype.md b/docs/sdk/models/operations/getrecentlyaddedhubstype.md index 58cc0b6a..6b9da5a4 100644 --- a/docs/sdk/models/operations/getrecentlyaddedhubstype.md +++ b/docs/sdk/models/operations/getrecentlyaddedhubstype.md @@ -1,6 +1,6 @@ # GetRecentlyAddedHubsType -The type of media content +The type of media content in the Plex library. This can represent videos, music, or photos. ## Example Usage @@ -23,4 +23,8 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `Episode` | episode | | `Artist` | artist | | `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getrecentlyaddedlibraryrequest.md b/docs/sdk/models/operations/getrecentlyaddedlibraryrequest.md index ad0ee458..ba9c35c8 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibraryrequest.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibraryrequest.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetRecentlyAddedLibraryRequest, QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetRecentlyAddedLibraryRequest, QueryParamIncludeMeta, QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetRecentlyAddedLibraryRequest = { contentDirectoryID: 2, @@ -23,6 +23,7 @@ let value: GetRecentlyAddedLibraryRequest = { ], sectionID: 2, type: QueryParamType.TvShow, + includeMeta: QueryParamIncludeMeta.Enable, }; ``` diff --git a/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md b/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md index 62c4fd6c..e0ec3dea 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md @@ -5,155 +5,7 @@ ```typescript import { GetRecentlyAddedLibraryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetRecentlyAddedLibraryResponse = { - contentType: "", - statusCode: 208, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - type: [ - { - key: "/library/sections/2/all?type=2", - type: "filter", - subtype: "clip", - title: "TV Shows", - active: false, - filter: [ - { - filter: "genre", - filterType: "string", - key: "/library/sections/2/genre?type=2", - title: "Genre", - type: "filter", - advanced: true, - }, - ], - sort: [ - { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", - }, - ], - field: [ - { - key: "show.title", - title: "Show Title", - type: "string", - subType: "rating", - }, - ], - }, - ], - fieldType: [ - { - type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], - }, - ], - size: 50, - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1680021154, - metadata: [ - { - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionUUID: "322a231a-b7f7-49f5-920f-14c61199cd30", - ratingKey: 59398, - key: "/library/metadata/59398", - guid: "plex://movie/5e161a83bea6ac004126e148", - studio: "Marvel Studios", - type: "movie", - title: "Ant-Man and the Wasp: Quantumania", - contentRating: "PG-13", - summary: - "Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible.", - rating: 4.7, - audienceRating: 8.3, - year: 2023, - tagline: "Witness the beginning of a new dynasty.", - thumb: "/library/metadata/59398/thumb/1681888010", - art: "/library/metadata/59398/art/1681888010", - duration: 7474422, - originallyAvailableAt: new Date("2023-02-15T00:00:00Z"), - addedAt: 1681803215, - updatedAt: 1681888010, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/59399", - ratingImage: "rottentomatoes://image.rating.rotten", - media: [ - { - id: 120345, - duration: 7474422, - bitrate: 3623, - width: 1920, - height: 804, - aspectRatio: 2.35, - audioChannels: 6, - audioCodec: "ac3", - videoCodec: "h264", - videoResolution: 1080, - container: "mp4", - videoFrameRate: "24p", - optimizedForStreaming: 0, - videoProfile: "high", - part: [ - { - id: 120353, - key: "/library/parts/120353/1681803203/file.mp4", - duration: 7474422, - file: - "/movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4", - size: 3395307162, - container: "mp4", - hasThumbnail: 1, - videoProfile: "high", - }, - ], - }, - ], - genre: [ - { - tag: "Comedy", - }, - ], - director: [ - { - tag: "Peyton Reed", - }, - ], - writer: [ - { - tag: "Jeff Loveness", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - role: [ - { - tag: "Paul Rudd", - }, - ], - }, - ], - }, - }, -}; +let value: GetRecentlyAddedLibraryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md b/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md index 38f94e75..46a38b24 100644 --- a/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md @@ -7,6 +7,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedMediaContainer, + HasThumbnail, StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -147,6 +148,12 @@ let value: GetRecentlyAddedMediaContainer = { bottomRight: "73958", bottomLeft: "1f5066", }, + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -181,6 +188,7 @@ let value: GetRecentlyAddedMediaContainer = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: HasThumbnail.True, stream: [ { id: 1002625, @@ -256,7 +264,12 @@ let value: GetRecentlyAddedMediaContainer = { ], director: [ { + id: 126522, + filter: "director=235876", tag: "Danny Boyle", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }, ], writer: [ @@ -265,6 +278,8 @@ let value: GetRecentlyAddedMediaContainer = { filter: "writer=126522", tag: "Jamie P. Hanson", tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }, ], role: [ @@ -307,11 +322,6 @@ let value: GetRecentlyAddedMediaContainer = { path: "/TV Shows/Clarkson's Farm", }, ], - guids: [ - { - id: "tvdb://2337", - }, - ], collection: [ { tag: "My Awesome Collection", diff --git a/docs/sdk/models/operations/getrecentlyaddedmetadata.md b/docs/sdk/models/operations/getrecentlyaddedmetadata.md index 2fc69a7a..09cdbe43 100644 --- a/docs/sdk/models/operations/getrecentlyaddedmetadata.md +++ b/docs/sdk/models/operations/getrecentlyaddedmetadata.md @@ -10,6 +10,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedMetadata, + HasThumbnail, StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -93,6 +94,12 @@ let value: GetRecentlyAddedMetadata = { bottomRight: "73958", bottomLeft: "1f5066", }, + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -127,6 +134,7 @@ let value: GetRecentlyAddedMetadata = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: HasThumbnail.True, stream: [ { id: 1002625, @@ -202,7 +210,12 @@ let value: GetRecentlyAddedMetadata = { ], director: [ { + id: 126522, + filter: "director=235876", tag: "Danny Boyle", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }, ], writer: [ @@ -211,6 +224,8 @@ let value: GetRecentlyAddedMetadata = { filter: "writer=126522", tag: "Jamie P. Hanson", tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }, ], role: [ @@ -253,11 +268,6 @@ let value: GetRecentlyAddedMetadata = { path: "/TV Shows/Clarkson's Farm", }, ], - guids: [ - { - id: "tvdb://2337", - }, - ], collection: [ { tag: "My Awesome Collection", @@ -333,6 +343,7 @@ let value: GetRecentlyAddedMetadata = { | `year` | *number* | :heavy_minus_sign: | The release year of the media item. | 2022 | | `image` | [operations.GetRecentlyAddedImage](../../../sdk/models/operations/getrecentlyaddedimage.md)[] | :heavy_minus_sign: | N/A | | | `ultraBlurColors` | [operations.UltraBlurColors](../../../sdk/models/operations/ultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `guids` | [operations.Guids](../../../sdk/models/operations/guids.md)[] | :heavy_minus_sign: | N/A | | | `media` | [operations.Media](../../../sdk/models/operations/media.md)[] | :heavy_minus_sign: | N/A | | | `genre` | [operations.Genre](../../../sdk/models/operations/genre.md)[] | :heavy_minus_sign: | N/A | | | `country` | [operations.Country](../../../sdk/models/operations/country.md)[] | :heavy_minus_sign: | N/A | | @@ -343,5 +354,4 @@ let value: GetRecentlyAddedMetadata = { | `rating1` | [operations.Rating](../../../sdk/models/operations/rating.md)[] | :heavy_minus_sign: | N/A | | | `similar` | [operations.Similar](../../../sdk/models/operations/similar.md)[] | :heavy_minus_sign: | N/A | | | `location` | [operations.Location](../../../sdk/models/operations/location.md)[] | :heavy_minus_sign: | N/A | | -| `guids` | [operations.Guids](../../../sdk/models/operations/guids.md)[] | :heavy_minus_sign: | N/A | | | `collection` | [operations.Collection](../../../sdk/models/operations/collection.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getrecentlyaddedoptimizedforstreaming.md b/docs/sdk/models/operations/getrecentlyaddedoptimizedforstreaming.md index bcbe2a40..4247f134 100644 --- a/docs/sdk/models/operations/getrecentlyaddedoptimizedforstreaming.md +++ b/docs/sdk/models/operations/getrecentlyaddedoptimizedforstreaming.md @@ -15,6 +15,6 @@ const value: operations.GetRecentlyAddedOptimizedForStreaming1 = ### `boolean` ```typescript -const value: boolean = false; +const value: boolean = true; ``` diff --git a/docs/sdk/models/operations/getrecentlyaddedrequest.md b/docs/sdk/models/operations/getrecentlyaddedrequest.md index cb04e3ba..b745cd45 100644 --- a/docs/sdk/models/operations/getrecentlyaddedrequest.md +++ b/docs/sdk/models/operations/getrecentlyaddedrequest.md @@ -3,12 +3,13 @@ ## Example Usage ```typescript -import { GetRecentlyAddedRequest, Type } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetRecentlyAddedRequest, IncludeMeta, Type } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetRecentlyAddedRequest = { contentDirectoryID: 995290, sectionID: 2, type: Type.TvShow, + includeMeta: IncludeMeta.Enable, }; ``` diff --git a/docs/sdk/models/operations/getrecentlyaddedresponse.md b/docs/sdk/models/operations/getrecentlyaddedresponse.md index 295c2168..f09842e3 100644 --- a/docs/sdk/models/operations/getrecentlyaddedresponse.md +++ b/docs/sdk/models/operations/getrecentlyaddedresponse.md @@ -3,332 +3,9 @@ ## Example Usage ```typescript -import { - GetRecentlyAddedHubsResponseType, - GetRecentlyAddedHubsType, - GetRecentlyAddedResponse, - StreamType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetRecentlyAddedResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetRecentlyAddedResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 50, - totalSize: 50, - offset: 0, - allowSync: false, - identifier: "com.plexapp.plugins.library", - meta: { - type: [ - { - key: "/library/sections/2/all?type=2", - type: "filter", - subtype: "clip", - title: "TV Shows", - active: false, - filter: [ - { - filter: "genre", - filterType: "string", - key: "/library/sections/2/genre?type=2", - title: "Genre", - type: "filter", - advanced: true, - }, - ], - sort: [ - { - default: "asc", - active: false, - descKey: "titleSort:desc", - firstCharacterKey: "/library/sections/2/firstCharacter", - key: "titleSort", - title: "Title", - }, - ], - field: [ - { - key: "show.title", - title: "Show Title", - type: "string", - subType: "rating", - }, - ], - }, - ], - fieldType: [ - { - type: "tag", - operator: [ - { - key: "=", - title: "is", - }, - ], - }, - ], - }, - metadata: [ - { - addedAt: 1556281940, - art: "/library/metadata/58683/art/1703239236", - audienceRatingImage: "rottentomatoes://image.rating.upright", - audienceRating: 9.2, - chapterSource: "media", - childCount: 1, - contentRating: "PG-13", - createdAtAccuracy: "epoch,local", - createdAtTZOffset: "0", - duration: 11558112, - grandparentArt: "/library/metadata/66/art/1705716261", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentKey: "/library/metadata/66", - grandparentRatingKey: "66", - grandparentSlug: "alice-in-borderland-2020", - grandparentTheme: "/library/metadata/66/theme/1705716261", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - grandparentTitle: "Caprica", - guid: "plex://movie/5d7768ba96b655001fdc0408", - index: 1, - key: "/library/metadata/58683", - lastRatedAt: 1721813113, - lastViewedAt: 1682752242, - leafCount: 14, - librarySectionID: 1, - librarySectionKey: "/library/sections/1", - librarySectionTitle: "Movies", - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - originallyAvailableAt: new RFCDate("2022-12-14"), - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - parentIndex: 1, - parentKey: "/library/metadata/66", - parentRatingKey: "66", - parentSlug: "alice-in-borderland-2020", - parentStudio: "UCP", - parentTheme: "/library/metadata/66/theme/1705716261", - parentThumb: "/library/metadata/66/thumb/1705716261", - parentTitle: "Caprica", - parentYear: 2010, - primaryExtraKey: "/library/metadata/58684", - ratingImage: "rottentomatoes://image.rating.ripe", - ratingKey: "58683", - rating: 7.6, - seasonCount: 2022, - skipCount: 1, - slug: "4-for-texas", - studio: "20th Century Studios", - subtype: "clip", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" - + "Once a familiar threat returns to finish what was previously started, Jake must\n" - + "work with Neytiri and the army of the Na'vi race to protect their home.\n" - + "", - tagline: "Return to Pandora.", - theme: "/library/metadata/1/theme/1705636920", - thumb: "/library/metadata/58683/thumb/1703239236", - titleSort: "Whale", - title: "Avatar: The Way of Water", - type: GetRecentlyAddedHubsType.Movie, - updatedAt: 1556281940, - userRating: 10, - viewCount: 1, - viewOffset: 5222500, - viewedLeafCount: 0, - year: 2022, - image: [ - { - alt: "Episode 1", - type: GetRecentlyAddedHubsResponseType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - media: [ - { - id: 387322, - duration: 9610350, - bitrate: 25512, - width: 3840, - height: 1602, - aspectRatio: 2.35, - audioChannels: 6, - displayOffset: 50, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - audioProfile: "dts", - has64bitOffsets: false, - part: [ - { - accessible: true, - exists: true, - id: 418385, - key: "/library/parts/418385/1735864239/file.mkv", - indexes: "sd", - duration: 9610350, - file: "/mnt/Movies_1/W/Wicked (2024).mkv", - size: 30649952104, - packetLength: 188, - container: "mkv", - videoProfile: "main 10", - audioProfile: "dts", - has64bitOffsets: false, - stream: [ - { - id: 1002625, - streamType: StreamType.Video, - format: "srt", - default: true, - codec: "hevc", - index: 0, - bitrate: 24743, - language: "English", - languageTag: "en", - languageCode: "eng", - headerCompression: true, - doviblCompatID: 1, - doviblPresent: true, - dovielPresent: false, - doviLevel: 6, - doviPresent: true, - doviProfile: 8, - dovirpuPresent: true, - doviVersion: "1.0", - bitDepth: 10, - chromaLocation: "topleft", - chromaSubsampling: "4:2:0", - codedHeight: 1608, - codedWidth: 3840, - closedCaptions: true, - colorPrimaries: "bt2020", - colorRange: "tv", - colorSpace: "bt2020nc", - colorTrc: "smpte2084", - frameRate: 23.976, - key: "/library/streams/216389", - height: 1602, - level: 150, - original: true, - hasScalingMatrix: false, - profile: "main 10", - scanType: "progressive", - embeddedInVideo: "progressive", - refFrames: 1, - width: 3840, - displayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - extendedDisplayTitle: "4K DoVi/HDR10 (HEVC Main 10)", - selected: true, - forced: true, - channels: 6, - audioChannelLayout: "5.1(side)", - samplingRate: 48000, - canAutoSync: false, - hearingImpaired: true, - dub: true, - title: "SDH", - }, - ], - }, - ], - }, - ], - genre: [ - { - id: 259, - filter: "genre=19", - tag: "Crime", - }, - ], - country: [ - { - id: 259, - tag: "United States of America", - filter: "country=19", - }, - ], - director: [ - { - tag: "Danny Boyle", - }, - ], - writer: [ - { - id: 126522, - filter: "writer=126522", - tag: "Jamie P. Hanson", - tagKey: "5d77683d85719b001f3a535e", - }, - ], - role: [ - { - id: 126522, - filter: "actor=126522", - tag: "Teller", - tagKey: "5d77683d85719b001f3a535e", - role: "Self - Judge", - thumb: - "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", - }, - ], - producer: [ - { - id: 126522, - filter: "producer=126522", - tag: "Amelia Knapp", - tagKey: "5d77683d85719b001f3a535e", - thumb: - "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg", - }, - ], - rating1: [ - { - image: "imdb://image.rating", - value: 5.1, - type: "audience", - }, - ], - similar: [ - { - id: 259, - filter: "similar=259", - tag: "Criss Angel Mindfreak", - }, - ], - location: [ - { - path: "/TV Shows/Clarkson's Farm", - }, - ], - guids: [ - { - id: "tvdb://2337", - }, - ], - collection: [ - { - tag: "My Awesome Collection", - }, - ], - }, - ], - }, - }, -}; +let value: GetRecentlyAddedResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getrecentlyaddedresponsebody.md b/docs/sdk/models/operations/getrecentlyaddedresponsebody.md index 350ded64..ac65518f 100644 --- a/docs/sdk/models/operations/getrecentlyaddedresponsebody.md +++ b/docs/sdk/models/operations/getrecentlyaddedresponsebody.md @@ -9,6 +9,7 @@ import { GetRecentlyAddedHubsResponseType, GetRecentlyAddedHubsType, GetRecentlyAddedResponseBody, + HasThumbnail, StreamType, } from "@lukehagar/plexjs/sdk/models/operations"; import { RFCDate } from "@lukehagar/plexjs/sdk/types"; @@ -150,6 +151,12 @@ let value: GetRecentlyAddedResponseBody = { bottomRight: "73958", bottomLeft: "1f5066", }, + guids: [ + { + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", + }, + ], media: [ { id: 387322, @@ -184,6 +191,7 @@ let value: GetRecentlyAddedResponseBody = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: HasThumbnail.True, stream: [ { id: 1002625, @@ -259,7 +267,12 @@ let value: GetRecentlyAddedResponseBody = { ], director: [ { + id: 126522, + filter: "director=235876", tag: "Danny Boyle", + tagKey: "5d776831151a60001f24d031", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }, ], writer: [ @@ -268,6 +281,8 @@ let value: GetRecentlyAddedResponseBody = { filter: "writer=126522", tag: "Jamie P. Hanson", tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }, ], role: [ @@ -310,11 +325,6 @@ let value: GetRecentlyAddedResponseBody = { path: "/TV Shows/Clarkson's Farm", }, ], - guids: [ - { - id: "tvdb://2337", - }, - ], collection: [ { tag: "My Awesome Collection", diff --git a/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md b/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md index c5eb53cc..4fb4f6fe 100644 --- a/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md +++ b/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetRefreshLibraryMetadataResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetRefreshLibraryMetadataResponse = { - contentType: "", - statusCode: 204, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetRefreshLibraryMetadataResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getresizedphotorequest.md b/docs/sdk/models/operations/getresizedphotorequest.md index cb7ce6f4..385c0478 100644 --- a/docs/sdk/models/operations/getresizedphotorequest.md +++ b/docs/sdk/models/operations/getresizedphotorequest.md @@ -8,10 +8,9 @@ import { GetResizedPhotoRequest, MinSize, Upscale } from "@lukehagar/plexjs/sdk/ let value: GetResizedPhotoRequest = { width: 110, height: 165, - opacity: 100, - blur: 20, - minSize: MinSize.Zero, - upscale: Upscale.One, + blur: 0, + minSize: MinSize.One, + upscale: Upscale.Zero, url: "/library/metadata/49564/thumb/1654258204", }; ``` diff --git a/docs/sdk/models/operations/getresizedphotoresponse.md b/docs/sdk/models/operations/getresizedphotoresponse.md index c7c78d9a..2591c9e1 100644 --- a/docs/sdk/models/operations/getresizedphotoresponse.md +++ b/docs/sdk/models/operations/getresizedphotoresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetResizedPhotoResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetResizedPhotoResponse = { - contentType: "", - statusCode: 508, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetResizedPhotoResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getresourcesstatisticsresponse.md b/docs/sdk/models/operations/getresourcesstatisticsresponse.md index 4e9d5f41..3e884319 100644 --- a/docs/sdk/models/operations/getresourcesstatisticsresponse.md +++ b/docs/sdk/models/operations/getresourcesstatisticsresponse.md @@ -5,28 +5,7 @@ ```typescript import { GetResourcesStatisticsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetResourcesStatisticsResponse = { - contentType: "", - statusCode: 226, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 5497, - statisticsResources: [ - { - timespan: 6, - at: 1718384427, - hostCpuUtilization: 1.276, - processCpuUtilization: 0.025, - hostMemoryUtilization: 17.026, - processMemoryUtilization: 0.493, - }, - ], - }, - }, -}; +let value: GetResourcesStatisticsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsearchalllibrariesmedia.md b/docs/sdk/models/operations/getsearchalllibrariesmedia.md index 8bb54136..ea2a8454 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesmedia.md +++ b/docs/sdk/models/operations/getsearchalllibrariesmedia.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetSearchAllLibrariesMedia } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetSearchAllLibrariesMedia, GetSearchAllLibrariesOptimizedForStreaming } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSearchAllLibrariesMedia = { id: 119534, @@ -21,65 +21,9 @@ let value: GetSearchAllLibrariesMedia = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: GetSearchAllLibrariesOptimizedForStreaming.Enable, has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], + part: [], }; ``` diff --git a/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md b/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md index b56fb9cf..aabe3412 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md +++ b/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md @@ -3,236 +3,11 @@ ## Example Usage ```typescript -import { - GetSearchAllLibrariesEnableCreditsMarkerGeneration, - GetSearchAllLibrariesEpisodeSort, - GetSearchAllLibrariesFlattenSeasons, - GetSearchAllLibrariesLibraryType, - GetSearchAllLibrariesMediaContainer, - GetSearchAllLibrariesShowOrdering, - GetSearchAllLibrariesType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetSearchAllLibrariesMediaContainer } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSearchAllLibrariesMediaContainer = { size: 1598.12, - searchResult: [ - { - score: 1566.25, - metadata: { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - studio: "20th Century Studios", - skipChildren: false, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - type: GetSearchAllLibrariesType.Movie, - title: "Avatar: The Way of Water", - slug: "4-for-texas", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - seasonCount: 2022, - tagline: "Return to Pandora.", - flattenSeasons: GetSearchAllLibrariesFlattenSeasons.Show, - episodeSort: GetSearchAllLibrariesEpisodeSort.OldestFirst, - enableCreditsMarkerGeneration: - GetSearchAllLibrariesEnableCreditsMarkerGeneration.LibraryDefault, - showOrdering: GetSearchAllLibrariesShowOrdering.TvdbAbsolute, - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - banner: "/library/metadata/58683/banner/1703239236", - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14T00:00:00Z"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - ratingImage: "rottentomatoes://image.rating.ripe", - grandparentRatingKey: "66", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - parentSlug: "alice-in-borderland-2020", - grandparentSlug: "alice-in-borderland-2020", - grandparentArt: "/library/metadata/66/art/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - media: [ - { - id: 119534, - duration: 11558112, - bitrate: 25025, - width: 3840, - height: 2072, - aspectRatio: 1.85, - audioProfile: "dts", - audioChannels: 6, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], - }, - ], - genre: [ - { - tag: "Adventure", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "James Cameron", - }, - ], - writer: [ - { - tag: "James Cameron", - }, - ], - collection: [ - { - tag: "Working NL Subs", - }, - ], - role: [ - { - id: 294129, - filter: "actor=294129", - thumb: - "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", - tag: "Mike Smith", - tagKey: "668e7e7b22bcad9064350c91", - role: "Self", - }, - ], - location: [ - { - path: "/TV Shows/House", - }, - ], - mediaGuid: [ - { - id: "imdb://tt13015952", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - metaDataRating: [ - { - image: "themoviedb://image.rating", - value: 3, - type: "audience", - }, - ], - image: [ - { - alt: "Episode 1", - type: GetSearchAllLibrariesLibraryType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - titleSort: "Whale", - viewCount: 1, - lastViewedAt: 1682752242, - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - viewOffset: 5222500, - skipCount: 1, - index: 1, - theme: "/library/metadata/1/theme/1705636920", - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - hasPremiumExtras: "1", - hasPremiumPrimaryExtra: "1", - parentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - parentStudio: "UCP", - parentKey: "/library/metadata/66", - parentTitle: "Caprica", - parentIndex: 1, - parentYear: 2010, - parentThumb: "/library/metadata/66/thumb/1705716261", - parentTheme: "/library/metadata/66/theme/1705716261", - }, - }, - ], + searchResult: [], }; ``` diff --git a/docs/sdk/models/operations/getsearchalllibrariesmetadata.md b/docs/sdk/models/operations/getsearchalllibrariesmetadata.md index 03c8d2c7..1c61b594 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesmetadata.md +++ b/docs/sdk/models/operations/getsearchalllibrariesmetadata.md @@ -7,8 +7,10 @@ import { GetSearchAllLibrariesEnableCreditsMarkerGeneration, GetSearchAllLibrariesEpisodeSort, GetSearchAllLibrariesFlattenSeasons, + GetSearchAllLibrariesHasThumbnail, GetSearchAllLibrariesLibraryType, GetSearchAllLibrariesMetadata, + GetSearchAllLibrariesOptimizedForStreaming, GetSearchAllLibrariesShowOrdering, GetSearchAllLibrariesType, } from "@lukehagar/plexjs/sdk/models/operations"; @@ -76,6 +78,7 @@ let value: GetSearchAllLibrariesMetadata = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: GetSearchAllLibrariesOptimizedForStreaming.Enable, has64bitOffsets: false, part: [ { @@ -91,6 +94,7 @@ let value: GetSearchAllLibrariesMetadata = { optimizedForStreaming: false, videoProfile: "main 10", indexes: "sd", + hasThumbnail: GetSearchAllLibrariesHasThumbnail.True, stream: [ { id: 272796, @@ -240,7 +244,7 @@ let value: GetSearchAllLibrariesMetadata = { | `librarySectionID` | *number* | :heavy_minus_sign: | N/A | 1 | | `librarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | | `librarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `type` | [operations.GetSearchAllLibrariesType](../../../sdk/models/operations/getsearchalllibrariestype.md) | :heavy_check_mark: | The type of media content
| movie | +| `type` | [operations.GetSearchAllLibrariesType](../../../sdk/models/operations/getsearchalllibrariestype.md) | :heavy_check_mark: | The type of media content in the Plex library. This can represent videos, music, or photos.
| movie | | `title` | *string* | :heavy_check_mark: | N/A | Avatar: The Way of Water | | `slug` | *string* | :heavy_minus_sign: | N/A | 4-for-texas | | `contentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | diff --git a/docs/sdk/models/operations/getsearchalllibrariespart.md b/docs/sdk/models/operations/getsearchalllibrariespart.md index 929a2dd9..a64f83bd 100644 --- a/docs/sdk/models/operations/getsearchalllibrariespart.md +++ b/docs/sdk/models/operations/getsearchalllibrariespart.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetSearchAllLibrariesPart } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetSearchAllLibrariesHasThumbnail, GetSearchAllLibrariesPart } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSearchAllLibrariesPart = { id: 119542, @@ -18,6 +18,7 @@ let value: GetSearchAllLibrariesPart = { optimizedForStreaming: false, videoProfile: "main 10", indexes: "sd", + hasThumbnail: GetSearchAllLibrariesHasThumbnail.True, stream: [ { id: 272796, diff --git a/docs/sdk/models/operations/getsearchalllibrariesrequest.md b/docs/sdk/models/operations/getsearchalllibrariesrequest.md index 41ea36a9..1a8fc1f0 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesrequest.md +++ b/docs/sdk/models/operations/getsearchalllibrariesrequest.md @@ -3,7 +3,12 @@ ## Example Usage ```typescript -import { GetSearchAllLibrariesRequest, SearchTypes } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetSearchAllLibrariesQueryParamIncludeCollections, + GetSearchAllLibrariesQueryParamIncludeExternalMedia, + GetSearchAllLibrariesRequest, + SearchTypes, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSearchAllLibrariesRequest = { query: "", @@ -11,6 +16,9 @@ let value: GetSearchAllLibrariesRequest = { searchTypes: [ SearchTypes.People, ], + includeCollections: GetSearchAllLibrariesQueryParamIncludeCollections.Enable, + includeExternalMedia: + GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable, }; ``` diff --git a/docs/sdk/models/operations/getsearchalllibrariesresponse.md b/docs/sdk/models/operations/getsearchalllibrariesresponse.md index ff58d876..e4fef773 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesresponse.md +++ b/docs/sdk/models/operations/getsearchalllibrariesresponse.md @@ -3,246 +3,9 @@ ## Example Usage ```typescript -import { - GetSearchAllLibrariesEnableCreditsMarkerGeneration, - GetSearchAllLibrariesEpisodeSort, - GetSearchAllLibrariesFlattenSeasons, - GetSearchAllLibrariesLibraryType, - GetSearchAllLibrariesResponse, - GetSearchAllLibrariesShowOrdering, - GetSearchAllLibrariesType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetSearchAllLibrariesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetSearchAllLibrariesResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 9603.99, - searchResult: [ - { - score: 6503, - metadata: { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - studio: "20th Century Studios", - skipChildren: false, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - type: GetSearchAllLibrariesType.Movie, - title: "Avatar: The Way of Water", - slug: "4-for-texas", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - seasonCount: 2022, - tagline: "Return to Pandora.", - flattenSeasons: GetSearchAllLibrariesFlattenSeasons.Show, - episodeSort: GetSearchAllLibrariesEpisodeSort.OldestFirst, - enableCreditsMarkerGeneration: - GetSearchAllLibrariesEnableCreditsMarkerGeneration.LibraryDefault, - showOrdering: GetSearchAllLibrariesShowOrdering.TvdbAbsolute, - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - banner: "/library/metadata/58683/banner/1703239236", - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14T00:00:00Z"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - ratingImage: "rottentomatoes://image.rating.ripe", - grandparentRatingKey: "66", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - parentSlug: "alice-in-borderland-2020", - grandparentSlug: "alice-in-borderland-2020", - grandparentArt: "/library/metadata/66/art/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - media: [ - { - id: 119534, - duration: 11558112, - bitrate: 25025, - width: 3840, - height: 2072, - aspectRatio: 1.85, - audioProfile: "dts", - audioChannels: 6, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], - }, - ], - genre: [ - { - tag: "Adventure", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "James Cameron", - }, - ], - writer: [ - { - tag: "James Cameron", - }, - ], - collection: [ - { - tag: "Working NL Subs", - }, - ], - role: [ - { - id: 294129, - filter: "actor=294129", - thumb: - "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", - tag: "Mike Smith", - tagKey: "668e7e7b22bcad9064350c91", - role: "Self", - }, - ], - location: [ - { - path: "/TV Shows/House", - }, - ], - mediaGuid: [ - { - id: "imdb://tt13015952", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - metaDataRating: [ - { - image: "themoviedb://image.rating", - value: 3, - type: "audience", - }, - ], - image: [ - { - alt: "Episode 1", - type: GetSearchAllLibrariesLibraryType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - titleSort: "Whale", - viewCount: 1, - lastViewedAt: 1682752242, - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - viewOffset: 5222500, - skipCount: 1, - index: 1, - theme: "/library/metadata/1/theme/1705636920", - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - hasPremiumExtras: "1", - hasPremiumPrimaryExtra: "1", - parentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - parentStudio: "UCP", - parentKey: "/library/metadata/66", - parentTitle: "Caprica", - parentIndex: 1, - parentYear: 2010, - parentThumb: "/library/metadata/66/thumb/1705716261", - parentTheme: "/library/metadata/66/theme/1705716261", - }, - }, - ], - }, - }, -}; +let value: GetSearchAllLibrariesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md b/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md index 079c550e..21652de9 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md +++ b/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md @@ -5,237 +5,12 @@ The libraries available on the Server ## Example Usage ```typescript -import { - GetSearchAllLibrariesEnableCreditsMarkerGeneration, - GetSearchAllLibrariesEpisodeSort, - GetSearchAllLibrariesFlattenSeasons, - GetSearchAllLibrariesLibraryType, - GetSearchAllLibrariesResponseBody, - GetSearchAllLibrariesShowOrdering, - GetSearchAllLibrariesType, -} from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; +import { GetSearchAllLibrariesResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSearchAllLibrariesResponseBody = { mediaContainer: { size: 8897.34, - searchResult: [ - { - score: 1602.08, - metadata: { - ratingKey: "58683", - key: "/library/metadata/58683", - guid: "plex://movie/5d7768ba96b655001fdc0408", - studio: "20th Century Studios", - skipChildren: false, - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionKey: "/library/sections/1", - type: GetSearchAllLibrariesType.Movie, - title: "Avatar: The Way of Water", - slug: "4-for-texas", - contentRating: "PG-13", - summary: - "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", - rating: 7.6, - audienceRating: 9.2, - year: 2022, - seasonCount: 2022, - tagline: "Return to Pandora.", - flattenSeasons: GetSearchAllLibrariesFlattenSeasons.Show, - episodeSort: GetSearchAllLibrariesEpisodeSort.OldestFirst, - enableCreditsMarkerGeneration: - GetSearchAllLibrariesEnableCreditsMarkerGeneration.LibraryDefault, - showOrdering: GetSearchAllLibrariesShowOrdering.TvdbAbsolute, - thumb: "/library/metadata/58683/thumb/1703239236", - art: "/library/metadata/58683/art/1703239236", - banner: "/library/metadata/58683/banner/1703239236", - duration: 11558112, - originallyAvailableAt: new RFCDate("2022-12-14T00:00:00Z"), - addedAt: 1556281940, - updatedAt: 1556281940, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/58684", - ratingImage: "rottentomatoes://image.rating.ripe", - grandparentRatingKey: "66", - grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", - grandparentKey: "/library/metadata/66", - grandparentTitle: "Caprica", - grandparentThumb: "/library/metadata/66/thumb/1705716261", - parentSlug: "alice-in-borderland-2020", - grandparentSlug: "alice-in-borderland-2020", - grandparentArt: "/library/metadata/66/art/1705716261", - grandparentTheme: "/library/metadata/66/theme/1705716261", - media: [ - { - id: 119534, - duration: 11558112, - bitrate: 25025, - width: 3840, - height: 2072, - aspectRatio: 1.85, - audioProfile: "dts", - audioChannels: 6, - audioCodec: "eac3", - videoCodec: "hevc", - videoResolution: "4k", - container: "mkv", - videoFrameRate: "24p", - videoProfile: "main 10", - hasVoiceActivity: false, - has64bitOffsets: false, - part: [ - { - id: 119542, - key: "/library/parts/119542/1680457526/file.mkv", - duration: 11558112, - file: - "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", - size: 36158371307, - container: "mkv", - audioProfile: "dts", - has64bitOffsets: false, - optimizedForStreaming: false, - videoProfile: "main 10", - indexes: "sd", - stream: [ - { - id: 272796, - streamType: 1, - default: true, - selected: true, - codec: "h264", - index: 0, - bitrate: 6273, - colorPrimaries: "bt709", - colorRange: "tv", - colorSpace: "bt709", - colorTrc: "bt709", - bitDepth: 8, - chromaLocation: "left", - streamIdentifier: "2", - chromaSubsampling: "4:2:0", - codedHeight: 1088, - codedWidth: 1920, - frameRate: 29.97, - hasScalingMatrix: false, - hearingImpaired: false, - closedCaptions: false, - embeddedInVideo: "1", - height: 1080, - level: 40, - profile: "main", - refFrames: 4, - scanType: "progressive", - width: 1920, - displayTitle: "1080p (H.264)", - extendedDisplayTitle: "1080p (H.264)", - channels: 2, - language: "English", - languageTag: "en", - languageCode: "eng", - audioChannelLayout: "stereo", - samplingRate: 48000, - title: "English", - canAutoSync: false, - }, - ], - }, - ], - }, - ], - genre: [ - { - tag: "Adventure", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - director: [ - { - tag: "James Cameron", - }, - ], - writer: [ - { - tag: "James Cameron", - }, - ], - collection: [ - { - tag: "Working NL Subs", - }, - ], - role: [ - { - id: 294129, - filter: "actor=294129", - thumb: - "https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg", - tag: "Mike Smith", - tagKey: "668e7e7b22bcad9064350c91", - role: "Self", - }, - ], - location: [ - { - path: "/TV Shows/House", - }, - ], - mediaGuid: [ - { - id: "imdb://tt13015952", - }, - ], - ultraBlurColors: { - topLeft: "11333b", - topRight: "0a232d", - bottomRight: "73958", - bottomLeft: "1f5066", - }, - metaDataRating: [ - { - image: "themoviedb://image.rating", - value: 3, - type: "audience", - }, - ], - image: [ - { - alt: "Episode 1", - type: GetSearchAllLibrariesLibraryType.Background, - url: "/library/metadata/45521/thumb/1644710589", - }, - ], - titleSort: "Whale", - viewCount: 1, - lastViewedAt: 1682752242, - originalTitle: "映画 ブラッククローバー 魔法帝の剣", - viewOffset: 5222500, - skipCount: 1, - index: 1, - theme: "/library/metadata/1/theme/1705636920", - leafCount: 14, - viewedLeafCount: 0, - childCount: 1, - hasPremiumExtras: "1", - hasPremiumPrimaryExtra: "1", - parentRatingKey: "66", - parentGuid: "plex://show/5d9c081b170e24001f2a7be4", - parentStudio: "UCP", - parentKey: "/library/metadata/66", - parentTitle: "Caprica", - parentIndex: 1, - parentYear: 2010, - parentThumb: "/library/metadata/66/thumb/1705716261", - parentTheme: "/library/metadata/66/theme/1705716261", - }, - }, - ], + searchResult: [], }, }; ``` diff --git a/docs/sdk/models/operations/getsearchalllibrariestype.md b/docs/sdk/models/operations/getsearchalllibrariestype.md index 2ade18c8..2a70e133 100644 --- a/docs/sdk/models/operations/getsearchalllibrariestype.md +++ b/docs/sdk/models/operations/getsearchalllibrariestype.md @@ -1,6 +1,6 @@ # GetSearchAllLibrariesType -The type of media content +The type of media content in the Plex library. This can represent videos, music, or photos. ## Example Usage @@ -23,4 +23,8 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `Episode` | episode | | `Artist` | artist | | `Album` | album | +| `Track` | track | +| `PhotoAlbum` | photoalbum | +| `Photo` | photo | +| `Collection` | collection | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsearchlibraryqueryparamtype.md b/docs/sdk/models/operations/getsearchlibraryqueryparamtype.md index 00064f13..6cbd69bd 100644 --- a/docs/sdk/models/operations/getsearchlibraryqueryparamtype.md +++ b/docs/sdk/models/operations/getsearchlibraryqueryparamtype.md @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsearchlibraryresponse.md b/docs/sdk/models/operations/getsearchlibraryresponse.md index ee8aeae5..84bf23e2 100644 --- a/docs/sdk/models/operations/getsearchlibraryresponse.md +++ b/docs/sdk/models/operations/getsearchlibraryresponse.md @@ -5,54 +5,7 @@ ```typescript import { GetSearchLibraryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetSearchLibraryResponse = { - contentType: "", - statusCode: 401, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 2, - allowSync: false, - art: "/:/resources/show-fanart.jpg", - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1698860922, - nocache: true, - thumb: "/:/resources/show.png", - title1: "TV Shows", - title2: "Search for ''", - viewGroup: "season", - viewMode: 65593, - metadata: [ - { - ratingKey: "2", - key: "/library/metadata/2/children", - parentRatingKey: "1", - guid: "plex://season/602e67e766dfdb002c0a1b5b", - parentGuid: "plex://show/5d9c086c7d06d9001ffd27aa", - parentStudio: "Mutant Enemy Productions", - type: "season", - title: "Season 1", - parentKey: "/library/metadata/1", - parentTitle: "Firefly", - summary: - "Captain Malcolm 'Mal' Reynolds is a former galactic war veteran who is the captain of the transport ship \"Serenity\". Mal and his crew, ensign Zoe Alleyne Washburne; Zoe's husband, pilot Hoban 'Wash' Washburne; muscular mercenary Jayne Cobb; young mechanic Kaylee Frye; former Alliance medical officer Simon Tam; his disturbed teenage sister River (both on the run from the interplanetary government \"The Alliance\"); the beautiful courtesan Inara Serra; and preacher Shepherd Book do any jobs, legal or illegal, they can find as the Serenity crew travels across the outskirts of outer space.", - index: 1, - parentIndex: 1, - parentYear: 2002, - thumb: "/library/metadata/2/thumb/1705636920", - art: "/library/metadata/1/art/1705636920", - parentThumb: "/library/metadata/1/thumb/1705636920", - parentTheme: "/library/metadata/1/theme/1705636920", - addedAt: 1705636916, - updatedAt: 1705636920, - }, - ], - }, - }, -}; +let value: GetSearchLibraryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsearchresultsresponse.md b/docs/sdk/models/operations/getsearchresultsresponse.md index c5a62008..fcbe0c39 100644 --- a/docs/sdk/models/operations/getsearchresultsresponse.md +++ b/docs/sdk/models/operations/getsearchresultsresponse.md @@ -5,115 +5,7 @@ ```typescript import { GetSearchResultsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetSearchResultsResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 26, - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1680021154, - metadata: [ - { - librarySectionID: 1, - librarySectionTitle: "Movies", - librarySectionUUID: "322a231a-b7f7-49f5-920f-14c61199cd30", - sourceTitle: "Hera", - ratingKey: 10398, - key: "/library/metadata/10398", - guid: "plex://movie/5d7768284de0ee001fcc8f52", - studio: "Paramount", - type: "movie", - title: "Mission: Impossible", - contentRating: "PG-13", - summary: - "When Ethan Hunt the leader of a crack espionage team whose perilous operation has gone awry with no explanation discovers that a mole has penetrated the CIA he's surprised to learn that he's the No. 1 suspect. To clear his name Hunt now must ferret out the real double agent and in the process even the score.", - rating: 6.6, - audienceRating: 7.1, - year: 1996, - tagline: "Expect the impossible.", - thumb: "/library/metadata/10398/thumb/1679505055", - art: "/library/metadata/10398/art/1679505055", - duration: 6612628, - originallyAvailableAt: new Date("1996-05-22T00:00:00Z"), - addedAt: 1589234571, - updatedAt: 1679505055, - audienceRatingImage: "rottentomatoes://image.rating.upright", - chapterSource: "media", - primaryExtraKey: "/library/metadata/10501", - ratingImage: "rottentomatoes://image.rating.ripe", - media: [ - { - id: 26610, - duration: 6612628, - bitrate: 4751, - width: 1916, - height: 796, - aspectRatio: 2.35, - audioChannels: 6, - audioCodec: "aac", - videoCodec: "hevc", - videoResolution: 1080, - container: "mkv", - videoFrameRate: "24p", - audioProfile: "lc", - videoProfile: "main 10", - part: [ - { - id: 26610, - key: "/library/parts/26610/1589234571/file.mkv", - duration: 6612628, - file: - "/movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv", - size: 3926903851, - audioProfile: "lc", - container: "mkv", - videoProfile: "main 10", - }, - ], - }, - ], - genre: [ - { - tag: "Action", - }, - ], - director: [ - { - tag: "Brian De Palma", - }, - ], - writer: [ - { - tag: "David Koepp", - }, - ], - country: [ - { - tag: "United States of America", - }, - ], - role: [ - { - tag: "Tom Cruise", - }, - ], - }, - ], - provider: [ - { - key: "/system/search", - title: "Local Network", - type: "mixed", - }, - ], - }, - }, -}; +let value: GetSearchResultsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getserveractivitiesresponse.md b/docs/sdk/models/operations/getserveractivitiesresponse.md index 3f1c813e..918bc02e 100644 --- a/docs/sdk/models/operations/getserveractivitiesresponse.md +++ b/docs/sdk/models/operations/getserveractivitiesresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetServerActivitiesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetServerActivitiesResponse = { - contentType: "", - statusCode: 428, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetServerActivitiesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getservercapabilitiesresponse.md b/docs/sdk/models/operations/getservercapabilitiesresponse.md index 101a1403..0b44c873 100644 --- a/docs/sdk/models/operations/getservercapabilitiesresponse.md +++ b/docs/sdk/models/operations/getservercapabilitiesresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetServerCapabilitiesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetServerCapabilitiesResponse = { - contentType: "", - statusCode: 503, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetServerCapabilitiesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getserveridentityresponse.md b/docs/sdk/models/operations/getserveridentityresponse.md index 8baa52e2..f5ee5ea7 100644 --- a/docs/sdk/models/operations/getserveridentityresponse.md +++ b/docs/sdk/models/operations/getserveridentityresponse.md @@ -5,20 +5,7 @@ ```typescript import { GetServerIdentityResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetServerIdentityResponse = { - contentType: "", - statusCode: 426, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 0, - machineIdentifier: "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4", - version: "1.31.3.6868-28fc46b27", - }, - }, -}; +let value: GetServerIdentityResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getserverlistresponse.md b/docs/sdk/models/operations/getserverlistresponse.md index bb9797dc..712aab69 100644 --- a/docs/sdk/models/operations/getserverlistresponse.md +++ b/docs/sdk/models/operations/getserverlistresponse.md @@ -5,28 +5,7 @@ ```typescript import { GetServerListResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetServerListResponse = { - contentType: "", - statusCode: 451, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - server: [ - { - name: "Hera", - host: "10.10.10.47", - address: "10.10.10.47", - port: 32400, - machineIdentifier: "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4", - version: "1.31.3.6868-28fc46b27", - }, - ], - }, - }, -}; +let value: GetServerListResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getserverpreferencesresponse.md b/docs/sdk/models/operations/getserverpreferencesresponse.md index c3e8c007..91d379b5 100644 --- a/docs/sdk/models/operations/getserverpreferencesresponse.md +++ b/docs/sdk/models/operations/getserverpreferencesresponse.md @@ -5,32 +5,7 @@ ```typescript import { GetServerPreferencesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetServerPreferencesResponse = { - contentType: "", - statusCode: 304, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 161, - setting: [ - { - id: "EnableDatabaseTrace", - label: "", - summary: "", - type: "bool", - default: false, - value: false, - hidden: true, - advanced: false, - group: "", - enumValues: "1:admin only|2:everyone", - }, - ], - }, - }, -}; +let value: GetServerPreferencesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getserverresourcesrequest.md b/docs/sdk/models/operations/getserverresourcesrequest.md index dac331d9..c4555b8d 100644 --- a/docs/sdk/models/operations/getserverresourcesrequest.md +++ b/docs/sdk/models/operations/getserverresourcesrequest.md @@ -3,9 +3,12 @@ ## Example Usage ```typescript -import { GetServerResourcesRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetServerResourcesRequest, IncludeHttps, IncludeIPv6, IncludeRelay } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetServerResourcesRequest = { + includeHttps: IncludeHttps.Enable, + includeRelay: IncludeRelay.Enable, + includeIPv6: IncludeIPv6.Enable, clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", }; ``` diff --git a/docs/sdk/models/operations/getserverresourcesresponse.md b/docs/sdk/models/operations/getserverresourcesresponse.md index 5edeafad..cb349ed2 100644 --- a/docs/sdk/models/operations/getserverresourcesresponse.md +++ b/docs/sdk/models/operations/getserverresourcesresponse.md @@ -3,53 +3,9 @@ ## Example Usage ```typescript -import { GetServerResourcesResponse, Protocol } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetServerResourcesResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetServerResourcesResponse = { - contentType: "", - statusCode: 303, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - plexDevices: [ - { - name: "", - product: "Gorgeous Steel Chair", - productVersion: "", - platform: "", - platformVersion: "", - device: "Desktop", - clientIdentifier: "", - createdAt: new Date("2019-06-24T11:38:02Z"), - lastSeenAt: new Date("2019-06-24T11:38:02Z"), - provides: "", - ownerId: 399166, - sourceTitle: "", - publicAddress: "", - accessToken: "", - owned: false, - home: false, - synced: false, - relay: false, - presence: false, - httpsRequired: false, - publicAddressMatches: false, - dnsRebindingProtection: false, - natLoopbackSupported: false, - connections: [ - { - protocol: Protocol.Http, - address: "29059 Ward Lake", - port: 52102, - uri: "https://old-validity.info", - local: false, - relay: false, - iPv6: false, - }, - ], - }, - ], -}; +let value: GetServerResourcesResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsessionhistoryresponse.md b/docs/sdk/models/operations/getsessionhistoryresponse.md index f213f275..b344893a 100644 --- a/docs/sdk/models/operations/getsessionhistoryresponse.md +++ b/docs/sdk/models/operations/getsessionhistoryresponse.md @@ -4,43 +4,8 @@ ```typescript import { GetSessionHistoryResponse } from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetSessionHistoryResponse = { - contentType: "", - statusCode: 425, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 10855, - metadata: [ - { - historyKey: "/status/sessions/history/1", - key: "/library/metadata/32171", - ratingKey: "32171", - librarySectionID: "2", - parentKey: "/library/metadata/32170", - grandparentKey: "/library/metadata/32132", - title: "The Noise That Blue Makes", - grandparentTitle: "Taskmaster", - type: "episode", - thumb: "/library/metadata/32171/thumb/-1", - parentThumb: "/library/metadata/32170/thumb/1654134301", - grandparentThumb: "/library/metadata/32132/thumb/1703933346", - grandparentArt: "/library/metadata/32132/art/1703933346", - index: 1, - parentIndex: 13, - originallyAvailableAt: new RFCDate("2022-04-14T00:00:00Z"), - viewedAt: 1654139223, - accountID: 1, - deviceID: 5, - }, - ], - }, - }, -}; +let value: GetSessionHistoryResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsessionsresponse.md b/docs/sdk/models/operations/getsessionsresponse.md index 8b14c7cf..7d40a43a 100644 --- a/docs/sdk/models/operations/getsessionsresponse.md +++ b/docs/sdk/models/operations/getsessionsresponse.md @@ -5,132 +5,7 @@ ```typescript import { GetSessionsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetSessionsResponse = { - contentType: "", - statusCode: 207, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - metadata: [ - { - addedAt: 1705543312, - art: "/library/metadata/39904/art/1705310687", - duration: 186240, - grandparentArt: "/library/metadata/39904/art/1705310687", - grandparentGuid: "plex://artist/5d07bbfd403c6402904a6480", - grandparentKey: "/library/metadata/39904", - grandparentRatingKey: "39904", - grandparentThumb: "/library/metadata/39904/thumb/1705310687", - grandparentTitle: "Green Day", - guid: "plex://track/6535834f71f22f36f71a8e8f", - index: 1, - key: "/library/metadata/67085", - librarySectionID: "3", - librarySectionKey: "/library/sections/3", - librarySectionTitle: "Music", - musicAnalysisVersion: "1", - originalTitle: "The American Dream Is Killing Me", - parentGuid: "plex://album/65394d6d472b8ab03ef47f12", - parentIndex: 1, - parentKey: "/library/metadata/67084", - parentRatingKey: "67084", - parentStudio: "Reprise Records", - parentThumb: "/library/metadata/67084/thumb/1705543314", - parentTitle: "Saviors", - parentYear: 2024, - ratingCount: 45885, - ratingKey: "67085", - sessionKey: "203", - thumb: "/library/metadata/67084/thumb/1705543314", - title: "The American Dream Is Killing Me", - titleSort: "American Dream Is Killing Me", - type: "track", - updatedAt: 1705543314, - viewOffset: 1000, - media: [ - { - audioChannels: 2, - audioCodec: "flac", - bitrate: 1014, - container: "flac", - duration: 186240, - id: "130355", - selected: true, - part: [ - { - container: "flac", - duration: 186240, - file: - "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", - hasThumbnail: "1", - id: "130625", - key: "/library/parts/130625/1705543268/file.flac", - size: 23644000, - decision: "directplay", - selected: true, - stream: [ - { - albumGain: "-12.94", - albumPeak: "1.000000", - albumRange: "4.751014", - audioChannelLayout: "stereo", - bitDepth: 16, - bitrate: 1014, - channels: 2, - codec: "flac", - displayTitle: "FLAC (Stereo)", - extendedDisplayTitle: "FLAC (Stereo)", - gain: "-12.94", - id: "352487", - index: 0, - loudness: "-5.94", - lra: "1.74", - peak: "1.000000", - samplingRate: 44100, - selected: true, - streamType: 2, - location: "direct", - }, - ], - }, - ], - }, - ], - user: { - id: "1", - thumb: "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", - title: "Blindkitty38", - }, - player: { - address: "10.10.10.171", - machineIdentifier: "3tsdzir85m2onc3qyr255aq1", - model: "standalone", - platform: "windows", - platformVersion: "10.0.22621", - product: "Plex for Windows", - profile: "Plex Desktop", - remotePublicAddress: "68.248.140.20", - state: "playing", - title: "DESKTOP-BL80MTD", - version: "1.85.0.4071-21128b56", - local: true, - relayed: false, - secure: true, - userID: 1, - }, - session: { - id: "93h7e00ncblxncqw9lkfaoxi", - bandwidth: 1050, - location: "lan", - }, - }, - ], - }, - }, -}; +let value: GetSessionsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getsourceconnectioninformationrequest.md b/docs/sdk/models/operations/getsourceconnectioninformationrequest.md index 0b235033..40f1e44f 100644 --- a/docs/sdk/models/operations/getsourceconnectioninformationrequest.md +++ b/docs/sdk/models/operations/getsourceconnectioninformationrequest.md @@ -6,7 +6,7 @@ import { GetSourceConnectionInformationRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSourceConnectionInformationRequest = { - source: "provider://provider-identifier", + source: "server://client-identifier", }; ``` diff --git a/docs/sdk/models/operations/getsourceconnectioninformationresponse.md b/docs/sdk/models/operations/getsourceconnectioninformationresponse.md index 45f51660..f7596bba 100644 --- a/docs/sdk/models/operations/getsourceconnectioninformationresponse.md +++ b/docs/sdk/models/operations/getsourceconnectioninformationresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetSourceConnectionInformationResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetSourceConnectionInformationResponse = { - contentType: "", - statusCode: 103, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetSourceConnectionInformationResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getstatisticsresponse.md b/docs/sdk/models/operations/getstatisticsresponse.md index fd003321..763fa080 100644 --- a/docs/sdk/models/operations/getstatisticsresponse.md +++ b/docs/sdk/models/operations/getstatisticsresponse.md @@ -5,50 +5,7 @@ ```typescript import { GetStatisticsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetStatisticsResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 5497, - device: [ - { - id: 208, - name: "Roku Express", - platform: "Roku", - clientIdentifier: "793095d235660625108ef785cc7646e9", - createdAt: 1706470556, - }, - ], - account: [ - { - id: 238960586, - key: "/accounts/238960586", - name: "Diane", - defaultAudioLanguage: "en", - autoSelectAudio: true, - defaultSubtitleLanguage: "en", - subtitleMode: 1, - thumb: "https://plex.tv/users/50d83634246da1de/avatar?c=1707110967", - }, - ], - statisticsMedia: [ - { - accountID: 1, - deviceID: 13, - timespan: 4, - at: 1707141600, - metadataType: 4, - count: 1, - duration: 1555, - }, - ], - }, - }, -}; +let value: GetStatisticsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettimelineresponse.md b/docs/sdk/models/operations/gettimelineresponse.md index 81710904..4cb48577 100644 --- a/docs/sdk/models/operations/gettimelineresponse.md +++ b/docs/sdk/models/operations/gettimelineresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetTimelineResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetTimelineResponse = { - contentType: "", - statusCode: 502, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetTimelineResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettokenbypinidauthpincontainer.md b/docs/sdk/models/operations/gettokenbypinidauthpincontainer.md index b3532f5c..4ca7a3ad 100644 --- a/docs/sdk/models/operations/gettokenbypinidauthpincontainer.md +++ b/docs/sdk/models/operations/gettokenbypinidauthpincontainer.md @@ -18,11 +18,15 @@ let value: GetTokenByPinIdAuthPinContainer = { continentCode: "NA", country: "United States Virgin Islands", city: "Amsterdam", + europeanUnionMember: true, timeZone: "America/St_Thomas", postalCode: "802", + inPrivacyRestrictedCountry: true, + inPrivacyRestrictedRegion: true, subdivisions: "Saint Thomas", coordinates: "18.3381, -64.8941", }, + expiresIn: 876, createdAt: new Date("2024-07-16T17:03:05Z"), expiresAt: new Date("2024-07-16T17:18:05Z"), authToken: null, diff --git a/docs/sdk/models/operations/gettokenbypinidgeodata.md b/docs/sdk/models/operations/gettokenbypinidgeodata.md index 68195441..69f899b2 100644 --- a/docs/sdk/models/operations/gettokenbypinidgeodata.md +++ b/docs/sdk/models/operations/gettokenbypinidgeodata.md @@ -12,8 +12,11 @@ let value: GetTokenByPinIdGeoData = { continentCode: "NA", country: "United States Virgin Islands", city: "Amsterdam", + europeanUnionMember: true, timeZone: "America/St_Thomas", postalCode: "802", + inPrivacyRestrictedCountry: true, + inPrivacyRestrictedRegion: true, subdivisions: "Saint Thomas", coordinates: "18.3381, -64.8941", }; diff --git a/docs/sdk/models/operations/gettokenbypinidresponse.md b/docs/sdk/models/operations/gettokenbypinidresponse.md index e5b580f0..91d2327b 100644 --- a/docs/sdk/models/operations/gettokenbypinidresponse.md +++ b/docs/sdk/models/operations/gettokenbypinidresponse.md @@ -5,34 +5,7 @@ ```typescript import { GetTokenByPinIdResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetTokenByPinIdResponse = { - contentType: "", - statusCode: 100, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - authPinContainer: { - id: 308667304, - code: "7RQZ", - product: "0", - qr: "https://plex.tv/api/v2/pins/qr/7RQZ", - clientIdentifier: "string", - location: { - code: "VI", - continentCode: "NA", - country: "United States Virgin Islands", - city: "Amsterdam", - timeZone: "America/St_Thomas", - postalCode: "802", - subdivisions: "Saint Thomas", - coordinates: "18.3381, -64.8941", - }, - createdAt: new Date("2024-07-16T17:03:05Z"), - expiresAt: new Date("2024-07-16T17:18:05Z"), - authToken: null, - newRegistration: null, - }, -}; +let value: GetTokenByPinIdResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettokendetailsresponse.md b/docs/sdk/models/operations/gettokendetailsresponse.md index 28975167..ed9b87dd 100644 --- a/docs/sdk/models/operations/gettokendetailsresponse.md +++ b/docs/sdk/models/operations/gettokendetailsresponse.md @@ -3,72 +3,9 @@ ## Example Usage ```typescript -import { - GetTokenDetailsAuthenticationResponseStatus, - GetTokenDetailsAuthenticationStatus, - GetTokenDetailsResponse, - GetTokenDetailsStatus, - MailingListStatus, -} from "@lukehagar/plexjs/sdk/models/operations"; +import { GetTokenDetailsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetTokenDetailsResponse = { - contentType: "", - statusCode: 200, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - userPlexAccount: { - adsConsent: false, - adsConsentReminderAt: 1556281940, - adsConsentSetAt: 1556281940, - authToken: "CxoUzBTSV5hsxjTpFKaf", - country: "US", - email: "username@email.com", - friendlyName: "friendlyUsername", - entitlements: [ - "[]", - ], - homeSize: 1, - id: 13692262, - joinedAt: 1556281940, - locale: "nl", - mailingListStatus: MailingListStatus.Active, - maxHomeSize: 15, - profile: { - defaultAudioLanguage: "ja", - defaultSubtitleLanguage: "en", - }, - rememberExpiresAt: 1556281940, - scrobbleTypes: "", - services: [ - { - identifier: "metadata-dev", - endpoint: "https://epg.provider.plex.tv", - token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", - secret: "", - status: GetTokenDetailsStatus.Online, - }, - ], - subscription: { - active: true, - subscribedAt: "2021-04-12T18:21:12Z", - status: GetTokenDetailsAuthenticationStatus.Inactive, - }, - subscriptionDescription: "", - subscriptions: [ - { - active: true, - subscribedAt: "2021-04-12T18:21:12Z", - status: GetTokenDetailsAuthenticationResponseStatus.Inactive, - }, - ], - thumb: "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", - title: "UsernameTitle", - username: "Username", - uuid: "dae343c1f45beb4f", - attributionPartner: null, - }, -}; +let value: GetTokenDetailsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettokendetailsuserplexaccount.md b/docs/sdk/models/operations/gettokendetailsuserplexaccount.md index be4367f3..fa923ca1 100644 --- a/docs/sdk/models/operations/gettokendetailsuserplexaccount.md +++ b/docs/sdk/models/operations/gettokendetailsuserplexaccount.md @@ -6,15 +6,20 @@ Logged in user details ```typescript import { + AutoSelectSubtitle, + DefaultSubtitleAccessibility, + DefaultSubtitleForced, GetTokenDetailsAuthenticationResponseStatus, GetTokenDetailsAuthenticationStatus, GetTokenDetailsStatus, GetTokenDetailsUserPlexAccount, MailingListStatus, + MediaReviewsVisibility, + WatchedIndicator, } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetTokenDetailsUserPlexAccount = { - adsConsent: false, + adsConsent: true, adsConsentReminderAt: 1556281940, adsConsentSetAt: 1556281940, authToken: "CxoUzBTSV5hsxjTpFKaf", @@ -27,12 +32,17 @@ let value: GetTokenDetailsUserPlexAccount = { homeSize: 1, id: 13692262, joinedAt: 1556281940, - locale: "zh", + locale: "en", mailingListStatus: MailingListStatus.Active, maxHomeSize: 15, profile: { defaultAudioLanguage: "ja", defaultSubtitleLanguage: "en", + autoSelectSubtitle: AutoSelectSubtitle.Enable, + defaultSubtitleAccessibility: DefaultSubtitleAccessibility.Enable, + defaultSubtitleForced: DefaultSubtitleForced.Enable, + watchedIndicator: WatchedIndicator.Enable, + mediaReviewsVisibility: MediaReviewsVisibility.Enable, }, rememberExpiresAt: 1556281940, scrobbleTypes: "", diff --git a/docs/sdk/models/operations/gettopwatchedcontentmediacontainer.md b/docs/sdk/models/operations/gettopwatchedcontentmediacontainer.md index 372badc1..acdba270 100644 --- a/docs/sdk/models/operations/gettopwatchedcontentmediacontainer.md +++ b/docs/sdk/models/operations/gettopwatchedcontentmediacontainer.md @@ -7,11 +7,11 @@ import { GetTopWatchedContentMediaContainer } from "@lukehagar/plexjs/sdk/models import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetTopWatchedContentMediaContainer = { - size: 1, - allowSync: true, + size: 50, + allowSync: false, identifier: "com.plexapp.plugins.library", mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1698860922, + mediaTagVersion: 1734362201, metadata: [ { ratingKey: "17", @@ -86,9 +86,9 @@ let value: GetTopWatchedContentMediaContainer = { | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `size` | *number* | :heavy_minus_sign: | N/A | 1 | -| `allowSync` | *boolean* | :heavy_minus_sign: | N/A | true | -| `identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `mediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `mediaTagVersion` | *number* | :heavy_minus_sign: | N/A | 1698860922 | +| `size` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `mediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `mediaTagVersion` | *number* | :heavy_check_mark: | The version number for media tags. | 1734362201 | | `metadata` | [operations.GetTopWatchedContentMetadata](../../../sdk/models/operations/gettopwatchedcontentmetadata.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettopwatchedcontentqueryparamincludeguids.md b/docs/sdk/models/operations/gettopwatchedcontentqueryparamincludeguids.md new file mode 100644 index 00000000..a5fd72d1 --- /dev/null +++ b/docs/sdk/models/operations/gettopwatchedcontentqueryparamincludeguids.md @@ -0,0 +1,20 @@ +# GetTopWatchedContentQueryParamIncludeGuids + +Adds the Guid object to the response + + +## Example Usage + +```typescript +import { GetTopWatchedContentQueryParamIncludeGuids } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetTopWatchedContentQueryParamIncludeGuids = + GetTopWatchedContentQueryParamIncludeGuids.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettopwatchedcontentqueryparamtype.md b/docs/sdk/models/operations/gettopwatchedcontentqueryparamtype.md index 07bc87ca..2d715222 100644 --- a/docs/sdk/models/operations/gettopwatchedcontentqueryparamtype.md +++ b/docs/sdk/models/operations/gettopwatchedcontentqueryparamtype.md @@ -27,7 +27,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettopwatchedcontentrequest.md b/docs/sdk/models/operations/gettopwatchedcontentrequest.md index c8e60cb5..baf4e564 100644 --- a/docs/sdk/models/operations/gettopwatchedcontentrequest.md +++ b/docs/sdk/models/operations/gettopwatchedcontentrequest.md @@ -3,11 +3,15 @@ ## Example Usage ```typescript -import { GetTopWatchedContentQueryParamType, GetTopWatchedContentRequest } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetTopWatchedContentQueryParamIncludeGuids, + GetTopWatchedContentQueryParamType, + GetTopWatchedContentRequest, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: GetTopWatchedContentRequest = { - includeGuids: 1, type: GetTopWatchedContentQueryParamType.TvShow, + includeGuids: GetTopWatchedContentQueryParamIncludeGuids.Enable, }; ``` @@ -15,5 +19,5 @@ let value: GetTopWatchedContentRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `includeGuids` | *number* | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | -| `type` | [operations.GetTopWatchedContentQueryParamType](../../../sdk/models/operations/gettopwatchedcontentqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file +| `type` | [operations.GetTopWatchedContentQueryParamType](../../../sdk/models/operations/gettopwatchedcontentqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `includeGuids` | [operations.GetTopWatchedContentQueryParamIncludeGuids](../../../sdk/models/operations/gettopwatchedcontentqueryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/gettopwatchedcontentresponse.md b/docs/sdk/models/operations/gettopwatchedcontentresponse.md index 3b7b2419..1dd31535 100644 --- a/docs/sdk/models/operations/gettopwatchedcontentresponse.md +++ b/docs/sdk/models/operations/gettopwatchedcontentresponse.md @@ -4,91 +4,8 @@ ```typescript import { GetTopWatchedContentResponse } from "@lukehagar/plexjs/sdk/models/operations"; -import { RFCDate } from "@lukehagar/plexjs/sdk/types"; -let value: GetTopWatchedContentResponse = { - contentType: "", - statusCode: 413, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - allowSync: true, - identifier: "com.plexapp.plugins.library", - mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1698860922, - metadata: [ - { - ratingKey: "17", - key: "/library/metadata/17", - guid: "plex://movie/5d77683f6f4521001ea9dc53", - slug: "waterloo-road", - studio: "Universal Pictures", - type: "movie", - title: "Serenity", - librarySectionTitle: "Movies", - librarySectionID: 1, - librarySectionKey: "/library/sections/1", - contentRating: "PG-13", - summary: - "Serenity continues the story of the TV series it was based upon (\"Firefly\"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job.", - index: 1, - audienceRating: 9.1, - year: 2005, - tagline: "They aim to misbehave.", - thumb: "/library/metadata/17/thumb/1705637165", - art: "/library/metadata/17/art/1705637165", - duration: 141417, - originallyAvailableAt: new RFCDate("2005-09-29T00:00:00Z"), - leafCount: 222, - viewedLeafCount: 100, - childCount: 13, - addedAt: 1705637164, - updatedAt: 1705637165, - globalViewCount: 80, - audienceRatingImage: "rottentomatoes://image.rating.upright", - genre: [ - { - id: 184, - filter: "genre=184", - tag: "Thriller", - }, - ], - country: [ - { - id: 116, - filter: "country=116", - tag: "United States of America", - }, - ], - guids: [ - { - id: "tvdb://2337", - }, - ], - role: [ - { - id: 220, - filter: "actor=220", - tag: "Dennis Keiffer", - tagKey: "5d77683554f42c001f8c4708", - role: "Bar Guy (uncredited)", - thumb: - "https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg", - }, - ], - user: [ - { - id: 220, - }, - ], - }, - ], - }, - }, -}; +let value: GetTopWatchedContentResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettopwatchedcontentresponsebody.md b/docs/sdk/models/operations/gettopwatchedcontentresponsebody.md index 454e6e6c..3e937b0d 100644 --- a/docs/sdk/models/operations/gettopwatchedcontentresponsebody.md +++ b/docs/sdk/models/operations/gettopwatchedcontentresponsebody.md @@ -10,11 +10,11 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetTopWatchedContentResponseBody = { mediaContainer: { - size: 1, - allowSync: true, + size: 50, + allowSync: false, identifier: "com.plexapp.plugins.library", mediaTagPrefix: "/system/bundle/media/flags/", - mediaTagVersion: 1698860922, + mediaTagVersion: 1734362201, metadata: [ { ratingKey: "17", diff --git a/docs/sdk/models/operations/gettranscodesessionsresponse.md b/docs/sdk/models/operations/gettranscodesessionsresponse.md index b7e44cdb..9891ba18 100644 --- a/docs/sdk/models/operations/gettranscodesessionsresponse.md +++ b/docs/sdk/models/operations/gettranscodesessionsresponse.md @@ -5,46 +5,7 @@ ```typescript import { GetTranscodeSessionsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetTranscodeSessionsResponse = { - contentType: "", - statusCode: 304, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - transcodeSession: [ - { - key: "vv3i2q2lax92qlzul1hbd4bx", - throttled: false, - complete: false, - progress: 1.7999999523162842, - size: -22, - speed: 25.100000381469727, - error: false, - duration: 1445695, - remaining: 53, - context: "streaming", - sourceVideoCodec: "h264", - sourceAudioCodec: "aac", - videoDecision: "transcode", - audioDecision: "transcode", - subtitleDecision: "burn", - protocol: "http", - container: "mkv", - videoCodec: "h264", - audioCodec: "opus", - audioChannels: 1, - transcodeHwRequested: true, - timeStamp: 1705895805.4919229, - maxOffsetAvailable: 29.53, - minOffsetAvailable: 3.003000020980835, - }, - ], - }, - }, -}; +let value: GetTranscodeSessionsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/gettransienttokenresponse.md b/docs/sdk/models/operations/gettransienttokenresponse.md index 2518f7b7..a3a05131 100644 --- a/docs/sdk/models/operations/gettransienttokenresponse.md +++ b/docs/sdk/models/operations/gettransienttokenresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetTransientTokenResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetTransientTokenResponse = { - contentType: "", - statusCode: 203, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetTransientTokenResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getupdatestatusresponse.md b/docs/sdk/models/operations/getupdatestatusresponse.md index 0a9990ec..299ed3e1 100644 --- a/docs/sdk/models/operations/getupdatestatusresponse.md +++ b/docs/sdk/models/operations/getupdatestatusresponse.md @@ -5,51 +5,7 @@ ```typescript import { GetUpdateStatusResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetUpdateStatusResponse = { - contentType: "", - statusCode: 204, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - object: { - mediaContainer: { - size: 1, - canInstall: false, - checkedAt: 1705801232, - downloadURL: - "https://plex.tv/downloads/latest/5?channel=8&build=linux-x86_64&distro=redhat&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx", - status: 0, - release: [ - { - key: "https://plex.tv/updater/releases/5136", - version: "1.40.0.7775-456fbaf97", - added: - "(PLEASE NOTE) This version makes changes to the database which will make it compatible only with server versions 1.31.2 or higher (released March 14). You will not be able to use your database on Plex Media Server versions lower than this after this update. Please also be patient when updating to this version if you have a very large database and allow the upgrade process to finish.\n" - + "(Collections) Items added to a collection from the item context menu will now lock the collection field on the items (#12793)\n" - + "(Music) Store track genres and add filtering options (#14653)\n" - + "(Music) Support ID3v2.4 null-separated tags for genres and release type (#14653)\n" - + "(View History) No longer create a view history entry for items marked as played (#10888)\n" - + "(Web) Updated to 4.118.0", - fixed: - "(Agents) Changing a 'Other Videos' type library to the modern movie agent would fail (#14483)\n" - + "(Agents) It is possible that agents are not initialised during startup on rare occasions (#14654)\n" - + "(Agents) Remove the legacy OpenSubtitles agent which is no longer supported upstream (#14667)\n" - + "(Collection) Server could become unresponsive when collection membership changes (#14612)\n" - + "(DVR) Previously watched recordings could be deleted without being watched again (#13779)\n" - + "(Libraries) When performing fix match on items from certain music libraries the language would default to Arabic (#14501)\n" - + "(Library) The Content Rating not equal to None filter does not work (#14620)\n" - + "(Search) Album search results could contain all the album's tracks too (#14486)\n" - + "(Subtitles) In some circumstances, sidecar subtitles can show up for media when they're no longer available (#14674)\n" - + "(Transcoder) HW encoding would fail on devices with no rate control (#14222)\n" - + "(Transcoder) Software transcoding on Ubuntu could cause unexpected behavior (#14605)", - downloadURL: - "https://plex.tv/downloads/latest/5?channel=8&build=linux-x86_64&distro=redhat&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx", - state: "notify", - }, - ], - }, - }, -}; +let value: GetUpdateStatusResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getuserfriendsresponse.md b/docs/sdk/models/operations/getuserfriendsresponse.md index 54d3b710..5c3a0cd0 100644 --- a/docs/sdk/models/operations/getuserfriendsresponse.md +++ b/docs/sdk/models/operations/getuserfriendsresponse.md @@ -3,30 +3,9 @@ ## Example Usage ```typescript -import { GetUserFriendsResponse, Status } from "@lukehagar/plexjs/sdk/models/operations"; +import { GetUserFriendsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetUserFriendsResponse = { - contentType: "", - statusCode: 102, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - friends: [ - { - email: "username@email.com", - friendlyName: "exampleUser", - home: true, - id: 0, - sharedServers: [], - sharedSources: [], - status: Status.Accepted, - thumb: "https://plex.tv/users/7d1916e0d8f6e76b/avatar?c=1694481578", - title: "username123", - username: "username123", - uuid: "7d1916e0d8f6e76b", - }, - ], -}; +let value: GetUserFriendsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getusersmediacontainer.md b/docs/sdk/models/operations/getusersmediacontainer.md index e2bc8039..15653bb1 100644 --- a/docs/sdk/models/operations/getusersmediacontainer.md +++ b/docs/sdk/models/operations/getusersmediacontainer.md @@ -13,31 +13,7 @@ let value: GetUsersMediaContainer = { machineIdentifier: "3dff4c4da3b1229a649aa574a9e2b419a684a20e", totalSize: 30, size: 30, - user: [ - { - id: 22526914, - title: "Plex User", - username: "zgfuc7krcqfimrmb9lsl5j", - email: "zgfuc7krcqfimrmb9lsl5j@protonmail.com", - recommendationsPlaylistId: "", - thumb: "https://plex.tv/users/3346028014e93acd/avatar?c=1731605021", - filterAll: "", - filterMovies: "", - filterMusic: "", - filterPhotos: "", - filterTelevision: "", - server: [ - { - id: 907759180, - serverId: 9999999, - machineIdentifier: "fbb8aa6be6e0c997c6268bc2b4431c8807f70a3", - name: "ConnectedUserFlix", - lastSeenAt: 1556281940, - numLibraries: 16, - }, - ], - }, - ], + user: [], }; ``` diff --git a/docs/sdk/models/operations/getusersresponse.md b/docs/sdk/models/operations/getusersresponse.md index f3ad6111..9459e165 100644 --- a/docs/sdk/models/operations/getusersresponse.md +++ b/docs/sdk/models/operations/getusersresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetUsersResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetUsersResponse = { - contentType: "", - statusCode: 207, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetUsersResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/getusersresponsebody.md b/docs/sdk/models/operations/getusersresponsebody.md index c0da9c6d..27ad5d11 100644 --- a/docs/sdk/models/operations/getusersresponsebody.md +++ b/docs/sdk/models/operations/getusersresponsebody.md @@ -5,7 +5,20 @@ Successful response with media container data in XML ## Example Usage ```typescript -import { GetUsersResponseBody } from "@lukehagar/plexjs/sdk/models/operations"; +import { + AllLibraries, + AllowCameraUpload, + AllowChannels, + AllowSubtitleAdmin, + AllowSync, + AllowTuners, + GetUsersResponseBody, + Home, + Owned, + Pending, + Protected, + Restricted, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: GetUsersResponseBody = { mediaContainer: { @@ -22,11 +35,19 @@ let value: GetUsersResponseBody = { email: "zgfuc7krcqfimrmb9lsl5j@protonmail.com", recommendationsPlaylistId: "", thumb: "https://plex.tv/users/3346028014e93acd/avatar?c=1731605021", + protected: Protected.Enable, + home: Home.Enable, + allowTuners: AllowTuners.Enable, + allowSync: AllowSync.Enable, + allowCameraUpload: AllowCameraUpload.Enable, + allowChannels: AllowChannels.Enable, + allowSubtitleAdmin: AllowSubtitleAdmin.Enable, filterAll: "", filterMovies: "", filterMusic: "", filterPhotos: "", filterTelevision: "", + restricted: Restricted.Enable, server: [ { id: 907759180, @@ -35,6 +56,9 @@ let value: GetUsersResponseBody = { name: "ConnectedUserFlix", lastSeenAt: 1556281940, numLibraries: 16, + allLibraries: AllLibraries.Enable, + owned: Owned.Enable, + pending: Pending.Enable, }, ], }, diff --git a/docs/sdk/models/operations/getusersserver.md b/docs/sdk/models/operations/getusersserver.md index cd5ac592..181a6978 100644 --- a/docs/sdk/models/operations/getusersserver.md +++ b/docs/sdk/models/operations/getusersserver.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { GetUsersServer } from "@lukehagar/plexjs/sdk/models/operations"; +import { AllLibraries, GetUsersServer, Owned, Pending } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetUsersServer = { id: 907759180, @@ -12,6 +12,9 @@ let value: GetUsersServer = { name: "ConnectedUserFlix", lastSeenAt: 1556281940, numLibraries: 16, + allLibraries: AllLibraries.Enable, + owned: Owned.Enable, + pending: Pending.Enable, }; ``` diff --git a/docs/sdk/models/operations/getwatchlistresponse.md b/docs/sdk/models/operations/getwatchlistresponse.md index abf190db..74a1ded8 100644 --- a/docs/sdk/models/operations/getwatchlistresponse.md +++ b/docs/sdk/models/operations/getwatchlistresponse.md @@ -5,13 +5,7 @@ ```typescript import { GetWatchListResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: GetWatchListResponse = { - contentType: "", - statusCode: 302, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: GetWatchListResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/guids.md b/docs/sdk/models/operations/guids.md index 98432a0b..61707bcb 100644 --- a/docs/sdk/models/operations/guids.md +++ b/docs/sdk/models/operations/guids.md @@ -6,12 +6,13 @@ import { Guids } from "@lukehagar/plexjs/sdk/models/operations"; let value: Guids = { - id: "tvdb://2337", + id: + "{\"imdbExample\":{\"summary\":\"IMDB example\",\"value\":\"imdb://tt13015952\"},\"tmdbExample\":{\"summary\":\"TMDB example\",\"value\":\"tmdb://2434012\"},\"tvdbExample\":{\"summary\":\"TVDB example\",\"value\":\"tvdb://7945991\"}}", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_minus_sign: | The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
| tvdb://2337 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/sdk/models/operations/loglineresponse.md b/docs/sdk/models/operations/loglineresponse.md index af4474ad..c23bffc7 100644 --- a/docs/sdk/models/operations/loglineresponse.md +++ b/docs/sdk/models/operations/loglineresponse.md @@ -5,13 +5,7 @@ ```typescript import { LogLineResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: LogLineResponse = { - contentType: "", - statusCode: 503, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: LogLineResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/logmultilineresponse.md b/docs/sdk/models/operations/logmultilineresponse.md index d6e58f8e..93ad5d32 100644 --- a/docs/sdk/models/operations/logmultilineresponse.md +++ b/docs/sdk/models/operations/logmultilineresponse.md @@ -5,13 +5,7 @@ ```typescript import { LogMultiLineResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: LogMultiLineResponse = { - contentType: "", - statusCode: 204, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: LogMultiLineResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/markplayedresponse.md b/docs/sdk/models/operations/markplayedresponse.md index 7d50582d..e76819a8 100644 --- a/docs/sdk/models/operations/markplayedresponse.md +++ b/docs/sdk/models/operations/markplayedresponse.md @@ -5,13 +5,7 @@ ```typescript import { MarkPlayedResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: MarkPlayedResponse = { - contentType: "", - statusCode: 300, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: MarkPlayedResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/markunplayedresponse.md b/docs/sdk/models/operations/markunplayedresponse.md index 32e8eb15..31b6018e 100644 --- a/docs/sdk/models/operations/markunplayedresponse.md +++ b/docs/sdk/models/operations/markunplayedresponse.md @@ -5,13 +5,7 @@ ```typescript import { MarkUnplayedResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: MarkUnplayedResponse = { - contentType: "", - statusCode: 401, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: MarkUnplayedResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/media.md b/docs/sdk/models/operations/media.md index 552b628a..9c0adac2 100644 --- a/docs/sdk/models/operations/media.md +++ b/docs/sdk/models/operations/media.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { Media, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { HasThumbnail, Media, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: Media = { id: 387322, @@ -38,6 +38,7 @@ let value: Media = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: HasThumbnail.True, stream: [ { id: 1002625, diff --git a/docs/sdk/models/operations/optimizedforstreaming.md b/docs/sdk/models/operations/optimizedforstreaming.md index e1170e3c..937192ec 100644 --- a/docs/sdk/models/operations/optimizedforstreaming.md +++ b/docs/sdk/models/operations/optimizedforstreaming.md @@ -14,6 +14,6 @@ const value: operations.One = One.One; ### `boolean` ```typescript -const value: boolean = false; +const value: boolean = true; ``` diff --git a/docs/sdk/models/operations/part.md b/docs/sdk/models/operations/part.md index 40013344..76aa115a 100644 --- a/docs/sdk/models/operations/part.md +++ b/docs/sdk/models/operations/part.md @@ -3,7 +3,7 @@ ## Example Usage ```typescript -import { Part, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { HasThumbnail, Part, StreamType } from "@lukehagar/plexjs/sdk/models/operations"; let value: Part = { accessible: true, @@ -19,6 +19,7 @@ let value: Part = { videoProfile: "main 10", audioProfile: "dts", has64bitOffsets: false, + hasThumbnail: HasThumbnail.True, stream: [ { id: 1002625, diff --git a/docs/sdk/models/operations/pastsubscription.md b/docs/sdk/models/operations/pastsubscription.md index 4a0906c7..a6648cb1 100644 --- a/docs/sdk/models/operations/pastsubscription.md +++ b/docs/sdk/models/operations/pastsubscription.md @@ -15,7 +15,7 @@ let value: PastSubscription = { state: PostUsersSignInDataState.Ended, billing: { internalPaymentMethod: {}, - paymentMethodId: 602004, + paymentMethodId: 793427, }, }; ``` diff --git a/docs/sdk/models/operations/performsearchrequest.md b/docs/sdk/models/operations/performsearchrequest.md index 5e514df3..07836d5f 100644 --- a/docs/sdk/models/operations/performsearchrequest.md +++ b/docs/sdk/models/operations/performsearchrequest.md @@ -6,7 +6,8 @@ import { PerformSearchRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: PerformSearchRequest = { - query: "dylan", + query: "arnold", + limit: 5, }; ``` diff --git a/docs/sdk/models/operations/performsearchresponse.md b/docs/sdk/models/operations/performsearchresponse.md index 873bd3c7..9f29f2ba 100644 --- a/docs/sdk/models/operations/performsearchresponse.md +++ b/docs/sdk/models/operations/performsearchresponse.md @@ -5,13 +5,7 @@ ```typescript import { PerformSearchResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: PerformSearchResponse = { - contentType: "", - statusCode: 306, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: PerformSearchResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/performvoicesearchrequest.md b/docs/sdk/models/operations/performvoicesearchrequest.md index e2e78af8..84fbd8c5 100644 --- a/docs/sdk/models/operations/performvoicesearchrequest.md +++ b/docs/sdk/models/operations/performvoicesearchrequest.md @@ -7,6 +7,7 @@ import { PerformVoiceSearchRequest } from "@lukehagar/plexjs/sdk/models/operatio let value: PerformVoiceSearchRequest = { query: "dead+poop", + limit: 5, }; ``` diff --git a/docs/sdk/models/operations/performvoicesearchresponse.md b/docs/sdk/models/operations/performvoicesearchresponse.md index 03fa4ce2..2ce3a450 100644 --- a/docs/sdk/models/operations/performvoicesearchresponse.md +++ b/docs/sdk/models/operations/performvoicesearchresponse.md @@ -5,13 +5,7 @@ ```typescript import { PerformVoiceSearchResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: PerformVoiceSearchResponse = { - contentType: "", - statusCode: 308, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: PerformVoiceSearchResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/plexdevice.md b/docs/sdk/models/operations/plexdevice.md index bae46571..a789d288 100644 --- a/docs/sdk/models/operations/plexdevice.md +++ b/docs/sdk/models/operations/plexdevice.md @@ -11,12 +11,12 @@ let value: PlexDevice = { productVersion: "", platform: "", platformVersion: "", - device: "Mobile", + device: "Desktop", clientIdentifier: "", createdAt: new Date("2019-06-24T11:38:02Z"), lastSeenAt: new Date("2019-06-24T11:38:02Z"), provides: "", - ownerId: 341028, + ownerId: null, sourceTitle: "", publicAddress: "", accessToken: "", @@ -27,17 +27,17 @@ let value: PlexDevice = { presence: false, httpsRequired: false, publicAddressMatches: false, - dnsRebindingProtection: false, - natLoopbackSupported: false, + dnsRebindingProtection: true, + natLoopbackSupported: true, connections: [ { protocol: Protocol.Http, - address: "40779 Shields Turnpike", - port: 44844, - uri: "https://artistic-creator.org", - local: false, - relay: false, - iPv6: false, + address: "84577 W 9th Street", + port: 610910, + uri: "https://dearest-custom.net", + local: true, + relay: true, + iPv6: true, }, ], }; diff --git a/docs/sdk/models/operations/postmediaartsresponse.md b/docs/sdk/models/operations/postmediaartsresponse.md index 1fe64f6d..f4e09479 100644 --- a/docs/sdk/models/operations/postmediaartsresponse.md +++ b/docs/sdk/models/operations/postmediaartsresponse.md @@ -5,13 +5,7 @@ ```typescript import { PostMediaArtsResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: PostMediaArtsResponse = { - contentType: "", - statusCode: 502, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: PostMediaArtsResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/postmediaposterresponse.md b/docs/sdk/models/operations/postmediaposterresponse.md index 7d39cac5..ba477034 100644 --- a/docs/sdk/models/operations/postmediaposterresponse.md +++ b/docs/sdk/models/operations/postmediaposterresponse.md @@ -5,13 +5,7 @@ ```typescript import { PostMediaPosterResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: PostMediaPosterResponse = { - contentType: "", - statusCode: 302, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: PostMediaPosterResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/postuserssignindatarequest.md b/docs/sdk/models/operations/postuserssignindatarequest.md index c40523de..8108aeb9 100644 --- a/docs/sdk/models/operations/postuserssignindatarequest.md +++ b/docs/sdk/models/operations/postuserssignindatarequest.md @@ -11,11 +11,6 @@ let value: PostUsersSignInDataRequest = { deviceNickname: "Roku 3", clientVersion: "2.4.1", platform: "Roku", - requestBody: { - login: "username@email.com", - password: "password123", - verificationCode: "123456", - }, }; ``` diff --git a/docs/sdk/models/operations/postuserssignindataresponse.md b/docs/sdk/models/operations/postuserssignindataresponse.md index ef4e430f..2e9ff3ca 100644 --- a/docs/sdk/models/operations/postuserssignindataresponse.md +++ b/docs/sdk/models/operations/postuserssignindataresponse.md @@ -3,91 +3,9 @@ ## Example Usage ```typescript -import { - PostUsersSignInDataAuthenticationResponseStatus, - PostUsersSignInDataAuthenticationStatus, - PostUsersSignInDataMailingListStatus, - PostUsersSignInDataResponse, - PostUsersSignInDataState, - PostUsersSignInDataStatus, -} from "@lukehagar/plexjs/sdk/models/operations"; +import { PostUsersSignInDataResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: PostUsersSignInDataResponse = { - contentType: "", - statusCode: 303, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), - userPlexAccount: { - adsConsent: false, - adsConsentReminderAt: 1556281940, - adsConsentSetAt: 1556281940, - authToken: "CxoUzBTSV5hsxjTpFKaf", - country: "US", - email: "username@email.com", - friendlyName: "friendlyUsername", - entitlements: [ - "[]", - ], - homeSize: 1, - id: 13692262, - joinedAt: 1556281940, - locale: "ko", - mailingListStatus: PostUsersSignInDataMailingListStatus.Active, - maxHomeSize: 15, - profile: { - defaultAudioLanguage: "ja", - defaultSubtitleLanguage: "en", - }, - rememberExpiresAt: 1556281940, - scrobbleTypes: "", - services: [ - { - identifier: "metadata-dev", - endpoint: "https://epg.provider.plex.tv", - token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", - secret: "", - status: PostUsersSignInDataStatus.Online, - }, - ], - subscription: { - active: true, - subscribedAt: "2021-04-12T18:21:12Z", - status: PostUsersSignInDataAuthenticationStatus.Inactive, - }, - subscriptionDescription: "", - subscriptions: [ - { - active: true, - subscribedAt: "2021-04-12T18:21:12Z", - status: PostUsersSignInDataAuthenticationResponseStatus.Inactive, - }, - ], - thumb: "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", - title: "UsernameTitle", - username: "Username", - uuid: "dae343c1f45beb4f", - attributionPartner: null, - pastSubscriptions: [ - { - id: "", - mode: "", - renewsAt: 1556281940, - endsAt: 1556281940, - type: "plexpass", - transfer: "", - state: PostUsersSignInDataState.Ended, - billing: { - internalPaymentMethod: {}, - paymentMethodId: 715637, - }, - }, - ], - trials: [ - {}, - ], - }, -}; +let value: PostUsersSignInDataResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/postuserssignindataservices.md b/docs/sdk/models/operations/postuserssignindataservices.md index 97d00fc1..c5787945 100644 --- a/docs/sdk/models/operations/postuserssignindataservices.md +++ b/docs/sdk/models/operations/postuserssignindataservices.md @@ -9,7 +9,7 @@ let value: PostUsersSignInDataServices = { identifier: "metadata-dev", endpoint: "https://epg.provider.plex.tv", token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", - secret: "", + secret: null, status: PostUsersSignInDataStatus.Online, }; ``` diff --git a/docs/sdk/models/operations/postuserssignindatauserplexaccount.md b/docs/sdk/models/operations/postuserssignindatauserplexaccount.md index 9216335c..10ce3b94 100644 --- a/docs/sdk/models/operations/postuserssignindatauserplexaccount.md +++ b/docs/sdk/models/operations/postuserssignindatauserplexaccount.md @@ -8,14 +8,17 @@ Returns the user account data with a valid auth token import { PostUsersSignInDataAuthenticationResponseStatus, PostUsersSignInDataAuthenticationStatus, + PostUsersSignInDataAutoSelectSubtitle, + PostUsersSignInDataDefaultSubtitleAccessibility, + PostUsersSignInDataDefaultSubtitleForced, PostUsersSignInDataMailingListStatus, - PostUsersSignInDataState, - PostUsersSignInDataStatus, + PostUsersSignInDataMediaReviewsVisibility, PostUsersSignInDataUserPlexAccount, + PostUsersSignInDataWatchedIndicator, } from "@lukehagar/plexjs/sdk/models/operations"; let value: PostUsersSignInDataUserPlexAccount = { - adsConsent: false, + adsConsent: true, adsConsentReminderAt: 1556281940, adsConsentSetAt: 1556281940, authToken: "CxoUzBTSV5hsxjTpFKaf", @@ -28,24 +31,22 @@ let value: PostUsersSignInDataUserPlexAccount = { homeSize: 1, id: 13692262, joinedAt: 1556281940, - locale: "sv", + locale: "zh", mailingListStatus: PostUsersSignInDataMailingListStatus.Active, maxHomeSize: 15, profile: { defaultAudioLanguage: "ja", defaultSubtitleLanguage: "en", + autoSelectSubtitle: PostUsersSignInDataAutoSelectSubtitle.Enable, + defaultSubtitleAccessibility: + PostUsersSignInDataDefaultSubtitleAccessibility.Enable, + defaultSubtitleForced: PostUsersSignInDataDefaultSubtitleForced.Enable, + watchedIndicator: PostUsersSignInDataWatchedIndicator.Enable, + mediaReviewsVisibility: PostUsersSignInDataMediaReviewsVisibility.Enable, }, rememberExpiresAt: 1556281940, scrobbleTypes: "", - services: [ - { - identifier: "metadata-dev", - endpoint: "https://epg.provider.plex.tv", - token: "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", - secret: "", - status: PostUsersSignInDataStatus.Online, - }, - ], + services: [], subscription: { active: true, subscribedAt: "2021-04-12T18:21:12Z", @@ -64,21 +65,7 @@ let value: PostUsersSignInDataUserPlexAccount = { username: "Username", uuid: "dae343c1f45beb4f", attributionPartner: null, - pastSubscriptions: [ - { - id: "", - mode: "", - renewsAt: 1556281940, - endsAt: 1556281940, - type: "plexpass", - transfer: "", - state: PostUsersSignInDataState.Ended, - billing: { - internalPaymentMethod: {}, - paymentMethodId: 154499, - }, - }, - ], + pastSubscriptions: [], trials: [ {}, ], diff --git a/docs/sdk/models/operations/postuserssignindatauserprofile.md b/docs/sdk/models/operations/postuserssignindatauserprofile.md index 6f0b5ec1..ce9ae4e2 100644 --- a/docs/sdk/models/operations/postuserssignindatauserprofile.md +++ b/docs/sdk/models/operations/postuserssignindatauserprofile.md @@ -3,11 +3,24 @@ ## Example Usage ```typescript -import { PostUsersSignInDataUserProfile } from "@lukehagar/plexjs/sdk/models/operations"; +import { + PostUsersSignInDataAutoSelectSubtitle, + PostUsersSignInDataDefaultSubtitleAccessibility, + PostUsersSignInDataDefaultSubtitleForced, + PostUsersSignInDataMediaReviewsVisibility, + PostUsersSignInDataUserProfile, + PostUsersSignInDataWatchedIndicator, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: PostUsersSignInDataUserProfile = { defaultAudioLanguage: "ja", defaultSubtitleLanguage: "en", + autoSelectSubtitle: PostUsersSignInDataAutoSelectSubtitle.Enable, + defaultSubtitleAccessibility: + PostUsersSignInDataDefaultSubtitleAccessibility.Enable, + defaultSubtitleForced: PostUsersSignInDataDefaultSubtitleForced.Enable, + watchedIndicator: PostUsersSignInDataWatchedIndicator.Enable, + mediaReviewsVisibility: PostUsersSignInDataMediaReviewsVisibility.Enable, }; ``` diff --git a/docs/sdk/models/operations/producer.md b/docs/sdk/models/operations/producer.md index 12ddc160..57089724 100644 --- a/docs/sdk/models/operations/producer.md +++ b/docs/sdk/models/operations/producer.md @@ -17,10 +17,10 @@ let value: Producer = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique identifier for the producer. | 126522 | -| `filter` | *string* | :heavy_check_mark: | The filter string used to query this producer. | producer=126522 | -| `tag` | *string* | :heavy_check_mark: | The name of the producer | Amelia Knapp | -| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the producer's tag, used for internal identification. | 5d77683d85719b001f3a535e | -| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the producer. | 126522 | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this producer. | producer=126522 | +| `tag` | *string* | :heavy_check_mark: | The name of the producer | Amelia Knapp | +| `tagKey` | *string* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification.
| 5d77683d85719b001f3a535e | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the producer. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/queryparamtype.md b/docs/sdk/models/operations/queryparamtype.md index f03d2b5f..0f757727 100644 --- a/docs/sdk/models/operations/queryparamtype.md +++ b/docs/sdk/models/operations/queryparamtype.md @@ -26,7 +26,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/rating.md b/docs/sdk/models/operations/rating.md index 3d4e70dc..0883325b 100644 --- a/docs/sdk/models/operations/rating.md +++ b/docs/sdk/models/operations/rating.md @@ -16,8 +16,8 @@ let value: Rating = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `image` | *string* | :heavy_check_mark: | N/A | imdb://image.rating | -| `value` | *number* | :heavy_check_mark: | N/A | 5.1 | -| `type` | *string* | :heavy_check_mark: | N/A | audience | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `image` | *string* | :heavy_check_mark: | The URL for the rating image, for example from IMDb. | imdb://image.rating | +| `value` | *number* | :heavy_check_mark: | N/A | 5.1 | +| `type` | *string* | :heavy_check_mark: | N/A | audience | \ No newline at end of file diff --git a/docs/sdk/models/operations/role.md b/docs/sdk/models/operations/role.md index e2ccc10b..ebffde92 100644 --- a/docs/sdk/models/operations/role.md +++ b/docs/sdk/models/operations/role.md @@ -18,11 +18,11 @@ let value: Role = { ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique identifier for the actor or role. | 126522 | -| `filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | -| `tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the actor's tag, used for internal identification. | 5d77683d85719b001f3a535e | -| `role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | +| `tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | +| `tagKey` | *string* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
NOTE: This is globally unique across all Plex Servers.
| 5d77683d85719b001f3a535e | +| `role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/sdk/models/operations/searchresult.md b/docs/sdk/models/operations/searchresult.md index 66b74437..46e1f477 100644 --- a/docs/sdk/models/operations/searchresult.md +++ b/docs/sdk/models/operations/searchresult.md @@ -7,7 +7,9 @@ import { GetSearchAllLibrariesEnableCreditsMarkerGeneration, GetSearchAllLibrariesEpisodeSort, GetSearchAllLibrariesFlattenSeasons, + GetSearchAllLibrariesHasThumbnail, GetSearchAllLibrariesLibraryType, + GetSearchAllLibrariesOptimizedForStreaming, GetSearchAllLibrariesShowOrdering, GetSearchAllLibrariesType, SearchResult, @@ -78,6 +80,8 @@ let value: SearchResult = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + optimizedForStreaming: + GetSearchAllLibrariesOptimizedForStreaming.Enable, has64bitOffsets: false, part: [ { @@ -93,6 +97,7 @@ let value: SearchResult = { optimizedForStreaming: false, videoProfile: "main 10", indexes: "sd", + hasThumbnail: GetSearchAllLibrariesHasThumbnail.True, stream: [ { id: 272796, diff --git a/docs/sdk/models/operations/startalltasksresponse.md b/docs/sdk/models/operations/startalltasksresponse.md index 477271c0..d1fcdb6b 100644 --- a/docs/sdk/models/operations/startalltasksresponse.md +++ b/docs/sdk/models/operations/startalltasksresponse.md @@ -5,13 +5,7 @@ ```typescript import { StartAllTasksResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StartAllTasksResponse = { - contentType: "", - statusCode: 301, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: StartAllTasksResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/starttaskresponse.md b/docs/sdk/models/operations/starttaskresponse.md index 881bd489..6422d136 100644 --- a/docs/sdk/models/operations/starttaskresponse.md +++ b/docs/sdk/models/operations/starttaskresponse.md @@ -5,13 +5,7 @@ ```typescript import { StartTaskResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StartTaskResponse = { - contentType: "", - statusCode: 101, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: StartTaskResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/startuniversaltranscoderesponse.md b/docs/sdk/models/operations/startuniversaltranscoderesponse.md index 0b0c0a34..67e7a9ce 100644 --- a/docs/sdk/models/operations/startuniversaltranscoderesponse.md +++ b/docs/sdk/models/operations/startuniversaltranscoderesponse.md @@ -5,13 +5,7 @@ ```typescript import { StartUniversalTranscodeResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StartUniversalTranscodeResponse = { - contentType: "", - statusCode: 207, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: StartUniversalTranscodeResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/stopalltasksresponse.md b/docs/sdk/models/operations/stopalltasksresponse.md index e4f75d5f..72e7729f 100644 --- a/docs/sdk/models/operations/stopalltasksresponse.md +++ b/docs/sdk/models/operations/stopalltasksresponse.md @@ -5,13 +5,7 @@ ```typescript import { StopAllTasksResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StopAllTasksResponse = { - contentType: "", - statusCode: 206, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: StopAllTasksResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/stoptaskresponse.md b/docs/sdk/models/operations/stoptaskresponse.md index 1dc68b48..16e12727 100644 --- a/docs/sdk/models/operations/stoptaskresponse.md +++ b/docs/sdk/models/operations/stoptaskresponse.md @@ -5,13 +5,7 @@ ```typescript import { StopTaskResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StopTaskResponse = { - contentType: "", - statusCode: 411, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: StopTaskResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/stoptranscodesessionresponse.md b/docs/sdk/models/operations/stoptranscodesessionresponse.md index 3bf3041e..33ab5851 100644 --- a/docs/sdk/models/operations/stoptranscodesessionresponse.md +++ b/docs/sdk/models/operations/stoptranscodesessionresponse.md @@ -5,13 +5,7 @@ ```typescript import { StopTranscodeSessionResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: StopTranscodeSessionResponse = { - contentType: "", - statusCode: 500, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: StopTranscodeSessionResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/type.md b/docs/sdk/models/operations/type.md index ed1df790..3273c2b3 100644 --- a/docs/sdk/models/operations/type.md +++ b/docs/sdk/models/operations/type.md @@ -26,7 +26,9 @@ This is an open enum. Unrecognized values will be captured as the `Unrecognized< | `TvShow` | 2 | | `Season` | 3 | | `Episode` | 4 | -| `Audio` | 8 | -| `Album` | 9 | -| `Track` | 10 | +| `Artist` | 5 | +| `Album` | 6 | +| `Track` | 7 | +| `PhotoAlbum` | 8 | +| `Photo` | 9 | | - | `Unrecognized` | \ No newline at end of file diff --git a/docs/sdk/models/operations/updateplaylistresponse.md b/docs/sdk/models/operations/updateplaylistresponse.md index abb3c4aa..1de5e448 100644 --- a/docs/sdk/models/operations/updateplaylistresponse.md +++ b/docs/sdk/models/operations/updateplaylistresponse.md @@ -5,13 +5,7 @@ ```typescript import { UpdatePlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: UpdatePlaylistResponse = { - contentType: "", - statusCode: 411, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: UpdatePlaylistResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/updateplayprogressresponse.md b/docs/sdk/models/operations/updateplayprogressresponse.md index 5951d81f..ede5954d 100644 --- a/docs/sdk/models/operations/updateplayprogressresponse.md +++ b/docs/sdk/models/operations/updateplayprogressresponse.md @@ -5,13 +5,7 @@ ```typescript import { UpdatePlayProgressResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: UpdatePlayProgressResponse = { - contentType: "", - statusCode: 403, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: UpdatePlayProgressResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/uploadplaylistrequest.md b/docs/sdk/models/operations/uploadplaylistrequest.md index beab4bbb..2660d827 100644 --- a/docs/sdk/models/operations/uploadplaylistrequest.md +++ b/docs/sdk/models/operations/uploadplaylistrequest.md @@ -8,7 +8,6 @@ import { QueryParamForce, UploadPlaylistRequest } from "@lukehagar/plexjs/sdk/mo let value: UploadPlaylistRequest = { path: "/home/barkley/playlist.m3u", force: QueryParamForce.Zero, - sectionID: 1, }; ``` diff --git a/docs/sdk/models/operations/uploadplaylistresponse.md b/docs/sdk/models/operations/uploadplaylistresponse.md index 11fa3c34..835d321b 100644 --- a/docs/sdk/models/operations/uploadplaylistresponse.md +++ b/docs/sdk/models/operations/uploadplaylistresponse.md @@ -5,13 +5,7 @@ ```typescript import { UploadPlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations"; -let value: UploadPlaylistResponse = { - contentType: "", - statusCode: 415, - rawResponse: new Response("{\"message\": \"hello world\"}", { - headers: { "Content-Type": "application/json" }, - }), -}; +let value: UploadPlaylistResponse = {}; ``` ## Fields diff --git a/docs/sdk/models/operations/user.md b/docs/sdk/models/operations/user.md index ef270300..9fcca213 100644 --- a/docs/sdk/models/operations/user.md +++ b/docs/sdk/models/operations/user.md @@ -3,7 +3,20 @@ ## Example Usage ```typescript -import { User } from "@lukehagar/plexjs/sdk/models/operations"; +import { + AllLibraries, + AllowCameraUpload, + AllowChannels, + AllowSubtitleAdmin, + AllowSync, + AllowTuners, + Home, + Owned, + Pending, + Protected, + Restricted, + User, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: User = { id: 22526914, @@ -12,11 +25,19 @@ let value: User = { email: "zgfuc7krcqfimrmb9lsl5j@protonmail.com", recommendationsPlaylistId: "", thumb: "https://plex.tv/users/3346028014e93acd/avatar?c=1731605021", + protected: Protected.Enable, + home: Home.Enable, + allowTuners: AllowTuners.Enable, + allowSync: AllowSync.Enable, + allowCameraUpload: AllowCameraUpload.Enable, + allowChannels: AllowChannels.Enable, + allowSubtitleAdmin: AllowSubtitleAdmin.Enable, filterAll: "", filterMovies: "", filterMusic: "", filterPhotos: "", filterTelevision: "", + restricted: Restricted.Enable, server: [ { id: 907759180, @@ -25,6 +46,9 @@ let value: User = { name: "ConnectedUserFlix", lastSeenAt: 1556281940, numLibraries: 16, + allLibraries: AllLibraries.Enable, + owned: Owned.Enable, + pending: Pending.Enable, }, ], }; diff --git a/docs/sdk/models/operations/userprofile.md b/docs/sdk/models/operations/userprofile.md index 3a92bca4..48a35563 100644 --- a/docs/sdk/models/operations/userprofile.md +++ b/docs/sdk/models/operations/userprofile.md @@ -3,11 +3,23 @@ ## Example Usage ```typescript -import { UserProfile } from "@lukehagar/plexjs/sdk/models/operations"; +import { + AutoSelectSubtitle, + DefaultSubtitleAccessibility, + DefaultSubtitleForced, + MediaReviewsVisibility, + UserProfile, + WatchedIndicator, +} from "@lukehagar/plexjs/sdk/models/operations"; let value: UserProfile = { defaultAudioLanguage: "ja", defaultSubtitleLanguage: "en", + autoSelectSubtitle: AutoSelectSubtitle.Enable, + defaultSubtitleAccessibility: DefaultSubtitleAccessibility.Enable, + defaultSubtitleForced: DefaultSubtitleForced.Enable, + watchedIndicator: WatchedIndicator.Enable, + mediaReviewsVisibility: MediaReviewsVisibility.Enable, }; ``` diff --git a/docs/sdk/models/operations/writer.md b/docs/sdk/models/operations/writer.md index e97d735b..f734e50a 100644 --- a/docs/sdk/models/operations/writer.md +++ b/docs/sdk/models/operations/writer.md @@ -10,14 +10,17 @@ let value: Writer = { filter: "writer=126522", tag: "Jamie P. Hanson", tagKey: "5d77683d85719b001f3a535e", + thumb: + "https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg", }; ``` ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `id` | *number* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | -| `tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `tagKey` | *string* | :heavy_minus_sign: | A unique key associated with the writers tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | +| `filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | +| `tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | +| `tagKey` | *string* | :heavy_minus_sign: | A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `thumb` | *string* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/sdks/activities/README.md b/docs/sdks/activities/README.md index 24674389..c3448449 100644 --- a/docs/sdks/activities/README.md +++ b/docs/sdks/activities/README.md @@ -33,7 +33,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.activities.getServerActivities(); - // Handle the result console.log(result); } @@ -56,15 +55,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await activitiesGetServerActivities(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("activitiesGetServerActivities failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -106,7 +102,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.activities.cancelServerActivities("25b71ed5-0f9d-461c-baa7-d404e9e10d3e"); - // Handle the result console.log(result); } @@ -129,15 +124,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await activitiesCancelServerActivities(plexAPI, "25b71ed5-0f9d-461c-baa7-d404e9e10d3e"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("activitiesCancelServerActivities failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md index bb3c8dbf..74ed7dea 100644 --- a/docs/sdks/authentication/README.md +++ b/docs/sdks/authentication/README.md @@ -31,7 +31,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.authentication.getTransientToken(GetTransientTokenQueryParamType.Delegation, Scope.All); - // Handle the result console.log(result); } @@ -55,15 +54,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await authenticationGetTransientToken(plexAPI, GetTransientTokenQueryParamType.Delegation, Scope.All); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("authenticationGetTransientToken failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -107,9 +103,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.authentication.getSourceConnectionInformation("provider://provider-identifier"); + const result = await plexAPI.authentication.getSourceConnectionInformation("server://client-identifier"); - // Handle the result console.log(result); } @@ -131,16 +126,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await authenticationGetSourceConnectionInformation(plexAPI, "provider://provider-identifier"); - - if (!res.ok) { - throw res.error; + const res = await authenticationGetSourceConnectionInformation(plexAPI, "server://client-identifier"); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("authenticationGetSourceConnectionInformation failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -183,7 +175,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.authentication.getTokenDetails(); - // Handle the result console.log(result); } @@ -206,15 +197,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await authenticationGetTokenDetails(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("authenticationGetTokenDetails failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -266,7 +254,6 @@ async function run() { }, }); - // Handle the result console.log(result); } @@ -298,15 +285,12 @@ async function run() { verificationCode: "123456", }, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("authenticationPostUsersSignInData failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/butler/README.md b/docs/sdks/butler/README.md index 08698e49..8fcf8d86 100644 --- a/docs/sdks/butler/README.md +++ b/docs/sdks/butler/README.md @@ -30,7 +30,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.butler.getButlerTasks(); - // Handle the result console.log(result); } @@ -53,15 +52,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await butlerGetButlerTasks(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("butlerGetButlerTasks failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -108,7 +104,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.butler.startAllTasks(); - // Handle the result console.log(result); } @@ -131,15 +126,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await butlerStartAllTasks(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("butlerStartAllTasks failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -182,7 +174,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.butler.stopAllTasks(); - // Handle the result console.log(result); } @@ -205,15 +196,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await butlerStopAllTasks(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("butlerStopAllTasks failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -259,9 +247,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.butler.startTask(TaskName.CleanOldBundles); + const result = await plexAPI.butler.startTask(TaskName.RefreshPeriodicMetadata); - // Handle the result console.log(result); } @@ -284,16 +271,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await butlerStartTask(plexAPI, TaskName.CleanOldBundles); - - if (!res.ok) { - throw res.error; + const res = await butlerStartTask(plexAPI, TaskName.RefreshPeriodicMetadata); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("butlerStartTask failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -336,9 +320,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.butler.stopTask(PathParamTaskName.BackupDatabase); + const result = await plexAPI.butler.stopTask(PathParamTaskName.CleanOldCacheFiles); - // Handle the result console.log(result); } @@ -361,16 +344,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await butlerStopTask(plexAPI, PathParamTaskName.BackupDatabase); - - if (!res.ok) { - throw res.error; + const res = await butlerStopTask(plexAPI, PathParamTaskName.CleanOldCacheFiles); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("butlerStopTask failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md index b69d7af3..d5a5057d 100644 --- a/docs/sdks/hubs/README.md +++ b/docs/sdks/hubs/README.md @@ -28,7 +28,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.hubs.getGlobalHubs(); - // Handle the result console.log(result); } @@ -51,15 +50,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await hubsGetGlobalHubs(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("hubsGetGlobalHubs failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -96,7 +92,7 @@ This endpoint will return the recently added content. ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { Type } from "@lukehagar/plexjs/sdk/models/operations"; +import { IncludeMeta, Type } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -104,12 +100,12 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.hubs.getRecentlyAdded({ - contentDirectoryID: 470161, + contentDirectoryID: 39486, sectionID: 2, type: Type.TvShow, + includeMeta: IncludeMeta.Enable, }); - // Handle the result console.log(result); } @@ -123,7 +119,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { hubsGetRecentlyAdded } from "@lukehagar/plexjs/funcs/hubsGetRecentlyAdded.js"; -import { Type } from "@lukehagar/plexjs/sdk/models/operations"; +import { IncludeMeta, Type } from "@lukehagar/plexjs/sdk/models/operations"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -133,19 +129,17 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await hubsGetRecentlyAdded(plexAPI, { - contentDirectoryID: 470161, + contentDirectoryID: 39486, sectionID: 2, type: Type.TvShow, + includeMeta: IncludeMeta.Enable, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("hubsGetRecentlyAdded failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -185,9 +179,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.hubs.getLibraryHubs(6728.76); + const result = await plexAPI.hubs.getLibraryHubs(492.74); - // Handle the result console.log(result); } @@ -209,16 +202,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await hubsGetLibraryHubs(plexAPI, 6728.76); - - if (!res.ok) { - throw res.error; + const res = await hubsGetLibraryHubs(plexAPI, 492.74); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("hubsGetLibraryHubs failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index d73bf328..f5377fe1 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -14,7 +14,7 @@ API Calls interacting with Plex Media Server Libraries * [getLibraryDetails](#getlibrarydetails) - Get Library Details * [deleteLibrary](#deletelibrary) - Delete Library Section * [getLibraryItems](#getlibraryitems) - Get Library Items -* [getAllMediaLibrary](#getallmedialibrary) - Get all media of library +* [getLibrarySectionsAll](#getlibrarysectionsall) - Get Library section media by tag ALL * [getRefreshLibraryMetadata](#getrefreshlibrarymetadata) - Refresh Metadata Of The Library * [getSearchLibrary](#getsearchlibrary) - Search Library * [getGenresLibrary](#getgenreslibrary) - Get Genres of library media @@ -45,7 +45,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getFileHash("file://C:\Image.png&type=13"); - // Handle the result console.log(result); } @@ -68,15 +67,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetFileHash(plexAPI, "file://C:\Image.png&type=13"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetFileHash failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -113,7 +109,7 @@ This endpoint will return the recently added content. ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { QueryParamIncludeMeta, QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -138,9 +134,9 @@ async function run() { ], sectionID: 2, type: QueryParamType.TvShow, + includeMeta: QueryParamIncludeMeta.Enable, }); - // Handle the result console.log(result); } @@ -154,7 +150,7 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetRecentlyAddedLibrary } from "@lukehagar/plexjs/funcs/libraryGetRecentlyAddedLibrary.js"; -import { QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { QueryParamIncludeMeta, QueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -181,16 +177,14 @@ async function run() { ], sectionID: 2, type: QueryParamType.TvShow, + includeMeta: QueryParamIncludeMeta.Enable, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetRecentlyAddedLibrary failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -239,7 +233,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getAllLibraries(); - // Handle the result console.log(result); } @@ -262,15 +255,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetAllLibraries(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetAllLibraries failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -351,7 +341,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getLibraryDetails(9518); - // Handle the result console.log(result); } @@ -374,15 +363,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetLibraryDetails(plexAPI, 9518); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetLibraryDetails failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -426,7 +412,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.deleteLibrary(9518); - // Handle the result console.log(result); } @@ -449,15 +434,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryDeleteLibrary(plexAPI, 9518); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryDeleteLibrary failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -513,7 +495,12 @@ Fetches details from a specific section of the library identified by a section k ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { GetLibraryItemsQueryParamType, Tag } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetLibraryItemsQueryParamIncludeMeta, + GetLibraryItemsQueryParamType, + IncludeGuids, + Tag, +} from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -521,12 +508,13 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getLibraryItems({ - tag: Tag.Edition, + tag: Tag.Newest, + includeGuids: IncludeGuids.Enable, type: GetLibraryItemsQueryParamType.TvShow, sectionKey: 9518, + includeMeta: GetLibraryItemsQueryParamIncludeMeta.Enable, }); - // Handle the result console.log(result); } @@ -540,7 +528,12 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetLibraryItems } from "@lukehagar/plexjs/funcs/libraryGetLibraryItems.js"; -import { GetLibraryItemsQueryParamType, Tag } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetLibraryItemsQueryParamIncludeMeta, + GetLibraryItemsQueryParamType, + IncludeGuids, + Tag, +} from "@lukehagar/plexjs/sdk/models/operations"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -550,19 +543,18 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetLibraryItems(plexAPI, { - tag: Tag.Edition, + tag: Tag.Newest, + includeGuids: IncludeGuids.Enable, type: GetLibraryItemsQueryParamType.TvShow, sectionKey: 9518, + includeMeta: GetLibraryItemsQueryParamIncludeMeta.Enable, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetLibraryItems failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -589,7 +581,7 @@ run(); | errors.GetLibraryItemsUnauthorized | 401 | application/json | | errors.SDKError | 4XX, 5XX | \*/\* | -## getAllMediaLibrary +## getLibrarySectionsAll Retrieves a list of all general media data for this library. @@ -598,19 +590,30 @@ Retrieves a list of all general media data for this library. ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetLibrarySectionsAllQueryParamIncludeMeta, + GetLibrarySectionsAllQueryParamType, + IncludeAdvanced, + QueryParamIncludeCollections, + QueryParamIncludeExternalMedia, + QueryParamIncludeGuids, +} from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.getAllMediaLibrary({ + const result = await plexAPI.library.getLibrarySectionsAll({ sectionKey: 9518, - type: GetAllMediaLibraryQueryParamType.TvShow, + type: GetLibrarySectionsAllQueryParamType.TvShow, + includeMeta: GetLibrarySectionsAllQueryParamIncludeMeta.Enable, + includeGuids: QueryParamIncludeGuids.Enable, + includeAdvanced: IncludeAdvanced.Enable, + includeCollections: QueryParamIncludeCollections.Enable, + includeExternalMedia: QueryParamIncludeExternalMedia.Enable, }); - // Handle the result console.log(result); } @@ -623,8 +626,15 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; -import { libraryGetAllMediaLibrary } from "@lukehagar/plexjs/funcs/libraryGetAllMediaLibrary.js"; -import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; +import { libraryGetLibrarySectionsAll } from "@lukehagar/plexjs/funcs/libraryGetLibrarySectionsAll.js"; +import { + GetLibrarySectionsAllQueryParamIncludeMeta, + GetLibrarySectionsAllQueryParamType, + IncludeAdvanced, + QueryParamIncludeCollections, + QueryParamIncludeExternalMedia, + QueryParamIncludeGuids, +} from "@lukehagar/plexjs/sdk/models/operations"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -633,19 +643,21 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryGetAllMediaLibrary(plexAPI, { + const res = await libraryGetLibrarySectionsAll(plexAPI, { sectionKey: 9518, - type: GetAllMediaLibraryQueryParamType.TvShow, + type: GetLibrarySectionsAllQueryParamType.TvShow, + includeMeta: GetLibrarySectionsAllQueryParamIncludeMeta.Enable, + includeGuids: QueryParamIncludeGuids.Enable, + includeAdvanced: IncludeAdvanced.Enable, + includeCollections: QueryParamIncludeCollections.Enable, + includeExternalMedia: QueryParamIncludeExternalMedia.Enable, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetLibrarySectionsAll failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -655,22 +667,22 @@ run(); | Parameter | Type | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `request` | [operations.GetAllMediaLibraryRequest](../../sdk/models/operations/getallmedialibraryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `request` | [operations.GetLibrarySectionsAllRequest](../../sdk/models/operations/getlibrarysectionsallrequest.md) | :heavy_check_mark: | The request object to use for the request. | | `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | | `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | | `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | ### Response -**Promise\<[operations.GetAllMediaLibraryResponse](../../sdk/models/operations/getallmedialibraryresponse.md)\>** +**Promise\<[operations.GetLibrarySectionsAllResponse](../../sdk/models/operations/getlibrarysectionsallresponse.md)\>** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | -| errors.GetAllMediaLibraryBadRequest | 400 | application/json | -| errors.GetAllMediaLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| errors.GetLibrarySectionsAllBadRequest | 400 | application/json | +| errors.GetLibrarySectionsAllUnauthorized | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## getRefreshLibraryMetadata @@ -688,9 +700,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.library.getRefreshLibraryMetadata(9518, Force.One); + const result = await plexAPI.library.getRefreshLibraryMetadata(9518, Force.Zero); - // Handle the result console.log(result); } @@ -714,15 +725,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetRefreshLibraryMetadata(plexAPI, 9518, Force.Zero); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetRefreshLibraryMetadata failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -785,7 +793,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getSearchLibrary(9518, GetSearchLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -809,15 +816,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetSearchLibrary(plexAPI, 9518, GetSearchLibraryQueryParamType.TvShow); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetSearchLibrary failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -863,7 +867,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getGenresLibrary(9518, GetGenresLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -887,15 +890,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetGenresLibrary(plexAPI, 9518, GetGenresLibraryQueryParamType.TvShow); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetGenresLibrary failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -941,7 +941,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getCountriesLibrary(9518, GetCountriesLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -965,15 +964,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetCountriesLibrary(plexAPI, 9518, GetCountriesLibraryQueryParamType.TvShow); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetCountriesLibrary failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1019,7 +1015,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getActorsLibrary(9518, GetActorsLibraryQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -1043,15 +1038,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetActorsLibrary(plexAPI, 9518, GetActorsLibraryQueryParamType.TvShow); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetActorsLibrary failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1088,7 +1080,11 @@ Search the provided query across all library sections, or a single section, and ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { SearchTypes } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetSearchAllLibrariesQueryParamIncludeCollections, + GetSearchAllLibrariesQueryParamIncludeExternalMedia, + SearchTypes, +} from "@lukehagar/plexjs/sdk/models/operations"; const plexAPI = new PlexAPI({ accessToken: "", @@ -1101,9 +1097,10 @@ async function run() { searchTypes: [ SearchTypes.People, ], + includeCollections: GetSearchAllLibrariesQueryParamIncludeCollections.Enable, + includeExternalMedia: GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable, }); - // Handle the result console.log(result); } @@ -1117,7 +1114,11 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryGetSearchAllLibraries } from "@lukehagar/plexjs/funcs/libraryGetSearchAllLibraries.js"; -import { SearchTypes } from "@lukehagar/plexjs/sdk/models/operations"; +import { + GetSearchAllLibrariesQueryParamIncludeCollections, + GetSearchAllLibrariesQueryParamIncludeExternalMedia, + SearchTypes, +} from "@lukehagar/plexjs/sdk/models/operations"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1132,16 +1133,15 @@ async function run() { searchTypes: [ SearchTypes.People, ], + includeCollections: GetSearchAllLibrariesQueryParamIncludeCollections.Enable, + includeExternalMedia: GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetSearchAllLibraries failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1170,7 +1170,8 @@ run(); ## getMediaMetaData -This endpoint will return all the (meta)data of a library item specified with by the ratingKey. +This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. +Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617"). ### Example Usage @@ -1184,7 +1185,7 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getMediaMetaData({ - ratingKey: 9518, + ratingKey: "21119,21617", includeConcerts: true, includeExtras: true, includeOnDeck: true, @@ -1200,7 +1201,6 @@ async function run() { asyncRefreshLocalMediaAgent: true, }); - // Handle the result console.log(result); } @@ -1223,7 +1223,7 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetMediaMetaData(plexAPI, { - ratingKey: 9518, + ratingKey: "21119,21617", includeConcerts: true, includeExtras: true, includeOnDeck: true, @@ -1238,15 +1238,12 @@ async function run() { asyncRefreshAnalysis: true, asyncRefreshLocalMediaAgent: true, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetMediaMetaData failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1289,7 +1286,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getMediaArts(16099); - // Handle the result console.log(result); } @@ -1312,15 +1308,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetMediaArts(plexAPI, 16099); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetMediaArts failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1353,16 +1346,14 @@ Uploads an image to use as the background artwork for a library item, either fro ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaArts(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaArts(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); - // Handle the result console.log(result); } @@ -1376,7 +1367,6 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryPostMediaArts } from "@lukehagar/plexjs/funcs/libraryPostMediaArts.js"; -import { openAsBlob } from "node:fs"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1385,16 +1375,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryPostMediaArts(plexAPI, 2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); - - if (!res.ok) { - throw res.error; + const res = await libraryPostMediaArts(plexAPI, 2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryPostMediaArts failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1437,7 +1424,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.library.getMediaPosters(16099); - // Handle the result console.log(result); } @@ -1460,15 +1446,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await libraryGetMediaPosters(plexAPI, 16099); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetMediaPosters failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1501,16 +1484,14 @@ Uploads a poster to a library item, either from a local file or a remote URL ```typescript import { PlexAPI } from "@lukehagar/plexjs"; -import { openAsBlob } from "node:fs"; const plexAPI = new PlexAPI({ accessToken: "", }); async function run() { - const result = await plexAPI.library.postMediaPoster(2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + const result = await plexAPI.library.postMediaPoster(2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); - // Handle the result console.log(result); } @@ -1524,7 +1505,6 @@ The standalone function version of this method: ```typescript import { PlexAPICore } from "@lukehagar/plexjs/core.js"; import { libraryPostMediaPoster } from "@lukehagar/plexjs/funcs/libraryPostMediaPoster.js"; -import { openAsBlob } from "node:fs"; // Use `PlexAPICore` for best tree-shaking performance. // You can create one instance of it to use across an application. @@ -1533,16 +1513,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryPostMediaPoster(plexAPI, 2268, await openAsBlob("example.file"), "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); - - if (!res.ok) { - throw res.error; + const res = await libraryPostMediaPoster(plexAPI, 2268, "https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b"); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryPostMediaPoster failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1584,9 +1561,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.library.getMetadataChildren(1539.14, "Stream"); + const result = await plexAPI.library.getMetadataChildren(2403.67, "Stream"); - // Handle the result console.log(result); } @@ -1608,16 +1584,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryGetMetadataChildren(plexAPI, 1539.14, "Stream"); - - if (!res.ok) { - throw res.error; + const res = await libraryGetMetadataChildren(plexAPI, 2403.67, "Stream"); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetMetadataChildren failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1661,9 +1634,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.library.getTopWatchedContent(GetTopWatchedContentQueryParamType.TvShow, 1); + const result = await plexAPI.library.getTopWatchedContent(GetTopWatchedContentQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -1686,16 +1658,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await libraryGetTopWatchedContent(plexAPI, GetTopWatchedContentQueryParamType.TvShow, 1); - - if (!res.ok) { - throw res.error; + const res = await libraryGetTopWatchedContent(plexAPI, GetTopWatchedContentQueryParamType.TvShow); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("libraryGetTopWatchedContent failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -1706,7 +1675,7 @@ run(); | Parameter | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `type` | [operations.GetTopWatchedContentQueryParamType](../../sdk/models/operations/gettopwatchedcontentqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| [object Object] | -| `includeGuids` | *number* | :heavy_minus_sign: | Adds the Guids object to the response
| [object Object] | +| `includeGuids` | [operations.GetTopWatchedContentQueryParamIncludeGuids](../../sdk/models/operations/gettopwatchedcontentqueryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| [object Object] | | `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | | | `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | | | `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | | diff --git a/docs/sdks/log/README.md b/docs/sdks/log/README.md index 2b7567fe..71a251be 100644 --- a/docs/sdks/log/README.md +++ b/docs/sdks/log/README.md @@ -30,7 +30,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.log.logLine(Level.Three, "Test log message", "Postman"); - // Handle the result console.log(result); } @@ -54,15 +53,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await logLogLine(plexAPI, Level.Three, "Test log message", "Postman"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("logLogLine failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -130,7 +126,6 @@ async function run() { "level=3&message=Test%20message%202&source=postman\n" + "level=1&message=Test%20message%203&source=postman"); - // Handle the result console.log(result); } @@ -155,15 +150,12 @@ async function run() { const res = await logLogMultiLine(plexAPI, "level=4&message=Test%20message%201&source=postman\n" + "level=3&message=Test%20message%202&source=postman\n" + "level=1&message=Test%20message%203&source=postman"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("logLogMultiLine failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -207,7 +199,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.log.enablePaperTrail(); - // Handle the result console.log(result); } @@ -230,15 +221,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await logEnablePaperTrail(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("logEnablePaperTrail failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/media/README.md b/docs/sdks/media/README.md index f59b5b1a..a0841a63 100644 --- a/docs/sdks/media/README.md +++ b/docs/sdks/media/README.md @@ -30,7 +30,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.media.markPlayed(59398); - // Handle the result console.log(result); } @@ -53,15 +52,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await mediaMarkPlayed(plexAPI, 59398); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("mediaMarkPlayed failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -104,7 +100,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.media.markUnplayed(59398); - // Handle the result console.log(result); } @@ -127,15 +122,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await mediaMarkUnplayed(plexAPI, 59398); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("mediaMarkUnplayed failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -179,7 +171,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.media.updatePlayProgress("", 90000, "played"); - // Handle the result console.log(result); } @@ -202,15 +193,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await mediaUpdatePlayProgress(plexAPI, "", 90000, "played"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("mediaUpdatePlayProgress failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -262,7 +250,6 @@ async function run() { xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -292,15 +279,12 @@ async function run() { upscale: 1, xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("mediaGetBannerImage failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -350,7 +334,6 @@ async function run() { xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -380,15 +363,12 @@ async function run() { upscale: 1, xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("mediaGetThumbImage failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/playlists/README.md b/docs/sdks/playlists/README.md index 2298724d..cf57eca7 100644 --- a/docs/sdks/playlists/README.md +++ b/docs/sdks/playlists/README.md @@ -41,12 +41,11 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.playlists.createPlaylist({ title: "", - type: CreatePlaylistQueryParamType.Photo, + type: CreatePlaylistQueryParamType.Audio, smart: Smart.One, - uri: "https://hoarse-testing.info/", + uri: "https://short-term-disconnection.name/", }); - // Handle the result console.log(result); } @@ -71,19 +70,16 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await playlistsCreatePlaylist(plexAPI, { title: "", - type: CreatePlaylistQueryParamType.Photo, + type: CreatePlaylistQueryParamType.Audio, smart: Smart.One, - uri: "https://hoarse-testing.info/", + uri: "https://short-term-disconnection.name/", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsCreatePlaylist failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -126,7 +122,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.playlists.getPlaylists(); - // Handle the result console.log(result); } @@ -149,15 +144,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await playlistsGetPlaylists(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsGetPlaylists failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -201,9 +193,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.getPlaylist(4109.48); + const result = await plexAPI.playlists.getPlaylist(8419.53); - // Handle the result console.log(result); } @@ -225,16 +216,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await playlistsGetPlaylist(plexAPI, 4109.48); - - if (!res.ok) { - throw res.error; + const res = await playlistsGetPlaylist(plexAPI, 8419.53); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsGetPlaylist failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -276,9 +264,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.deletePlaylist(216.22); + const result = await plexAPI.playlists.deletePlaylist(3432.93); - // Handle the result console.log(result); } @@ -300,16 +287,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await playlistsDeletePlaylist(plexAPI, 216.22); - - if (!res.ok) { - throw res.error; + const res = await playlistsDeletePlaylist(plexAPI, 3432.93); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsDeletePlaylist failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -351,9 +335,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.updatePlaylist(3915); + const result = await plexAPI.playlists.updatePlaylist(1579.66); - // Handle the result console.log(result); } @@ -375,16 +358,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await playlistsUpdatePlaylist(plexAPI, 3915); - - if (!res.ok) { - throw res.error; + const res = await playlistsUpdatePlaylist(plexAPI, 1579.66); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsUpdatePlaylist failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -432,9 +412,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.getPlaylistContents(5004.46, GetPlaylistContentsQueryParamType.TvShow); + const result = await plexAPI.playlists.getPlaylistContents(5535.42, GetPlaylistContentsQueryParamType.TvShow); - // Handle the result console.log(result); } @@ -457,16 +436,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await playlistsGetPlaylistContents(plexAPI, 5004.46, GetPlaylistContentsQueryParamType.TvShow); - - if (!res.ok) { - throw res.error; + const res = await playlistsGetPlaylistContents(plexAPI, 5535.42, GetPlaylistContentsQueryParamType.TvShow); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsGetPlaylistContents failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -509,9 +485,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.clearPlaylistContents(1893.18); + const result = await plexAPI.playlists.clearPlaylistContents(4137.37); - // Handle the result console.log(result); } @@ -533,16 +508,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await playlistsClearPlaylistContents(plexAPI, 1893.18); - - if (!res.ok) { - throw res.error; + const res = await playlistsClearPlaylistContents(plexAPI, 4137.37); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsClearPlaylistContents failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -585,9 +557,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.addPlaylistContents(8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123); + const result = await plexAPI.playlists.addPlaylistContents(7013.44, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123); - // Handle the result console.log(result); } @@ -609,16 +580,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await playlistsAddPlaylistContents(plexAPI, 8502.01, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123); - - if (!res.ok) { - throw res.error; + const res = await playlistsAddPlaylistContents(plexAPI, 7013.44, "server://12345/com.plexapp.plugins.library/library/metadata/1", 123); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsAddPlaylistContents failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -663,9 +631,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.playlists.uploadPlaylist("/home/barkley/playlist.m3u", QueryParamForce.Zero, 1); + const result = await plexAPI.playlists.uploadPlaylist("/home/barkley/playlist.m3u", QueryParamForce.One, 1); - // Handle the result console.log(result); } @@ -689,15 +656,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await playlistsUploadPlaylist(plexAPI, "/home/barkley/playlist.m3u", QueryParamForce.One, 1); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("playlistsUploadPlaylist failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/plex/README.md b/docs/sdks/plex/README.md index 67536caf..baf6dddb 100644 --- a/docs/sdks/plex/README.md +++ b/docs/sdks/plex/README.md @@ -32,7 +32,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.plex.getCompanionsData(); - // Handle the result console.log(result); } @@ -55,15 +54,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await plexGetCompanionsData(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetCompanionsData failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -106,7 +102,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.plex.getUserFriends(); - // Handle the result console.log(result); } @@ -129,15 +124,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await plexGetUserFriends(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetUserFriends failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -178,7 +170,6 @@ const plexAPI = new PlexAPI(); async function run() { const result = await plexAPI.plex.getGeoData(); - // Handle the result console.log(result); } @@ -199,15 +190,12 @@ const plexAPI = new PlexAPICore(); async function run() { const res = await plexGetGeoData(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetGeoData failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -250,7 +238,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.plex.getHomeData(); - // Handle the result console.log(result); } @@ -273,15 +260,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await plexGetHomeData(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetHomeData failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -323,7 +307,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.plex.getServerResources("3381b62b-9ab7-4e37-827b-203e9809eb58"); - // Handle the result console.log(result); } @@ -346,15 +329,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await plexGetServerResources(plexAPI, "3381b62b-9ab7-4e37-827b-203e9809eb58"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetServerResources failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -405,7 +385,6 @@ async function run() { platform: "Roku", }); - // Handle the result console.log(result); } @@ -432,15 +411,12 @@ async function run() { clientVersion: "2.4.1", platform: "Roku", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetPin failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -480,7 +456,7 @@ const plexAPI = new PlexAPI(); async function run() { const result = await plexAPI.plex.getTokenByPinId({ - pinID: 408895, + pinID: 232248, clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", clientName: "Plex for Roku", deviceNickname: "Roku 3", @@ -488,7 +464,6 @@ async function run() { platform: "Roku", }); - // Handle the result console.log(result); } @@ -509,22 +484,19 @@ const plexAPI = new PlexAPICore(); async function run() { const res = await plexGetTokenByPinId(plexAPI, { - pinID: 408895, + pinID: 232248, clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", clientName: "Plex for Roku", deviceNickname: "Roku 3", clientVersion: "2.4.1", platform: "Roku", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("plexGetTokenByPinId failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md index c7c8e0eb..9d575e07 100644 --- a/docs/sdks/search/README.md +++ b/docs/sdks/search/README.md @@ -38,9 +38,8 @@ const plexAPI = new PlexAPI({ }); async function run() { - const result = await plexAPI.search.performSearch("dylan"); + const result = await plexAPI.search.performSearch("arnold"); - // Handle the result console.log(result); } @@ -62,16 +61,13 @@ const plexAPI = new PlexAPICore({ }); async function run() { - const res = await searchPerformSearch(plexAPI, "dylan"); - - if (!res.ok) { - throw res.error; + const res = await searchPerformSearch(plexAPI, "arnold"); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("searchPerformSearch failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -120,7 +116,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.search.performVoiceSearch("dead+poop"); - // Handle the result console.log(result); } @@ -143,15 +138,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await searchPerformVoiceSearch(plexAPI, "dead+poop"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("searchPerformVoiceSearch failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -196,7 +188,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.search.getSearchResults("110"); - // Handle the result console.log(result); } @@ -219,15 +210,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await searchGetSearchResults(plexAPI, "110"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("searchGetSearchResults failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/server/README.md b/docs/sdks/server/README.md index 9f52f818..b6870463 100644 --- a/docs/sdks/server/README.md +++ b/docs/sdks/server/README.md @@ -34,7 +34,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerCapabilities(); - // Handle the result console.log(result); } @@ -57,15 +56,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetServerCapabilities(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetServerCapabilities failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -107,7 +103,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerPreferences(); - // Handle the result console.log(result); } @@ -130,15 +125,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetServerPreferences(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetServerPreferences failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -180,7 +172,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getAvailableClients(); - // Handle the result console.log(result); } @@ -203,15 +194,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetAvailableClients(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetAvailableClients failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -253,7 +241,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getDevices(); - // Handle the result console.log(result); } @@ -276,15 +263,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetDevices(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetDevices failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -324,7 +308,6 @@ const plexAPI = new PlexAPI(); async function run() { const result = await plexAPI.server.getServerIdentity(); - // Handle the result console.log(result); } @@ -345,15 +328,12 @@ const plexAPI = new PlexAPICore(); async function run() { const res = await serverGetServerIdentity(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetServerIdentity failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -394,7 +374,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getMyPlexAccount(); - // Handle the result console.log(result); } @@ -417,15 +396,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetMyPlexAccount(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetMyPlexAccount failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -470,14 +446,12 @@ async function run() { const result = await plexAPI.server.getResizedPhoto({ width: 110, height: 165, - opacity: 100, blur: 0, - minSize: MinSize.One, - upscale: Upscale.One, + minSize: MinSize.Zero, + upscale: Upscale.Zero, url: "/library/metadata/49564/thumb/1654258204", }); - // Handle the result console.log(result); } @@ -503,21 +477,17 @@ async function run() { const res = await serverGetResizedPhoto(plexAPI, { width: 110, height: 165, - opacity: 100, blur: 0, - minSize: MinSize.One, - upscale: Upscale.One, + minSize: MinSize.Zero, + upscale: Upscale.Zero, url: "/library/metadata/49564/thumb/1654258204", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetResizedPhoto failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -560,7 +530,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getMediaProviders("CV5xoxjTpFKUzBTShsaf"); - // Handle the result console.log(result); } @@ -583,15 +552,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetMediaProviders(plexAPI, "CV5xoxjTpFKUzBTShsaf"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetMediaProviders failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -634,7 +600,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.server.getServerList(); - // Handle the result console.log(result); } @@ -657,15 +622,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await serverGetServerList(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("serverGetServerList failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/sessions/README.md b/docs/sdks/sessions/README.md index 817abffa..9ea69b96 100644 --- a/docs/sdks/sessions/README.md +++ b/docs/sdks/sessions/README.md @@ -29,7 +29,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.sessions.getSessions(); - // Handle the result console.log(result); } @@ -52,15 +51,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await sessionsGetSessions(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("sessionsGetSessions failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -102,7 +98,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.sessions.getSessionHistory("viewedAt:desc", 1, {}, 12); - // Handle the result console.log(result); } @@ -125,15 +120,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await sessionsGetSessionHistory(plexAPI, "viewedAt:desc", 1, {}, 12); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("sessionsGetSessionHistory failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -179,7 +171,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.sessions.getTranscodeSessions(); - // Handle the result console.log(result); } @@ -202,15 +193,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await sessionsGetTranscodeSessions(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("sessionsGetTranscodeSessions failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -252,7 +240,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.sessions.stopTranscodeSession("zz7llzqlx8w9vnrsbnwhbmep"); - // Handle the result console.log(result); } @@ -275,15 +262,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await sessionsStopTranscodeSession(plexAPI, "zz7llzqlx8w9vnrsbnwhbmep"); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("sessionsStopTranscodeSession failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/statistics/README.md b/docs/sdks/statistics/README.md index 92c7c938..68a309e4 100644 --- a/docs/sdks/statistics/README.md +++ b/docs/sdks/statistics/README.md @@ -28,7 +28,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.statistics.getStatistics(4); - // Handle the result console.log(result); } @@ -51,15 +50,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await statisticsGetStatistics(plexAPI, 4); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("statisticsGetStatistics failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -102,7 +98,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.statistics.getResourcesStatistics(4); - // Handle the result console.log(result); } @@ -125,15 +120,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await statisticsGetResourcesStatistics(plexAPI, 4); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("statisticsGetResourcesStatistics failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -176,7 +168,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.statistics.getBandwidthStatistics(4); - // Handle the result console.log(result); } @@ -199,15 +190,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await statisticsGetBandwidthStatistics(plexAPI, 4); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("statisticsGetBandwidthStatistics failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/updater/README.md b/docs/sdks/updater/README.md index 25491172..0e59109c 100644 --- a/docs/sdks/updater/README.md +++ b/docs/sdks/updater/README.md @@ -29,7 +29,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.updater.getUpdateStatus(); - // Handle the result console.log(result); } @@ -52,15 +51,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await updaterGetUpdateStatus(plexAPI); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("updaterGetUpdateStatus failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -103,7 +99,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.updater.checkForUpdates(Download.One); - // Handle the result console.log(result); } @@ -127,15 +122,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await updaterCheckForUpdates(plexAPI, Download.One); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("updaterCheckForUpdates failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -180,7 +172,6 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.updater.applyUpdates(Tonight.One, Skip.One); - // Handle the result console.log(result); } @@ -204,15 +195,12 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await updaterApplyUpdates(plexAPI, Tonight.One, Skip.One); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("updaterApplyUpdates failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/users/README.md b/docs/sdks/users/README.md index b4ebdffb..6af08e23 100644 --- a/docs/sdks/users/README.md +++ b/docs/sdks/users/README.md @@ -35,7 +35,6 @@ async function run() { xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -70,15 +69,12 @@ async function run() { platformVersion: "4.3 build 1057", xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("usersGetUsers failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/video/README.md b/docs/sdks/video/README.md index 3862579e..35a50453 100644 --- a/docs/sdks/video/README.md +++ b/docs/sdks/video/README.md @@ -39,7 +39,6 @@ async function run() { row: 1, }); - // Handle the result console.log(result); } @@ -74,15 +73,12 @@ async function run() { playBackTime: 2000, row: 1, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("videoGetTimeline failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); @@ -142,7 +138,6 @@ async function run() { autoAdjustQuality: 0, }); - // Handle the result console.log(result); } @@ -182,15 +177,12 @@ async function run() { addDebugOverlay: 0, autoAdjustQuality: 0, }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("videoStartUniversalTranscode failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/docs/sdks/watchlist/README.md b/docs/sdks/watchlist/README.md index 497de0fc..62b0a7fa 100644 --- a/docs/sdks/watchlist/README.md +++ b/docs/sdks/watchlist/README.md @@ -26,11 +26,10 @@ const plexAPI = new PlexAPI({ async function run() { const result = await plexAPI.watchlist.getWatchList({ - filter: Filter.Available, + filter: Filter.Released, xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - // Handle the result console.log(result); } @@ -54,18 +53,15 @@ const plexAPI = new PlexAPICore({ async function run() { const res = await watchlistGetWatchList(plexAPI, { - filter: Filter.Available, + filter: Filter.Released, xPlexToken: "CV5xoxjTpFKUzBTShsaf", }); - - if (!res.ok) { - throw res.error; + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("watchlistGetWatchList failed:", res.error); } - - const { value: result } = res; - - // Handle the result - console.log(result); } run(); diff --git a/jsr.json b/jsr.json index 6e4061e4..800e06c0 100644 --- a/jsr.json +++ b/jsr.json @@ -2,7 +2,7 @@ { "name": "@lukehagar/plexjs", - "version": "0.37.2", + "version": "0.38.0", "exports": { ".": "./src/index.ts", "./sdk/models/errors": "./src/sdk/models/errors/index.ts", diff --git a/package-lock.json b/package-lock.json index 28762d05..fdaa634b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,19 @@ { "name": "@lukehagar/plexjs", - "version": "0.37.2", + "version": "0.38.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@lukehagar/plexjs", - "version": "0.37.2", + "version": "0.38.0", "devDependencies": { "@eslint/js": "^9.19.0", "eslint": "^9.19.0", "globals": "^15.14.0", "typescript": "^5.4.5", "typescript-eslint": "^8.22.0", - "zod": "^3.23.4" + "zod": "^3.25.17" }, "peerDependencies": { "zod": ">= 3" @@ -1805,10 +1805,11 @@ } }, "node_modules/zod": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.4.tgz", - "integrity": "sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==", + "version": "3.25.50", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.50.tgz", + "integrity": "sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -2980,9 +2981,9 @@ "dev": true }, "zod": { - "version": "3.23.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.4.tgz", - "integrity": "sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==", + "version": "3.25.50", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.50.tgz", + "integrity": "sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==", "dev": true } } diff --git a/package.json b/package.json index c74dcbd1..3c74a99c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lukehagar/plexjs", - "version": "0.37.2", + "version": "0.38.0", "author": "LukeHagar", "main": "./index.js", "sideEffects": false, @@ -23,7 +23,7 @@ "globals": "^15.14.0", "typescript": "^5.4.5", "typescript-eslint": "^8.22.0", - "zod": "^3.23.4" + "zod": "^3.25.17" }, "dependencies": { diff --git a/src/funcs/activitiesCancelServerActivities.ts b/src/funcs/activitiesCancelServerActivities.ts index cdb59ad5..774e5333 100644 --- a/src/funcs/activitiesCancelServerActivities.ts +++ b/src/funcs/activitiesCancelServerActivities.ts @@ -110,6 +110,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "cancelServerActivities", oAuth2Scopes: [], @@ -130,6 +131,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/activitiesGetServerActivities.ts b/src/funcs/activitiesGetServerActivities.ts index 7405cb4f..c118c784 100644 --- a/src/funcs/activitiesGetServerActivities.ts +++ b/src/funcs/activitiesGetServerActivities.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getServerActivities", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/authenticationGetSourceConnectionInformation.ts b/src/funcs/authenticationGetSourceConnectionInformation.ts index 0c5914ac..07c2bef2 100644 --- a/src/funcs/authenticationGetSourceConnectionInformation.ts +++ b/src/funcs/authenticationGetSourceConnectionInformation.ts @@ -110,6 +110,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getSourceConnectionInformation", oAuth2Scopes: [], @@ -131,6 +132,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/authenticationGetTokenDetails.ts b/src/funcs/authenticationGetTokenDetails.ts index a6a75c0b..5a791bb0 100644 --- a/src/funcs/authenticationGetTokenDetails.ts +++ b/src/funcs/authenticationGetTokenDetails.ts @@ -86,6 +86,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "getTokenDetails", oAuth2Scopes: [], @@ -105,6 +106,7 @@ async function $do( baseURL: baseURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/authenticationGetTransientToken.ts b/src/funcs/authenticationGetTransientToken.ts index 9927c7d1..5dccd802 100644 --- a/src/funcs/authenticationGetTransientToken.ts +++ b/src/funcs/authenticationGetTransientToken.ts @@ -111,6 +111,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getTransientToken", oAuth2Scopes: [], @@ -132,6 +133,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/authenticationPostUsersSignInData.ts b/src/funcs/authenticationPostUsersSignInData.ts index 94c5bd9c..1f51226c 100644 --- a/src/funcs/authenticationPostUsersSignInData.ts +++ b/src/funcs/authenticationPostUsersSignInData.ts @@ -125,6 +125,7 @@ async function $do( })); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "post-users-sign-in-data", oAuth2Scopes: [], @@ -144,6 +145,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/butlerGetButlerTasks.ts b/src/funcs/butlerGetButlerTasks.ts index b441acd3..2a9f0670 100644 --- a/src/funcs/butlerGetButlerTasks.ts +++ b/src/funcs/butlerGetButlerTasks.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getButlerTasks", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/butlerStartAllTasks.ts b/src/funcs/butlerStartAllTasks.ts index 2e0ae0b5..baf644ee 100644 --- a/src/funcs/butlerStartAllTasks.ts +++ b/src/funcs/butlerStartAllTasks.ts @@ -86,6 +86,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "startAllTasks", oAuth2Scopes: [], @@ -105,6 +106,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/butlerStartTask.ts b/src/funcs/butlerStartTask.ts index b87c544f..71f304d2 100644 --- a/src/funcs/butlerStartTask.ts +++ b/src/funcs/butlerStartTask.ts @@ -113,6 +113,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "startTask", oAuth2Scopes: [], @@ -133,6 +134,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/butlerStopAllTasks.ts b/src/funcs/butlerStopAllTasks.ts index f2a77cfa..734e577a 100644 --- a/src/funcs/butlerStopAllTasks.ts +++ b/src/funcs/butlerStopAllTasks.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "stopAllTasks", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/butlerStopTask.ts b/src/funcs/butlerStopTask.ts index f311fd7f..fdb65a7a 100644 --- a/src/funcs/butlerStopTask.ts +++ b/src/funcs/butlerStopTask.ts @@ -109,6 +109,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "stopTask", oAuth2Scopes: [], @@ -129,6 +130,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/hubsGetGlobalHubs.ts b/src/funcs/hubsGetGlobalHubs.ts index 6a577a27..2c74d87d 100644 --- a/src/funcs/hubsGetGlobalHubs.ts +++ b/src/funcs/hubsGetGlobalHubs.ts @@ -111,6 +111,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getGlobalHubs", oAuth2Scopes: [], @@ -132,6 +133,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/hubsGetLibraryHubs.ts b/src/funcs/hubsGetLibraryHubs.ts index 811e1fe4..b56a0ecd 100644 --- a/src/funcs/hubsGetLibraryHubs.ts +++ b/src/funcs/hubsGetLibraryHubs.ts @@ -122,6 +122,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getLibraryHubs", oAuth2Scopes: [], @@ -143,6 +144,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/hubsGetRecentlyAdded.ts b/src/funcs/hubsGetRecentlyAdded.ts index 15af03b1..dcf9aa85 100644 --- a/src/funcs/hubsGetRecentlyAdded.ts +++ b/src/funcs/hubsGetRecentlyAdded.ts @@ -103,6 +103,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-recently-added", oAuth2Scopes: [], @@ -124,6 +125,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryDeleteLibrary.ts b/src/funcs/libraryDeleteLibrary.ts index 7af9e1e6..456a1828 100644 --- a/src/funcs/libraryDeleteLibrary.ts +++ b/src/funcs/libraryDeleteLibrary.ts @@ -109,6 +109,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "deleteLibrary", oAuth2Scopes: [], @@ -129,6 +130,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetActorsLibrary.ts b/src/funcs/libraryGetActorsLibrary.ts index 289b59f7..10291125 100644 --- a/src/funcs/libraryGetActorsLibrary.ts +++ b/src/funcs/libraryGetActorsLibrary.ts @@ -117,6 +117,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-actors-library", oAuth2Scopes: [], @@ -138,6 +139,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetAllLibraries.ts b/src/funcs/libraryGetAllLibraries.ts index 07a16ea3..7a7ae7a6 100644 --- a/src/funcs/libraryGetAllLibraries.ts +++ b/src/funcs/libraryGetAllLibraries.ts @@ -87,6 +87,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-all-libraries", oAuth2Scopes: [], @@ -106,6 +107,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetCountriesLibrary.ts b/src/funcs/libraryGetCountriesLibrary.ts index c4b6bbce..abecfc92 100644 --- a/src/funcs/libraryGetCountriesLibrary.ts +++ b/src/funcs/libraryGetCountriesLibrary.ts @@ -118,6 +118,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-countries-library", oAuth2Scopes: [], @@ -139,6 +140,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetFileHash.ts b/src/funcs/libraryGetFileHash.ts index 31476429..24e2c89d 100644 --- a/src/funcs/libraryGetFileHash.ts +++ b/src/funcs/libraryGetFileHash.ts @@ -111,6 +111,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getFileHash", oAuth2Scopes: [], @@ -132,6 +133,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetGenresLibrary.ts b/src/funcs/libraryGetGenresLibrary.ts index 549e4cd0..63121b08 100644 --- a/src/funcs/libraryGetGenresLibrary.ts +++ b/src/funcs/libraryGetGenresLibrary.ts @@ -117,6 +117,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-genres-library", oAuth2Scopes: [], @@ -138,6 +139,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetLibraryDetails.ts b/src/funcs/libraryGetLibraryDetails.ts index ddb299f1..54a0e670 100644 --- a/src/funcs/libraryGetLibraryDetails.ts +++ b/src/funcs/libraryGetLibraryDetails.ts @@ -155,6 +155,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-library-details", oAuth2Scopes: [], @@ -176,6 +177,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetLibraryItems.ts b/src/funcs/libraryGetLibraryItems.ts index 717f431c..df654d22 100644 --- a/src/funcs/libraryGetLibraryItems.ts +++ b/src/funcs/libraryGetLibraryItems.ts @@ -137,6 +137,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-library-items", oAuth2Scopes: [], @@ -158,6 +159,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetAllMediaLibrary.ts b/src/funcs/libraryGetLibrarySectionsAll.ts similarity index 81% rename from src/funcs/libraryGetAllMediaLibrary.ts rename to src/funcs/libraryGetLibrarySectionsAll.ts index 65a1af49..d263d46e 100644 --- a/src/funcs/libraryGetAllMediaLibrary.ts +++ b/src/funcs/libraryGetLibrarySectionsAll.ts @@ -25,20 +25,20 @@ import { APICall, APIPromise } from "../sdk/types/async.js"; import { Result } from "../sdk/types/fp.js"; /** - * Get all media of library + * Get Library section media by tag ALL * * @remarks * Retrieves a list of all general media data for this library. */ -export function libraryGetAllMediaLibrary( +export function libraryGetLibrarySectionsAll( client: PlexAPICore, - request: operations.GetAllMediaLibraryRequest, + request: operations.GetLibrarySectionsAllRequest, options?: RequestOptions, ): APIPromise< Result< - operations.GetAllMediaLibraryResponse, - | errors.GetAllMediaLibraryBadRequest - | errors.GetAllMediaLibraryUnauthorized + operations.GetLibrarySectionsAllResponse, + | errors.GetLibrarySectionsAllBadRequest + | errors.GetLibrarySectionsAllUnauthorized | SDKError | SDKValidationError | UnexpectedClientError @@ -57,14 +57,14 @@ export function libraryGetAllMediaLibrary( async function $do( client: PlexAPICore, - request: operations.GetAllMediaLibraryRequest, + request: operations.GetLibrarySectionsAllRequest, options?: RequestOptions, ): Promise< [ Result< - operations.GetAllMediaLibraryResponse, - | errors.GetAllMediaLibraryBadRequest - | errors.GetAllMediaLibraryUnauthorized + operations.GetLibrarySectionsAllResponse, + | errors.GetLibrarySectionsAllBadRequest + | errors.GetLibrarySectionsAllUnauthorized | SDKError | SDKValidationError | UnexpectedClientError @@ -78,7 +78,8 @@ async function $do( > { const parsed = safeParse( request, - (value) => operations.GetAllMediaLibraryRequest$outboundSchema.parse(value), + (value) => + operations.GetLibrarySectionsAllRequest$outboundSchema.parse(value), "Input validation failed", ); if (!parsed.ok) { @@ -116,8 +117,9 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", - operationID: "get-all-media-library", + operationID: "get-library-sections-all", oAuth2Scopes: [], resolvedSecurity: requestSecurity, @@ -137,6 +139,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { @@ -164,9 +167,9 @@ async function $do( }; const [result] = await M.match< - operations.GetAllMediaLibraryResponse, - | errors.GetAllMediaLibraryBadRequest - | errors.GetAllMediaLibraryUnauthorized + operations.GetLibrarySectionsAllResponse, + | errors.GetLibrarySectionsAllBadRequest + | errors.GetLibrarySectionsAllUnauthorized | SDKError | SDKValidationError | UnexpectedClientError @@ -175,11 +178,11 @@ async function $do( | RequestTimeoutError | ConnectionError >( - M.json(200, operations.GetAllMediaLibraryResponse$inboundSchema, { + M.json(200, operations.GetLibrarySectionsAllResponse$inboundSchema, { key: "object", }), - M.jsonErr(400, errors.GetAllMediaLibraryBadRequest$inboundSchema), - M.jsonErr(401, errors.GetAllMediaLibraryUnauthorized$inboundSchema), + M.jsonErr(400, errors.GetLibrarySectionsAllBadRequest$inboundSchema), + M.jsonErr(401, errors.GetLibrarySectionsAllUnauthorized$inboundSchema), M.fail([404, "4XX"]), M.fail("5XX"), )(response, { extraFields: responseFields }); diff --git a/src/funcs/libraryGetMediaArts.ts b/src/funcs/libraryGetMediaArts.ts index 56ea2e8d..a532ad51 100644 --- a/src/funcs/libraryGetMediaArts.ts +++ b/src/funcs/libraryGetMediaArts.ts @@ -104,6 +104,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-media-arts", oAuth2Scopes: [], @@ -124,6 +125,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetMediaMetaData.ts b/src/funcs/libraryGetMediaMetaData.ts index a00c97d3..520bcc97 100644 --- a/src/funcs/libraryGetMediaMetaData.ts +++ b/src/funcs/libraryGetMediaMetaData.ts @@ -28,7 +28,8 @@ import { Result } from "../sdk/types/fp.js"; * Get Media Metadata * * @remarks - * This endpoint will return all the (meta)data of a library item specified with by the ratingKey. + * This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. + * Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617"). */ export function libraryGetMediaMetaData( client: PlexAPICore, @@ -121,6 +122,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-media-meta-data", oAuth2Scopes: [], @@ -142,6 +144,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetMediaPosters.ts b/src/funcs/libraryGetMediaPosters.ts index 24d9dd0f..4fa00784 100644 --- a/src/funcs/libraryGetMediaPosters.ts +++ b/src/funcs/libraryGetMediaPosters.ts @@ -104,6 +104,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-media-posters", oAuth2Scopes: [], @@ -124,6 +125,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetMetadataChildren.ts b/src/funcs/libraryGetMetadataChildren.ts index 3c67a4ee..f87d7447 100644 --- a/src/funcs/libraryGetMetadataChildren.ts +++ b/src/funcs/libraryGetMetadataChildren.ts @@ -118,6 +118,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getMetadataChildren", oAuth2Scopes: [], @@ -139,6 +140,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetRecentlyAddedLibrary.ts b/src/funcs/libraryGetRecentlyAddedLibrary.ts index 9d0d9994..a10d928b 100644 --- a/src/funcs/libraryGetRecentlyAddedLibrary.ts +++ b/src/funcs/libraryGetRecentlyAddedLibrary.ts @@ -109,6 +109,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-recently-added-library", oAuth2Scopes: [], @@ -130,6 +131,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetRefreshLibraryMetadata.ts b/src/funcs/libraryGetRefreshLibraryMetadata.ts index e4972e52..e5129919 100644 --- a/src/funcs/libraryGetRefreshLibraryMetadata.ts +++ b/src/funcs/libraryGetRefreshLibraryMetadata.ts @@ -118,6 +118,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-refresh-library-metadata", oAuth2Scopes: [], @@ -139,6 +140,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetSearchAllLibraries.ts b/src/funcs/libraryGetSearchAllLibraries.ts index 96b45d05..6dc245b1 100644 --- a/src/funcs/libraryGetSearchAllLibraries.ts +++ b/src/funcs/libraryGetSearchAllLibraries.ts @@ -116,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-search-all-libraries", oAuth2Scopes: [], @@ -137,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetSearchLibrary.ts b/src/funcs/libraryGetSearchLibrary.ts index ad5eee0b..b7432417 100644 --- a/src/funcs/libraryGetSearchLibrary.ts +++ b/src/funcs/libraryGetSearchLibrary.ts @@ -134,6 +134,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-search-library", oAuth2Scopes: [], @@ -155,6 +156,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryGetTopWatchedContent.ts b/src/funcs/libraryGetTopWatchedContent.ts index b1eff377..2144de2a 100644 --- a/src/funcs/libraryGetTopWatchedContent.ts +++ b/src/funcs/libraryGetTopWatchedContent.ts @@ -33,7 +33,9 @@ import { Result } from "../sdk/types/fp.js"; export function libraryGetTopWatchedContent( client: PlexAPICore, type: operations.GetTopWatchedContentQueryParamTypeOpen, - includeGuids?: number | undefined, + includeGuids?: + | operations.GetTopWatchedContentQueryParamIncludeGuids + | undefined, options?: RequestOptions, ): APIPromise< Result< @@ -60,7 +62,9 @@ export function libraryGetTopWatchedContent( async function $do( client: PlexAPICore, type: operations.GetTopWatchedContentQueryParamTypeOpen, - includeGuids?: number | undefined, + includeGuids?: + | operations.GetTopWatchedContentQueryParamIncludeGuids + | undefined, options?: RequestOptions, ): Promise< [ @@ -112,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getTopWatchedContent", oAuth2Scopes: [], @@ -133,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryPostMediaArts.ts b/src/funcs/libraryPostMediaArts.ts index 445f2123..bc38930d 100644 --- a/src/funcs/libraryPostMediaArts.ts +++ b/src/funcs/libraryPostMediaArts.ts @@ -127,6 +127,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "post-media-arts", oAuth2Scopes: [], @@ -148,6 +149,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/libraryPostMediaPoster.ts b/src/funcs/libraryPostMediaPoster.ts index ff9f4d09..e9905bfa 100644 --- a/src/funcs/libraryPostMediaPoster.ts +++ b/src/funcs/libraryPostMediaPoster.ts @@ -127,6 +127,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "post-media-poster", oAuth2Scopes: [], @@ -148,6 +149,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/logEnablePaperTrail.ts b/src/funcs/logEnablePaperTrail.ts index 3f327afb..82db2f9f 100644 --- a/src/funcs/logEnablePaperTrail.ts +++ b/src/funcs/logEnablePaperTrail.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "enablePaperTrail", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/logLogLine.ts b/src/funcs/logLogLine.ts index 81ad32ee..3c14b9f2 100644 --- a/src/funcs/logLogLine.ts +++ b/src/funcs/logLogLine.ts @@ -116,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "logLine", oAuth2Scopes: [], @@ -137,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/logLogMultiLine.ts b/src/funcs/logLogMultiLine.ts index 77a5e223..05cbe1b6 100644 --- a/src/funcs/logLogMultiLine.ts +++ b/src/funcs/logLogMultiLine.ts @@ -119,6 +119,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "logMultiLine", oAuth2Scopes: [], @@ -139,6 +140,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/mediaGetBannerImage.ts b/src/funcs/mediaGetBannerImage.ts index 64d3354c..174d04de 100644 --- a/src/funcs/mediaGetBannerImage.ts +++ b/src/funcs/mediaGetBannerImage.ts @@ -116,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-banner-image", oAuth2Scopes: [], @@ -137,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/mediaGetThumbImage.ts b/src/funcs/mediaGetThumbImage.ts index dc0246dc..911a9139 100644 --- a/src/funcs/mediaGetThumbImage.ts +++ b/src/funcs/mediaGetThumbImage.ts @@ -116,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-thumb-image", oAuth2Scopes: [], @@ -137,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/mediaMarkPlayed.ts b/src/funcs/mediaMarkPlayed.ts index 357368b4..18185afd 100644 --- a/src/funcs/mediaMarkPlayed.ts +++ b/src/funcs/mediaMarkPlayed.ts @@ -106,6 +106,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "markPlayed", oAuth2Scopes: [], @@ -127,6 +128,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/mediaMarkUnplayed.ts b/src/funcs/mediaMarkUnplayed.ts index 8f74c413..a3d84a8e 100644 --- a/src/funcs/mediaMarkUnplayed.ts +++ b/src/funcs/mediaMarkUnplayed.ts @@ -106,6 +106,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "markUnplayed", oAuth2Scopes: [], @@ -127,6 +128,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/mediaUpdatePlayProgress.ts b/src/funcs/mediaUpdatePlayProgress.ts index 0c6c8a82..5969c4f7 100644 --- a/src/funcs/mediaUpdatePlayProgress.ts +++ b/src/funcs/mediaUpdatePlayProgress.ts @@ -116,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "updatePlayProgress", oAuth2Scopes: [], @@ -137,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsAddPlaylistContents.ts b/src/funcs/playlistsAddPlaylistContents.ts index 17439592..bde9490f 100644 --- a/src/funcs/playlistsAddPlaylistContents.ts +++ b/src/funcs/playlistsAddPlaylistContents.ts @@ -124,6 +124,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "addPlaylistContents", oAuth2Scopes: [], @@ -145,6 +146,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsClearPlaylistContents.ts b/src/funcs/playlistsClearPlaylistContents.ts index 5e580f8a..8449d6cf 100644 --- a/src/funcs/playlistsClearPlaylistContents.ts +++ b/src/funcs/playlistsClearPlaylistContents.ts @@ -110,6 +110,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "clearPlaylistContents", oAuth2Scopes: [], @@ -130,6 +131,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsCreatePlaylist.ts b/src/funcs/playlistsCreatePlaylist.ts index dade7ab1..f08d3f8b 100644 --- a/src/funcs/playlistsCreatePlaylist.ts +++ b/src/funcs/playlistsCreatePlaylist.ts @@ -108,6 +108,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "createPlaylist", oAuth2Scopes: [], @@ -129,6 +130,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsDeletePlaylist.ts b/src/funcs/playlistsDeletePlaylist.ts index 391ebc44..b58754cd 100644 --- a/src/funcs/playlistsDeletePlaylist.ts +++ b/src/funcs/playlistsDeletePlaylist.ts @@ -109,6 +109,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "deletePlaylist", oAuth2Scopes: [], @@ -129,6 +130,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsGetPlaylist.ts b/src/funcs/playlistsGetPlaylist.ts index 86c3752c..44e7f22c 100644 --- a/src/funcs/playlistsGetPlaylist.ts +++ b/src/funcs/playlistsGetPlaylist.ts @@ -110,6 +110,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getPlaylist", oAuth2Scopes: [], @@ -130,6 +131,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsGetPlaylistContents.ts b/src/funcs/playlistsGetPlaylistContents.ts index 4d1bffa3..6a5c3c79 100644 --- a/src/funcs/playlistsGetPlaylistContents.ts +++ b/src/funcs/playlistsGetPlaylistContents.ts @@ -121,6 +121,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getPlaylistContents", oAuth2Scopes: [], @@ -142,6 +143,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsGetPlaylists.ts b/src/funcs/playlistsGetPlaylists.ts index 6a7df02b..a7388d1b 100644 --- a/src/funcs/playlistsGetPlaylists.ts +++ b/src/funcs/playlistsGetPlaylists.ts @@ -111,6 +111,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getPlaylists", oAuth2Scopes: [], @@ -132,6 +133,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsUpdatePlaylist.ts b/src/funcs/playlistsUpdatePlaylist.ts index dc87823c..6a877524 100644 --- a/src/funcs/playlistsUpdatePlaylist.ts +++ b/src/funcs/playlistsUpdatePlaylist.ts @@ -122,6 +122,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "updatePlaylist", oAuth2Scopes: [], @@ -143,6 +144,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/playlistsUploadPlaylist.ts b/src/funcs/playlistsUploadPlaylist.ts index 05629eee..0924db31 100644 --- a/src/funcs/playlistsUploadPlaylist.ts +++ b/src/funcs/playlistsUploadPlaylist.ts @@ -116,6 +116,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "uploadPlaylist", oAuth2Scopes: [], @@ -137,6 +138,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetCompanionsData.ts b/src/funcs/plexGetCompanionsData.ts index a2a2a941..011031b5 100644 --- a/src/funcs/plexGetCompanionsData.ts +++ b/src/funcs/plexGetCompanionsData.ts @@ -88,6 +88,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "getCompanionsData", oAuth2Scopes: [], @@ -107,6 +108,7 @@ async function $do( baseURL: baseURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetGeoData.ts b/src/funcs/plexGetGeoData.ts index 6a7dc942..62ef4f00 100644 --- a/src/funcs/plexGetGeoData.ts +++ b/src/funcs/plexGetGeoData.ts @@ -81,6 +81,7 @@ async function $do( })); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "getGeoData", oAuth2Scopes: [], @@ -99,6 +100,7 @@ async function $do( baseURL: baseURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetHomeData.ts b/src/funcs/plexGetHomeData.ts index 23965d53..59b23a4c 100644 --- a/src/funcs/plexGetHomeData.ts +++ b/src/funcs/plexGetHomeData.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getHomeData", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetPin.ts b/src/funcs/plexGetPin.ts index d3205cdf..9c9bd032 100644 --- a/src/funcs/plexGetPin.ts +++ b/src/funcs/plexGetPin.ts @@ -120,6 +120,7 @@ async function $do( })); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "getPin", oAuth2Scopes: [], @@ -140,6 +141,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetServerResources.ts b/src/funcs/plexGetServerResources.ts index 2528e839..c9bd0c87 100644 --- a/src/funcs/plexGetServerResources.ts +++ b/src/funcs/plexGetServerResources.ts @@ -131,6 +131,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "get-server-resources", oAuth2Scopes: [], @@ -152,6 +153,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetTokenByPinId.ts b/src/funcs/plexGetTokenByPinId.ts index 5e3ffac2..1b51fecc 100644 --- a/src/funcs/plexGetTokenByPinId.ts +++ b/src/funcs/plexGetTokenByPinId.ts @@ -125,6 +125,7 @@ async function $do( })); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "getTokenByPinId", oAuth2Scopes: [], @@ -144,6 +145,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/plexGetUserFriends.ts b/src/funcs/plexGetUserFriends.ts index 9ba7369d..7f9dabec 100644 --- a/src/funcs/plexGetUserFriends.ts +++ b/src/funcs/plexGetUserFriends.ts @@ -86,6 +86,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "getUserFriends", oAuth2Scopes: [], @@ -105,6 +106,7 @@ async function $do( baseURL: baseURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/searchGetSearchResults.ts b/src/funcs/searchGetSearchResults.ts index caaa5af2..17c0e3fa 100644 --- a/src/funcs/searchGetSearchResults.ts +++ b/src/funcs/searchGetSearchResults.ts @@ -106,6 +106,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getSearchResults", oAuth2Scopes: [], @@ -127,6 +128,7 @@ async function $do( headers: headers, query: query$, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/searchPerformSearch.ts b/src/funcs/searchPerformSearch.ts index ff93e7b1..babd92e5 100644 --- a/src/funcs/searchPerformSearch.ts +++ b/src/funcs/searchPerformSearch.ts @@ -127,6 +127,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "performSearch", oAuth2Scopes: [], @@ -148,6 +149,7 @@ async function $do( headers: headers, query: query$, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/searchPerformVoiceSearch.ts b/src/funcs/searchPerformVoiceSearch.ts index 3d497611..a9721f4e 100644 --- a/src/funcs/searchPerformVoiceSearch.ts +++ b/src/funcs/searchPerformVoiceSearch.ts @@ -119,6 +119,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "performVoiceSearch", oAuth2Scopes: [], @@ -140,6 +141,7 @@ async function $do( headers: headers, query: query$, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetAvailableClients.ts b/src/funcs/serverGetAvailableClients.ts index d5b0faff..0db85f5c 100644 --- a/src/funcs/serverGetAvailableClients.ts +++ b/src/funcs/serverGetAvailableClients.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getAvailableClients", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetDevices.ts b/src/funcs/serverGetDevices.ts index 78e3b574..eeb08394 100644 --- a/src/funcs/serverGetDevices.ts +++ b/src/funcs/serverGetDevices.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getDevices", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetMediaProviders.ts b/src/funcs/serverGetMediaProviders.ts index fc27cb82..92dd12a9 100644 --- a/src/funcs/serverGetMediaProviders.ts +++ b/src/funcs/serverGetMediaProviders.ts @@ -106,6 +106,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-media-providers", oAuth2Scopes: [], @@ -126,6 +127,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetMyPlexAccount.ts b/src/funcs/serverGetMyPlexAccount.ts index ea038c81..3cfbe328 100644 --- a/src/funcs/serverGetMyPlexAccount.ts +++ b/src/funcs/serverGetMyPlexAccount.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getMyPlexAccount", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetResizedPhoto.ts b/src/funcs/serverGetResizedPhoto.ts index 7cfda5d6..359696ef 100644 --- a/src/funcs/serverGetResizedPhoto.ts +++ b/src/funcs/serverGetResizedPhoto.ts @@ -108,6 +108,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getResizedPhoto", oAuth2Scopes: [], @@ -129,6 +130,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetServerCapabilities.ts b/src/funcs/serverGetServerCapabilities.ts index 198dc6ef..a2e62184 100644 --- a/src/funcs/serverGetServerCapabilities.ts +++ b/src/funcs/serverGetServerCapabilities.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getServerCapabilities", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetServerIdentity.ts b/src/funcs/serverGetServerIdentity.ts index 86463d71..4ef6ebff 100644 --- a/src/funcs/serverGetServerIdentity.ts +++ b/src/funcs/serverGetServerIdentity.ts @@ -75,6 +75,7 @@ async function $do( })); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "get-server-identity", oAuth2Scopes: [], @@ -93,6 +94,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetServerList.ts b/src/funcs/serverGetServerList.ts index 9a618606..10d59b40 100644 --- a/src/funcs/serverGetServerList.ts +++ b/src/funcs/serverGetServerList.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getServerList", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/serverGetServerPreferences.ts b/src/funcs/serverGetServerPreferences.ts index 14699fc9..9ab8b4cf 100644 --- a/src/funcs/serverGetServerPreferences.ts +++ b/src/funcs/serverGetServerPreferences.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getServerPreferences", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/sessionsGetSessionHistory.ts b/src/funcs/sessionsGetSessionHistory.ts index bf44996a..50897a20 100644 --- a/src/funcs/sessionsGetSessionHistory.ts +++ b/src/funcs/sessionsGetSessionHistory.ts @@ -121,6 +121,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getSessionHistory", oAuth2Scopes: [], @@ -142,6 +143,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/sessionsGetSessions.ts b/src/funcs/sessionsGetSessions.ts index bd8430ba..f3112fe2 100644 --- a/src/funcs/sessionsGetSessions.ts +++ b/src/funcs/sessionsGetSessions.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getSessions", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/sessionsGetTranscodeSessions.ts b/src/funcs/sessionsGetTranscodeSessions.ts index ef2cd51f..6327fe16 100644 --- a/src/funcs/sessionsGetTranscodeSessions.ts +++ b/src/funcs/sessionsGetTranscodeSessions.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getTranscodeSessions", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/sessionsStopTranscodeSession.ts b/src/funcs/sessionsStopTranscodeSession.ts index 7a6098d7..92b69783 100644 --- a/src/funcs/sessionsStopTranscodeSession.ts +++ b/src/funcs/sessionsStopTranscodeSession.ts @@ -110,6 +110,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "stopTranscodeSession", oAuth2Scopes: [], @@ -130,6 +131,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/statisticsGetBandwidthStatistics.ts b/src/funcs/statisticsGetBandwidthStatistics.ts index e0b423c8..0200cea1 100644 --- a/src/funcs/statisticsGetBandwidthStatistics.ts +++ b/src/funcs/statisticsGetBandwidthStatistics.ts @@ -107,6 +107,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getBandwidthStatistics", oAuth2Scopes: [], @@ -128,6 +129,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/statisticsGetResourcesStatistics.ts b/src/funcs/statisticsGetResourcesStatistics.ts index f491848e..f9765f0d 100644 --- a/src/funcs/statisticsGetResourcesStatistics.ts +++ b/src/funcs/statisticsGetResourcesStatistics.ts @@ -107,6 +107,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getResourcesStatistics", oAuth2Scopes: [], @@ -128,6 +129,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/statisticsGetStatistics.ts b/src/funcs/statisticsGetStatistics.ts index 7007e28b..7e122eb8 100644 --- a/src/funcs/statisticsGetStatistics.ts +++ b/src/funcs/statisticsGetStatistics.ts @@ -106,6 +106,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getStatistics", oAuth2Scopes: [], @@ -127,6 +128,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/updaterApplyUpdates.ts b/src/funcs/updaterApplyUpdates.ts index da4a4636..520e344d 100644 --- a/src/funcs/updaterApplyUpdates.ts +++ b/src/funcs/updaterApplyUpdates.ts @@ -111,6 +111,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "applyUpdates", oAuth2Scopes: [], @@ -132,6 +133,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/updaterCheckForUpdates.ts b/src/funcs/updaterCheckForUpdates.ts index 0363e6fc..c936735d 100644 --- a/src/funcs/updaterCheckForUpdates.ts +++ b/src/funcs/updaterCheckForUpdates.ts @@ -106,6 +106,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "checkForUpdates", oAuth2Scopes: [], @@ -127,6 +128,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/updaterGetUpdateStatus.ts b/src/funcs/updaterGetUpdateStatus.ts index 3091841a..d6e39cb2 100644 --- a/src/funcs/updaterGetUpdateStatus.ts +++ b/src/funcs/updaterGetUpdateStatus.ts @@ -82,6 +82,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getUpdateStatus", oAuth2Scopes: [], @@ -101,6 +102,7 @@ async function $do( baseURL: options?.serverURL, path: path, headers: headers, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/usersGetUsers.ts b/src/funcs/usersGetUsers.ts index ea63437d..ccb2caab 100644 --- a/src/funcs/usersGetUsers.ts +++ b/src/funcs/usersGetUsers.ts @@ -155,6 +155,7 @@ async function $do( })); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "get-users", oAuth2Scopes: [], @@ -174,6 +175,7 @@ async function $do( path: path, headers: headers, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/videoGetTimeline.ts b/src/funcs/videoGetTimeline.ts index a37b0c78..946e5ac3 100644 --- a/src/funcs/videoGetTimeline.ts +++ b/src/funcs/videoGetTimeline.ts @@ -111,6 +111,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "getTimeline", oAuth2Scopes: [], @@ -132,6 +133,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/videoStartUniversalTranscode.ts b/src/funcs/videoStartUniversalTranscode.ts index 686be502..10c93a59 100644 --- a/src/funcs/videoStartUniversalTranscode.ts +++ b/src/funcs/videoStartUniversalTranscode.ts @@ -118,6 +118,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: options?.serverURL ?? client._baseURL ?? "", operationID: "startUniversalTranscode", oAuth2Scopes: [], @@ -139,6 +140,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/funcs/watchlistGetWatchList.ts b/src/funcs/watchlistGetWatchList.ts index 65c476e6..1bb2965a 100644 --- a/src/funcs/watchlistGetWatchList.ts +++ b/src/funcs/watchlistGetWatchList.ts @@ -123,6 +123,7 @@ async function $do( const requestSecurity = resolveGlobalSecurity(securityInput); const context = { + options: client._options, baseURL: baseURL ?? "", operationID: "get-watch-list", oAuth2Scopes: [], @@ -144,6 +145,7 @@ async function $do( headers: headers, query: query, body: body, + userAgent: client._options.userAgent, timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, }, options); if (!requestRes.ok) { diff --git a/src/hooks/types.ts b/src/hooks/types.ts index 1d56c6f2..8bfe4fe8 100644 --- a/src/hooks/types.ts +++ b/src/hooks/types.ts @@ -2,6 +2,7 @@ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ +import { SDKOptions } from "../lib/config.js"; import { HTTPClient, RequestInput } from "../lib/http.js"; import { RetryConfig } from "../lib/retries.js"; import { SecurityState } from "../lib/security.js"; @@ -13,6 +14,7 @@ export type HookContext = { securitySource?: any | (() => Promise); retryConfig: RetryConfig; resolvedSecurity: SecurityState | null; + options: SDKOptions; }; export type Awaitable = T | Promise; diff --git a/src/index.ts b/src/index.ts index 5ddc765e..dbcba164 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,4 +4,6 @@ export * from "./lib/config.js"; export * as files from "./lib/files.js"; +export { HTTPClient } from "./lib/http.js"; +export type { Fetcher, HTTPClientOptions } from "./lib/http.js"; export * from "./sdk/sdk.js"; diff --git a/src/lib/config.ts b/src/lib/config.ts index 193d39f0..53cce7fe 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -54,6 +54,10 @@ export type SDKOptions = { * Allows overriding the default server URL used by the SDK */ serverURL?: string | undefined; + /** + * Allows overriding the default user agent used by the SDK + */ + userAgent?: string | undefined; /** * Allows overriding the default retry config used by the SDK */ @@ -90,7 +94,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "0.0.3", - sdkVersion: "0.37.2", - genVersion: "2.597.9", - userAgent: "speakeasy-sdk/typescript 0.37.2 2.597.9 0.0.3 @lukehagar/plexjs", + sdkVersion: "0.38.0", + genVersion: "2.620.2", + userAgent: "speakeasy-sdk/typescript 0.38.0 2.620.2 0.0.3 @lukehagar/plexjs", } as const; diff --git a/src/lib/sdks.ts b/src/lib/sdks.ts index 7864f67c..9979e5f5 100644 --- a/src/lib/sdks.ts +++ b/src/lib/sdks.ts @@ -64,6 +64,7 @@ type RequestConfig = { headers?: HeadersInit; security?: SecurityState | null; uaHeader?: string; + userAgent?: string | undefined; timeoutMs?: number; }; @@ -95,19 +96,21 @@ export class ClientSDK { } else { this.#hooks = new SDKHooks(); } - this._options = { ...options, hooks: this.#hooks }; - const url = serverURLFromOptions(options); if (url) { url.pathname = url.pathname.replace(/\/+$/, "") + "/"; } + const { baseURL, client } = this.#hooks.sdkInit({ baseURL: url, client: options.httpClient || new HTTPClient(), }); this._baseURL = baseURL; this.#httpClient = client; - this.#logger = options.debugLogger; + + this._options = { ...options, hooks: this.#hooks }; + + this.#logger = this._options.debugLogger; } public _createRequest( @@ -180,7 +183,10 @@ export class ClientSDK { // Only set user agent header in non-browser-like environments since CORS // policy disallows setting it in browsers e.g. Chrome throws an error. if (!isBrowserLike) { - headers.set(conf.uaHeader ?? "user-agent", SDK_METADATA.userAgent); + headers.set( + conf.uaHeader ?? "user-agent", + conf.userAgent ?? SDK_METADATA.userAgent, + ); } const fetchOptions: Omit = { diff --git a/src/sdk/library.ts b/src/sdk/library.ts index e9a294bd..67918953 100644 --- a/src/sdk/library.ts +++ b/src/sdk/library.ts @@ -5,12 +5,12 @@ import { libraryDeleteLibrary } from "../funcs/libraryDeleteLibrary.js"; import { libraryGetActorsLibrary } from "../funcs/libraryGetActorsLibrary.js"; import { libraryGetAllLibraries } from "../funcs/libraryGetAllLibraries.js"; -import { libraryGetAllMediaLibrary } from "../funcs/libraryGetAllMediaLibrary.js"; import { libraryGetCountriesLibrary } from "../funcs/libraryGetCountriesLibrary.js"; import { libraryGetFileHash } from "../funcs/libraryGetFileHash.js"; import { libraryGetGenresLibrary } from "../funcs/libraryGetGenresLibrary.js"; import { libraryGetLibraryDetails } from "../funcs/libraryGetLibraryDetails.js"; import { libraryGetLibraryItems } from "../funcs/libraryGetLibraryItems.js"; +import { libraryGetLibrarySectionsAll } from "../funcs/libraryGetLibrarySectionsAll.js"; import { libraryGetMediaArts } from "../funcs/libraryGetMediaArts.js"; import { libraryGetMediaMetaData } from "../funcs/libraryGetMediaMetaData.js"; import { libraryGetMediaPosters } from "../funcs/libraryGetMediaPosters.js"; @@ -195,16 +195,16 @@ export class Library extends ClientSDK { } /** - * Get all media of library + * Get Library section media by tag ALL * * @remarks * Retrieves a list of all general media data for this library. */ - async getAllMediaLibrary( - request: operations.GetAllMediaLibraryRequest, + async getLibrarySectionsAll( + request: operations.GetLibrarySectionsAllRequest, options?: RequestOptions, - ): Promise { - return unwrapAsync(libraryGetAllMediaLibrary( + ): Promise { + return unwrapAsync(libraryGetLibrarySectionsAll( this, request, options, @@ -344,7 +344,8 @@ export class Library extends ClientSDK { * Get Media Metadata * * @remarks - * This endpoint will return all the (meta)data of a library item specified with by the ratingKey. + * This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. + * Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617"). */ async getMediaMetaData( request: operations.GetMediaMetaDataRequest, @@ -470,7 +471,9 @@ export class Library extends ClientSDK { */ async getTopWatchedContent( type: operations.GetTopWatchedContentQueryParamTypeOpen, - includeGuids?: number | undefined, + includeGuids?: + | operations.GetTopWatchedContentQueryParamIncludeGuids + | undefined, options?: RequestOptions, ): Promise { return unwrapAsync(libraryGetTopWatchedContent( diff --git a/src/sdk/models/errors/getallmedialibrary.ts b/src/sdk/models/errors/getallmedialibrary.ts deleted file mode 100644 index 37092fad..00000000 --- a/src/sdk/models/errors/getallmedialibrary.ts +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod"; -import { remap as remap$ } from "../../../lib/primitives.js"; -import { safeParse } from "../../../lib/schemas.js"; -import { Result as SafeParseResult } from "../../types/fp.js"; -import { SDKValidationError } from "./sdkvalidationerror.js"; - -export type GetAllMediaLibraryLibraryErrors = { - code?: number | undefined; - message?: string | undefined; - status?: number | undefined; -}; - -/** - * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - */ -export type GetAllMediaLibraryUnauthorizedData = { - errors?: Array | undefined; - /** - * Raw HTTP response; suitable for custom response parsing - */ - rawResponse?: Response | undefined; -}; - -/** - * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - */ -export class GetAllMediaLibraryUnauthorized extends Error { - errors?: Array | undefined; - /** - * Raw HTTP response; suitable for custom response parsing - */ - rawResponse?: Response | undefined; - - /** The original data that was passed to this error instance. */ - data$: GetAllMediaLibraryUnauthorizedData; - - constructor(err: GetAllMediaLibraryUnauthorizedData) { - const message = "message" in err && typeof err.message === "string" - ? err.message - : `API error occurred: ${JSON.stringify(err)}`; - super(message); - this.data$ = err; - - if (err.errors != null) this.errors = err.errors; - if (err.rawResponse != null) this.rawResponse = err.rawResponse; - - this.name = "GetAllMediaLibraryUnauthorized"; - } -} - -export type GetAllMediaLibraryErrors = { - code?: number | undefined; - message?: string | undefined; - status?: number | undefined; -}; - -/** - * Bad Request - A parameter was not specified, or was specified incorrectly. - */ -export type GetAllMediaLibraryBadRequestData = { - errors?: Array | undefined; - /** - * Raw HTTP response; suitable for custom response parsing - */ - rawResponse?: Response | undefined; -}; - -/** - * Bad Request - A parameter was not specified, or was specified incorrectly. - */ -export class GetAllMediaLibraryBadRequest extends Error { - errors?: Array | undefined; - /** - * Raw HTTP response; suitable for custom response parsing - */ - rawResponse?: Response | undefined; - - /** The original data that was passed to this error instance. */ - data$: GetAllMediaLibraryBadRequestData; - - constructor(err: GetAllMediaLibraryBadRequestData) { - const message = "message" in err && typeof err.message === "string" - ? err.message - : `API error occurred: ${JSON.stringify(err)}`; - super(message); - this.data$ = err; - - if (err.errors != null) this.errors = err.errors; - if (err.rawResponse != null) this.rawResponse = err.rawResponse; - - this.name = "GetAllMediaLibraryBadRequest"; - } -} - -/** @internal */ -export const GetAllMediaLibraryLibraryErrors$inboundSchema: z.ZodType< - GetAllMediaLibraryLibraryErrors, - z.ZodTypeDef, - unknown -> = z.object({ - code: z.number().int().optional(), - message: z.string().optional(), - status: z.number().int().optional(), -}); - -/** @internal */ -export type GetAllMediaLibraryLibraryErrors$Outbound = { - code?: number | undefined; - message?: string | undefined; - status?: number | undefined; -}; - -/** @internal */ -export const GetAllMediaLibraryLibraryErrors$outboundSchema: z.ZodType< - GetAllMediaLibraryLibraryErrors$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryLibraryErrors -> = z.object({ - code: z.number().int().optional(), - message: z.string().optional(), - status: z.number().int().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryLibraryErrors$ { - /** @deprecated use `GetAllMediaLibraryLibraryErrors$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryLibraryErrors$inboundSchema; - /** @deprecated use `GetAllMediaLibraryLibraryErrors$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryLibraryErrors$outboundSchema; - /** @deprecated use `GetAllMediaLibraryLibraryErrors$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryLibraryErrors$Outbound; -} - -export function getAllMediaLibraryLibraryErrorsToJSON( - getAllMediaLibraryLibraryErrors: GetAllMediaLibraryLibraryErrors, -): string { - return JSON.stringify( - GetAllMediaLibraryLibraryErrors$outboundSchema.parse( - getAllMediaLibraryLibraryErrors, - ), - ); -} - -export function getAllMediaLibraryLibraryErrorsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryLibraryErrors$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryLibraryErrors' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryUnauthorized$inboundSchema: z.ZodType< - GetAllMediaLibraryUnauthorized, - z.ZodTypeDef, - unknown -> = z.object({ - errors: z.array(z.lazy(() => GetAllMediaLibraryLibraryErrors$inboundSchema)) - .optional(), - RawResponse: z.instanceof(Response).optional(), -}) - .transform((v) => { - const remapped = remap$(v, { - "RawResponse": "rawResponse", - }); - - return new GetAllMediaLibraryUnauthorized(remapped); - }); - -/** @internal */ -export type GetAllMediaLibraryUnauthorized$Outbound = { - errors?: Array | undefined; - RawResponse?: never | undefined; -}; - -/** @internal */ -export const GetAllMediaLibraryUnauthorized$outboundSchema: z.ZodType< - GetAllMediaLibraryUnauthorized$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryUnauthorized -> = z.instanceof(GetAllMediaLibraryUnauthorized) - .transform(v => v.data$) - .pipe( - z.object({ - errors: z.array( - z.lazy(() => GetAllMediaLibraryLibraryErrors$outboundSchema), - ).optional(), - rawResponse: z.instanceof(Response).transform(() => { - throw new Error("Response cannot be serialized"); - }).optional(), - }).transform((v) => { - return remap$(v, { - rawResponse: "RawResponse", - }); - }), - ); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryUnauthorized$ { - /** @deprecated use `GetAllMediaLibraryUnauthorized$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryUnauthorized$inboundSchema; - /** @deprecated use `GetAllMediaLibraryUnauthorized$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryUnauthorized$outboundSchema; - /** @deprecated use `GetAllMediaLibraryUnauthorized$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryUnauthorized$Outbound; -} - -/** @internal */ -export const GetAllMediaLibraryErrors$inboundSchema: z.ZodType< - GetAllMediaLibraryErrors, - z.ZodTypeDef, - unknown -> = z.object({ - code: z.number().int().optional(), - message: z.string().optional(), - status: z.number().int().optional(), -}); - -/** @internal */ -export type GetAllMediaLibraryErrors$Outbound = { - code?: number | undefined; - message?: string | undefined; - status?: number | undefined; -}; - -/** @internal */ -export const GetAllMediaLibraryErrors$outboundSchema: z.ZodType< - GetAllMediaLibraryErrors$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryErrors -> = z.object({ - code: z.number().int().optional(), - message: z.string().optional(), - status: z.number().int().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryErrors$ { - /** @deprecated use `GetAllMediaLibraryErrors$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryErrors$inboundSchema; - /** @deprecated use `GetAllMediaLibraryErrors$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryErrors$outboundSchema; - /** @deprecated use `GetAllMediaLibraryErrors$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryErrors$Outbound; -} - -export function getAllMediaLibraryErrorsToJSON( - getAllMediaLibraryErrors: GetAllMediaLibraryErrors, -): string { - return JSON.stringify( - GetAllMediaLibraryErrors$outboundSchema.parse(getAllMediaLibraryErrors), - ); -} - -export function getAllMediaLibraryErrorsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryErrors$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryErrors' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryBadRequest$inboundSchema: z.ZodType< - GetAllMediaLibraryBadRequest, - z.ZodTypeDef, - unknown -> = z.object({ - errors: z.array(z.lazy(() => GetAllMediaLibraryErrors$inboundSchema)) - .optional(), - RawResponse: z.instanceof(Response).optional(), -}) - .transform((v) => { - const remapped = remap$(v, { - "RawResponse": "rawResponse", - }); - - return new GetAllMediaLibraryBadRequest(remapped); - }); - -/** @internal */ -export type GetAllMediaLibraryBadRequest$Outbound = { - errors?: Array | undefined; - RawResponse?: never | undefined; -}; - -/** @internal */ -export const GetAllMediaLibraryBadRequest$outboundSchema: z.ZodType< - GetAllMediaLibraryBadRequest$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryBadRequest -> = z.instanceof(GetAllMediaLibraryBadRequest) - .transform(v => v.data$) - .pipe( - z.object({ - errors: z.array(z.lazy(() => GetAllMediaLibraryErrors$outboundSchema)) - .optional(), - rawResponse: z.instanceof(Response).transform(() => { - throw new Error("Response cannot be serialized"); - }).optional(), - }).transform((v) => { - return remap$(v, { - rawResponse: "RawResponse", - }); - }), - ); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryBadRequest$ { - /** @deprecated use `GetAllMediaLibraryBadRequest$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryBadRequest$inboundSchema; - /** @deprecated use `GetAllMediaLibraryBadRequest$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryBadRequest$outboundSchema; - /** @deprecated use `GetAllMediaLibraryBadRequest$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryBadRequest$Outbound; -} diff --git a/src/sdk/models/errors/getlibrarysectionsall.ts b/src/sdk/models/errors/getlibrarysectionsall.ts new file mode 100644 index 00000000..b1fc6f55 --- /dev/null +++ b/src/sdk/models/errors/getlibrarysectionsall.ts @@ -0,0 +1,342 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "./sdkvalidationerror.js"; + +export type GetLibrarySectionsAllLibraryErrors = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export type GetLibrarySectionsAllUnauthorizedData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export class GetLibrarySectionsAllUnauthorized extends Error { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetLibrarySectionsAllUnauthorizedData; + + constructor(err: GetLibrarySectionsAllUnauthorizedData) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message); + this.data$ = err; + + if (err.errors != null) this.errors = err.errors; + if (err.rawResponse != null) this.rawResponse = err.rawResponse; + + this.name = "GetLibrarySectionsAllUnauthorized"; + } +} + +export type GetLibrarySectionsAllErrors = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export type GetLibrarySectionsAllBadRequestData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export class GetLibrarySectionsAllBadRequest extends Error { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetLibrarySectionsAllBadRequestData; + + constructor(err: GetLibrarySectionsAllBadRequestData) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message); + this.data$ = err; + + if (err.errors != null) this.errors = err.errors; + if (err.rawResponse != null) this.rawResponse = err.rawResponse; + + this.name = "GetLibrarySectionsAllBadRequest"; + } +} + +/** @internal */ +export const GetLibrarySectionsAllLibraryErrors$inboundSchema: z.ZodType< + GetLibrarySectionsAllLibraryErrors, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** @internal */ +export type GetLibrarySectionsAllLibraryErrors$Outbound = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** @internal */ +export const GetLibrarySectionsAllLibraryErrors$outboundSchema: z.ZodType< + GetLibrarySectionsAllLibraryErrors$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllLibraryErrors +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllLibraryErrors$ { + /** @deprecated use `GetLibrarySectionsAllLibraryErrors$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllLibraryErrors$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllLibraryErrors$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllLibraryErrors$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllLibraryErrors$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllLibraryErrors$Outbound; +} + +export function getLibrarySectionsAllLibraryErrorsToJSON( + getLibrarySectionsAllLibraryErrors: GetLibrarySectionsAllLibraryErrors, +): string { + return JSON.stringify( + GetLibrarySectionsAllLibraryErrors$outboundSchema.parse( + getLibrarySectionsAllLibraryErrors, + ), + ); +} + +export function getLibrarySectionsAllLibraryErrorsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GetLibrarySectionsAllLibraryErrors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllLibraryErrors' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllUnauthorized$inboundSchema: z.ZodType< + GetLibrarySectionsAllUnauthorized, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array( + z.lazy(() => GetLibrarySectionsAllLibraryErrors$inboundSchema), + ).optional(), + RawResponse: z.instanceof(Response).optional(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetLibrarySectionsAllUnauthorized(remapped); + }); + +/** @internal */ +export type GetLibrarySectionsAllUnauthorized$Outbound = { + errors?: Array | undefined; + RawResponse?: never | undefined; +}; + +/** @internal */ +export const GetLibrarySectionsAllUnauthorized$outboundSchema: z.ZodType< + GetLibrarySectionsAllUnauthorized$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllUnauthorized +> = z.instanceof(GetLibrarySectionsAllUnauthorized) + .transform(v => v.data$) + .pipe( + z.object({ + errors: z.array( + z.lazy(() => GetLibrarySectionsAllLibraryErrors$outboundSchema), + ).optional(), + rawResponse: z.instanceof(Response).transform(() => { + throw new Error("Response cannot be serialized"); + }).optional(), + }).transform((v) => { + return remap$(v, { + rawResponse: "RawResponse", + }); + }), + ); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllUnauthorized$ { + /** @deprecated use `GetLibrarySectionsAllUnauthorized$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllUnauthorized$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllUnauthorized$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllUnauthorized$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllUnauthorized$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllUnauthorized$Outbound; +} + +/** @internal */ +export const GetLibrarySectionsAllErrors$inboundSchema: z.ZodType< + GetLibrarySectionsAllErrors, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** @internal */ +export type GetLibrarySectionsAllErrors$Outbound = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** @internal */ +export const GetLibrarySectionsAllErrors$outboundSchema: z.ZodType< + GetLibrarySectionsAllErrors$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllErrors +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllErrors$ { + /** @deprecated use `GetLibrarySectionsAllErrors$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllErrors$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllErrors$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllErrors$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllErrors$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllErrors$Outbound; +} + +export function getLibrarySectionsAllErrorsToJSON( + getLibrarySectionsAllErrors: GetLibrarySectionsAllErrors, +): string { + return JSON.stringify( + GetLibrarySectionsAllErrors$outboundSchema.parse( + getLibrarySectionsAllErrors, + ), + ); +} + +export function getLibrarySectionsAllErrorsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetLibrarySectionsAllErrors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllErrors' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllBadRequest$inboundSchema: z.ZodType< + GetLibrarySectionsAllBadRequest, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array(z.lazy(() => GetLibrarySectionsAllErrors$inboundSchema)) + .optional(), + RawResponse: z.instanceof(Response).optional(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetLibrarySectionsAllBadRequest(remapped); + }); + +/** @internal */ +export type GetLibrarySectionsAllBadRequest$Outbound = { + errors?: Array | undefined; + RawResponse?: never | undefined; +}; + +/** @internal */ +export const GetLibrarySectionsAllBadRequest$outboundSchema: z.ZodType< + GetLibrarySectionsAllBadRequest$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllBadRequest +> = z.instanceof(GetLibrarySectionsAllBadRequest) + .transform(v => v.data$) + .pipe( + z.object({ + errors: z.array(z.lazy(() => GetLibrarySectionsAllErrors$outboundSchema)) + .optional(), + rawResponse: z.instanceof(Response).transform(() => { + throw new Error("Response cannot be serialized"); + }).optional(), + }).transform((v) => { + return remap$(v, { + rawResponse: "RawResponse", + }); + }), + ); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllBadRequest$ { + /** @deprecated use `GetLibrarySectionsAllBadRequest$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllBadRequest$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllBadRequest$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllBadRequest$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllBadRequest$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllBadRequest$Outbound; +} diff --git a/src/sdk/models/errors/index.ts b/src/sdk/models/errors/index.ts index dc9e9fa3..b347bd54 100644 --- a/src/sdk/models/errors/index.ts +++ b/src/sdk/models/errors/index.ts @@ -13,7 +13,6 @@ export * from "./deleteplaylist.js"; export * from "./enablepapertrail.js"; export * from "./getactorslibrary.js"; export * from "./getalllibraries.js"; -export * from "./getallmedialibrary.js"; export * from "./getavailableclients.js"; export * from "./getbandwidthstatistics.js"; export * from "./getbannerimage.js"; @@ -29,6 +28,7 @@ export * from "./gethomedata.js"; export * from "./getlibrarydetails.js"; export * from "./getlibraryhubs.js"; export * from "./getlibraryitems.js"; +export * from "./getlibrarysectionsall.js"; export * from "./getmediametadata.js"; export * from "./getmediaproviders.js"; export * from "./getmetadatachildren.js"; diff --git a/src/sdk/models/errors/sdkerror.ts b/src/sdk/models/errors/sdkerror.ts index 001f4659..ba47f662 100644 --- a/src/sdk/models/errors/sdkerror.ts +++ b/src/sdk/models/errors/sdkerror.ts @@ -3,22 +3,37 @@ */ export class SDKError extends Error { + /** + * HTTP status code + */ public readonly statusCode: number; + /** + * HTTP content type + */ public readonly contentType: string; + /** + * HTTP body + */ + public readonly body: string; + /** + * Raw response + */ + public readonly rawResponse: Response; constructor( message: string, - public readonly rawResponse: Response, - public readonly body: string = "", + rawResponse: Response, + body: string = "", ) { const statusCode = rawResponse.status; const contentType = rawResponse.headers.get("content-type") || ""; const bodyString = body.length > 0 ? `\n${body}` : ""; - super( `${message}: Status ${statusCode} Content-Type ${contentType} Body ${bodyString}`, ); + this.body = body; + this.rawResponse = rawResponse; this.statusCode = statusCode; this.contentType = contentType; diff --git a/src/sdk/models/operations/getactorslibrary.ts b/src/sdk/models/operations/getactorslibrary.ts index 4cccf898..029443b0 100644 --- a/src/sdk/models/operations/getactorslibrary.ts +++ b/src/sdk/models/operations/getactorslibrary.ts @@ -28,9 +28,11 @@ export enum GetActorsLibraryQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. diff --git a/src/sdk/models/operations/getalllibraries.ts b/src/sdk/models/operations/getalllibraries.ts index b8f56c2b..e5aa76c7 100644 --- a/src/sdk/models/operations/getalllibraries.ts +++ b/src/sdk/models/operations/getalllibraries.ts @@ -23,6 +23,10 @@ export enum GetAllLibrariesType { Episode = "episode", Artist = "artist", Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", } /** * The library type diff --git a/src/sdk/models/operations/getcountrieslibrary.ts b/src/sdk/models/operations/getcountrieslibrary.ts index ae0c65ea..81b310d8 100644 --- a/src/sdk/models/operations/getcountrieslibrary.ts +++ b/src/sdk/models/operations/getcountrieslibrary.ts @@ -28,9 +28,11 @@ export enum GetCountriesLibraryQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. diff --git a/src/sdk/models/operations/getgenreslibrary.ts b/src/sdk/models/operations/getgenreslibrary.ts index a3901247..c7f0f659 100644 --- a/src/sdk/models/operations/getgenreslibrary.ts +++ b/src/sdk/models/operations/getgenreslibrary.ts @@ -28,9 +28,11 @@ export enum GetGenresLibraryQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. diff --git a/src/sdk/models/operations/getlibraryitems.ts b/src/sdk/models/operations/getlibraryitems.ts index d3e47f11..4a985fe4 100644 --- a/src/sdk/models/operations/getlibraryitems.ts +++ b/src/sdk/models/operations/getlibraryitems.ts @@ -65,9 +65,11 @@ export enum GetLibraryItemsQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. @@ -225,7 +227,7 @@ export type GetLibraryItemsFieldType = { }; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -236,9 +238,13 @@ export enum GetLibraryItemsLibraryType { Episode = "episode", Artist = "artist", Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", } /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -625,7 +631,7 @@ export type GetLibraryItemsMetadata = { librarySectionTitle?: string | undefined; librarySectionKey?: string | undefined; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ diff --git a/src/sdk/models/operations/getallmedialibrary.ts b/src/sdk/models/operations/getlibrarysectionsall.ts similarity index 55% rename from src/sdk/models/operations/getallmedialibrary.ts rename to src/sdk/models/operations/getlibrarysectionsall.ts index 1c9ad1c9..f9578eea 100644 --- a/src/sdk/models/operations/getallmedialibrary.ts +++ b/src/sdk/models/operations/getlibrarysectionsall.ts @@ -24,14 +24,16 @@ import { SDKValidationError } from "../errors/sdkvalidationerror.js"; * 4 = episode * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ -export enum GetAllMediaLibraryQueryParamType { +export enum GetLibrarySectionsAllQueryParamType { Movie = 1, TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. @@ -43,8 +45,8 @@ export enum GetAllMediaLibraryQueryParamType { * 4 = episode * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ -export type GetAllMediaLibraryQueryParamTypeOpen = OpenEnum< - typeof GetAllMediaLibraryQueryParamType +export type GetLibrarySectionsAllQueryParamTypeOpen = OpenEnum< + typeof GetLibrarySectionsAllQueryParamType >; /** @@ -52,7 +54,7 @@ export type GetAllMediaLibraryQueryParamTypeOpen = OpenEnum< * * @remarks */ -export enum GetAllMediaLibraryQueryParamIncludeMeta { +export enum GetLibrarySectionsAllQueryParamIncludeMeta { Disable = 0, Enable = 1, } @@ -82,7 +84,7 @@ export enum QueryParamIncludeExternalMedia { Enable = 1, } -export type GetAllMediaLibraryRequest = { +export type GetLibrarySectionsAllRequest = { /** * The unique key of the Plex library. * @@ -100,13 +102,13 @@ export type GetAllMediaLibraryRequest = { * 4 = episode * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ - type: GetAllMediaLibraryQueryParamTypeOpen; + type: GetLibrarySectionsAllQueryParamTypeOpen; /** * Adds the Meta object to the response * * @remarks */ - includeMeta?: GetAllMediaLibraryQueryParamIncludeMeta | undefined; + includeMeta?: GetLibrarySectionsAllQueryParamIncludeMeta | undefined; /** * Adds the Guid object to the response * @@ -134,7 +136,7 @@ export type GetAllMediaLibraryRequest = { xPlexContainerSize?: number | undefined; }; -export type GetAllMediaLibraryFilter = { +export type GetLibrarySectionsAllFilter = { filter: string; filterType: string; key: string; @@ -148,7 +150,7 @@ export type GetAllMediaLibraryFilter = { * * @remarks */ -export enum GetAllMediaLibraryActiveDirection { +export enum GetLibrarySectionsAllActiveDirection { Ascending = "asc", Descending = "desc", } @@ -158,12 +160,12 @@ export enum GetAllMediaLibraryActiveDirection { * * @remarks */ -export enum GetAllMediaLibraryDefaultDirection { +export enum GetLibrarySectionsAllDefaultDirection { Ascending = "asc", Descending = "desc", } -export type GetAllMediaLibrarySort = { +export type GetLibrarySectionsAllSort = { default?: string | undefined; active?: boolean | undefined; /** @@ -171,45 +173,45 @@ export type GetAllMediaLibrarySort = { * * @remarks */ - activeDirection?: GetAllMediaLibraryActiveDirection | undefined; + activeDirection?: GetLibrarySectionsAllActiveDirection | undefined; /** * The direction of the sort. Can be either `asc` or `desc`. * * @remarks */ - defaultDirection?: GetAllMediaLibraryDefaultDirection | undefined; + defaultDirection?: GetLibrarySectionsAllDefaultDirection | undefined; descKey?: string | undefined; firstCharacterKey?: string | undefined; key: string; title: string; }; -export type GetAllMediaLibraryField = { +export type GetLibrarySectionsAllField = { key: string; title: string; type: string; subType?: string | undefined; }; -export type GetAllMediaLibraryType = { +export type GetLibrarySectionsAllType = { key: string; type: string; subtype?: string | undefined; title: string; active: boolean; - filter?: Array | undefined; - sort?: Array | undefined; - field?: Array | undefined; + filter?: Array | undefined; + sort?: Array | undefined; + field?: Array | undefined; }; -export type GetAllMediaLibraryOperator = { +export type GetLibrarySectionsAllOperator = { key: string; title: string; }; -export type GetAllMediaLibraryFieldType = { +export type GetLibrarySectionsAllFieldType = { type: string; - operator: Array; + operator: Array; }; /** @@ -217,56 +219,69 @@ export type GetAllMediaLibraryFieldType = { * * @remarks */ -export type GetAllMediaLibraryMeta = { - type?: Array | undefined; - fieldType?: Array | undefined; +export type GetLibrarySectionsAllMeta = { + type?: Array | undefined; + fieldType?: Array | undefined; }; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ -export enum GetAllMediaLibraryLibraryType { +export enum GetLibrarySectionsAllLibraryType { Movie = "movie", TvShow = "show", Season = "season", Episode = "episode", Artist = "artist", Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", } /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ -export type GetAllMediaLibraryLibraryTypeOpen = OpenEnum< - typeof GetAllMediaLibraryLibraryType +export type GetLibrarySectionsAllLibraryTypeOpen = OpenEnum< + typeof GetLibrarySectionsAllLibraryType >; -export enum GetAllMediaLibraryLibraryResponseType { +export enum GetLibrarySectionsAllLibraryResponseType { CoverPoster = "coverPoster", Background = "background", Snapshot = "snapshot", ClearLogo = "clearLogo", } -export type GetAllMediaLibraryLibraryResponseTypeOpen = OpenEnum< - typeof GetAllMediaLibraryLibraryResponseType +export type GetLibrarySectionsAllLibraryResponseTypeOpen = OpenEnum< + typeof GetLibrarySectionsAllLibraryResponseType >; -export type GetAllMediaLibraryImage = { +export type GetLibrarySectionsAllImage = { alt: string; - type: GetAllMediaLibraryLibraryResponseTypeOpen; + type: GetLibrarySectionsAllLibraryResponseTypeOpen; url: string; }; -export type GetAllMediaLibraryUltraBlurColors = { +export type GetLibrarySectionsAllUltraBlurColors = { topLeft: string; topRight: string; bottomRight: string; bottomLeft: string; }; +export type GetLibrarySectionsAllGuids = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + export enum OptimizedForStreaming1 { Zero = 0, One = 1, @@ -275,11 +290,11 @@ export enum OptimizedForStreaming1 { /** * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true */ -export type GetAllMediaLibraryOptimizedForStreaming = +export type GetLibrarySectionsAllOptimizedForStreaming = | OptimizedForStreaming1 | boolean; -export enum GetAllMediaLibraryOptimizedForStreaming1 { +export enum GetLibrarySectionsAllOptimizedForStreaming1 { Zero = 0, One = 1, } @@ -287,14 +302,14 @@ export enum GetAllMediaLibraryOptimizedForStreaming1 { /** * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true */ -export type GetAllMediaLibraryLibraryOptimizedForStreaming = - | GetAllMediaLibraryOptimizedForStreaming1 +export type GetLibrarySectionsAllLibraryOptimizedForStreaming = + | GetLibrarySectionsAllOptimizedForStreaming1 | boolean; /** * Indicates if the part has a thumbnail. */ -export enum GetAllMediaLibraryHasThumbnail { +export enum GetLibrarySectionsAllHasThumbnail { False = "0", True = "1", } @@ -307,7 +322,7 @@ export enum GetAllMediaLibraryHasThumbnail { * - 2 = audio * - 3 = subtitle */ -export enum GetAllMediaLibraryStreamType { +export enum GetLibrarySectionsAllStreamType { Video = 1, Audio = 2, Subtitle = 3, @@ -320,11 +335,11 @@ export enum GetAllMediaLibraryStreamType { * - 2 = audio * - 3 = subtitle */ -export type GetAllMediaLibraryStreamTypeOpen = OpenEnum< - typeof GetAllMediaLibraryStreamType +export type GetLibrarySectionsAllStreamTypeOpen = OpenEnum< + typeof GetLibrarySectionsAllStreamType >; -export type GetAllMediaLibraryStream = { +export type GetLibrarySectionsAllStream = { /** * Unique stream identifier. */ @@ -337,7 +352,7 @@ export type GetAllMediaLibraryStream = { * - 2 = audio * - 3 = subtitle */ - streamType: GetAllMediaLibraryStreamTypeOpen; + streamType: GetLibrarySectionsAllStreamTypeOpen; /** * Format of the stream (e.g., srt). */ @@ -521,7 +536,7 @@ export type GetAllMediaLibraryStream = { title?: string | undefined; }; -export type GetAllMediaLibraryPart = { +export type GetLibrarySectionsAllPart = { /** * Indicates if the part is accessible. */ @@ -569,17 +584,17 @@ export type GetAllMediaLibraryPart = { * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true */ optimizedForStreaming?: - | GetAllMediaLibraryOptimizedForStreaming1 + | GetLibrarySectionsAllOptimizedForStreaming1 | boolean | undefined; - hasThumbnail?: GetAllMediaLibraryHasThumbnail | undefined; + hasThumbnail?: GetLibrarySectionsAllHasThumbnail | undefined; /** * An array of streams for this part. */ - stream?: Array | undefined; + stream?: Array | undefined; }; -export type GetAllMediaLibraryMedia = { +export type GetLibrarySectionsAllMedia = { /** * Unique media identifier. */ @@ -651,10 +666,10 @@ export type GetAllMediaLibraryMedia = { /** * An array of parts for this media item. */ - part?: Array | undefined; + part?: Array | undefined; }; -export type GetAllMediaLibraryGenre = { +export type GetLibrarySectionsAllGenre = { /** * The genre name of this media-item * @@ -663,44 +678,35 @@ export type GetAllMediaLibraryGenre = { tag: string; }; -export type GetAllMediaLibraryCountry = { +export type GetLibrarySectionsAllCountry = { /** * The country of origin of this media item */ tag: string; }; -export type GetAllMediaLibraryDirector = { +export type GetLibrarySectionsAllDirector = { /** * The role of Director */ tag: string; }; -export type GetAllMediaLibraryWriter = { +export type GetLibrarySectionsAllWriter = { /** * The role of Writer */ tag: string; }; -export type GetAllMediaLibraryRole = { +export type GetLibrarySectionsAllRole = { /** * The display tag for the actor (typically the actor's name). */ tag: string; }; -export type GetAllMediaLibraryGuids = { - /** - * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 - * - * @remarks - */ - id?: string | undefined; -}; - -export type GetAllMediaLibraryCollection = { +export type GetLibrarySectionsAllCollection = { /** * The user-made collection this media item belongs to */ @@ -712,7 +718,7 @@ export type GetAllMediaLibraryCollection = { * * @remarks */ -export type GetAllMediaLibraryMetadata = { +export type GetLibrarySectionsAllMetadata = { /** * The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. */ @@ -733,7 +739,7 @@ export type GetAllMediaLibraryMetadata = { * The studio that produced the media item. */ studio?: string | undefined; - type: GetAllMediaLibraryLibraryTypeOpen; + type: GetLibrarySectionsAllLibraryTypeOpen; /** * The title of the media item. */ @@ -923,19 +929,19 @@ export type GetAllMediaLibraryMetadata = { * The rating provided by a user for the item. This value is expressed as a decimal number. */ userRating?: number | undefined; - image?: Array | undefined; - ultraBlurColors?: GetAllMediaLibraryUltraBlurColors | undefined; - media?: Array | undefined; - genre?: Array | undefined; - country?: Array | undefined; - director?: Array | undefined; - writer?: Array | undefined; - role?: Array | undefined; - guids?: Array | undefined; - collection?: Array | undefined; + image?: Array | undefined; + ultraBlurColors?: GetLibrarySectionsAllUltraBlurColors | undefined; + guids?: Array | undefined; + media?: Array | undefined; + genre?: Array | undefined; + country?: Array | undefined; + director?: Array | undefined; + writer?: Array | undefined; + role?: Array | undefined; + collection?: Array | undefined; }; -export type GetAllMediaLibraryMediaContainer = { +export type GetLibrarySectionsAllMediaContainer = { /** * Number of media items returned in this response. */ @@ -1009,21 +1015,21 @@ export type GetAllMediaLibraryMediaContainer = { * * @remarks */ - meta?: GetAllMediaLibraryMeta | undefined; + meta?: GetLibrarySectionsAllMeta | undefined; /** * An array of metadata items. */ - metadata?: Array | undefined; + metadata?: Array | undefined; }; /** * Successful response containing media container data. */ -export type GetAllMediaLibraryResponseBody = { - mediaContainer?: GetAllMediaLibraryMediaContainer | undefined; +export type GetLibrarySectionsAllResponseBody = { + mediaContainer?: GetLibrarySectionsAllMediaContainer | undefined; }; -export type GetAllMediaLibraryResponse = { +export type GetLibrarySectionsAllResponse = { /** * HTTP response content type for this operation */ @@ -1039,27 +1045,27 @@ export type GetAllMediaLibraryResponse = { /** * Successful response containing media container data. */ - object?: GetAllMediaLibraryResponseBody | undefined; + object?: GetLibrarySectionsAllResponseBody | undefined; }; /** @internal */ -export const GetAllMediaLibraryQueryParamType$inboundSchema: z.ZodType< - GetAllMediaLibraryQueryParamTypeOpen, +export const GetLibrarySectionsAllQueryParamType$inboundSchema: z.ZodType< + GetLibrarySectionsAllQueryParamTypeOpen, z.ZodTypeDef, unknown > = z .union([ - z.nativeEnum(GetAllMediaLibraryQueryParamType), + z.nativeEnum(GetLibrarySectionsAllQueryParamType), z.number().transform(catchUnrecognizedEnum), ]); /** @internal */ -export const GetAllMediaLibraryQueryParamType$outboundSchema: z.ZodType< - GetAllMediaLibraryQueryParamTypeOpen, +export const GetLibrarySectionsAllQueryParamType$outboundSchema: z.ZodType< + GetLibrarySectionsAllQueryParamTypeOpen, z.ZodTypeDef, - GetAllMediaLibraryQueryParamTypeOpen + GetLibrarySectionsAllQueryParamTypeOpen > = z.union([ - z.nativeEnum(GetAllMediaLibraryQueryParamType), + z.nativeEnum(GetLibrarySectionsAllQueryParamType), z.number().and(z.custom>()), ]); @@ -1067,34 +1073,36 @@ export const GetAllMediaLibraryQueryParamType$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryQueryParamType$ { - /** @deprecated use `GetAllMediaLibraryQueryParamType$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryQueryParamType$inboundSchema; - /** @deprecated use `GetAllMediaLibraryQueryParamType$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryQueryParamType$outboundSchema; +export namespace GetLibrarySectionsAllQueryParamType$ { + /** @deprecated use `GetLibrarySectionsAllQueryParamType$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllQueryParamType$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllQueryParamType$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllQueryParamType$outboundSchema; } /** @internal */ -export const GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema: - z.ZodNativeEnum = z - .nativeEnum(GetAllMediaLibraryQueryParamIncludeMeta); +export const GetLibrarySectionsAllQueryParamIncludeMeta$inboundSchema: + z.ZodNativeEnum = z + .nativeEnum(GetLibrarySectionsAllQueryParamIncludeMeta); /** @internal */ -export const GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema: - z.ZodNativeEnum = - GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema; +export const GetLibrarySectionsAllQueryParamIncludeMeta$outboundSchema: + z.ZodNativeEnum = + GetLibrarySectionsAllQueryParamIncludeMeta$inboundSchema; /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryQueryParamIncludeMeta$ { - /** @deprecated use `GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema` instead. */ +export namespace GetLibrarySectionsAllQueryParamIncludeMeta$ { + /** @deprecated use `GetLibrarySectionsAllQueryParamIncludeMeta$inboundSchema` instead. */ export const inboundSchema = - GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema; - /** @deprecated use `GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema` instead. */ + GetLibrarySectionsAllQueryParamIncludeMeta$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllQueryParamIncludeMeta$outboundSchema` instead. */ export const outboundSchema = - GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema; + GetLibrarySectionsAllQueryParamIncludeMeta$outboundSchema; } /** @internal */ @@ -1182,14 +1190,14 @@ export namespace QueryParamIncludeExternalMedia$ { } /** @internal */ -export const GetAllMediaLibraryRequest$inboundSchema: z.ZodType< - GetAllMediaLibraryRequest, +export const GetLibrarySectionsAllRequest$inboundSchema: z.ZodType< + GetLibrarySectionsAllRequest, z.ZodTypeDef, unknown > = z.object({ sectionKey: z.number().int(), - type: GetAllMediaLibraryQueryParamType$inboundSchema, - includeMeta: GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema, + type: GetLibrarySectionsAllQueryParamType$inboundSchema, + includeMeta: GetLibrarySectionsAllQueryParamIncludeMeta$inboundSchema, includeGuids: QueryParamIncludeGuids$inboundSchema, includeAdvanced: IncludeAdvanced$inboundSchema, includeCollections: QueryParamIncludeCollections$inboundSchema, @@ -1204,7 +1212,7 @@ export const GetAllMediaLibraryRequest$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryRequest$Outbound = { +export type GetLibrarySectionsAllRequest$Outbound = { sectionKey: number; type: number; includeMeta: number; @@ -1217,16 +1225,15 @@ export type GetAllMediaLibraryRequest$Outbound = { }; /** @internal */ -export const GetAllMediaLibraryRequest$outboundSchema: z.ZodType< - GetAllMediaLibraryRequest$Outbound, +export const GetLibrarySectionsAllRequest$outboundSchema: z.ZodType< + GetLibrarySectionsAllRequest$Outbound, z.ZodTypeDef, - GetAllMediaLibraryRequest + GetLibrarySectionsAllRequest > = z.object({ sectionKey: z.number().int(), - type: GetAllMediaLibraryQueryParamType$outboundSchema, - includeMeta: GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema.default( - GetAllMediaLibraryQueryParamIncludeMeta.Disable, - ), + type: GetLibrarySectionsAllQueryParamType$outboundSchema, + includeMeta: GetLibrarySectionsAllQueryParamIncludeMeta$outboundSchema + .default(GetLibrarySectionsAllQueryParamIncludeMeta.Disable), includeGuids: QueryParamIncludeGuids$outboundSchema.default( QueryParamIncludeGuids.Disable, ), @@ -1252,36 +1259,38 @@ export const GetAllMediaLibraryRequest$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryRequest$ { - /** @deprecated use `GetAllMediaLibraryRequest$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryRequest$inboundSchema; - /** @deprecated use `GetAllMediaLibraryRequest$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryRequest$outboundSchema; - /** @deprecated use `GetAllMediaLibraryRequest$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryRequest$Outbound; +export namespace GetLibrarySectionsAllRequest$ { + /** @deprecated use `GetLibrarySectionsAllRequest$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllRequest$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllRequest$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllRequest$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllRequest$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllRequest$Outbound; } -export function getAllMediaLibraryRequestToJSON( - getAllMediaLibraryRequest: GetAllMediaLibraryRequest, +export function getLibrarySectionsAllRequestToJSON( + getLibrarySectionsAllRequest: GetLibrarySectionsAllRequest, ): string { return JSON.stringify( - GetAllMediaLibraryRequest$outboundSchema.parse(getAllMediaLibraryRequest), + GetLibrarySectionsAllRequest$outboundSchema.parse( + getLibrarySectionsAllRequest, + ), ); } -export function getAllMediaLibraryRequestFromJSON( +export function getLibrarySectionsAllRequestFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryRequest$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryRequest' from JSON`, + (x) => GetLibrarySectionsAllRequest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllRequest' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryFilter$inboundSchema: z.ZodType< - GetAllMediaLibraryFilter, +export const GetLibrarySectionsAllFilter$inboundSchema: z.ZodType< + GetLibrarySectionsAllFilter, z.ZodTypeDef, unknown > = z.object({ @@ -1294,7 +1303,7 @@ export const GetAllMediaLibraryFilter$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryFilter$Outbound = { +export type GetLibrarySectionsAllFilter$Outbound = { filter: string; filterType: string; key: string; @@ -1304,10 +1313,10 @@ export type GetAllMediaLibraryFilter$Outbound = { }; /** @internal */ -export const GetAllMediaLibraryFilter$outboundSchema: z.ZodType< - GetAllMediaLibraryFilter$Outbound, +export const GetLibrarySectionsAllFilter$outboundSchema: z.ZodType< + GetLibrarySectionsAllFilter$Outbound, z.ZodTypeDef, - GetAllMediaLibraryFilter + GetLibrarySectionsAllFilter > = z.object({ filter: z.string(), filterType: z.string(), @@ -1321,90 +1330,96 @@ export const GetAllMediaLibraryFilter$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryFilter$ { - /** @deprecated use `GetAllMediaLibraryFilter$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryFilter$inboundSchema; - /** @deprecated use `GetAllMediaLibraryFilter$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryFilter$outboundSchema; - /** @deprecated use `GetAllMediaLibraryFilter$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryFilter$Outbound; +export namespace GetLibrarySectionsAllFilter$ { + /** @deprecated use `GetLibrarySectionsAllFilter$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllFilter$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllFilter$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllFilter$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllFilter$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllFilter$Outbound; } -export function getAllMediaLibraryFilterToJSON( - getAllMediaLibraryFilter: GetAllMediaLibraryFilter, +export function getLibrarySectionsAllFilterToJSON( + getLibrarySectionsAllFilter: GetLibrarySectionsAllFilter, ): string { return JSON.stringify( - GetAllMediaLibraryFilter$outboundSchema.parse(getAllMediaLibraryFilter), + GetLibrarySectionsAllFilter$outboundSchema.parse( + getLibrarySectionsAllFilter, + ), ); } -export function getAllMediaLibraryFilterFromJSON( +export function getLibrarySectionsAllFilterFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryFilter$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryFilter' from JSON`, + (x) => GetLibrarySectionsAllFilter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllFilter' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryActiveDirection$inboundSchema: z.ZodNativeEnum< - typeof GetAllMediaLibraryActiveDirection -> = z.nativeEnum(GetAllMediaLibraryActiveDirection); +export const GetLibrarySectionsAllActiveDirection$inboundSchema: + z.ZodNativeEnum = z.nativeEnum( + GetLibrarySectionsAllActiveDirection, + ); /** @internal */ -export const GetAllMediaLibraryActiveDirection$outboundSchema: z.ZodNativeEnum< - typeof GetAllMediaLibraryActiveDirection -> = GetAllMediaLibraryActiveDirection$inboundSchema; +export const GetLibrarySectionsAllActiveDirection$outboundSchema: + z.ZodNativeEnum = + GetLibrarySectionsAllActiveDirection$inboundSchema; /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryActiveDirection$ { - /** @deprecated use `GetAllMediaLibraryActiveDirection$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryActiveDirection$inboundSchema; - /** @deprecated use `GetAllMediaLibraryActiveDirection$outboundSchema` instead. */ +export namespace GetLibrarySectionsAllActiveDirection$ { + /** @deprecated use `GetLibrarySectionsAllActiveDirection$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllActiveDirection$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllActiveDirection$outboundSchema` instead. */ export const outboundSchema = - GetAllMediaLibraryActiveDirection$outboundSchema; + GetLibrarySectionsAllActiveDirection$outboundSchema; } /** @internal */ -export const GetAllMediaLibraryDefaultDirection$inboundSchema: z.ZodNativeEnum< - typeof GetAllMediaLibraryDefaultDirection -> = z.nativeEnum(GetAllMediaLibraryDefaultDirection); +export const GetLibrarySectionsAllDefaultDirection$inboundSchema: + z.ZodNativeEnum = z.nativeEnum( + GetLibrarySectionsAllDefaultDirection, + ); /** @internal */ -export const GetAllMediaLibraryDefaultDirection$outboundSchema: z.ZodNativeEnum< - typeof GetAllMediaLibraryDefaultDirection -> = GetAllMediaLibraryDefaultDirection$inboundSchema; +export const GetLibrarySectionsAllDefaultDirection$outboundSchema: + z.ZodNativeEnum = + GetLibrarySectionsAllDefaultDirection$inboundSchema; /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryDefaultDirection$ { - /** @deprecated use `GetAllMediaLibraryDefaultDirection$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryDefaultDirection$inboundSchema; - /** @deprecated use `GetAllMediaLibraryDefaultDirection$outboundSchema` instead. */ +export namespace GetLibrarySectionsAllDefaultDirection$ { + /** @deprecated use `GetLibrarySectionsAllDefaultDirection$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllDefaultDirection$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllDefaultDirection$outboundSchema` instead. */ export const outboundSchema = - GetAllMediaLibraryDefaultDirection$outboundSchema; + GetLibrarySectionsAllDefaultDirection$outboundSchema; } /** @internal */ -export const GetAllMediaLibrarySort$inboundSchema: z.ZodType< - GetAllMediaLibrarySort, +export const GetLibrarySectionsAllSort$inboundSchema: z.ZodType< + GetLibrarySectionsAllSort, z.ZodTypeDef, unknown > = z.object({ default: z.string().optional(), active: z.boolean().optional(), - activeDirection: GetAllMediaLibraryActiveDirection$inboundSchema.default( - GetAllMediaLibraryActiveDirection.Ascending, + activeDirection: GetLibrarySectionsAllActiveDirection$inboundSchema.default( + GetLibrarySectionsAllActiveDirection.Ascending, ), - defaultDirection: GetAllMediaLibraryDefaultDirection$inboundSchema.default( - GetAllMediaLibraryDefaultDirection.Ascending, + defaultDirection: GetLibrarySectionsAllDefaultDirection$inboundSchema.default( + GetLibrarySectionsAllDefaultDirection.Ascending, ), descKey: z.string().optional(), firstCharacterKey: z.string().optional(), @@ -1413,7 +1428,7 @@ export const GetAllMediaLibrarySort$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibrarySort$Outbound = { +export type GetLibrarySectionsAllSort$Outbound = { default?: string | undefined; active?: boolean | undefined; activeDirection: string; @@ -1425,19 +1440,18 @@ export type GetAllMediaLibrarySort$Outbound = { }; /** @internal */ -export const GetAllMediaLibrarySort$outboundSchema: z.ZodType< - GetAllMediaLibrarySort$Outbound, +export const GetLibrarySectionsAllSort$outboundSchema: z.ZodType< + GetLibrarySectionsAllSort$Outbound, z.ZodTypeDef, - GetAllMediaLibrarySort + GetLibrarySectionsAllSort > = z.object({ default: z.string().optional(), active: z.boolean().optional(), - activeDirection: GetAllMediaLibraryActiveDirection$outboundSchema.default( - GetAllMediaLibraryActiveDirection.Ascending, - ), - defaultDirection: GetAllMediaLibraryDefaultDirection$outboundSchema.default( - GetAllMediaLibraryDefaultDirection.Ascending, + activeDirection: GetLibrarySectionsAllActiveDirection$outboundSchema.default( + GetLibrarySectionsAllActiveDirection.Ascending, ), + defaultDirection: GetLibrarySectionsAllDefaultDirection$outboundSchema + .default(GetLibrarySectionsAllDefaultDirection.Ascending), descKey: z.string().optional(), firstCharacterKey: z.string().optional(), key: z.string(), @@ -1448,36 +1462,36 @@ export const GetAllMediaLibrarySort$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibrarySort$ { - /** @deprecated use `GetAllMediaLibrarySort$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibrarySort$inboundSchema; - /** @deprecated use `GetAllMediaLibrarySort$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibrarySort$outboundSchema; - /** @deprecated use `GetAllMediaLibrarySort$Outbound` instead. */ - export type Outbound = GetAllMediaLibrarySort$Outbound; +export namespace GetLibrarySectionsAllSort$ { + /** @deprecated use `GetLibrarySectionsAllSort$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllSort$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllSort$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllSort$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllSort$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllSort$Outbound; } -export function getAllMediaLibrarySortToJSON( - getAllMediaLibrarySort: GetAllMediaLibrarySort, +export function getLibrarySectionsAllSortToJSON( + getLibrarySectionsAllSort: GetLibrarySectionsAllSort, ): string { return JSON.stringify( - GetAllMediaLibrarySort$outboundSchema.parse(getAllMediaLibrarySort), + GetLibrarySectionsAllSort$outboundSchema.parse(getLibrarySectionsAllSort), ); } -export function getAllMediaLibrarySortFromJSON( +export function getLibrarySectionsAllSortFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibrarySort$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibrarySort' from JSON`, + (x) => GetLibrarySectionsAllSort$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllSort' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryField$inboundSchema: z.ZodType< - GetAllMediaLibraryField, +export const GetLibrarySectionsAllField$inboundSchema: z.ZodType< + GetLibrarySectionsAllField, z.ZodTypeDef, unknown > = z.object({ @@ -1488,7 +1502,7 @@ export const GetAllMediaLibraryField$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryField$Outbound = { +export type GetLibrarySectionsAllField$Outbound = { key: string; title: string; type: string; @@ -1496,10 +1510,10 @@ export type GetAllMediaLibraryField$Outbound = { }; /** @internal */ -export const GetAllMediaLibraryField$outboundSchema: z.ZodType< - GetAllMediaLibraryField$Outbound, +export const GetLibrarySectionsAllField$outboundSchema: z.ZodType< + GetLibrarySectionsAllField$Outbound, z.ZodTypeDef, - GetAllMediaLibraryField + GetLibrarySectionsAllField > = z.object({ key: z.string(), title: z.string(), @@ -1511,36 +1525,36 @@ export const GetAllMediaLibraryField$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryField$ { - /** @deprecated use `GetAllMediaLibraryField$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryField$inboundSchema; - /** @deprecated use `GetAllMediaLibraryField$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryField$outboundSchema; - /** @deprecated use `GetAllMediaLibraryField$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryField$Outbound; +export namespace GetLibrarySectionsAllField$ { + /** @deprecated use `GetLibrarySectionsAllField$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllField$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllField$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllField$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllField$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllField$Outbound; } -export function getAllMediaLibraryFieldToJSON( - getAllMediaLibraryField: GetAllMediaLibraryField, +export function getLibrarySectionsAllFieldToJSON( + getLibrarySectionsAllField: GetLibrarySectionsAllField, ): string { return JSON.stringify( - GetAllMediaLibraryField$outboundSchema.parse(getAllMediaLibraryField), + GetLibrarySectionsAllField$outboundSchema.parse(getLibrarySectionsAllField), ); } -export function getAllMediaLibraryFieldFromJSON( +export function getLibrarySectionsAllFieldFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryField$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryField' from JSON`, + (x) => GetLibrarySectionsAllField$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllField' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryType$inboundSchema: z.ZodType< - GetAllMediaLibraryType, +export const GetLibrarySectionsAllType$inboundSchema: z.ZodType< + GetLibrarySectionsAllType, z.ZodTypeDef, unknown > = z.object({ @@ -1549,10 +1563,11 @@ export const GetAllMediaLibraryType$inboundSchema: z.ZodType< subtype: z.string().optional(), title: z.string(), active: z.boolean(), - Filter: z.array(z.lazy(() => GetAllMediaLibraryFilter$inboundSchema)) + Filter: z.array(z.lazy(() => GetLibrarySectionsAllFilter$inboundSchema)) .optional(), - Sort: z.array(z.lazy(() => GetAllMediaLibrarySort$inboundSchema)).optional(), - Field: z.array(z.lazy(() => GetAllMediaLibraryField$inboundSchema)) + Sort: z.array(z.lazy(() => GetLibrarySectionsAllSort$inboundSchema)) + .optional(), + Field: z.array(z.lazy(() => GetLibrarySectionsAllField$inboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -1563,32 +1578,33 @@ export const GetAllMediaLibraryType$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryType$Outbound = { +export type GetLibrarySectionsAllType$Outbound = { key: string; type: string; subtype?: string | undefined; title: string; active: boolean; - Filter?: Array | undefined; - Sort?: Array | undefined; - Field?: Array | undefined; + Filter?: Array | undefined; + Sort?: Array | undefined; + Field?: Array | undefined; }; /** @internal */ -export const GetAllMediaLibraryType$outboundSchema: z.ZodType< - GetAllMediaLibraryType$Outbound, +export const GetLibrarySectionsAllType$outboundSchema: z.ZodType< + GetLibrarySectionsAllType$Outbound, z.ZodTypeDef, - GetAllMediaLibraryType + GetLibrarySectionsAllType > = z.object({ key: z.string(), type: z.string(), subtype: z.string().optional(), title: z.string(), active: z.boolean(), - filter: z.array(z.lazy(() => GetAllMediaLibraryFilter$outboundSchema)) + filter: z.array(z.lazy(() => GetLibrarySectionsAllFilter$outboundSchema)) .optional(), - sort: z.array(z.lazy(() => GetAllMediaLibrarySort$outboundSchema)).optional(), - field: z.array(z.lazy(() => GetAllMediaLibraryField$outboundSchema)) + sort: z.array(z.lazy(() => GetLibrarySectionsAllSort$outboundSchema)) + .optional(), + field: z.array(z.lazy(() => GetLibrarySectionsAllField$outboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -1602,36 +1618,36 @@ export const GetAllMediaLibraryType$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryType$ { - /** @deprecated use `GetAllMediaLibraryType$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryType$inboundSchema; - /** @deprecated use `GetAllMediaLibraryType$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryType$outboundSchema; - /** @deprecated use `GetAllMediaLibraryType$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryType$Outbound; +export namespace GetLibrarySectionsAllType$ { + /** @deprecated use `GetLibrarySectionsAllType$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllType$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllType$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllType$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllType$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllType$Outbound; } -export function getAllMediaLibraryTypeToJSON( - getAllMediaLibraryType: GetAllMediaLibraryType, +export function getLibrarySectionsAllTypeToJSON( + getLibrarySectionsAllType: GetLibrarySectionsAllType, ): string { return JSON.stringify( - GetAllMediaLibraryType$outboundSchema.parse(getAllMediaLibraryType), + GetLibrarySectionsAllType$outboundSchema.parse(getLibrarySectionsAllType), ); } -export function getAllMediaLibraryTypeFromJSON( +export function getLibrarySectionsAllTypeFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryType$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryType' from JSON`, + (x) => GetLibrarySectionsAllType$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllType' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryOperator$inboundSchema: z.ZodType< - GetAllMediaLibraryOperator, +export const GetLibrarySectionsAllOperator$inboundSchema: z.ZodType< + GetLibrarySectionsAllOperator, z.ZodTypeDef, unknown > = z.object({ @@ -1640,16 +1656,16 @@ export const GetAllMediaLibraryOperator$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryOperator$Outbound = { +export type GetLibrarySectionsAllOperator$Outbound = { key: string; title: string; }; /** @internal */ -export const GetAllMediaLibraryOperator$outboundSchema: z.ZodType< - GetAllMediaLibraryOperator$Outbound, +export const GetLibrarySectionsAllOperator$outboundSchema: z.ZodType< + GetLibrarySectionsAllOperator$Outbound, z.ZodTypeDef, - GetAllMediaLibraryOperator + GetLibrarySectionsAllOperator > = z.object({ key: z.string(), title: z.string(), @@ -1659,41 +1675,43 @@ export const GetAllMediaLibraryOperator$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryOperator$ { - /** @deprecated use `GetAllMediaLibraryOperator$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryOperator$inboundSchema; - /** @deprecated use `GetAllMediaLibraryOperator$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryOperator$outboundSchema; - /** @deprecated use `GetAllMediaLibraryOperator$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryOperator$Outbound; +export namespace GetLibrarySectionsAllOperator$ { + /** @deprecated use `GetLibrarySectionsAllOperator$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllOperator$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllOperator$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllOperator$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllOperator$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllOperator$Outbound; } -export function getAllMediaLibraryOperatorToJSON( - getAllMediaLibraryOperator: GetAllMediaLibraryOperator, +export function getLibrarySectionsAllOperatorToJSON( + getLibrarySectionsAllOperator: GetLibrarySectionsAllOperator, ): string { return JSON.stringify( - GetAllMediaLibraryOperator$outboundSchema.parse(getAllMediaLibraryOperator), + GetLibrarySectionsAllOperator$outboundSchema.parse( + getLibrarySectionsAllOperator, + ), ); } -export function getAllMediaLibraryOperatorFromJSON( +export function getLibrarySectionsAllOperatorFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryOperator$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryOperator' from JSON`, + (x) => GetLibrarySectionsAllOperator$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllOperator' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryFieldType$inboundSchema: z.ZodType< - GetAllMediaLibraryFieldType, +export const GetLibrarySectionsAllFieldType$inboundSchema: z.ZodType< + GetLibrarySectionsAllFieldType, z.ZodTypeDef, unknown > = z.object({ type: z.string(), - Operator: z.array(z.lazy(() => GetAllMediaLibraryOperator$inboundSchema)), + Operator: z.array(z.lazy(() => GetLibrarySectionsAllOperator$inboundSchema)), }).transform((v) => { return remap$(v, { "Operator": "operator", @@ -1701,19 +1719,19 @@ export const GetAllMediaLibraryFieldType$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryFieldType$Outbound = { +export type GetLibrarySectionsAllFieldType$Outbound = { type: string; - Operator: Array; + Operator: Array; }; /** @internal */ -export const GetAllMediaLibraryFieldType$outboundSchema: z.ZodType< - GetAllMediaLibraryFieldType$Outbound, +export const GetLibrarySectionsAllFieldType$outboundSchema: z.ZodType< + GetLibrarySectionsAllFieldType$Outbound, z.ZodTypeDef, - GetAllMediaLibraryFieldType + GetLibrarySectionsAllFieldType > = z.object({ type: z.string(), - operator: z.array(z.lazy(() => GetAllMediaLibraryOperator$outboundSchema)), + operator: z.array(z.lazy(() => GetLibrarySectionsAllOperator$outboundSchema)), }).transform((v) => { return remap$(v, { operator: "Operator", @@ -1724,43 +1742,44 @@ export const GetAllMediaLibraryFieldType$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryFieldType$ { - /** @deprecated use `GetAllMediaLibraryFieldType$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryFieldType$inboundSchema; - /** @deprecated use `GetAllMediaLibraryFieldType$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryFieldType$outboundSchema; - /** @deprecated use `GetAllMediaLibraryFieldType$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryFieldType$Outbound; +export namespace GetLibrarySectionsAllFieldType$ { + /** @deprecated use `GetLibrarySectionsAllFieldType$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllFieldType$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllFieldType$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllFieldType$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllFieldType$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllFieldType$Outbound; } -export function getAllMediaLibraryFieldTypeToJSON( - getAllMediaLibraryFieldType: GetAllMediaLibraryFieldType, +export function getLibrarySectionsAllFieldTypeToJSON( + getLibrarySectionsAllFieldType: GetLibrarySectionsAllFieldType, ): string { return JSON.stringify( - GetAllMediaLibraryFieldType$outboundSchema.parse( - getAllMediaLibraryFieldType, + GetLibrarySectionsAllFieldType$outboundSchema.parse( + getLibrarySectionsAllFieldType, ), ); } -export function getAllMediaLibraryFieldTypeFromJSON( +export function getLibrarySectionsAllFieldTypeFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryFieldType$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryFieldType' from JSON`, + (x) => GetLibrarySectionsAllFieldType$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllFieldType' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryMeta$inboundSchema: z.ZodType< - GetAllMediaLibraryMeta, +export const GetLibrarySectionsAllMeta$inboundSchema: z.ZodType< + GetLibrarySectionsAllMeta, z.ZodTypeDef, unknown > = z.object({ - Type: z.array(z.lazy(() => GetAllMediaLibraryType$inboundSchema)).optional(), - FieldType: z.array(z.lazy(() => GetAllMediaLibraryFieldType$inboundSchema)) + Type: z.array(z.lazy(() => GetLibrarySectionsAllType$inboundSchema)) + .optional(), + FieldType: z.array(z.lazy(() => GetLibrarySectionsAllFieldType$inboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -1770,20 +1789,22 @@ export const GetAllMediaLibraryMeta$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryMeta$Outbound = { - Type?: Array | undefined; - FieldType?: Array | undefined; +export type GetLibrarySectionsAllMeta$Outbound = { + Type?: Array | undefined; + FieldType?: Array | undefined; }; /** @internal */ -export const GetAllMediaLibraryMeta$outboundSchema: z.ZodType< - GetAllMediaLibraryMeta$Outbound, +export const GetLibrarySectionsAllMeta$outboundSchema: z.ZodType< + GetLibrarySectionsAllMeta$Outbound, z.ZodTypeDef, - GetAllMediaLibraryMeta + GetLibrarySectionsAllMeta > = z.object({ - type: z.array(z.lazy(() => GetAllMediaLibraryType$outboundSchema)).optional(), - fieldType: z.array(z.lazy(() => GetAllMediaLibraryFieldType$outboundSchema)) + type: z.array(z.lazy(() => GetLibrarySectionsAllType$outboundSchema)) .optional(), + fieldType: z.array( + z.lazy(() => GetLibrarySectionsAllFieldType$outboundSchema), + ).optional(), }).transform((v) => { return remap$(v, { type: "Type", @@ -1795,51 +1816,51 @@ export const GetAllMediaLibraryMeta$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryMeta$ { - /** @deprecated use `GetAllMediaLibraryMeta$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryMeta$inboundSchema; - /** @deprecated use `GetAllMediaLibraryMeta$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryMeta$outboundSchema; - /** @deprecated use `GetAllMediaLibraryMeta$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryMeta$Outbound; +export namespace GetLibrarySectionsAllMeta$ { + /** @deprecated use `GetLibrarySectionsAllMeta$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllMeta$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllMeta$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllMeta$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllMeta$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllMeta$Outbound; } -export function getAllMediaLibraryMetaToJSON( - getAllMediaLibraryMeta: GetAllMediaLibraryMeta, +export function getLibrarySectionsAllMetaToJSON( + getLibrarySectionsAllMeta: GetLibrarySectionsAllMeta, ): string { return JSON.stringify( - GetAllMediaLibraryMeta$outboundSchema.parse(getAllMediaLibraryMeta), + GetLibrarySectionsAllMeta$outboundSchema.parse(getLibrarySectionsAllMeta), ); } -export function getAllMediaLibraryMetaFromJSON( +export function getLibrarySectionsAllMetaFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryMeta$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryMeta' from JSON`, + (x) => GetLibrarySectionsAllMeta$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllMeta' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryLibraryType$inboundSchema: z.ZodType< - GetAllMediaLibraryLibraryTypeOpen, +export const GetLibrarySectionsAllLibraryType$inboundSchema: z.ZodType< + GetLibrarySectionsAllLibraryTypeOpen, z.ZodTypeDef, unknown > = z .union([ - z.nativeEnum(GetAllMediaLibraryLibraryType), + z.nativeEnum(GetLibrarySectionsAllLibraryType), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ -export const GetAllMediaLibraryLibraryType$outboundSchema: z.ZodType< - GetAllMediaLibraryLibraryTypeOpen, +export const GetLibrarySectionsAllLibraryType$outboundSchema: z.ZodType< + GetLibrarySectionsAllLibraryTypeOpen, z.ZodTypeDef, - GetAllMediaLibraryLibraryTypeOpen + GetLibrarySectionsAllLibraryTypeOpen > = z.union([ - z.nativeEnum(GetAllMediaLibraryLibraryType), + z.nativeEnum(GetLibrarySectionsAllLibraryType), z.string().and(z.custom>()), ]); @@ -1847,31 +1868,31 @@ export const GetAllMediaLibraryLibraryType$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryLibraryType$ { - /** @deprecated use `GetAllMediaLibraryLibraryType$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryLibraryType$inboundSchema; - /** @deprecated use `GetAllMediaLibraryLibraryType$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryLibraryType$outboundSchema; +export namespace GetLibrarySectionsAllLibraryType$ { + /** @deprecated use `GetLibrarySectionsAllLibraryType$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllLibraryType$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllLibraryType$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllLibraryType$outboundSchema; } /** @internal */ -export const GetAllMediaLibraryLibraryResponseType$inboundSchema: z.ZodType< - GetAllMediaLibraryLibraryResponseTypeOpen, +export const GetLibrarySectionsAllLibraryResponseType$inboundSchema: z.ZodType< + GetLibrarySectionsAllLibraryResponseTypeOpen, z.ZodTypeDef, unknown > = z .union([ - z.nativeEnum(GetAllMediaLibraryLibraryResponseType), + z.nativeEnum(GetLibrarySectionsAllLibraryResponseType), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ -export const GetAllMediaLibraryLibraryResponseType$outboundSchema: z.ZodType< - GetAllMediaLibraryLibraryResponseTypeOpen, +export const GetLibrarySectionsAllLibraryResponseType$outboundSchema: z.ZodType< + GetLibrarySectionsAllLibraryResponseTypeOpen, z.ZodTypeDef, - GetAllMediaLibraryLibraryResponseTypeOpen + GetLibrarySectionsAllLibraryResponseTypeOpen > = z.union([ - z.nativeEnum(GetAllMediaLibraryLibraryResponseType), + z.nativeEnum(GetLibrarySectionsAllLibraryResponseType), z.string().and(z.custom>()), ]); @@ -1879,41 +1900,41 @@ export const GetAllMediaLibraryLibraryResponseType$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryLibraryResponseType$ { - /** @deprecated use `GetAllMediaLibraryLibraryResponseType$inboundSchema` instead. */ +export namespace GetLibrarySectionsAllLibraryResponseType$ { + /** @deprecated use `GetLibrarySectionsAllLibraryResponseType$inboundSchema` instead. */ export const inboundSchema = - GetAllMediaLibraryLibraryResponseType$inboundSchema; - /** @deprecated use `GetAllMediaLibraryLibraryResponseType$outboundSchema` instead. */ + GetLibrarySectionsAllLibraryResponseType$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllLibraryResponseType$outboundSchema` instead. */ export const outboundSchema = - GetAllMediaLibraryLibraryResponseType$outboundSchema; + GetLibrarySectionsAllLibraryResponseType$outboundSchema; } /** @internal */ -export const GetAllMediaLibraryImage$inboundSchema: z.ZodType< - GetAllMediaLibraryImage, +export const GetLibrarySectionsAllImage$inboundSchema: z.ZodType< + GetLibrarySectionsAllImage, z.ZodTypeDef, unknown > = z.object({ alt: z.string(), - type: GetAllMediaLibraryLibraryResponseType$inboundSchema, + type: GetLibrarySectionsAllLibraryResponseType$inboundSchema, url: z.string(), }); /** @internal */ -export type GetAllMediaLibraryImage$Outbound = { +export type GetLibrarySectionsAllImage$Outbound = { alt: string; type: string; url: string; }; /** @internal */ -export const GetAllMediaLibraryImage$outboundSchema: z.ZodType< - GetAllMediaLibraryImage$Outbound, +export const GetLibrarySectionsAllImage$outboundSchema: z.ZodType< + GetLibrarySectionsAllImage$Outbound, z.ZodTypeDef, - GetAllMediaLibraryImage + GetLibrarySectionsAllImage > = z.object({ alt: z.string(), - type: GetAllMediaLibraryLibraryResponseType$outboundSchema, + type: GetLibrarySectionsAllLibraryResponseType$outboundSchema, url: z.string(), }); @@ -1921,36 +1942,36 @@ export const GetAllMediaLibraryImage$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryImage$ { - /** @deprecated use `GetAllMediaLibraryImage$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryImage$inboundSchema; - /** @deprecated use `GetAllMediaLibraryImage$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryImage$outboundSchema; - /** @deprecated use `GetAllMediaLibraryImage$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryImage$Outbound; +export namespace GetLibrarySectionsAllImage$ { + /** @deprecated use `GetLibrarySectionsAllImage$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllImage$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllImage$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllImage$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllImage$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllImage$Outbound; } -export function getAllMediaLibraryImageToJSON( - getAllMediaLibraryImage: GetAllMediaLibraryImage, +export function getLibrarySectionsAllImageToJSON( + getLibrarySectionsAllImage: GetLibrarySectionsAllImage, ): string { return JSON.stringify( - GetAllMediaLibraryImage$outboundSchema.parse(getAllMediaLibraryImage), + GetLibrarySectionsAllImage$outboundSchema.parse(getLibrarySectionsAllImage), ); } -export function getAllMediaLibraryImageFromJSON( +export function getLibrarySectionsAllImageFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryImage' from JSON`, + (x) => GetLibrarySectionsAllImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllImage' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryUltraBlurColors$inboundSchema: z.ZodType< - GetAllMediaLibraryUltraBlurColors, +export const GetLibrarySectionsAllUltraBlurColors$inboundSchema: z.ZodType< + GetLibrarySectionsAllUltraBlurColors, z.ZodTypeDef, unknown > = z.object({ @@ -1961,7 +1982,7 @@ export const GetAllMediaLibraryUltraBlurColors$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryUltraBlurColors$Outbound = { +export type GetLibrarySectionsAllUltraBlurColors$Outbound = { topLeft: string; topRight: string; bottomRight: string; @@ -1969,10 +1990,10 @@ export type GetAllMediaLibraryUltraBlurColors$Outbound = { }; /** @internal */ -export const GetAllMediaLibraryUltraBlurColors$outboundSchema: z.ZodType< - GetAllMediaLibraryUltraBlurColors$Outbound, +export const GetLibrarySectionsAllUltraBlurColors$outboundSchema: z.ZodType< + GetLibrarySectionsAllUltraBlurColors$Outbound, z.ZodTypeDef, - GetAllMediaLibraryUltraBlurColors + GetLibrarySectionsAllUltraBlurColors > = z.object({ topLeft: z.string(), topRight: z.string(), @@ -1984,33 +2005,89 @@ export const GetAllMediaLibraryUltraBlurColors$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryUltraBlurColors$ { - /** @deprecated use `GetAllMediaLibraryUltraBlurColors$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryUltraBlurColors$inboundSchema; - /** @deprecated use `GetAllMediaLibraryUltraBlurColors$outboundSchema` instead. */ +export namespace GetLibrarySectionsAllUltraBlurColors$ { + /** @deprecated use `GetLibrarySectionsAllUltraBlurColors$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllUltraBlurColors$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllUltraBlurColors$outboundSchema` instead. */ export const outboundSchema = - GetAllMediaLibraryUltraBlurColors$outboundSchema; - /** @deprecated use `GetAllMediaLibraryUltraBlurColors$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryUltraBlurColors$Outbound; + GetLibrarySectionsAllUltraBlurColors$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllUltraBlurColors$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllUltraBlurColors$Outbound; } -export function getAllMediaLibraryUltraBlurColorsToJSON( - getAllMediaLibraryUltraBlurColors: GetAllMediaLibraryUltraBlurColors, +export function getLibrarySectionsAllUltraBlurColorsToJSON( + getLibrarySectionsAllUltraBlurColors: GetLibrarySectionsAllUltraBlurColors, ): string { return JSON.stringify( - GetAllMediaLibraryUltraBlurColors$outboundSchema.parse( - getAllMediaLibraryUltraBlurColors, + GetLibrarySectionsAllUltraBlurColors$outboundSchema.parse( + getLibrarySectionsAllUltraBlurColors, ), ); } -export function getAllMediaLibraryUltraBlurColorsFromJSON( +export function getLibrarySectionsAllUltraBlurColorsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryUltraBlurColors$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryUltraBlurColors' from JSON`, + (x) => + GetLibrarySectionsAllUltraBlurColors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllUltraBlurColors' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllGuids$inboundSchema: z.ZodType< + GetLibrarySectionsAllGuids, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +/** @internal */ +export type GetLibrarySectionsAllGuids$Outbound = { + id: string; +}; + +/** @internal */ +export const GetLibrarySectionsAllGuids$outboundSchema: z.ZodType< + GetLibrarySectionsAllGuids$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllGuids +> = z.object({ + id: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllGuids$ { + /** @deprecated use `GetLibrarySectionsAllGuids$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllGuids$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllGuids$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllGuids$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllGuids$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllGuids$Outbound; +} + +export function getLibrarySectionsAllGuidsToJSON( + getLibrarySectionsAllGuids: GetLibrarySectionsAllGuids, +): string { + return JSON.stringify( + GetLibrarySectionsAllGuids$outboundSchema.parse(getLibrarySectionsAllGuids), + ); +} + +export function getLibrarySectionsAllGuidsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetLibrarySectionsAllGuids$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllGuids' from JSON`, ); } @@ -2036,111 +2113,112 @@ export namespace OptimizedForStreaming1$ { } /** @internal */ -export const GetAllMediaLibraryOptimizedForStreaming$inboundSchema: z.ZodType< - GetAllMediaLibraryOptimizedForStreaming, - z.ZodTypeDef, - unknown -> = z.union([OptimizedForStreaming1$inboundSchema, z.boolean()]); +export const GetLibrarySectionsAllOptimizedForStreaming$inboundSchema: + z.ZodType = + z.union([OptimizedForStreaming1$inboundSchema, z.boolean()]); /** @internal */ -export type GetAllMediaLibraryOptimizedForStreaming$Outbound = number | boolean; - -/** @internal */ -export const GetAllMediaLibraryOptimizedForStreaming$outboundSchema: z.ZodType< - GetAllMediaLibraryOptimizedForStreaming$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryOptimizedForStreaming -> = z.union([OptimizedForStreaming1$outboundSchema, z.boolean()]); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryOptimizedForStreaming$ { - /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming$inboundSchema` instead. */ - export const inboundSchema = - GetAllMediaLibraryOptimizedForStreaming$inboundSchema; - /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming$outboundSchema` instead. */ - export const outboundSchema = - GetAllMediaLibraryOptimizedForStreaming$outboundSchema; - /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryOptimizedForStreaming$Outbound; -} - -export function getAllMediaLibraryOptimizedForStreamingToJSON( - getAllMediaLibraryOptimizedForStreaming: - GetAllMediaLibraryOptimizedForStreaming, -): string { - return JSON.stringify( - GetAllMediaLibraryOptimizedForStreaming$outboundSchema.parse( - getAllMediaLibraryOptimizedForStreaming, - ), - ); -} - -export function getAllMediaLibraryOptimizedForStreamingFromJSON( - jsonString: string, -): SafeParseResult< - GetAllMediaLibraryOptimizedForStreaming, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - GetAllMediaLibraryOptimizedForStreaming$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'GetAllMediaLibraryOptimizedForStreaming' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryOptimizedForStreaming1$inboundSchema: - z.ZodNativeEnum = z - .nativeEnum(GetAllMediaLibraryOptimizedForStreaming1); - -/** @internal */ -export const GetAllMediaLibraryOptimizedForStreaming1$outboundSchema: - z.ZodNativeEnum = - GetAllMediaLibraryOptimizedForStreaming1$inboundSchema; - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryOptimizedForStreaming1$ { - /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming1$inboundSchema` instead. */ - export const inboundSchema = - GetAllMediaLibraryOptimizedForStreaming1$inboundSchema; - /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming1$outboundSchema` instead. */ - export const outboundSchema = - GetAllMediaLibraryOptimizedForStreaming1$outboundSchema; -} - -/** @internal */ -export const GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema: - z.ZodType< - GetAllMediaLibraryLibraryOptimizedForStreaming, - z.ZodTypeDef, - unknown - > = z.union([ - GetAllMediaLibraryOptimizedForStreaming1$inboundSchema, - z.boolean(), - ]); - -/** @internal */ -export type GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound = +export type GetLibrarySectionsAllOptimizedForStreaming$Outbound = | number | boolean; /** @internal */ -export const GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema: +export const GetLibrarySectionsAllOptimizedForStreaming$outboundSchema: z.ZodType< - GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound, + GetLibrarySectionsAllOptimizedForStreaming$Outbound, z.ZodTypeDef, - GetAllMediaLibraryLibraryOptimizedForStreaming + GetLibrarySectionsAllOptimizedForStreaming + > = z.union([OptimizedForStreaming1$outboundSchema, z.boolean()]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllOptimizedForStreaming$ { + /** @deprecated use `GetLibrarySectionsAllOptimizedForStreaming$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllOptimizedForStreaming$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllOptimizedForStreaming$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllOptimizedForStreaming$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllOptimizedForStreaming$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllOptimizedForStreaming$Outbound; +} + +export function getLibrarySectionsAllOptimizedForStreamingToJSON( + getLibrarySectionsAllOptimizedForStreaming: + GetLibrarySectionsAllOptimizedForStreaming, +): string { + return JSON.stringify( + GetLibrarySectionsAllOptimizedForStreaming$outboundSchema.parse( + getLibrarySectionsAllOptimizedForStreaming, + ), + ); +} + +export function getLibrarySectionsAllOptimizedForStreamingFromJSON( + jsonString: string, +): SafeParseResult< + GetLibrarySectionsAllOptimizedForStreaming, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + GetLibrarySectionsAllOptimizedForStreaming$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'GetLibrarySectionsAllOptimizedForStreaming' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllOptimizedForStreaming1$inboundSchema: + z.ZodNativeEnum = z + .nativeEnum(GetLibrarySectionsAllOptimizedForStreaming1); + +/** @internal */ +export const GetLibrarySectionsAllOptimizedForStreaming1$outboundSchema: + z.ZodNativeEnum = + GetLibrarySectionsAllOptimizedForStreaming1$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllOptimizedForStreaming1$ { + /** @deprecated use `GetLibrarySectionsAllOptimizedForStreaming1$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllOptimizedForStreaming1$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllOptimizedForStreaming1$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllOptimizedForStreaming1$outboundSchema; +} + +/** @internal */ +export const GetLibrarySectionsAllLibraryOptimizedForStreaming$inboundSchema: + z.ZodType< + GetLibrarySectionsAllLibraryOptimizedForStreaming, + z.ZodTypeDef, + unknown > = z.union([ - GetAllMediaLibraryOptimizedForStreaming1$outboundSchema, + GetLibrarySectionsAllOptimizedForStreaming1$inboundSchema, + z.boolean(), + ]); + +/** @internal */ +export type GetLibrarySectionsAllLibraryOptimizedForStreaming$Outbound = + | number + | boolean; + +/** @internal */ +export const GetLibrarySectionsAllLibraryOptimizedForStreaming$outboundSchema: + z.ZodType< + GetLibrarySectionsAllLibraryOptimizedForStreaming$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllLibraryOptimizedForStreaming + > = z.union([ + GetLibrarySectionsAllOptimizedForStreaming1$outboundSchema, z.boolean(), ]); @@ -2148,84 +2226,85 @@ export const GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema: * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryLibraryOptimizedForStreaming$ { - /** @deprecated use `GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema` instead. */ +export namespace GetLibrarySectionsAllLibraryOptimizedForStreaming$ { + /** @deprecated use `GetLibrarySectionsAllLibraryOptimizedForStreaming$inboundSchema` instead. */ export const inboundSchema = - GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema; - /** @deprecated use `GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema` instead. */ + GetLibrarySectionsAllLibraryOptimizedForStreaming$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllLibraryOptimizedForStreaming$outboundSchema` instead. */ export const outboundSchema = - GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema; - /** @deprecated use `GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound` instead. */ + GetLibrarySectionsAllLibraryOptimizedForStreaming$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllLibraryOptimizedForStreaming$Outbound` instead. */ export type Outbound = - GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound; + GetLibrarySectionsAllLibraryOptimizedForStreaming$Outbound; } -export function getAllMediaLibraryLibraryOptimizedForStreamingToJSON( - getAllMediaLibraryLibraryOptimizedForStreaming: - GetAllMediaLibraryLibraryOptimizedForStreaming, +export function getLibrarySectionsAllLibraryOptimizedForStreamingToJSON( + getLibrarySectionsAllLibraryOptimizedForStreaming: + GetLibrarySectionsAllLibraryOptimizedForStreaming, ): string { return JSON.stringify( - GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema.parse( - getAllMediaLibraryLibraryOptimizedForStreaming, + GetLibrarySectionsAllLibraryOptimizedForStreaming$outboundSchema.parse( + getLibrarySectionsAllLibraryOptimizedForStreaming, ), ); } -export function getAllMediaLibraryLibraryOptimizedForStreamingFromJSON( +export function getLibrarySectionsAllLibraryOptimizedForStreamingFromJSON( jsonString: string, ): SafeParseResult< - GetAllMediaLibraryLibraryOptimizedForStreaming, + GetLibrarySectionsAllLibraryOptimizedForStreaming, SDKValidationError > { return safeParse( jsonString, (x) => - GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema.parse( + GetLibrarySectionsAllLibraryOptimizedForStreaming$inboundSchema.parse( JSON.parse(x), ), - `Failed to parse 'GetAllMediaLibraryLibraryOptimizedForStreaming' from JSON`, + `Failed to parse 'GetLibrarySectionsAllLibraryOptimizedForStreaming' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryHasThumbnail$inboundSchema: z.ZodNativeEnum< - typeof GetAllMediaLibraryHasThumbnail -> = z.nativeEnum(GetAllMediaLibraryHasThumbnail); +export const GetLibrarySectionsAllHasThumbnail$inboundSchema: z.ZodNativeEnum< + typeof GetLibrarySectionsAllHasThumbnail +> = z.nativeEnum(GetLibrarySectionsAllHasThumbnail); /** @internal */ -export const GetAllMediaLibraryHasThumbnail$outboundSchema: z.ZodNativeEnum< - typeof GetAllMediaLibraryHasThumbnail -> = GetAllMediaLibraryHasThumbnail$inboundSchema; +export const GetLibrarySectionsAllHasThumbnail$outboundSchema: z.ZodNativeEnum< + typeof GetLibrarySectionsAllHasThumbnail +> = GetLibrarySectionsAllHasThumbnail$inboundSchema; /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryHasThumbnail$ { - /** @deprecated use `GetAllMediaLibraryHasThumbnail$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryHasThumbnail$inboundSchema; - /** @deprecated use `GetAllMediaLibraryHasThumbnail$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryHasThumbnail$outboundSchema; +export namespace GetLibrarySectionsAllHasThumbnail$ { + /** @deprecated use `GetLibrarySectionsAllHasThumbnail$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllHasThumbnail$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllHasThumbnail$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllHasThumbnail$outboundSchema; } /** @internal */ -export const GetAllMediaLibraryStreamType$inboundSchema: z.ZodType< - GetAllMediaLibraryStreamTypeOpen, +export const GetLibrarySectionsAllStreamType$inboundSchema: z.ZodType< + GetLibrarySectionsAllStreamTypeOpen, z.ZodTypeDef, unknown > = z .union([ - z.nativeEnum(GetAllMediaLibraryStreamType), + z.nativeEnum(GetLibrarySectionsAllStreamType), z.number().transform(catchUnrecognizedEnum), ]); /** @internal */ -export const GetAllMediaLibraryStreamType$outboundSchema: z.ZodType< - GetAllMediaLibraryStreamTypeOpen, +export const GetLibrarySectionsAllStreamType$outboundSchema: z.ZodType< + GetLibrarySectionsAllStreamTypeOpen, z.ZodTypeDef, - GetAllMediaLibraryStreamTypeOpen + GetLibrarySectionsAllStreamTypeOpen > = z.union([ - z.nativeEnum(GetAllMediaLibraryStreamType), + z.nativeEnum(GetLibrarySectionsAllStreamType), z.number().and(z.custom>()), ]); @@ -2233,21 +2312,21 @@ export const GetAllMediaLibraryStreamType$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryStreamType$ { - /** @deprecated use `GetAllMediaLibraryStreamType$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryStreamType$inboundSchema; - /** @deprecated use `GetAllMediaLibraryStreamType$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryStreamType$outboundSchema; +export namespace GetLibrarySectionsAllStreamType$ { + /** @deprecated use `GetLibrarySectionsAllStreamType$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllStreamType$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllStreamType$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllStreamType$outboundSchema; } /** @internal */ -export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< - GetAllMediaLibraryStream, +export const GetLibrarySectionsAllStream$inboundSchema: z.ZodType< + GetLibrarySectionsAllStream, z.ZodTypeDef, unknown > = z.object({ id: z.number().int(), - streamType: GetAllMediaLibraryStreamType$inboundSchema, + streamType: GetLibrarySectionsAllStreamType$inboundSchema, format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), @@ -2311,7 +2390,7 @@ export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryStream$Outbound = { +export type GetLibrarySectionsAllStream$Outbound = { id: number; streamType: number; format?: string | undefined; @@ -2366,13 +2445,13 @@ export type GetAllMediaLibraryStream$Outbound = { }; /** @internal */ -export const GetAllMediaLibraryStream$outboundSchema: z.ZodType< - GetAllMediaLibraryStream$Outbound, +export const GetLibrarySectionsAllStream$outboundSchema: z.ZodType< + GetLibrarySectionsAllStream$Outbound, z.ZodTypeDef, - GetAllMediaLibraryStream + GetLibrarySectionsAllStream > = z.object({ id: z.number().int(), - streamType: GetAllMediaLibraryStreamType$outboundSchema, + streamType: GetLibrarySectionsAllStreamType$outboundSchema, format: z.string().optional(), default: z.boolean().optional(), codec: z.string(), @@ -2439,36 +2518,38 @@ export const GetAllMediaLibraryStream$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryStream$ { - /** @deprecated use `GetAllMediaLibraryStream$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryStream$inboundSchema; - /** @deprecated use `GetAllMediaLibraryStream$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryStream$outboundSchema; - /** @deprecated use `GetAllMediaLibraryStream$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryStream$Outbound; +export namespace GetLibrarySectionsAllStream$ { + /** @deprecated use `GetLibrarySectionsAllStream$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllStream$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllStream$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllStream$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllStream$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllStream$Outbound; } -export function getAllMediaLibraryStreamToJSON( - getAllMediaLibraryStream: GetAllMediaLibraryStream, +export function getLibrarySectionsAllStreamToJSON( + getLibrarySectionsAllStream: GetLibrarySectionsAllStream, ): string { return JSON.stringify( - GetAllMediaLibraryStream$outboundSchema.parse(getAllMediaLibraryStream), + GetLibrarySectionsAllStream$outboundSchema.parse( + getLibrarySectionsAllStream, + ), ); } -export function getAllMediaLibraryStreamFromJSON( +export function getLibrarySectionsAllStreamFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryStream$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryStream' from JSON`, + (x) => GetLibrarySectionsAllStream$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllStream' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryPart$inboundSchema: z.ZodType< - GetAllMediaLibraryPart, +export const GetLibrarySectionsAllPart$inboundSchema: z.ZodType< + GetLibrarySectionsAllPart, z.ZodTypeDef, unknown > = z.object({ @@ -2486,13 +2567,13 @@ export const GetAllMediaLibraryPart$inboundSchema: z.ZodType< audioProfile: z.string().optional(), has64bitOffsets: z.boolean().optional(), optimizedForStreaming: z.union([ - GetAllMediaLibraryOptimizedForStreaming1$inboundSchema, + GetLibrarySectionsAllOptimizedForStreaming1$inboundSchema, z.boolean(), ]).optional(), - hasThumbnail: GetAllMediaLibraryHasThumbnail$inboundSchema.default( - GetAllMediaLibraryHasThumbnail.False, + hasThumbnail: GetLibrarySectionsAllHasThumbnail$inboundSchema.default( + GetLibrarySectionsAllHasThumbnail.False, ), - Stream: z.array(z.lazy(() => GetAllMediaLibraryStream$inboundSchema)) + Stream: z.array(z.lazy(() => GetLibrarySectionsAllStream$inboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -2501,7 +2582,7 @@ export const GetAllMediaLibraryPart$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryPart$Outbound = { +export type GetLibrarySectionsAllPart$Outbound = { accessible?: boolean | undefined; exists?: boolean | undefined; id: number; @@ -2517,14 +2598,14 @@ export type GetAllMediaLibraryPart$Outbound = { has64bitOffsets?: boolean | undefined; optimizedForStreaming?: number | boolean | undefined; hasThumbnail: string; - Stream?: Array | undefined; + Stream?: Array | undefined; }; /** @internal */ -export const GetAllMediaLibraryPart$outboundSchema: z.ZodType< - GetAllMediaLibraryPart$Outbound, +export const GetLibrarySectionsAllPart$outboundSchema: z.ZodType< + GetLibrarySectionsAllPart$Outbound, z.ZodTypeDef, - GetAllMediaLibraryPart + GetLibrarySectionsAllPart > = z.object({ accessible: z.boolean().optional(), exists: z.boolean().optional(), @@ -2540,13 +2621,13 @@ export const GetAllMediaLibraryPart$outboundSchema: z.ZodType< audioProfile: z.string().optional(), has64bitOffsets: z.boolean().optional(), optimizedForStreaming: z.union([ - GetAllMediaLibraryOptimizedForStreaming1$outboundSchema, + GetLibrarySectionsAllOptimizedForStreaming1$outboundSchema, z.boolean(), ]).optional(), - hasThumbnail: GetAllMediaLibraryHasThumbnail$outboundSchema.default( - GetAllMediaLibraryHasThumbnail.False, + hasThumbnail: GetLibrarySectionsAllHasThumbnail$outboundSchema.default( + GetLibrarySectionsAllHasThumbnail.False, ), - stream: z.array(z.lazy(() => GetAllMediaLibraryStream$outboundSchema)) + stream: z.array(z.lazy(() => GetLibrarySectionsAllStream$outboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -2558,36 +2639,36 @@ export const GetAllMediaLibraryPart$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryPart$ { - /** @deprecated use `GetAllMediaLibraryPart$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryPart$inboundSchema; - /** @deprecated use `GetAllMediaLibraryPart$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryPart$outboundSchema; - /** @deprecated use `GetAllMediaLibraryPart$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryPart$Outbound; +export namespace GetLibrarySectionsAllPart$ { + /** @deprecated use `GetLibrarySectionsAllPart$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllPart$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllPart$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllPart$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllPart$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllPart$Outbound; } -export function getAllMediaLibraryPartToJSON( - getAllMediaLibraryPart: GetAllMediaLibraryPart, +export function getLibrarySectionsAllPartToJSON( + getLibrarySectionsAllPart: GetLibrarySectionsAllPart, ): string { return JSON.stringify( - GetAllMediaLibraryPart$outboundSchema.parse(getAllMediaLibraryPart), + GetLibrarySectionsAllPart$outboundSchema.parse(getLibrarySectionsAllPart), ); } -export function getAllMediaLibraryPartFromJSON( +export function getLibrarySectionsAllPartFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryPart$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryPart' from JSON`, + (x) => GetLibrarySectionsAllPart$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllPart' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryMedia$inboundSchema: z.ZodType< - GetAllMediaLibraryMedia, +export const GetLibrarySectionsAllMedia$inboundSchema: z.ZodType< + GetLibrarySectionsAllMedia, z.ZodTypeDef, unknown > = z.object({ @@ -2612,7 +2693,8 @@ export const GetAllMediaLibraryMedia$inboundSchema: z.ZodType< z.boolean(), ]).optional(), has64bitOffsets: z.boolean().optional(), - Part: z.array(z.lazy(() => GetAllMediaLibraryPart$inboundSchema)).optional(), + Part: z.array(z.lazy(() => GetLibrarySectionsAllPart$inboundSchema)) + .optional(), }).transform((v) => { return remap$(v, { "Part": "part", @@ -2620,7 +2702,7 @@ export const GetAllMediaLibraryMedia$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryMedia$Outbound = { +export type GetLibrarySectionsAllMedia$Outbound = { id: number; duration?: number | undefined; bitrate?: number | undefined; @@ -2639,14 +2721,14 @@ export type GetAllMediaLibraryMedia$Outbound = { audioProfile?: string | undefined; optimizedForStreaming?: number | boolean | undefined; has64bitOffsets?: boolean | undefined; - Part?: Array | undefined; + Part?: Array | undefined; }; /** @internal */ -export const GetAllMediaLibraryMedia$outboundSchema: z.ZodType< - GetAllMediaLibraryMedia$Outbound, +export const GetLibrarySectionsAllMedia$outboundSchema: z.ZodType< + GetLibrarySectionsAllMedia$Outbound, z.ZodTypeDef, - GetAllMediaLibraryMedia + GetLibrarySectionsAllMedia > = z.object({ id: z.number().int(), duration: z.number().int().optional(), @@ -2669,7 +2751,8 @@ export const GetAllMediaLibraryMedia$outboundSchema: z.ZodType< z.boolean(), ]).optional(), has64bitOffsets: z.boolean().optional(), - part: z.array(z.lazy(() => GetAllMediaLibraryPart$outboundSchema)).optional(), + part: z.array(z.lazy(() => GetLibrarySectionsAllPart$outboundSchema)) + .optional(), }).transform((v) => { return remap$(v, { part: "Part", @@ -2680,36 +2763,36 @@ export const GetAllMediaLibraryMedia$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryMedia$ { - /** @deprecated use `GetAllMediaLibraryMedia$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryMedia$inboundSchema; - /** @deprecated use `GetAllMediaLibraryMedia$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryMedia$outboundSchema; - /** @deprecated use `GetAllMediaLibraryMedia$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryMedia$Outbound; +export namespace GetLibrarySectionsAllMedia$ { + /** @deprecated use `GetLibrarySectionsAllMedia$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllMedia$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllMedia$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllMedia$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllMedia$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllMedia$Outbound; } -export function getAllMediaLibraryMediaToJSON( - getAllMediaLibraryMedia: GetAllMediaLibraryMedia, +export function getLibrarySectionsAllMediaToJSON( + getLibrarySectionsAllMedia: GetLibrarySectionsAllMedia, ): string { return JSON.stringify( - GetAllMediaLibraryMedia$outboundSchema.parse(getAllMediaLibraryMedia), + GetLibrarySectionsAllMedia$outboundSchema.parse(getLibrarySectionsAllMedia), ); } -export function getAllMediaLibraryMediaFromJSON( +export function getLibrarySectionsAllMediaFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryMedia$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryMedia' from JSON`, + (x) => GetLibrarySectionsAllMedia$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllMedia' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryGenre$inboundSchema: z.ZodType< - GetAllMediaLibraryGenre, +export const GetLibrarySectionsAllGenre$inboundSchema: z.ZodType< + GetLibrarySectionsAllGenre, z.ZodTypeDef, unknown > = z.object({ @@ -2717,15 +2800,15 @@ export const GetAllMediaLibraryGenre$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryGenre$Outbound = { +export type GetLibrarySectionsAllGenre$Outbound = { tag: string; }; /** @internal */ -export const GetAllMediaLibraryGenre$outboundSchema: z.ZodType< - GetAllMediaLibraryGenre$Outbound, +export const GetLibrarySectionsAllGenre$outboundSchema: z.ZodType< + GetLibrarySectionsAllGenre$Outbound, z.ZodTypeDef, - GetAllMediaLibraryGenre + GetLibrarySectionsAllGenre > = z.object({ tag: z.string(), }); @@ -2734,36 +2817,36 @@ export const GetAllMediaLibraryGenre$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryGenre$ { - /** @deprecated use `GetAllMediaLibraryGenre$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryGenre$inboundSchema; - /** @deprecated use `GetAllMediaLibraryGenre$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryGenre$outboundSchema; - /** @deprecated use `GetAllMediaLibraryGenre$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryGenre$Outbound; +export namespace GetLibrarySectionsAllGenre$ { + /** @deprecated use `GetLibrarySectionsAllGenre$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllGenre$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllGenre$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllGenre$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllGenre$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllGenre$Outbound; } -export function getAllMediaLibraryGenreToJSON( - getAllMediaLibraryGenre: GetAllMediaLibraryGenre, +export function getLibrarySectionsAllGenreToJSON( + getLibrarySectionsAllGenre: GetLibrarySectionsAllGenre, ): string { return JSON.stringify( - GetAllMediaLibraryGenre$outboundSchema.parse(getAllMediaLibraryGenre), + GetLibrarySectionsAllGenre$outboundSchema.parse(getLibrarySectionsAllGenre), ); } -export function getAllMediaLibraryGenreFromJSON( +export function getLibrarySectionsAllGenreFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryGenre$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryGenre' from JSON`, + (x) => GetLibrarySectionsAllGenre$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllGenre' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryCountry$inboundSchema: z.ZodType< - GetAllMediaLibraryCountry, +export const GetLibrarySectionsAllCountry$inboundSchema: z.ZodType< + GetLibrarySectionsAllCountry, z.ZodTypeDef, unknown > = z.object({ @@ -2771,15 +2854,15 @@ export const GetAllMediaLibraryCountry$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryCountry$Outbound = { +export type GetLibrarySectionsAllCountry$Outbound = { tag: string; }; /** @internal */ -export const GetAllMediaLibraryCountry$outboundSchema: z.ZodType< - GetAllMediaLibraryCountry$Outbound, +export const GetLibrarySectionsAllCountry$outboundSchema: z.ZodType< + GetLibrarySectionsAllCountry$Outbound, z.ZodTypeDef, - GetAllMediaLibraryCountry + GetLibrarySectionsAllCountry > = z.object({ tag: z.string(), }); @@ -2788,308 +2871,260 @@ export const GetAllMediaLibraryCountry$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryCountry$ { - /** @deprecated use `GetAllMediaLibraryCountry$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryCountry$inboundSchema; - /** @deprecated use `GetAllMediaLibraryCountry$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryCountry$outboundSchema; - /** @deprecated use `GetAllMediaLibraryCountry$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryCountry$Outbound; +export namespace GetLibrarySectionsAllCountry$ { + /** @deprecated use `GetLibrarySectionsAllCountry$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllCountry$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllCountry$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllCountry$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllCountry$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllCountry$Outbound; } -export function getAllMediaLibraryCountryToJSON( - getAllMediaLibraryCountry: GetAllMediaLibraryCountry, +export function getLibrarySectionsAllCountryToJSON( + getLibrarySectionsAllCountry: GetLibrarySectionsAllCountry, ): string { return JSON.stringify( - GetAllMediaLibraryCountry$outboundSchema.parse(getAllMediaLibraryCountry), - ); -} - -export function getAllMediaLibraryCountryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryCountry$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryCountry' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryDirector$inboundSchema: z.ZodType< - GetAllMediaLibraryDirector, - z.ZodTypeDef, - unknown -> = z.object({ - tag: z.string(), -}); - -/** @internal */ -export type GetAllMediaLibraryDirector$Outbound = { - tag: string; -}; - -/** @internal */ -export const GetAllMediaLibraryDirector$outboundSchema: z.ZodType< - GetAllMediaLibraryDirector$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryDirector -> = z.object({ - tag: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryDirector$ { - /** @deprecated use `GetAllMediaLibraryDirector$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryDirector$inboundSchema; - /** @deprecated use `GetAllMediaLibraryDirector$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryDirector$outboundSchema; - /** @deprecated use `GetAllMediaLibraryDirector$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryDirector$Outbound; -} - -export function getAllMediaLibraryDirectorToJSON( - getAllMediaLibraryDirector: GetAllMediaLibraryDirector, -): string { - return JSON.stringify( - GetAllMediaLibraryDirector$outboundSchema.parse(getAllMediaLibraryDirector), - ); -} - -export function getAllMediaLibraryDirectorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryDirector$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryDirector' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryWriter$inboundSchema: z.ZodType< - GetAllMediaLibraryWriter, - z.ZodTypeDef, - unknown -> = z.object({ - tag: z.string(), -}); - -/** @internal */ -export type GetAllMediaLibraryWriter$Outbound = { - tag: string; -}; - -/** @internal */ -export const GetAllMediaLibraryWriter$outboundSchema: z.ZodType< - GetAllMediaLibraryWriter$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryWriter -> = z.object({ - tag: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryWriter$ { - /** @deprecated use `GetAllMediaLibraryWriter$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryWriter$inboundSchema; - /** @deprecated use `GetAllMediaLibraryWriter$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryWriter$outboundSchema; - /** @deprecated use `GetAllMediaLibraryWriter$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryWriter$Outbound; -} - -export function getAllMediaLibraryWriterToJSON( - getAllMediaLibraryWriter: GetAllMediaLibraryWriter, -): string { - return JSON.stringify( - GetAllMediaLibraryWriter$outboundSchema.parse(getAllMediaLibraryWriter), - ); -} - -export function getAllMediaLibraryWriterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryWriter$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryWriter' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryRole$inboundSchema: z.ZodType< - GetAllMediaLibraryRole, - z.ZodTypeDef, - unknown -> = z.object({ - tag: z.string(), -}); - -/** @internal */ -export type GetAllMediaLibraryRole$Outbound = { - tag: string; -}; - -/** @internal */ -export const GetAllMediaLibraryRole$outboundSchema: z.ZodType< - GetAllMediaLibraryRole$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryRole -> = z.object({ - tag: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryRole$ { - /** @deprecated use `GetAllMediaLibraryRole$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryRole$inboundSchema; - /** @deprecated use `GetAllMediaLibraryRole$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryRole$outboundSchema; - /** @deprecated use `GetAllMediaLibraryRole$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryRole$Outbound; -} - -export function getAllMediaLibraryRoleToJSON( - getAllMediaLibraryRole: GetAllMediaLibraryRole, -): string { - return JSON.stringify( - GetAllMediaLibraryRole$outboundSchema.parse(getAllMediaLibraryRole), - ); -} - -export function getAllMediaLibraryRoleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryRole$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryRole' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryGuids$inboundSchema: z.ZodType< - GetAllMediaLibraryGuids, - z.ZodTypeDef, - unknown -> = z.object({ - id: z.string().optional(), -}); - -/** @internal */ -export type GetAllMediaLibraryGuids$Outbound = { - id?: string | undefined; -}; - -/** @internal */ -export const GetAllMediaLibraryGuids$outboundSchema: z.ZodType< - GetAllMediaLibraryGuids$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryGuids -> = z.object({ - id: z.string().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryGuids$ { - /** @deprecated use `GetAllMediaLibraryGuids$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryGuids$inboundSchema; - /** @deprecated use `GetAllMediaLibraryGuids$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryGuids$outboundSchema; - /** @deprecated use `GetAllMediaLibraryGuids$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryGuids$Outbound; -} - -export function getAllMediaLibraryGuidsToJSON( - getAllMediaLibraryGuids: GetAllMediaLibraryGuids, -): string { - return JSON.stringify( - GetAllMediaLibraryGuids$outboundSchema.parse(getAllMediaLibraryGuids), - ); -} - -export function getAllMediaLibraryGuidsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetAllMediaLibraryGuids$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryGuids' from JSON`, - ); -} - -/** @internal */ -export const GetAllMediaLibraryCollection$inboundSchema: z.ZodType< - GetAllMediaLibraryCollection, - z.ZodTypeDef, - unknown -> = z.object({ - tag: z.string(), -}); - -/** @internal */ -export type GetAllMediaLibraryCollection$Outbound = { - tag: string; -}; - -/** @internal */ -export const GetAllMediaLibraryCollection$outboundSchema: z.ZodType< - GetAllMediaLibraryCollection$Outbound, - z.ZodTypeDef, - GetAllMediaLibraryCollection -> = z.object({ - tag: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetAllMediaLibraryCollection$ { - /** @deprecated use `GetAllMediaLibraryCollection$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryCollection$inboundSchema; - /** @deprecated use `GetAllMediaLibraryCollection$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryCollection$outboundSchema; - /** @deprecated use `GetAllMediaLibraryCollection$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryCollection$Outbound; -} - -export function getAllMediaLibraryCollectionToJSON( - getAllMediaLibraryCollection: GetAllMediaLibraryCollection, -): string { - return JSON.stringify( - GetAllMediaLibraryCollection$outboundSchema.parse( - getAllMediaLibraryCollection, + GetLibrarySectionsAllCountry$outboundSchema.parse( + getLibrarySectionsAllCountry, ), ); } -export function getAllMediaLibraryCollectionFromJSON( +export function getLibrarySectionsAllCountryFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryCollection$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryCollection' from JSON`, + (x) => GetLibrarySectionsAllCountry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllCountry' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryMetadata$inboundSchema: z.ZodType< - GetAllMediaLibraryMetadata, +export const GetLibrarySectionsAllDirector$inboundSchema: z.ZodType< + GetLibrarySectionsAllDirector, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetLibrarySectionsAllDirector$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetLibrarySectionsAllDirector$outboundSchema: z.ZodType< + GetLibrarySectionsAllDirector$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllDirector +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllDirector$ { + /** @deprecated use `GetLibrarySectionsAllDirector$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllDirector$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllDirector$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllDirector$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllDirector$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllDirector$Outbound; +} + +export function getLibrarySectionsAllDirectorToJSON( + getLibrarySectionsAllDirector: GetLibrarySectionsAllDirector, +): string { + return JSON.stringify( + GetLibrarySectionsAllDirector$outboundSchema.parse( + getLibrarySectionsAllDirector, + ), + ); +} + +export function getLibrarySectionsAllDirectorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetLibrarySectionsAllDirector$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllDirector' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllWriter$inboundSchema: z.ZodType< + GetLibrarySectionsAllWriter, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetLibrarySectionsAllWriter$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetLibrarySectionsAllWriter$outboundSchema: z.ZodType< + GetLibrarySectionsAllWriter$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllWriter +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllWriter$ { + /** @deprecated use `GetLibrarySectionsAllWriter$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllWriter$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllWriter$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllWriter$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllWriter$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllWriter$Outbound; +} + +export function getLibrarySectionsAllWriterToJSON( + getLibrarySectionsAllWriter: GetLibrarySectionsAllWriter, +): string { + return JSON.stringify( + GetLibrarySectionsAllWriter$outboundSchema.parse( + getLibrarySectionsAllWriter, + ), + ); +} + +export function getLibrarySectionsAllWriterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetLibrarySectionsAllWriter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllWriter' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllRole$inboundSchema: z.ZodType< + GetLibrarySectionsAllRole, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetLibrarySectionsAllRole$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetLibrarySectionsAllRole$outboundSchema: z.ZodType< + GetLibrarySectionsAllRole$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllRole +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllRole$ { + /** @deprecated use `GetLibrarySectionsAllRole$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllRole$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllRole$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllRole$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllRole$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllRole$Outbound; +} + +export function getLibrarySectionsAllRoleToJSON( + getLibrarySectionsAllRole: GetLibrarySectionsAllRole, +): string { + return JSON.stringify( + GetLibrarySectionsAllRole$outboundSchema.parse(getLibrarySectionsAllRole), + ); +} + +export function getLibrarySectionsAllRoleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetLibrarySectionsAllRole$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllRole' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllCollection$inboundSchema: z.ZodType< + GetLibrarySectionsAllCollection, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetLibrarySectionsAllCollection$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetLibrarySectionsAllCollection$outboundSchema: z.ZodType< + GetLibrarySectionsAllCollection$Outbound, + z.ZodTypeDef, + GetLibrarySectionsAllCollection +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetLibrarySectionsAllCollection$ { + /** @deprecated use `GetLibrarySectionsAllCollection$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllCollection$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllCollection$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllCollection$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllCollection$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllCollection$Outbound; +} + +export function getLibrarySectionsAllCollectionToJSON( + getLibrarySectionsAllCollection: GetLibrarySectionsAllCollection, +): string { + return JSON.stringify( + GetLibrarySectionsAllCollection$outboundSchema.parse( + getLibrarySectionsAllCollection, + ), + ); +} + +export function getLibrarySectionsAllCollectionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetLibrarySectionsAllCollection$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllCollection' from JSON`, + ); +} + +/** @internal */ +export const GetLibrarySectionsAllMetadata$inboundSchema: z.ZodType< + GetLibrarySectionsAllMetadata, z.ZodTypeDef, unknown > = z.object({ @@ -3098,7 +3133,7 @@ export const GetAllMediaLibraryMetadata$inboundSchema: z.ZodType< guid: z.string(), slug: z.string(), studio: z.string().optional(), - type: GetAllMediaLibraryLibraryType$inboundSchema, + type: GetLibrarySectionsAllLibraryType$inboundSchema, title: z.string(), titleSort: z.string(), contentRating: z.string().optional(), @@ -3147,41 +3182,45 @@ export const GetAllMediaLibraryMetadata$inboundSchema: z.ZodType< createdAtTZOffset: z.string().optional(), lastViewedAt: z.number().int().optional(), userRating: z.number().optional(), - Image: z.array(z.lazy(() => GetAllMediaLibraryImage$inboundSchema)) + Image: z.array(z.lazy(() => GetLibrarySectionsAllImage$inboundSchema)) .optional(), - UltraBlurColors: z.lazy(() => GetAllMediaLibraryUltraBlurColors$inboundSchema) + UltraBlurColors: z.lazy(() => + GetLibrarySectionsAllUltraBlurColors$inboundSchema + ).optional(), + Guid: z.array(z.lazy(() => GetLibrarySectionsAllGuids$inboundSchema)) .optional(), - Media: z.array(z.lazy(() => GetAllMediaLibraryMedia$inboundSchema)) + Media: z.array(z.lazy(() => GetLibrarySectionsAllMedia$inboundSchema)) .optional(), - Genre: z.array(z.lazy(() => GetAllMediaLibraryGenre$inboundSchema)) + Genre: z.array(z.lazy(() => GetLibrarySectionsAllGenre$inboundSchema)) .optional(), - Country: z.array(z.lazy(() => GetAllMediaLibraryCountry$inboundSchema)) + Country: z.array(z.lazy(() => GetLibrarySectionsAllCountry$inboundSchema)) .optional(), - Director: z.array(z.lazy(() => GetAllMediaLibraryDirector$inboundSchema)) + Director: z.array(z.lazy(() => GetLibrarySectionsAllDirector$inboundSchema)) .optional(), - Writer: z.array(z.lazy(() => GetAllMediaLibraryWriter$inboundSchema)) + Writer: z.array(z.lazy(() => GetLibrarySectionsAllWriter$inboundSchema)) .optional(), - Role: z.array(z.lazy(() => GetAllMediaLibraryRole$inboundSchema)).optional(), - Guid: z.array(z.lazy(() => GetAllMediaLibraryGuids$inboundSchema)).optional(), - Collection: z.array(z.lazy(() => GetAllMediaLibraryCollection$inboundSchema)) + Role: z.array(z.lazy(() => GetLibrarySectionsAllRole$inboundSchema)) .optional(), + Collection: z.array( + z.lazy(() => GetLibrarySectionsAllCollection$inboundSchema), + ).optional(), }).transform((v) => { return remap$(v, { "Image": "image", "UltraBlurColors": "ultraBlurColors", + "Guid": "guids", "Media": "media", "Genre": "genre", "Country": "country", "Director": "director", "Writer": "writer", "Role": "role", - "Guid": "guids", "Collection": "collection", }); }); /** @internal */ -export type GetAllMediaLibraryMetadata$Outbound = { +export type GetLibrarySectionsAllMetadata$Outbound = { ratingKey: string; key: string; guid: string; @@ -3236,30 +3275,30 @@ export type GetAllMediaLibraryMetadata$Outbound = { createdAtTZOffset?: string | undefined; lastViewedAt?: number | undefined; userRating?: number | undefined; - Image?: Array | undefined; - UltraBlurColors?: GetAllMediaLibraryUltraBlurColors$Outbound | undefined; - Media?: Array | undefined; - Genre?: Array | undefined; - Country?: Array | undefined; - Director?: Array | undefined; - Writer?: Array | undefined; - Role?: Array | undefined; - Guid?: Array | undefined; - Collection?: Array | undefined; + Image?: Array | undefined; + UltraBlurColors?: GetLibrarySectionsAllUltraBlurColors$Outbound | undefined; + Guid?: Array | undefined; + Media?: Array | undefined; + Genre?: Array | undefined; + Country?: Array | undefined; + Director?: Array | undefined; + Writer?: Array | undefined; + Role?: Array | undefined; + Collection?: Array | undefined; }; /** @internal */ -export const GetAllMediaLibraryMetadata$outboundSchema: z.ZodType< - GetAllMediaLibraryMetadata$Outbound, +export const GetLibrarySectionsAllMetadata$outboundSchema: z.ZodType< + GetLibrarySectionsAllMetadata$Outbound, z.ZodTypeDef, - GetAllMediaLibraryMetadata + GetLibrarySectionsAllMetadata > = z.object({ ratingKey: z.string(), key: z.string(), guid: z.string(), slug: z.string(), studio: z.string().optional(), - type: GetAllMediaLibraryLibraryType$outboundSchema, + type: GetLibrarySectionsAllLibraryType$outboundSchema, title: z.string(), titleSort: z.string(), contentRating: z.string().optional(), @@ -3308,37 +3347,39 @@ export const GetAllMediaLibraryMetadata$outboundSchema: z.ZodType< createdAtTZOffset: z.string().optional(), lastViewedAt: z.number().int().optional(), userRating: z.number().optional(), - image: z.array(z.lazy(() => GetAllMediaLibraryImage$outboundSchema)) + image: z.array(z.lazy(() => GetLibrarySectionsAllImage$outboundSchema)) .optional(), ultraBlurColors: z.lazy(() => - GetAllMediaLibraryUltraBlurColors$outboundSchema + GetLibrarySectionsAllUltraBlurColors$outboundSchema ).optional(), - media: z.array(z.lazy(() => GetAllMediaLibraryMedia$outboundSchema)) + guids: z.array(z.lazy(() => GetLibrarySectionsAllGuids$outboundSchema)) .optional(), - genre: z.array(z.lazy(() => GetAllMediaLibraryGenre$outboundSchema)) + media: z.array(z.lazy(() => GetLibrarySectionsAllMedia$outboundSchema)) .optional(), - country: z.array(z.lazy(() => GetAllMediaLibraryCountry$outboundSchema)) + genre: z.array(z.lazy(() => GetLibrarySectionsAllGenre$outboundSchema)) .optional(), - director: z.array(z.lazy(() => GetAllMediaLibraryDirector$outboundSchema)) + country: z.array(z.lazy(() => GetLibrarySectionsAllCountry$outboundSchema)) .optional(), - writer: z.array(z.lazy(() => GetAllMediaLibraryWriter$outboundSchema)) + director: z.array(z.lazy(() => GetLibrarySectionsAllDirector$outboundSchema)) .optional(), - role: z.array(z.lazy(() => GetAllMediaLibraryRole$outboundSchema)).optional(), - guids: z.array(z.lazy(() => GetAllMediaLibraryGuids$outboundSchema)) + writer: z.array(z.lazy(() => GetLibrarySectionsAllWriter$outboundSchema)) .optional(), - collection: z.array(z.lazy(() => GetAllMediaLibraryCollection$outboundSchema)) + role: z.array(z.lazy(() => GetLibrarySectionsAllRole$outboundSchema)) .optional(), + collection: z.array( + z.lazy(() => GetLibrarySectionsAllCollection$outboundSchema), + ).optional(), }).transform((v) => { return remap$(v, { image: "Image", ultraBlurColors: "UltraBlurColors", + guids: "Guid", media: "Media", genre: "Genre", country: "Country", director: "Director", writer: "Writer", role: "Role", - guids: "Guid", collection: "Collection", }); }); @@ -3347,36 +3388,38 @@ export const GetAllMediaLibraryMetadata$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryMetadata$ { - /** @deprecated use `GetAllMediaLibraryMetadata$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryMetadata$inboundSchema; - /** @deprecated use `GetAllMediaLibraryMetadata$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryMetadata$outboundSchema; - /** @deprecated use `GetAllMediaLibraryMetadata$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryMetadata$Outbound; +export namespace GetLibrarySectionsAllMetadata$ { + /** @deprecated use `GetLibrarySectionsAllMetadata$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllMetadata$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllMetadata$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllMetadata$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllMetadata$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllMetadata$Outbound; } -export function getAllMediaLibraryMetadataToJSON( - getAllMediaLibraryMetadata: GetAllMediaLibraryMetadata, +export function getLibrarySectionsAllMetadataToJSON( + getLibrarySectionsAllMetadata: GetLibrarySectionsAllMetadata, ): string { return JSON.stringify( - GetAllMediaLibraryMetadata$outboundSchema.parse(getAllMediaLibraryMetadata), + GetLibrarySectionsAllMetadata$outboundSchema.parse( + getLibrarySectionsAllMetadata, + ), ); } -export function getAllMediaLibraryMetadataFromJSON( +export function getLibrarySectionsAllMetadataFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryMetadata$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryMetadata' from JSON`, + (x) => GetLibrarySectionsAllMetadata$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllMetadata' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryMediaContainer$inboundSchema: z.ZodType< - GetAllMediaLibraryMediaContainer, +export const GetLibrarySectionsAllMediaContainer$inboundSchema: z.ZodType< + GetLibrarySectionsAllMediaContainer, z.ZodTypeDef, unknown > = z.object({ @@ -3397,8 +3440,8 @@ export const GetAllMediaLibraryMediaContainer$inboundSchema: z.ZodType< title1: z.string(), title2: z.string(), viewGroup: z.string(), - Meta: z.lazy(() => GetAllMediaLibraryMeta$inboundSchema).optional(), - Metadata: z.array(z.lazy(() => GetAllMediaLibraryMetadata$inboundSchema)) + Meta: z.lazy(() => GetLibrarySectionsAllMeta$inboundSchema).optional(), + Metadata: z.array(z.lazy(() => GetLibrarySectionsAllMetadata$inboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -3408,7 +3451,7 @@ export const GetAllMediaLibraryMediaContainer$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryMediaContainer$Outbound = { +export type GetLibrarySectionsAllMediaContainer$Outbound = { size: number; totalSize: number; offset: number; @@ -3426,15 +3469,15 @@ export type GetAllMediaLibraryMediaContainer$Outbound = { title1: string; title2: string; viewGroup: string; - Meta?: GetAllMediaLibraryMeta$Outbound | undefined; - Metadata?: Array | undefined; + Meta?: GetLibrarySectionsAllMeta$Outbound | undefined; + Metadata?: Array | undefined; }; /** @internal */ -export const GetAllMediaLibraryMediaContainer$outboundSchema: z.ZodType< - GetAllMediaLibraryMediaContainer$Outbound, +export const GetLibrarySectionsAllMediaContainer$outboundSchema: z.ZodType< + GetLibrarySectionsAllMediaContainer$Outbound, z.ZodTypeDef, - GetAllMediaLibraryMediaContainer + GetLibrarySectionsAllMediaContainer > = z.object({ size: z.number().int(), totalSize: z.number().int(), @@ -3453,8 +3496,8 @@ export const GetAllMediaLibraryMediaContainer$outboundSchema: z.ZodType< title1: z.string(), title2: z.string(), viewGroup: z.string(), - meta: z.lazy(() => GetAllMediaLibraryMeta$outboundSchema).optional(), - metadata: z.array(z.lazy(() => GetAllMediaLibraryMetadata$outboundSchema)) + meta: z.lazy(() => GetLibrarySectionsAllMeta$outboundSchema).optional(), + metadata: z.array(z.lazy(() => GetLibrarySectionsAllMetadata$outboundSchema)) .optional(), }).transform((v) => { return remap$(v, { @@ -3467,43 +3510,47 @@ export const GetAllMediaLibraryMediaContainer$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryMediaContainer$ { - /** @deprecated use `GetAllMediaLibraryMediaContainer$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryMediaContainer$inboundSchema; - /** @deprecated use `GetAllMediaLibraryMediaContainer$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryMediaContainer$outboundSchema; - /** @deprecated use `GetAllMediaLibraryMediaContainer$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryMediaContainer$Outbound; +export namespace GetLibrarySectionsAllMediaContainer$ { + /** @deprecated use `GetLibrarySectionsAllMediaContainer$inboundSchema` instead. */ + export const inboundSchema = + GetLibrarySectionsAllMediaContainer$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllMediaContainer$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllMediaContainer$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllMediaContainer$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllMediaContainer$Outbound; } -export function getAllMediaLibraryMediaContainerToJSON( - getAllMediaLibraryMediaContainer: GetAllMediaLibraryMediaContainer, +export function getLibrarySectionsAllMediaContainerToJSON( + getLibrarySectionsAllMediaContainer: GetLibrarySectionsAllMediaContainer, ): string { return JSON.stringify( - GetAllMediaLibraryMediaContainer$outboundSchema.parse( - getAllMediaLibraryMediaContainer, + GetLibrarySectionsAllMediaContainer$outboundSchema.parse( + getLibrarySectionsAllMediaContainer, ), ); } -export function getAllMediaLibraryMediaContainerFromJSON( +export function getLibrarySectionsAllMediaContainerFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryMediaContainer$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryMediaContainer' from JSON`, + (x) => + GetLibrarySectionsAllMediaContainer$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllMediaContainer' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryResponseBody$inboundSchema: z.ZodType< - GetAllMediaLibraryResponseBody, +export const GetLibrarySectionsAllResponseBody$inboundSchema: z.ZodType< + GetLibrarySectionsAllResponseBody, z.ZodTypeDef, unknown > = z.object({ - MediaContainer: z.lazy(() => GetAllMediaLibraryMediaContainer$inboundSchema) - .optional(), + MediaContainer: z.lazy(() => + GetLibrarySectionsAllMediaContainer$inboundSchema + ).optional(), }).transform((v) => { return remap$(v, { "MediaContainer": "mediaContainer", @@ -3511,18 +3558,19 @@ export const GetAllMediaLibraryResponseBody$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryResponseBody$Outbound = { - MediaContainer?: GetAllMediaLibraryMediaContainer$Outbound | undefined; +export type GetLibrarySectionsAllResponseBody$Outbound = { + MediaContainer?: GetLibrarySectionsAllMediaContainer$Outbound | undefined; }; /** @internal */ -export const GetAllMediaLibraryResponseBody$outboundSchema: z.ZodType< - GetAllMediaLibraryResponseBody$Outbound, +export const GetLibrarySectionsAllResponseBody$outboundSchema: z.ZodType< + GetLibrarySectionsAllResponseBody$Outbound, z.ZodTypeDef, - GetAllMediaLibraryResponseBody + GetLibrarySectionsAllResponseBody > = z.object({ - mediaContainer: z.lazy(() => GetAllMediaLibraryMediaContainer$outboundSchema) - .optional(), + mediaContainer: z.lazy(() => + GetLibrarySectionsAllMediaContainer$outboundSchema + ).optional(), }).transform((v) => { return remap$(v, { mediaContainer: "MediaContainer", @@ -3533,45 +3581,47 @@ export const GetAllMediaLibraryResponseBody$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryResponseBody$ { - /** @deprecated use `GetAllMediaLibraryResponseBody$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryResponseBody$inboundSchema; - /** @deprecated use `GetAllMediaLibraryResponseBody$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryResponseBody$outboundSchema; - /** @deprecated use `GetAllMediaLibraryResponseBody$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryResponseBody$Outbound; +export namespace GetLibrarySectionsAllResponseBody$ { + /** @deprecated use `GetLibrarySectionsAllResponseBody$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllResponseBody$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllResponseBody$outboundSchema` instead. */ + export const outboundSchema = + GetLibrarySectionsAllResponseBody$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllResponseBody$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllResponseBody$Outbound; } -export function getAllMediaLibraryResponseBodyToJSON( - getAllMediaLibraryResponseBody: GetAllMediaLibraryResponseBody, +export function getLibrarySectionsAllResponseBodyToJSON( + getLibrarySectionsAllResponseBody: GetLibrarySectionsAllResponseBody, ): string { return JSON.stringify( - GetAllMediaLibraryResponseBody$outboundSchema.parse( - getAllMediaLibraryResponseBody, + GetLibrarySectionsAllResponseBody$outboundSchema.parse( + getLibrarySectionsAllResponseBody, ), ); } -export function getAllMediaLibraryResponseBodyFromJSON( +export function getLibrarySectionsAllResponseBodyFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryResponseBody$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryResponseBody' from JSON`, + (x) => GetLibrarySectionsAllResponseBody$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllResponseBody' from JSON`, ); } /** @internal */ -export const GetAllMediaLibraryResponse$inboundSchema: z.ZodType< - GetAllMediaLibraryResponse, +export const GetLibrarySectionsAllResponse$inboundSchema: z.ZodType< + GetLibrarySectionsAllResponse, z.ZodTypeDef, unknown > = z.object({ ContentType: z.string(), StatusCode: z.number().int(), RawResponse: z.instanceof(Response), - object: z.lazy(() => GetAllMediaLibraryResponseBody$inboundSchema).optional(), + object: z.lazy(() => GetLibrarySectionsAllResponseBody$inboundSchema) + .optional(), }).transform((v) => { return remap$(v, { "ContentType": "contentType", @@ -3581,25 +3631,25 @@ export const GetAllMediaLibraryResponse$inboundSchema: z.ZodType< }); /** @internal */ -export type GetAllMediaLibraryResponse$Outbound = { +export type GetLibrarySectionsAllResponse$Outbound = { ContentType: string; StatusCode: number; RawResponse: never; - object?: GetAllMediaLibraryResponseBody$Outbound | undefined; + object?: GetLibrarySectionsAllResponseBody$Outbound | undefined; }; /** @internal */ -export const GetAllMediaLibraryResponse$outboundSchema: z.ZodType< - GetAllMediaLibraryResponse$Outbound, +export const GetLibrarySectionsAllResponse$outboundSchema: z.ZodType< + GetLibrarySectionsAllResponse$Outbound, z.ZodTypeDef, - GetAllMediaLibraryResponse + GetLibrarySectionsAllResponse > = z.object({ contentType: z.string(), statusCode: z.number().int(), rawResponse: z.instanceof(Response).transform(() => { throw new Error("Response cannot be serialized"); }), - object: z.lazy(() => GetAllMediaLibraryResponseBody$outboundSchema) + object: z.lazy(() => GetLibrarySectionsAllResponseBody$outboundSchema) .optional(), }).transform((v) => { return remap$(v, { @@ -3613,29 +3663,31 @@ export const GetAllMediaLibraryResponse$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace GetAllMediaLibraryResponse$ { - /** @deprecated use `GetAllMediaLibraryResponse$inboundSchema` instead. */ - export const inboundSchema = GetAllMediaLibraryResponse$inboundSchema; - /** @deprecated use `GetAllMediaLibraryResponse$outboundSchema` instead. */ - export const outboundSchema = GetAllMediaLibraryResponse$outboundSchema; - /** @deprecated use `GetAllMediaLibraryResponse$Outbound` instead. */ - export type Outbound = GetAllMediaLibraryResponse$Outbound; +export namespace GetLibrarySectionsAllResponse$ { + /** @deprecated use `GetLibrarySectionsAllResponse$inboundSchema` instead. */ + export const inboundSchema = GetLibrarySectionsAllResponse$inboundSchema; + /** @deprecated use `GetLibrarySectionsAllResponse$outboundSchema` instead. */ + export const outboundSchema = GetLibrarySectionsAllResponse$outboundSchema; + /** @deprecated use `GetLibrarySectionsAllResponse$Outbound` instead. */ + export type Outbound = GetLibrarySectionsAllResponse$Outbound; } -export function getAllMediaLibraryResponseToJSON( - getAllMediaLibraryResponse: GetAllMediaLibraryResponse, +export function getLibrarySectionsAllResponseToJSON( + getLibrarySectionsAllResponse: GetLibrarySectionsAllResponse, ): string { return JSON.stringify( - GetAllMediaLibraryResponse$outboundSchema.parse(getAllMediaLibraryResponse), + GetLibrarySectionsAllResponse$outboundSchema.parse( + getLibrarySectionsAllResponse, + ), ); } -export function getAllMediaLibraryResponseFromJSON( +export function getLibrarySectionsAllResponseFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => GetAllMediaLibraryResponse$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetAllMediaLibraryResponse' from JSON`, + (x) => GetLibrarySectionsAllResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetLibrarySectionsAllResponse' from JSON`, ); } diff --git a/src/sdk/models/operations/getmediametadata.ts b/src/sdk/models/operations/getmediametadata.ts index e71dcbe3..0a6b4a99 100644 --- a/src/sdk/models/operations/getmediametadata.ts +++ b/src/sdk/models/operations/getmediametadata.ts @@ -16,9 +16,9 @@ import { SDKValidationError } from "../errors/sdkvalidationerror.js"; export type GetMediaMetaDataRequest = { /** - * the id of the library item to return the children of. + * The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs. */ - ratingKey: number; + ratingKey: string; /** * Include concerts data if set to true. */ @@ -74,7 +74,7 @@ export type GetMediaMetaDataRequest = { }; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -85,9 +85,13 @@ export enum GetMediaMetaDataType { Episode = "episode", Artist = "artist", Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", } /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -116,6 +120,15 @@ export type GetMediaMetaDataUltraBlurColors = { bottomLeft: string; }; +export type GetMediaMetaDataGuids = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + export enum GetMediaMetaDataOptimizedForStreaming1 { Zero = 0, One = 1, @@ -510,6 +523,12 @@ export type GetMediaMetaDataMedia = { * The filter query string for similar items. */ export type GetMediaMetaDataGenre = { + /** + * The unique identifier for the genre. + * + * @remarks + * NOTE: This is different for each Plex server and is not globally unique. + */ id: number; /** * The genre name of this media-item @@ -524,12 +543,18 @@ export type GetMediaMetaDataGenre = { * The filter query string for country media items. */ export type GetMediaMetaDataCountry = { + /** + * The unique identifier for the country. + * + * @remarks + * NOTE: This is different for each Plex server and is not globally unique. + */ id: number; /** * The country of origin of this media item */ tag: string; - filter?: string | undefined; + filter: string; }; export type GetMediaMetaDataDirector = { @@ -546,11 +571,11 @@ export type GetMediaMetaDataDirector = { */ filter: string; /** - * A unique key associated with the director's tag, used for internal identification. + * A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. */ - tagKey?: string | undefined; + tagKey: string; /** - * The URL of the thumbnail image for the director. + * The absolute URL of the thumbnail image for the director. */ thumb?: string | undefined; }; @@ -569,11 +594,11 @@ export type GetMediaMetaDataWriter = { */ filter: string; /** - * The URL of the thumbnail image for the writer. + * The absolute URL of the thumbnail image for the writer. */ thumb?: string | undefined; /** - * A unique key associated with the writers tag, used for internal identification. + * A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. */ tagKey?: string | undefined; }; @@ -607,7 +632,10 @@ export type GetMediaMetaDataProducer = { export type GetMediaMetaDataRole = { /** - * Unique identifier for the actor or role. + * The unique identifier for the role. + * + * @remarks + * NOTE: This is different for each Plex server and is not globally unique. */ id: number; /** @@ -623,22 +651,18 @@ export type GetMediaMetaDataRole = { */ filter: string; /** - * A unique key associated with the actor's tag, used for internal identification. + * A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification. + * + * @remarks + * NOTE: This is globally unique across all Plex Servers. */ - tagKey?: string | undefined; + tagKey: string; /** - * The URL of the thumbnail image for the actor. + * The absolute URL of the thumbnail image for the actor. */ thumb?: string | undefined; }; -export type GetMediaMetaDataGuids = { - /** - * The GUID value. - */ - id: string; -}; - export type Ratings = { /** * The image or reference for the rating. @@ -954,6 +978,7 @@ export type GetMediaMetaDataMetadata = { * The key corresponding to the library section. */ librarySectionKey: string; + guids?: Array | undefined; media?: Array | undefined; genre?: Array | undefined; country?: Array | undefined; @@ -961,7 +986,6 @@ export type GetMediaMetaDataMetadata = { writer?: Array | undefined; producer?: Array | undefined; role?: Array | undefined; - guids?: Array | undefined; ratings?: Array | undefined; similar?: Array | undefined; location?: Array | undefined; @@ -1041,7 +1065,7 @@ export const GetMediaMetaDataRequest$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - ratingKey: z.number().int(), + ratingKey: z.string(), includeConcerts: z.boolean().optional(), includeExtras: z.boolean().optional(), includeOnDeck: z.boolean().optional(), @@ -1059,7 +1083,7 @@ export const GetMediaMetaDataRequest$inboundSchema: z.ZodType< /** @internal */ export type GetMediaMetaDataRequest$Outbound = { - ratingKey: number; + ratingKey: string; includeConcerts?: boolean | undefined; includeExtras?: boolean | undefined; includeOnDeck?: boolean | undefined; @@ -1081,7 +1105,7 @@ export const GetMediaMetaDataRequest$outboundSchema: z.ZodType< z.ZodTypeDef, GetMediaMetaDataRequest > = z.object({ - ratingKey: z.number().int(), + ratingKey: z.string(), includeConcerts: z.boolean().optional(), includeExtras: z.boolean().optional(), includeOnDeck: z.boolean().optional(), @@ -1317,6 +1341,60 @@ export function getMediaMetaDataUltraBlurColorsFromJSON( ); } +/** @internal */ +export const GetMediaMetaDataGuids$inboundSchema: z.ZodType< + GetMediaMetaDataGuids, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); + +/** @internal */ +export type GetMediaMetaDataGuids$Outbound = { + id: string; +}; + +/** @internal */ +export const GetMediaMetaDataGuids$outboundSchema: z.ZodType< + GetMediaMetaDataGuids$Outbound, + z.ZodTypeDef, + GetMediaMetaDataGuids +> = z.object({ + id: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataGuids$ { + /** @deprecated use `GetMediaMetaDataGuids$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataGuids$inboundSchema; + /** @deprecated use `GetMediaMetaDataGuids$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataGuids$outboundSchema; + /** @deprecated use `GetMediaMetaDataGuids$Outbound` instead. */ + export type Outbound = GetMediaMetaDataGuids$Outbound; +} + +export function getMediaMetaDataGuidsToJSON( + getMediaMetaDataGuids: GetMediaMetaDataGuids, +): string { + return JSON.stringify( + GetMediaMetaDataGuids$outboundSchema.parse(getMediaMetaDataGuids), + ); +} + +export function getMediaMetaDataGuidsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetMediaMetaDataGuids$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataGuids' from JSON`, + ); +} + /** @internal */ export const GetMediaMetaDataOptimizedForStreaming1$inboundSchema: z.ZodNativeEnum = z.nativeEnum( @@ -2080,14 +2158,14 @@ export const GetMediaMetaDataCountry$inboundSchema: z.ZodType< > = z.object({ id: z.number().int(), tag: z.string(), - filter: z.string().optional(), + filter: z.string(), }); /** @internal */ export type GetMediaMetaDataCountry$Outbound = { id: number; tag: string; - filter?: string | undefined; + filter: string; }; /** @internal */ @@ -2098,7 +2176,7 @@ export const GetMediaMetaDataCountry$outboundSchema: z.ZodType< > = z.object({ id: z.number().int(), tag: z.string(), - filter: z.string().optional(), + filter: z.string(), }); /** @@ -2141,7 +2219,7 @@ export const GetMediaMetaDataDirector$inboundSchema: z.ZodType< id: z.number().int(), tag: z.string(), filter: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), thumb: z.string().optional(), }); @@ -2150,7 +2228,7 @@ export type GetMediaMetaDataDirector$Outbound = { id: number; tag: string; filter: string; - tagKey?: string | undefined; + tagKey: string; thumb?: string | undefined; }; @@ -2163,7 +2241,7 @@ export const GetMediaMetaDataDirector$outboundSchema: z.ZodType< id: z.number().int(), tag: z.string(), filter: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), thumb: z.string().optional(), }); @@ -2343,7 +2421,7 @@ export const GetMediaMetaDataRole$inboundSchema: z.ZodType< tag: z.string(), role: z.string().optional(), filter: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), thumb: z.string().optional(), }); @@ -2353,7 +2431,7 @@ export type GetMediaMetaDataRole$Outbound = { tag: string; role?: string | undefined; filter: string; - tagKey?: string | undefined; + tagKey: string; thumb?: string | undefined; }; @@ -2367,7 +2445,7 @@ export const GetMediaMetaDataRole$outboundSchema: z.ZodType< tag: z.string(), role: z.string().optional(), filter: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), thumb: z.string().optional(), }); @@ -2402,60 +2480,6 @@ export function getMediaMetaDataRoleFromJSON( ); } -/** @internal */ -export const GetMediaMetaDataGuids$inboundSchema: z.ZodType< - GetMediaMetaDataGuids, - z.ZodTypeDef, - unknown -> = z.object({ - id: z.string(), -}); - -/** @internal */ -export type GetMediaMetaDataGuids$Outbound = { - id: string; -}; - -/** @internal */ -export const GetMediaMetaDataGuids$outboundSchema: z.ZodType< - GetMediaMetaDataGuids$Outbound, - z.ZodTypeDef, - GetMediaMetaDataGuids -> = z.object({ - id: z.string(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace GetMediaMetaDataGuids$ { - /** @deprecated use `GetMediaMetaDataGuids$inboundSchema` instead. */ - export const inboundSchema = GetMediaMetaDataGuids$inboundSchema; - /** @deprecated use `GetMediaMetaDataGuids$outboundSchema` instead. */ - export const outboundSchema = GetMediaMetaDataGuids$outboundSchema; - /** @deprecated use `GetMediaMetaDataGuids$Outbound` instead. */ - export type Outbound = GetMediaMetaDataGuids$Outbound; -} - -export function getMediaMetaDataGuidsToJSON( - getMediaMetaDataGuids: GetMediaMetaDataGuids, -): string { - return JSON.stringify( - GetMediaMetaDataGuids$outboundSchema.parse(getMediaMetaDataGuids), - ); -} - -export function getMediaMetaDataGuidsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GetMediaMetaDataGuids$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetMediaMetaDataGuids' from JSON`, - ); -} - /** @internal */ export const Ratings$inboundSchema: z.ZodType = z.object({ @@ -2921,6 +2945,7 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< librarySectionID: z.number().int(), librarySectionTitle: z.string(), librarySectionKey: z.string(), + Guid: z.array(z.lazy(() => GetMediaMetaDataGuids$inboundSchema)).optional(), Media: z.array(z.lazy(() => GetMediaMetaDataMedia$inboundSchema)).optional(), Genre: z.array(z.lazy(() => GetMediaMetaDataGenre$inboundSchema)).optional(), Country: z.array(z.lazy(() => GetMediaMetaDataCountry$inboundSchema)) @@ -2932,7 +2957,6 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< Producer: z.array(z.lazy(() => GetMediaMetaDataProducer$inboundSchema)) .optional(), Role: z.array(z.lazy(() => GetMediaMetaDataRole$inboundSchema)).optional(), - Guid: z.array(z.lazy(() => GetMediaMetaDataGuids$inboundSchema)).optional(), Rating: z.array(z.lazy(() => Ratings$inboundSchema)).optional(), Similar: z.array(z.lazy(() => GetMediaMetaDataSimilar$inboundSchema)) .optional(), @@ -2945,6 +2969,7 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< return remap$(v, { "Image": "image", "UltraBlurColors": "ultraBlurColors", + "Guid": "guids", "Media": "media", "Genre": "genre", "Country": "country", @@ -2952,7 +2977,6 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< "Writer": "writer", "Producer": "producer", "Role": "role", - "Guid": "guids", "Rating": "ratings", "Similar": "similar", "Location": "location", @@ -3023,6 +3047,7 @@ export type GetMediaMetaDataMetadata$Outbound = { librarySectionID: number; librarySectionTitle: string; librarySectionKey: string; + Guid?: Array | undefined; Media?: Array | undefined; Genre?: Array | undefined; Country?: Array | undefined; @@ -3030,7 +3055,6 @@ export type GetMediaMetaDataMetadata$Outbound = { Writer?: Array | undefined; Producer?: Array | undefined; Role?: Array | undefined; - Guid?: Array | undefined; Rating?: Array | undefined; Similar?: Array | undefined; Location?: Array | undefined; @@ -3105,6 +3129,7 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< librarySectionID: z.number().int(), librarySectionTitle: z.string(), librarySectionKey: z.string(), + guids: z.array(z.lazy(() => GetMediaMetaDataGuids$outboundSchema)).optional(), media: z.array(z.lazy(() => GetMediaMetaDataMedia$outboundSchema)).optional(), genre: z.array(z.lazy(() => GetMediaMetaDataGenre$outboundSchema)).optional(), country: z.array(z.lazy(() => GetMediaMetaDataCountry$outboundSchema)) @@ -3116,7 +3141,6 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< producer: z.array(z.lazy(() => GetMediaMetaDataProducer$outboundSchema)) .optional(), role: z.array(z.lazy(() => GetMediaMetaDataRole$outboundSchema)).optional(), - guids: z.array(z.lazy(() => GetMediaMetaDataGuids$outboundSchema)).optional(), ratings: z.array(z.lazy(() => Ratings$outboundSchema)).optional(), similar: z.array(z.lazy(() => GetMediaMetaDataSimilar$outboundSchema)) .optional(), @@ -3129,6 +3153,7 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< return remap$(v, { image: "Image", ultraBlurColors: "UltraBlurColors", + guids: "Guid", media: "Media", genre: "Genre", country: "Country", @@ -3136,7 +3161,6 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< writer: "Writer", producer: "Producer", role: "Role", - guids: "Guid", ratings: "Rating", similar: "Similar", location: "Location", diff --git a/src/sdk/models/operations/getplaylistcontents.ts b/src/sdk/models/operations/getplaylistcontents.ts index cfc83222..6ac68f47 100644 --- a/src/sdk/models/operations/getplaylistcontents.ts +++ b/src/sdk/models/operations/getplaylistcontents.ts @@ -29,9 +29,11 @@ export enum GetPlaylistContentsQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. diff --git a/src/sdk/models/operations/getrecentlyadded.ts b/src/sdk/models/operations/getrecentlyadded.ts index 2ad1213e..48956ea3 100644 --- a/src/sdk/models/operations/getrecentlyadded.ts +++ b/src/sdk/models/operations/getrecentlyadded.ts @@ -29,9 +29,11 @@ export enum Type { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. @@ -192,7 +194,7 @@ export type Meta = { }; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -203,9 +205,13 @@ export enum GetRecentlyAddedHubsType { Episode = "episode", Artist = "artist", Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", } /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -236,6 +242,15 @@ export type UltraBlurColors = { bottomLeft: string; }; +export type Guids = { + /** + * The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// + * + * @remarks + */ + id: string; +}; + export enum One { Zero = 0, One = 1, @@ -623,6 +638,12 @@ export type Media = { * The filter query string for similar items. */ export type Genre = { + /** + * The unique identifier for the genre. + * + * @remarks + * NOTE: This is different for each Plex server and is not globally unique. + */ id: number; filter: string; /** @@ -637,19 +658,41 @@ export type Genre = { * The filter query string for country media items. */ export type Country = { + /** + * The unique identifier for the country. + * + * @remarks + * NOTE: This is different for each Plex server and is not globally unique. + */ id: number; /** * The country of origin of this media item */ tag: string; - filter?: string | undefined; + filter: string; }; export type Director = { + /** + * Unique identifier for the director. + */ + id: number; + /** + * The filter string used to query this director. + */ + filter: string; /** * The role of Director */ tag: string; + /** + * A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. + */ + tagKey: string; + /** + * The absolute URL of the thumbnail image for the director. + */ + thumb?: string | undefined; }; export type Writer = { @@ -666,14 +709,21 @@ export type Writer = { */ tag: string; /** - * A unique key associated with the writers tag, used for internal identification. + * A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. */ tagKey?: string | undefined; + /** + * The absolute URL of the thumbnail image for the writer. + */ + thumb?: string | undefined; }; export type Role = { /** - * Unique identifier for the actor or role. + * The unique identifier for the role. + * + * @remarks + * NOTE: This is different for each Plex server and is not globally unique. */ id: number; /** @@ -685,15 +735,18 @@ export type Role = { */ tag: string; /** - * A unique key associated with the actor's tag, used for internal identification. + * A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification. + * + * @remarks + * NOTE: This is globally unique across all Plex Servers. */ - tagKey?: string | undefined; + tagKey: string; /** * The role played by the actor in the media item. */ role?: string | undefined; /** - * The URL of the thumbnail image for the actor. + * The absolute URL of the thumbnail image for the actor. */ thumb?: string | undefined; }; @@ -712,11 +765,13 @@ export type Producer = { */ tag: string; /** - * A unique key associated with the producer's tag, used for internal identification. + * A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification. + * + * @remarks */ - tagKey?: string | undefined; + tagKey: string; /** - * The URL of the thumbnail image for the actor. + * The absolute URL of the thumbnail image for the producer. */ thumb?: string | undefined; }; @@ -725,6 +780,9 @@ export type Producer = { * The type of rating, for example 'audience' or 'critic'. */ export type Rating = { + /** + * The URL for the rating image, for example from IMDb. + */ image: string; value: number; type: string; @@ -746,15 +804,6 @@ export type Location = { path: string; }; -export type Guids = { - /** - * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 - * - * @remarks - */ - id?: string | undefined; -}; - export type Collection = { /** * The user-made collection this media item belongs to @@ -1008,6 +1057,7 @@ export type GetRecentlyAddedMetadata = { year?: number | undefined; image?: Array | undefined; ultraBlurColors?: UltraBlurColors | undefined; + guids?: Array | undefined; media?: Array | undefined; genre?: Array | undefined; country?: Array | undefined; @@ -1018,7 +1068,6 @@ export type GetRecentlyAddedMetadata = { rating1?: Array | undefined; similar?: Array | undefined; location?: Array | undefined; - guids?: Array | undefined; collection?: Array | undefined; }; @@ -1919,6 +1968,53 @@ export function ultraBlurColorsFromJSON( ); } +/** @internal */ +export const Guids$inboundSchema: z.ZodType = z + .object({ + id: z.string(), + }); + +/** @internal */ +export type Guids$Outbound = { + id: string; +}; + +/** @internal */ +export const Guids$outboundSchema: z.ZodType< + Guids$Outbound, + z.ZodTypeDef, + Guids +> = z.object({ + id: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Guids$ { + /** @deprecated use `Guids$inboundSchema` instead. */ + export const inboundSchema = Guids$inboundSchema; + /** @deprecated use `Guids$outboundSchema` instead. */ + export const outboundSchema = Guids$outboundSchema; + /** @deprecated use `Guids$Outbound` instead. */ + export type Outbound = Guids$Outbound; +} + +export function guidsToJSON(guids: Guids): string { + return JSON.stringify(Guids$outboundSchema.parse(guids)); +} + +export function guidsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Guids$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Guids' from JSON`, + ); +} + /** @internal */ export const One$inboundSchema: z.ZodNativeEnum = z.nativeEnum(One); @@ -2608,14 +2704,14 @@ export const Country$inboundSchema: z.ZodType = z.object({ id: z.number().int(), tag: z.string(), - filter: z.string().optional(), + filter: z.string(), }); /** @internal */ export type Country$Outbound = { id: number; tag: string; - filter?: string | undefined; + filter: string; }; /** @internal */ @@ -2626,7 +2722,7 @@ export const Country$outboundSchema: z.ZodType< > = z.object({ id: z.number().int(), tag: z.string(), - filter: z.string().optional(), + filter: z.string(), }); /** @@ -2662,12 +2758,20 @@ export const Director$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ + id: z.number().int(), + filter: z.string(), tag: z.string(), + tagKey: z.string(), + thumb: z.string().optional(), }); /** @internal */ export type Director$Outbound = { + id: number; + filter: string; tag: string; + tagKey: string; + thumb?: string | undefined; }; /** @internal */ @@ -2676,7 +2780,11 @@ export const Director$outboundSchema: z.ZodType< z.ZodTypeDef, Director > = z.object({ + id: z.number().int(), + filter: z.string(), tag: z.string(), + tagKey: z.string(), + thumb: z.string().optional(), }); /** @@ -2713,6 +2821,7 @@ export const Writer$inboundSchema: z.ZodType = z filter: z.string(), tag: z.string(), tagKey: z.string().optional(), + thumb: z.string().optional(), }); /** @internal */ @@ -2721,6 +2830,7 @@ export type Writer$Outbound = { filter: string; tag: string; tagKey?: string | undefined; + thumb?: string | undefined; }; /** @internal */ @@ -2733,6 +2843,7 @@ export const Writer$outboundSchema: z.ZodType< filter: z.string(), tag: z.string(), tagKey: z.string().optional(), + thumb: z.string().optional(), }); /** @@ -2768,7 +2879,7 @@ export const Role$inboundSchema: z.ZodType = z id: z.number().int(), filter: z.string(), tag: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), role: z.string().optional(), thumb: z.string().optional(), }); @@ -2778,7 +2889,7 @@ export type Role$Outbound = { id: number; filter: string; tag: string; - tagKey?: string | undefined; + tagKey: string; role?: string | undefined; thumb?: string | undefined; }; @@ -2789,7 +2900,7 @@ export const Role$outboundSchema: z.ZodType = id: z.number().int(), filter: z.string(), tag: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), role: z.string().optional(), thumb: z.string().optional(), }); @@ -2830,7 +2941,7 @@ export const Producer$inboundSchema: z.ZodType< id: z.number().int(), filter: z.string(), tag: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), thumb: z.string().optional(), }); @@ -2839,7 +2950,7 @@ export type Producer$Outbound = { id: number; filter: string; tag: string; - tagKey?: string | undefined; + tagKey: string; thumb?: string | undefined; }; @@ -2852,7 +2963,7 @@ export const Producer$outboundSchema: z.ZodType< id: z.number().int(), filter: z.string(), tag: z.string(), - tagKey: z.string().optional(), + tagKey: z.string(), thumb: z.string().optional(), }); @@ -3039,53 +3150,6 @@ export function locationFromJSON( ); } -/** @internal */ -export const Guids$inboundSchema: z.ZodType = z - .object({ - id: z.string().optional(), - }); - -/** @internal */ -export type Guids$Outbound = { - id?: string | undefined; -}; - -/** @internal */ -export const Guids$outboundSchema: z.ZodType< - Guids$Outbound, - z.ZodTypeDef, - Guids -> = z.object({ - id: z.string().optional(), -}); - -/** - * @internal - * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. - */ -export namespace Guids$ { - /** @deprecated use `Guids$inboundSchema` instead. */ - export const inboundSchema = Guids$inboundSchema; - /** @deprecated use `Guids$outboundSchema` instead. */ - export const outboundSchema = Guids$outboundSchema; - /** @deprecated use `Guids$Outbound` instead. */ - export type Outbound = Guids$Outbound; -} - -export function guidsToJSON(guids: Guids): string { - return JSON.stringify(Guids$outboundSchema.parse(guids)); -} - -export function guidsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Guids$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Guids' from JSON`, - ); -} - /** @internal */ export const Collection$inboundSchema: z.ZodType< Collection, @@ -3205,6 +3269,7 @@ export const GetRecentlyAddedMetadata$inboundSchema: z.ZodType< year: z.number().int().optional(), Image: z.array(z.lazy(() => GetRecentlyAddedImage$inboundSchema)).optional(), UltraBlurColors: z.lazy(() => UltraBlurColors$inboundSchema).optional(), + Guid: z.array(z.lazy(() => Guids$inboundSchema)).optional(), Media: z.array(z.lazy(() => Media$inboundSchema)).optional(), Genre: z.array(z.lazy(() => Genre$inboundSchema)).optional(), Country: z.array(z.lazy(() => Country$inboundSchema)).optional(), @@ -3215,12 +3280,12 @@ export const GetRecentlyAddedMetadata$inboundSchema: z.ZodType< Rating: z.array(z.lazy(() => Rating$inboundSchema)).optional(), Similar: z.array(z.lazy(() => Similar$inboundSchema)).optional(), Location: z.array(z.lazy(() => Location$inboundSchema)).optional(), - Guid: z.array(z.lazy(() => Guids$inboundSchema)).optional(), Collection: z.array(z.lazy(() => Collection$inboundSchema)).optional(), }).transform((v) => { return remap$(v, { "Image": "image", "UltraBlurColors": "ultraBlurColors", + "Guid": "guids", "Media": "media", "Genre": "genre", "Country": "country", @@ -3231,7 +3296,6 @@ export const GetRecentlyAddedMetadata$inboundSchema: z.ZodType< "Rating": "rating1", "Similar": "similar", "Location": "location", - "Guid": "guids", "Collection": "collection", }); }); @@ -3301,6 +3365,7 @@ export type GetRecentlyAddedMetadata$Outbound = { year?: number | undefined; Image?: Array | undefined; UltraBlurColors?: UltraBlurColors$Outbound | undefined; + Guid?: Array | undefined; Media?: Array | undefined; Genre?: Array | undefined; Country?: Array | undefined; @@ -3311,7 +3376,6 @@ export type GetRecentlyAddedMetadata$Outbound = { Rating?: Array | undefined; Similar?: Array | undefined; Location?: Array | undefined; - Guid?: Array | undefined; Collection?: Array | undefined; }; @@ -3384,6 +3448,7 @@ export const GetRecentlyAddedMetadata$outboundSchema: z.ZodType< year: z.number().int().optional(), image: z.array(z.lazy(() => GetRecentlyAddedImage$outboundSchema)).optional(), ultraBlurColors: z.lazy(() => UltraBlurColors$outboundSchema).optional(), + guids: z.array(z.lazy(() => Guids$outboundSchema)).optional(), media: z.array(z.lazy(() => Media$outboundSchema)).optional(), genre: z.array(z.lazy(() => Genre$outboundSchema)).optional(), country: z.array(z.lazy(() => Country$outboundSchema)).optional(), @@ -3394,12 +3459,12 @@ export const GetRecentlyAddedMetadata$outboundSchema: z.ZodType< rating1: z.array(z.lazy(() => Rating$outboundSchema)).optional(), similar: z.array(z.lazy(() => Similar$outboundSchema)).optional(), location: z.array(z.lazy(() => Location$outboundSchema)).optional(), - guids: z.array(z.lazy(() => Guids$outboundSchema)).optional(), collection: z.array(z.lazy(() => Collection$outboundSchema)).optional(), }).transform((v) => { return remap$(v, { image: "Image", ultraBlurColors: "UltraBlurColors", + guids: "Guid", media: "Media", genre: "Genre", country: "Country", @@ -3410,7 +3475,6 @@ export const GetRecentlyAddedMetadata$outboundSchema: z.ZodType< rating1: "Rating", similar: "Similar", location: "Location", - guids: "Guid", collection: "Collection", }); }); diff --git a/src/sdk/models/operations/getrecentlyaddedlibrary.ts b/src/sdk/models/operations/getrecentlyaddedlibrary.ts index 5fbb2fbf..a4a77c70 100644 --- a/src/sdk/models/operations/getrecentlyaddedlibrary.ts +++ b/src/sdk/models/operations/getrecentlyaddedlibrary.ts @@ -28,9 +28,11 @@ export enum QueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. diff --git a/src/sdk/models/operations/getsearchalllibraries.ts b/src/sdk/models/operations/getsearchalllibraries.ts index fe7bc598..d6dc20e9 100644 --- a/src/sdk/models/operations/getsearchalllibraries.ts +++ b/src/sdk/models/operations/getsearchalllibraries.ts @@ -73,7 +73,7 @@ export type GetSearchAllLibrariesRequest = { }; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -84,9 +84,13 @@ export enum GetSearchAllLibrariesType { Episode = "episode", Artist = "artist", Album = "album", + Track = "track", + PhotoAlbum = "photoalbum", + Photo = "photo", + Collection = "collection", } /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ @@ -481,7 +485,7 @@ export type GetSearchAllLibrariesMetadata = { librarySectionTitle?: string | undefined; librarySectionKey?: string | undefined; /** - * The type of media content + * The type of media content in the Plex library. This can represent videos, music, or photos. * * @remarks */ diff --git a/src/sdk/models/operations/getsearchlibrary.ts b/src/sdk/models/operations/getsearchlibrary.ts index ba8082fd..ec830a21 100644 --- a/src/sdk/models/operations/getsearchlibrary.ts +++ b/src/sdk/models/operations/getsearchlibrary.ts @@ -28,9 +28,11 @@ export enum GetSearchLibraryQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. diff --git a/src/sdk/models/operations/gettopwatchedcontent.ts b/src/sdk/models/operations/gettopwatchedcontent.ts index 6dea6bba..a3da012e 100644 --- a/src/sdk/models/operations/gettopwatchedcontent.ts +++ b/src/sdk/models/operations/gettopwatchedcontent.ts @@ -29,9 +29,11 @@ export enum GetTopWatchedContentQueryParamType { TvShow = 2, Season = 3, Episode = 4, - Audio = 8, - Album = 9, - Track = 10, + Artist = 5, + Album = 6, + Track = 7, + PhotoAlbum = 8, + Photo = 9, } /** * The type of media to retrieve or filter by. @@ -47,13 +49,17 @@ export type GetTopWatchedContentQueryParamTypeOpen = OpenEnum< typeof GetTopWatchedContentQueryParamType >; +/** + * Adds the Guid object to the response + * + * @remarks + */ +export enum GetTopWatchedContentQueryParamIncludeGuids { + Disable = 0, + Enable = 1, +} + export type GetTopWatchedContentRequest = { - /** - * Adds the Guids object to the response - * - * @remarks - */ - includeGuids?: number | undefined; /** * The type of media to retrieve or filter by. * @@ -65,6 +71,12 @@ export type GetTopWatchedContentRequest = { * E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries */ type: GetTopWatchedContentQueryParamTypeOpen; + /** + * Adds the Guid object to the response + * + * @remarks + */ + includeGuids?: GetTopWatchedContentQueryParamIncludeGuids | undefined; }; export type GetTopWatchedContentGenre = { @@ -132,11 +144,26 @@ export type GetTopWatchedContentMetadata = { }; export type GetTopWatchedContentMediaContainer = { - size?: number | undefined; - allowSync?: boolean | undefined; - identifier?: string | undefined; - mediaTagPrefix?: string | undefined; - mediaTagVersion?: number | undefined; + /** + * Number of media items returned in this response. + */ + size: number; + /** + * Indicates whether syncing is allowed. + */ + allowSync: boolean; + /** + * An plugin identifier for the media container. + */ + identifier: string; + /** + * The prefix used for media tag resource paths. + */ + mediaTagPrefix: string; + /** + * The version number for media tags. + */ + mediaTagVersion: number; metadata?: Array | undefined; }; @@ -199,20 +226,43 @@ export namespace GetTopWatchedContentQueryParamType$ { GetTopWatchedContentQueryParamType$outboundSchema; } +/** @internal */ +export const GetTopWatchedContentQueryParamIncludeGuids$inboundSchema: + z.ZodNativeEnum = z + .nativeEnum(GetTopWatchedContentQueryParamIncludeGuids); + +/** @internal */ +export const GetTopWatchedContentQueryParamIncludeGuids$outboundSchema: + z.ZodNativeEnum = + GetTopWatchedContentQueryParamIncludeGuids$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetTopWatchedContentQueryParamIncludeGuids$ { + /** @deprecated use `GetTopWatchedContentQueryParamIncludeGuids$inboundSchema` instead. */ + export const inboundSchema = + GetTopWatchedContentQueryParamIncludeGuids$inboundSchema; + /** @deprecated use `GetTopWatchedContentQueryParamIncludeGuids$outboundSchema` instead. */ + export const outboundSchema = + GetTopWatchedContentQueryParamIncludeGuids$outboundSchema; +} + /** @internal */ export const GetTopWatchedContentRequest$inboundSchema: z.ZodType< GetTopWatchedContentRequest, z.ZodTypeDef, unknown > = z.object({ - includeGuids: z.number().int().optional(), type: GetTopWatchedContentQueryParamType$inboundSchema, + includeGuids: GetTopWatchedContentQueryParamIncludeGuids$inboundSchema, }); /** @internal */ export type GetTopWatchedContentRequest$Outbound = { - includeGuids?: number | undefined; type: number; + includeGuids: number; }; /** @internal */ @@ -221,8 +271,9 @@ export const GetTopWatchedContentRequest$outboundSchema: z.ZodType< z.ZodTypeDef, GetTopWatchedContentRequest > = z.object({ - includeGuids: z.number().int().optional(), type: GetTopWatchedContentQueryParamType$outboundSchema, + includeGuids: GetTopWatchedContentQueryParamIncludeGuids$outboundSchema + .default(GetTopWatchedContentQueryParamIncludeGuids.Disable), }); /** @@ -739,11 +790,11 @@ export const GetTopWatchedContentMediaContainer$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - size: z.number().int().optional(), - allowSync: z.boolean().optional(), - identifier: z.string().optional(), - mediaTagPrefix: z.string().optional(), - mediaTagVersion: z.number().int().optional(), + size: z.number().int(), + allowSync: z.boolean(), + identifier: z.string(), + mediaTagPrefix: z.string(), + mediaTagVersion: z.number().int(), Metadata: z.array(z.lazy(() => GetTopWatchedContentMetadata$inboundSchema)) .optional(), }).transform((v) => { @@ -754,11 +805,11 @@ export const GetTopWatchedContentMediaContainer$inboundSchema: z.ZodType< /** @internal */ export type GetTopWatchedContentMediaContainer$Outbound = { - size?: number | undefined; - allowSync?: boolean | undefined; - identifier?: string | undefined; - mediaTagPrefix?: string | undefined; - mediaTagVersion?: number | undefined; + size: number; + allowSync: boolean; + identifier: string; + mediaTagPrefix: string; + mediaTagVersion: number; Metadata?: Array | undefined; }; @@ -768,11 +819,11 @@ export const GetTopWatchedContentMediaContainer$outboundSchema: z.ZodType< z.ZodTypeDef, GetTopWatchedContentMediaContainer > = z.object({ - size: z.number().int().optional(), - allowSync: z.boolean().optional(), - identifier: z.string().optional(), - mediaTagPrefix: z.string().optional(), - mediaTagVersion: z.number().int().optional(), + size: z.number().int(), + allowSync: z.boolean(), + identifier: z.string(), + mediaTagPrefix: z.string(), + mediaTagVersion: z.number().int(), metadata: z.array(z.lazy(() => GetTopWatchedContentMetadata$outboundSchema)) .optional(), }).transform((v) => { diff --git a/src/sdk/models/operations/index.ts b/src/sdk/models/operations/index.ts index 76f219b9..5668235d 100644 --- a/src/sdk/models/operations/index.ts +++ b/src/sdk/models/operations/index.ts @@ -13,7 +13,6 @@ export * from "./deleteplaylist.js"; export * from "./enablepapertrail.js"; export * from "./getactorslibrary.js"; export * from "./getalllibraries.js"; -export * from "./getallmedialibrary.js"; export * from "./getavailableclients.js"; export * from "./getbandwidthstatistics.js"; export * from "./getbannerimage.js"; @@ -29,6 +28,7 @@ export * from "./gethomedata.js"; export * from "./getlibrarydetails.js"; export * from "./getlibraryhubs.js"; export * from "./getlibraryitems.js"; +export * from "./getlibrarysectionsall.js"; export * from "./getmediaarts.js"; export * from "./getmediametadata.js"; export * from "./getmediaposters.js";