From 1cfc2d604f48fdc514379d49083864b0f39b647a Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Tue, 11 Feb 2025 00:10:34 +0000 Subject: [PATCH] ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.488.0 --- .speakeasy/gen.lock | 94 +- .speakeasy/gen.yaml | 2 +- .speakeasy/workflow.lock | 14 +- README.md | 1 + RELEASES.md | 12 +- codeSamples.yaml | 6 + .../getactorslibrarymediacontainer.md | 2 +- .../getallmedialibraryactivedirection.md | 12 + .../getallmedialibrarycollection.md | 8 + .../operations/getallmedialibrarycountry.md | 8 + .../getallmedialibrarydefaultdirection.md | 12 + .../operations/getallmedialibrarydirector.md | 8 + .../operations/getallmedialibraryfield.md | 11 + .../operations/getallmedialibraryfieldtype.md | 9 + .../operations/getallmedialibraryfilter.md | 13 + .../operations/getallmedialibrarygenre.md | 8 + .../getallmedialibraryhasthumbnail.md | 11 + .../operations/getallmedialibraryimage.md | 10 + ...edialibrarylibraryoptimizedforstreaming.md | 19 + .../getallmedialibrarylibraryresponsetype.md | 11 + .../getallmedialibrarylibrarytype.md | 16 + .../operations/getallmedialibrarymedia.md | 26 + .../getallmedialibrarymediacontainer.md | 26 + .../operations/getallmedialibrarymeta.md | 12 + .../operations/getallmedialibrarymetadata.md | 74 + .../operations/getallmedialibraryoperator.md | 9 + ...getallmedialibraryoptimizedforstreaming.md | 19 + ...etallmedialibraryoptimizedforstreaming1.md | 9 + .../operations/getallmedialibrarypart.md | 23 + ...getallmedialibraryqueryparamincludemeta.md | 12 + .../getallmedialibraryqueryparamtype.md | 22 + .../operations/getallmedialibraryrequest.md | 16 + .../operations/getallmedialibraryresponse.md | 11 + .../getallmedialibraryresponsebody.md | 10 + .../operations/getallmedialibraryrole.md | 8 + .../operations/getallmedialibrarysort.md | 15 + .../operations/getallmedialibrarystream.md | 54 + .../operations/getallmedialibrarytype.md | 15 + .../getallmedialibraryultrablurcolors.md | 11 + .../operations/getallmedialibrarywriter.md | 8 + .../getcountrieslibrarymediacontainer.md | 26 +- .../getgenreslibrarymediacontainer.md | 26 +- .../operations/getlibraryitemsfilter.md | 3 +- .../operations/getlibraryitemslibrarytype.md | 4 +- docs/models/operations/getlibraryitemstype.md | 3 +- .../operations/getmediametadatacountry.md | 2 +- .../operations/getmediametadataguids.md | 8 + .../getmediametadatahasthumbnail.md | 11 + ...diametadatalibraryoptimizedforstreaming.md | 19 + .../operations/getmediametadatamedia.md | 38 +- .../getmediametadatamediacontainer.md | 2 +- .../operations/getmediametadatametadata.md | 24 +- .../getmediametadataoptimizedforstreaming.md | 19 + .../getmediametadataoptimizedforstreaming1.md | 9 + .../models/operations/getmediametadatapart.md | 31 +- .../operations/getmediametadatastream.md | 31 +- .../operations/getrecentlyaddedfilter.md | 3 +- .../operations/getrecentlyaddedhubstype.md | 4 +- .../getrecentlyaddedlibraryfilter.md | 3 +- .../operations/getrecentlyaddedlibrarytype.md | 3 +- .../getrecentlyaddedmediacontainer.md | 2 +- .../models/operations/getrecentlyaddedtype.md | 3 +- ...lllibrariesqueryparamincludecollections.md | 11 + ...librariesqueryparamincludeexternalmedia.md | 11 + .../getsearchalllibrariesrequest.md | 16 +- .../operations/getsearchalllibrariestype.md | 4 +- docs/models/operations/guids.md | 6 +- docs/models/operations/includeadvanced.md | 9 + docs/models/operations/one.md | 9 + .../operations/optimizedforstreaming1.md | 9 + .../queryparamincludecollections.md | 2 - .../queryparamincludeexternalmedia.md | 2 - .../operations/queryparamincludeguids.md | 12 + .../operations/{rating.md => ratings.md} | 2 +- docs/models/operations/tag.md | 4 - .../sdkerrors/getallmedialibrarybadrequest.md | 11 + .../sdkerrors/getallmedialibraryerrors.md | 10 + .../getallmedialibrarylibraryerrors.md | 10 + .../getallmedialibraryunauthorized.md | 11 + docs/sdks/library/README.md | 58 + library.go | 250 ++ models/operations/getactorslibrary.go | 7 +- models/operations/getallmedialibrary.go | 2626 +++++++++++++++++ models/operations/getcountrieslibrary.go | 72 +- models/operations/getgenreslibrary.go | 72 +- models/operations/getlibraryitems.go | 48 +- models/operations/getmediametadata.go | 564 +++- models/operations/getrecentlyadded.go | 42 +- models/operations/getrecentlyaddedlibrary.go | 30 +- models/operations/getsearchalllibraries.go | 46 +- models/sdkerrors/getallmedialibrary.go | 90 + plexapi.go | 4 +- 92 files changed, 4595 insertions(+), 394 deletions(-) create mode 100644 docs/models/operations/getallmedialibraryactivedirection.md create mode 100644 docs/models/operations/getallmedialibrarycollection.md create mode 100644 docs/models/operations/getallmedialibrarycountry.md create mode 100644 docs/models/operations/getallmedialibrarydefaultdirection.md create mode 100644 docs/models/operations/getallmedialibrarydirector.md create mode 100644 docs/models/operations/getallmedialibraryfield.md create mode 100644 docs/models/operations/getallmedialibraryfieldtype.md create mode 100644 docs/models/operations/getallmedialibraryfilter.md create mode 100644 docs/models/operations/getallmedialibrarygenre.md create mode 100644 docs/models/operations/getallmedialibraryhasthumbnail.md create mode 100644 docs/models/operations/getallmedialibraryimage.md create mode 100644 docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md create mode 100644 docs/models/operations/getallmedialibrarylibraryresponsetype.md create mode 100644 docs/models/operations/getallmedialibrarylibrarytype.md create mode 100644 docs/models/operations/getallmedialibrarymedia.md create mode 100644 docs/models/operations/getallmedialibrarymediacontainer.md create mode 100644 docs/models/operations/getallmedialibrarymeta.md create mode 100644 docs/models/operations/getallmedialibrarymetadata.md create mode 100644 docs/models/operations/getallmedialibraryoperator.md create mode 100644 docs/models/operations/getallmedialibraryoptimizedforstreaming.md create mode 100644 docs/models/operations/getallmedialibraryoptimizedforstreaming1.md create mode 100644 docs/models/operations/getallmedialibrarypart.md create mode 100644 docs/models/operations/getallmedialibraryqueryparamincludemeta.md create mode 100644 docs/models/operations/getallmedialibraryqueryparamtype.md create mode 100644 docs/models/operations/getallmedialibraryrequest.md create mode 100644 docs/models/operations/getallmedialibraryresponse.md create mode 100644 docs/models/operations/getallmedialibraryresponsebody.md create mode 100644 docs/models/operations/getallmedialibraryrole.md create mode 100644 docs/models/operations/getallmedialibrarysort.md create mode 100644 docs/models/operations/getallmedialibrarystream.md create mode 100644 docs/models/operations/getallmedialibrarytype.md create mode 100644 docs/models/operations/getallmedialibraryultrablurcolors.md create mode 100644 docs/models/operations/getallmedialibrarywriter.md create mode 100644 docs/models/operations/getmediametadataguids.md create mode 100644 docs/models/operations/getmediametadatahasthumbnail.md create mode 100644 docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md create mode 100644 docs/models/operations/getmediametadataoptimizedforstreaming.md create mode 100644 docs/models/operations/getmediametadataoptimizedforstreaming1.md create mode 100644 docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md create mode 100644 docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md create mode 100644 docs/models/operations/includeadvanced.md create mode 100644 docs/models/operations/one.md create mode 100644 docs/models/operations/optimizedforstreaming1.md create mode 100644 docs/models/operations/queryparamincludeguids.md rename docs/models/operations/{rating.md => ratings.md} (99%) create mode 100644 docs/models/sdkerrors/getallmedialibrarybadrequest.md create mode 100644 docs/models/sdkerrors/getallmedialibraryerrors.md create mode 100644 docs/models/sdkerrors/getallmedialibrarylibraryerrors.md create mode 100644 docs/models/sdkerrors/getallmedialibraryunauthorized.md create mode 100644 models/operations/getallmedialibrary.go create mode 100644 models/sdkerrors/getallmedialibrary.go diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 016f1a8..7859057 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: dfa99515-01c0-42eb-9be5-ee212fd03eb3 management: - docChecksum: 5d44282cd3351c75bd6c9a894dbe1ec9 + docChecksum: 6f287a2526fda4d3a32a92e891a0c4ce docVersion: 0.0.3 - speakeasyVersion: 1.487.1 + speakeasyVersion: 1.488.0 generationVersion: 2.506.0 - releaseVersion: 0.18.1 - configChecksum: 6e1e097ba29b1ccfa81501d058415f50 + releaseVersion: 0.19.0 + configChecksum: c8823e09e666dbcc39b110b4fec0d7ca repoURL: https://github.com/LukeHagar/plexgo.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexgo @@ -34,6 +34,7 @@ features: responseFormat: 0.1.2 retries: 2.83.2 sdkHooks: 0.1.0 + unions: 2.85.10 generatedFiles: - .gitattributes - /models/components/security.go @@ -48,6 +49,7 @@ generatedFiles: - /models/operations/enablepapertrail.go - /models/operations/getactorslibrary.go - /models/operations/getalllibraries.go + - /models/operations/getallmedialibrary.go - /models/operations/getavailableclients.go - /models/operations/getbandwidthstatistics.go - /models/operations/getbannerimage.go @@ -128,6 +130,7 @@ generatedFiles: - /models/sdkerrors/enablepapertrail.go - /models/sdkerrors/getactorslibrary.go - /models/sdkerrors/getalllibraries.go + - /models/sdkerrors/getallmedialibrary.go - /models/sdkerrors/getavailableclients.go - /models/sdkerrors/getbandwidthstatistics.go - /models/sdkerrors/getbannerimage.go @@ -272,6 +275,39 @@ generatedFiles: - docs/models/operations/getalllibrariesmediacontainer.md - docs/models/operations/getalllibrariesresponse.md - docs/models/operations/getalllibrariesresponsebody.md + - docs/models/operations/getallmedialibraryactivedirection.md + - docs/models/operations/getallmedialibrarycollection.md + - docs/models/operations/getallmedialibrarycountry.md + - docs/models/operations/getallmedialibrarydefaultdirection.md + - docs/models/operations/getallmedialibrarydirector.md + - docs/models/operations/getallmedialibraryfield.md + - docs/models/operations/getallmedialibraryfieldtype.md + - docs/models/operations/getallmedialibraryfilter.md + - docs/models/operations/getallmedialibrarygenre.md + - docs/models/operations/getallmedialibraryhasthumbnail.md + - docs/models/operations/getallmedialibraryimage.md + - docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md + - docs/models/operations/getallmedialibrarylibraryresponsetype.md + - docs/models/operations/getallmedialibrarylibrarytype.md + - docs/models/operations/getallmedialibrarymedia.md + - docs/models/operations/getallmedialibrarymediacontainer.md + - docs/models/operations/getallmedialibrarymeta.md + - docs/models/operations/getallmedialibrarymetadata.md + - docs/models/operations/getallmedialibraryoperator.md + - docs/models/operations/getallmedialibraryoptimizedforstreaming.md + - docs/models/operations/getallmedialibraryoptimizedforstreaming1.md + - docs/models/operations/getallmedialibrarypart.md + - docs/models/operations/getallmedialibraryqueryparamincludemeta.md + - docs/models/operations/getallmedialibraryqueryparamtype.md + - docs/models/operations/getallmedialibraryrequest.md + - docs/models/operations/getallmedialibraryresponse.md + - docs/models/operations/getallmedialibraryresponsebody.md + - docs/models/operations/getallmedialibraryrole.md + - docs/models/operations/getallmedialibrarysort.md + - docs/models/operations/getallmedialibrarystream.md + - docs/models/operations/getallmedialibrarytype.md + - docs/models/operations/getallmedialibraryultrablurcolors.md + - docs/models/operations/getallmedialibrarywriter.md - docs/models/operations/getavailableclientsmediacontainer.md - docs/models/operations/getavailableclientsresponse.md - docs/models/operations/getavailableclientsresponsebody.md @@ -385,11 +421,16 @@ generatedFiles: - docs/models/operations/getmediametadatacountry.md - docs/models/operations/getmediametadatadirector.md - docs/models/operations/getmediametadatagenre.md + - docs/models/operations/getmediametadataguids.md + - docs/models/operations/getmediametadatahasthumbnail.md - docs/models/operations/getmediametadataimage.md + - docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md - docs/models/operations/getmediametadatalocation.md - docs/models/operations/getmediametadatamedia.md - docs/models/operations/getmediametadatamediacontainer.md - docs/models/operations/getmediametadatametadata.md + - docs/models/operations/getmediametadataoptimizedforstreaming.md + - docs/models/operations/getmediametadataoptimizedforstreaming1.md - docs/models/operations/getmediametadatapart.md - docs/models/operations/getmediametadatarequest.md - docs/models/operations/getmediametadataresponse.md @@ -501,6 +542,8 @@ generatedFiles: - docs/models/operations/getsearchalllibrariesmetadatarating.md - docs/models/operations/getsearchalllibrariesoptimizedforstreaming.md - docs/models/operations/getsearchalllibrariespart.md + - docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md + - docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md - docs/models/operations/getsearchalllibrariesrequest.md - docs/models/operations/getsearchalllibrariesresponse.md - docs/models/operations/getsearchalllibrariesresponsebody.md @@ -613,6 +656,7 @@ generatedFiles: - docs/models/operations/home.md - docs/models/operations/hub.md - docs/models/operations/image.md + - docs/models/operations/includeadvanced.md - docs/models/operations/includecollections.md - docs/models/operations/includedetails.md - docs/models/operations/includeexternalmedia.md @@ -643,9 +687,11 @@ generatedFiles: - docs/models/operations/metadatarating.md - docs/models/operations/minsize.md - docs/models/operations/myplex.md + - docs/models/operations/one.md - docs/models/operations/onlytransient.md - docs/models/operations/operator.md - docs/models/operations/optimizedforstreaming.md + - docs/models/operations/optimizedforstreaming1.md - docs/models/operations/option.md - docs/models/operations/owned.md - docs/models/operations/part.md @@ -686,11 +732,12 @@ generatedFiles: - docs/models/operations/queryparamforce.md - docs/models/operations/queryparamincludecollections.md - docs/models/operations/queryparamincludeexternalmedia.md + - docs/models/operations/queryparamincludeguids.md - docs/models/operations/queryparamincludemeta.md - docs/models/operations/queryparamonlytransient.md - docs/models/operations/queryparamsmart.md - docs/models/operations/queryparamtype.md - - docs/models/operations/rating.md + - docs/models/operations/ratings.md - docs/models/operations/release.md - docs/models/operations/responsebody.md - docs/models/operations/restricted.md @@ -789,6 +836,10 @@ generatedFiles: - docs/models/sdkerrors/getalllibrarieserrors.md - docs/models/sdkerrors/getalllibrarieslibraryerrors.md - docs/models/sdkerrors/getalllibrariesunauthorized.md + - docs/models/sdkerrors/getallmedialibrarybadrequest.md + - docs/models/sdkerrors/getallmedialibraryerrors.md + - docs/models/sdkerrors/getallmedialibrarylibraryerrors.md + - docs/models/sdkerrors/getallmedialibraryunauthorized.md - docs/models/sdkerrors/getavailableclientsbadrequest.md - docs/models/sdkerrors/getavailableclientserrors.md - docs/models/sdkerrors/getavailableclientsservererrors.md @@ -1479,7 +1530,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "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"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}], "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": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"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"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}], "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": [{"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": 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"}, {"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"}], "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"}], "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": 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": 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": 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"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"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"}, {"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": [{"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": 50, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}], "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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}], "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": [{"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": 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"}, {"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"}], "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"}], "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": 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": 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": 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"}], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"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"}, {"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": [{"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"}]}} getLibraryHubs: speakeasy-default-get-library-hubs: parameters: @@ -1550,7 +1601,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"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"}, {"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"}]}, {"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"}, {"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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "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"}, {"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"}]}]}} "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}]} "401": @@ -1602,7 +1653,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"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"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}, {"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": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"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"}]}], "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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}, {"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", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "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"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "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"}]}], "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"}]}]}}} "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}]} "401": @@ -2105,7 +2156,7 @@ examples: type: 2 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Shows (Reality)", "title2": "By Genre", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/10/all?genre=89", "key": "89", "title": "Action", "type": "genre"}]}} + 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/10/all?genre=89", "key": "89", "title": "Action", "type": "genre"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2119,7 +2170,7 @@ examples: type: 2 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "nocache": true, "thumb": "/:/resources/show.png", "title1": "TV Series", "title2": "By Country", "viewGroup": "secondary", "Directory": [{"fastKey": "/library/sections/2/all?country=15491", "key": "15491", "title": "Japan"}]}} + 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}]} "401": @@ -2183,10 +2234,31 @@ 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": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1625505101, "updatedAt": 1736487993, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": []}, {"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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "Part": []}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}, {"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"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"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"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"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "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"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1625505101, "updatedAt": 1736487993, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "Part": []}], "Image": [], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"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"}], "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"}], "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"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1625505101, "updatedAt": 1736487993, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": []}, {"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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "container": "mkv", "videoProfile": "main 10", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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"}]}]}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}, {"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"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"}], "Director": [{"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"}], "Writer": [{"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"}], "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"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}]}} + 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": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": []}, {"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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "Part": []}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}, {"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"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"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"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"}], "Producer": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "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"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "Part": []}], "Image": [], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [{"id": "imdb://tt3032476"}, {"id": "imdb://tt3032476"}], "Rating": [], "Role": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Director": [{"id": 109501, "filter": "actor=109501", "tag": "Bob Odenkirk", "tagKey": "5d77683254f42c001f8c3f69", "role": "Jimmy McGill", "thumb": "https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg"}], "Writer": [{"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"}], "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"}], "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"}]}, {"ratingKey": "44288", "parentRatingKey": "48047", "grandparentRatingKey": "45520", "parentGuid": "plex://season/618b89208dde18df707ad15c", "grandparentGuid": "plex://show/5e16253691c20300412003a8", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/45520", "parentKey": "/library/metadata/48047", "key": "/library/metadata/44288/children", "guid": "plex://show/5d9c08254eefaa001f5d6dcb", "slug": "better-call-saul", "studio": "Sony Pictures Television", "type": "show", "title": "Better Call Saul", "originalTitle": "Wicked: Part I", "librarySectionTitle": "TV Series ", "librarySectionID": 2, "librarySectionKey": "/library/sections/2", "contentRating": "TV-MA", "summary": "Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to \"Breaking Bad\" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman.", "index": 1, "grandparentTitle": "Alice in Borderland", "parentTitle": "Season 2", "audienceRating": 8.7, "viewCount": 4, "skipCount": 1, "lastViewedAt": 1625764795, "year": 2015, "tagline": "Make the call", "chapterSource": "media", "primaryExtraKey": "/library/metadata/134704", "thumb": "/library/metadata/44288/thumb/1736487993", "art": "/library/metadata/44288/art/1736487993", "theme": "/library/metadata/44288/theme/1736487993", "duration": 2700000, "originallyAvailableAt": "2015-02-08", "leafCount": 63, "viewedLeafCount": 4, "childCount": 6, "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "themoviedb://image.rating", "parentIndex": 2, "parentThumb": "/library/metadata/48047/thumb/1671800243", "grandparentThumb": "/library/metadata/45520/thumb/1736488003", "grandparentArt": "/library/metadata/45520/art/1736488003", "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": []}, {"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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": 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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "container": "mkv", "videoProfile": "main 10", "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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"}]}]}], "Image": [{"alt": "Better Call Saul", "type": "coverPoster", "url": "/library/metadata/44288/thumb/1736487993"}], "UltraBlurColors": {"topLeft": "11333a", "topRight": "1d2721", "bottomRight": "5c451d", "bottomLeft": "372c10"}, "Genre": [{"id": 1057, "filter": "genre=1057", "tag": "Crime"}], "Country": [{"id": 58591, "filter": "country=58591", "tag": "United States of America"}, {"id": 58591, "filter": "country=58591", "tag": "United States of America"}], "Guid": [], "Rating": [{"image": "imdb://image.rating", "value": 9, "type": "audience"}, {"image": "imdb://image.rating", "value": 9, "type": "audience"}], "Role": [{"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"}], "Director": [{"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"}], "Writer": [{"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"}], "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"}], "Similar": [{"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}, {"id": 26, "filter": "similar=26", "tag": "Breaking Bad"}], "Location": [{"path": "/TV Shows/Better Call Saul"}]}]}} "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}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + get-all-media-library: + speakeasy-default-get-all-media-library: + parameters: + path: + sectionKey: 9518 + query: + type: 2 + includeMeta: 1 + includeGuids: 1 + includeAdvanced: 1 + includeCollections: 1 + includeExternalMedia: 1 + X-Plex-Container-Start: 0 + 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": []}, {"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, "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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, "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, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "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": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Role": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}]}]}} + "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.0 generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 8bf52b8..32ba2c9 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -13,7 +13,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false go: - version: 0.18.1 + version: 0.19.0 additionalDependencies: {} allowUnknownFieldsInWeakUnions: false clientServerStatusCodesAsErrors: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index c16b322..274a56e 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.487.1 +speakeasyVersion: 1.488.0 sources: my-source: sourceNamespace: my-source @@ -9,19 +9,19 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:49536684a97842ea7c069f909012b31a22a046d8277aee47b50a334494bf2c64 - sourceBlobDigest: sha256:eac671ea32ce31e1e558839153f7effef39bb35b4e461c6e95661d0eaf4ce1c8 + sourceRevisionDigest: sha256:0efb9039972533bf1190dfc1ffb377429a8e486b6299442e732f662c1ffbeca6 + sourceBlobDigest: sha256:038d73166cc9db17f514d511cfe4365ea032f4ebcb247fa86b7aa1bba0e1ab46 tags: - latest - - speakeasy-sdk-regen-1738973347 + - speakeasy-sdk-regen-1739232555 targets: plexgo: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:49536684a97842ea7c069f909012b31a22a046d8277aee47b50a334494bf2c64 - sourceBlobDigest: sha256:eac671ea32ce31e1e558839153f7effef39bb35b4e461c6e95661d0eaf4ce1c8 + sourceRevisionDigest: sha256:0efb9039972533bf1190dfc1ffb377429a8e486b6299442e732f662c1ffbeca6 + sourceBlobDigest: sha256:038d73166cc9db17f514d511cfe4365ea032f4ebcb247fa86b7aa1bba0e1ab46 codeSamplesNamespace: code-samples-go-plexgo - codeSamplesRevisionDigest: sha256:79055da36c8f5a3f632269f44d4d929f9bdfae63fb53068afcbeef5e6eecb8c0 + codeSamplesRevisionDigest: sha256:96b23ddcc80db35c9852b114146c3be99c47b4375338f8d605199a53c0498cc8 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 737c70c..0635383 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,7 @@ func main() { * [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 * [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 diff --git a/RELEASES.md b/RELEASES.md index a2d953c..1e47350 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1042,4 +1042,14 @@ Based on: ### Generated - [go v0.18.1] . ### Releases -- [Go v0.18.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.18.1 - . \ No newline at end of file +- [Go v0.18.1] https://github.com/LukeHagar/plexgo/releases/tag/v0.18.1 - . + +## 2025-02-11 00:09:00 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.488.0 (2.506.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [go v0.19.0] . +### Releases +- [Go v0.19.0] https://github.com/LukeHagar/plexgo/releases/tag/v0.19.0 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index e15bca6..762a35e 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -237,6 +237,12 @@ actions: - lang: go label: library source: "package main\n\nimport(\n\t\"context\"\n\t\"github.com/LukeHagar/plexgo\"\n\t\"github.com/LukeHagar/plexgo/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n \n s := plexgo.New(\n plexgo.WithSecurity(\"\"),\n )\n\n res, err := s.Library.GetActorsLibrary(ctx, 9518, operations.GetActorsLibraryQueryParamTypeTvShow)\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" + - target: $["paths"]["/library/sections/{sectionKey}/all"]["get"] + update: + x-codeSamples: + - lang: go + label: library + source: "package main\n\nimport(\n\t\"context\"\n\t\"github.com/LukeHagar/plexgo\"\n\t\"github.com/LukeHagar/plexgo/models/operations\"\n\t\"log\"\n)\n\nfunc main() {\n ctx := context.Background()\n \n s := plexgo.New(\n plexgo.WithSecurity(\"\"),\n )\n\n res, err := s.Library.GetAllMediaLibrary(ctx, operations.GetAllMediaLibraryRequest{\n SectionKey: 9518,\n Type: operations.GetAllMediaLibraryQueryParamTypeTvShow,\n })\n if err != nil {\n log.Fatal(err)\n }\n if res.Object != nil {\n // handle response\n }\n}" - target: $["paths"]["/library/sections/{sectionKey}/country"]["get"] update: x-codeSamples: diff --git a/docs/models/operations/getactorslibrarymediacontainer.md b/docs/models/operations/getactorslibrarymediacontainer.md index bdea80c..d9a6fad 100644 --- a/docs/models/operations/getactorslibrarymediacontainer.md +++ b/docs/models/operations/getactorslibrarymediacontainer.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `Size` | *float64* | :heavy_check_mark: | N/A | 50 | +| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | | `AllowSync` | *bool* | :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 | | `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | diff --git a/docs/models/operations/getallmedialibraryactivedirection.md b/docs/models/operations/getallmedialibraryactivedirection.md new file mode 100644 index 0000000..fc226dd --- /dev/null +++ b/docs/models/operations/getallmedialibraryactivedirection.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryActiveDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| --------------------------------------------- | --------------------------------------------- | +| `GetAllMediaLibraryActiveDirectionAscending` | asc | +| `GetAllMediaLibraryActiveDirectionDescending` | desc | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarycollection.md b/docs/models/operations/getallmedialibrarycollection.md new file mode 100644 index 0000000..73bb1dd --- /dev/null +++ b/docs/models/operations/getallmedialibrarycollection.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryCollection + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarycountry.md b/docs/models/operations/getallmedialibrarycountry.md new file mode 100644 index 0000000..4be36e5 --- /dev/null +++ b/docs/models/operations/getallmedialibrarycountry.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryCountry + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarydefaultdirection.md b/docs/models/operations/getallmedialibrarydefaultdirection.md new file mode 100644 index 0000000..48f89da --- /dev/null +++ b/docs/models/operations/getallmedialibrarydefaultdirection.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ---------------------------------------------- | ---------------------------------------------- | +| `GetAllMediaLibraryDefaultDirectionAscending` | asc | +| `GetAllMediaLibraryDefaultDirectionDescending` | desc | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarydirector.md b/docs/models/operations/getallmedialibrarydirector.md new file mode 100644 index 0000000..9cbd384 --- /dev/null +++ b/docs/models/operations/getallmedialibrarydirector.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryDirector + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | +| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryfield.md b/docs/models/operations/getallmedialibraryfield.md new file mode 100644 index 0000000..9b052bb --- /dev/null +++ b/docs/models/operations/getallmedialibraryfield.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryField + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Key` | *string* | :heavy_check_mark: | N/A | show.title | +| `Title` | *string* | :heavy_check_mark: | N/A | Show Title | +| `Type` | *string* | :heavy_check_mark: | N/A | string | +| `SubType` | **string* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryfieldtype.md b/docs/models/operations/getallmedialibraryfieldtype.md new file mode 100644 index 0000000..cd80a11 --- /dev/null +++ b/docs/models/operations/getallmedialibraryfieldtype.md @@ -0,0 +1,9 @@ +# GetAllMediaLibraryFieldType + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `Type` | *string* | :heavy_check_mark: | N/A | tag | +| `Operator` | [][operations.GetAllMediaLibraryOperator](../../models/operations/getallmedialibraryoperator.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryfilter.md b/docs/models/operations/getallmedialibraryfilter.md new file mode 100644 index 0000000..c49e7d5 --- /dev/null +++ b/docs/models/operations/getallmedialibraryfilter.md @@ -0,0 +1,13 @@ +# GetAllMediaLibraryFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `Filter` | *string* | :heavy_check_mark: | N/A | genre | +| `FilterType` | *string* | :heavy_check_mark: | N/A | string | +| `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | +| `Title` | *string* | :heavy_check_mark: | N/A | Genre | +| `Type` | *string* | :heavy_check_mark: | N/A | filter | +| `Advanced` | **bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarygenre.md b/docs/models/operations/getallmedialibrarygenre.md new file mode 100644 index 0000000..6e3962c --- /dev/null +++ b/docs/models/operations/getallmedialibrarygenre.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryGenre + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryhasthumbnail.md b/docs/models/operations/getallmedialibraryhasthumbnail.md new file mode 100644 index 0000000..bcd5173 --- /dev/null +++ b/docs/models/operations/getallmedialibraryhasthumbnail.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryHasThumbnail + +Indicates if the part has a thumbnail. + + +## Values + +| Name | Value | +| ------------------------------------- | ------------------------------------- | +| `GetAllMediaLibraryHasThumbnailFalse` | 0 | +| `GetAllMediaLibraryHasThumbnailTrue` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryimage.md b/docs/models/operations/getallmedialibraryimage.md new file mode 100644 index 0000000..3e0a6a4 --- /dev/null +++ b/docs/models/operations/getallmedialibraryimage.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryImage + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `Alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | +| `Type` | [operations.GetAllMediaLibraryLibraryResponseType](../../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/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md b/docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md new file mode 100644 index 0000000..d0a36b6 --- /dev/null +++ b/docs/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetAllMediaLibraryLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### GetAllMediaLibraryOptimizedForStreaming1 + +```go +getAllMediaLibraryLibraryOptimizedForStreaming := operations.CreateGetAllMediaLibraryLibraryOptimizedForStreamingGetAllMediaLibraryOptimizedForStreaming1(operations.GetAllMediaLibraryOptimizedForStreaming1{/* values here */}) +``` + +### + +```go +getAllMediaLibraryLibraryOptimizedForStreaming := operations.CreateGetAllMediaLibraryLibraryOptimizedForStreamingBoolean(bool{/* values here */}) +``` + diff --git a/docs/models/operations/getallmedialibrarylibraryresponsetype.md b/docs/models/operations/getallmedialibrarylibraryresponsetype.md new file mode 100644 index 0000000..9c79333 --- /dev/null +++ b/docs/models/operations/getallmedialibrarylibraryresponsetype.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryLibraryResponseType + + +## Values + +| Name | Value | +| -------------------------------------------------- | -------------------------------------------------- | +| `GetAllMediaLibraryLibraryResponseTypeCoverPoster` | coverPoster | +| `GetAllMediaLibraryLibraryResponseTypeBackground` | background | +| `GetAllMediaLibraryLibraryResponseTypeSnapshot` | snapshot | +| `GetAllMediaLibraryLibraryResponseTypeClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarylibrarytype.md b/docs/models/operations/getallmedialibrarylibrarytype.md new file mode 100644 index 0000000..0b3f798 --- /dev/null +++ b/docs/models/operations/getallmedialibrarylibrarytype.md @@ -0,0 +1,16 @@ +# GetAllMediaLibraryLibraryType + +The type of media content + + + +## Values + +| Name | Value | +| -------------------------------------- | -------------------------------------- | +| `GetAllMediaLibraryLibraryTypeMovie` | movie | +| `GetAllMediaLibraryLibraryTypeTvShow` | show | +| `GetAllMediaLibraryLibraryTypeSeason` | season | +| `GetAllMediaLibraryLibraryTypeEpisode` | episode | +| `GetAllMediaLibraryLibraryTypeArtist` | artist | +| `GetAllMediaLibraryLibraryTypeAlbum` | album | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymedia.md b/docs/models/operations/getallmedialibrarymedia.md new file mode 100644 index 0000000..b934ffa --- /dev/null +++ b/docs/models/operations/getallmedialibrarymedia.md @@ -0,0 +1,26 @@ +# GetAllMediaLibraryMedia + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `ID` | *int64* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `Duration` | **int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `Bitrate` | **int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `Width` | **int* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `Height` | **int* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `AspectRatio` | **float32* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `AudioChannels` | **int* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `DisplayOffset` | **int* | :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` | *bool* | :heavy_check_mark: | 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](../../models/operations/getallmedialibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `Has64bitOffsets` | **bool* | :heavy_minus_sign: | N/A | false | +| `Part` | [][operations.GetAllMediaLibraryPart](../../models/operations/getallmedialibrarypart.md) | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymediacontainer.md b/docs/models/operations/getallmedialibrarymediacontainer.md new file mode 100644 index 0000000..cd25647 --- /dev/null +++ b/docs/models/operations/getallmedialibrarymediacontainer.md @@ -0,0 +1,26 @@ +# GetAllMediaLibraryMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `TotalSize` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | +| `Offset` | *int64* | :heavy_check_mark: | Offset value for pagination. | 0 | +| `AllowSync` | *bool* | :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` | *int64* | :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` | *int64* | :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` | *bool* | :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](../../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](../../models/operations/getallmedialibrarymetadata.md) | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymeta.md b/docs/models/operations/getallmedialibrarymeta.md new file mode 100644 index 0000000..7016d69 --- /dev/null +++ b/docs/models/operations/getallmedialibrarymeta.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryMeta + +The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `Type` | [][operations.GetAllMediaLibraryType](../../models/operations/getallmedialibrarytype.md) | :heavy_minus_sign: | N/A | +| `FieldType` | [][operations.GetAllMediaLibraryFieldType](../../models/operations/getallmedialibraryfieldtype.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarymetadata.md b/docs/models/operations/getallmedialibrarymetadata.md new file mode 100644 index 0000000..c084e61 --- /dev/null +++ b/docs/models/operations/getallmedialibrarymetadata.md @@ -0,0 +1,74 @@ +# GetAllMediaLibraryMetadata + +Unknown + + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `RatingKey` | *string* | :heavy_check_mark: | 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. | 58683 | +| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | +| `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](../../models/operations/getallmedialibrarylibrarytype.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 | +| `Summary` | *string* | :heavy_check_mark: | A synopsis of the media item. | 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` | *float32* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | +| `AudienceRating` | *float64* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | +| `Year` | *int* | :heavy_check_mark: | The release year of the media item. | 2022 | +| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | +| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | +| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | +| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | +| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | +| `LeafCount` | **int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | +| `ViewedLeafCount` | **int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | +| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | +| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | +| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | +| `OriginallyAvailableAt` | [types.Date](../../types/date.md) | :heavy_check_mark: | The original release date of the media item. | 2022-12-14 | +| `AddedAt` | *int64* | :heavy_check_mark: | N/A | 1556281940 | +| `UpdatedAt` | **int64* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `AudienceRatingImage` | **string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | +| `ChapterSource` | **string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | +| `PrimaryExtraKey` | **string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | +| `OriginalTitle` | **string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | +| `ParentRatingKey` | **string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | +| `GrandparentRatingKey` | **string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | +| `ParentGUID` | **string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `GrandparentGUID` | **string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `GrandparentSlug` | **string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | +| `GrandparentKey` | **string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | +| `ParentKey` | **string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | +| `GrandparentTitle` | **string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | +| `GrandparentThumb` | **string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | +| `GrandparentTheme` | **string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | +| `GrandparentArt` | **string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | +| `ParentTitle` | **string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | +| `ParentIndex` | **int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | +| `ParentThumb` | **string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | +| `RatingImage` | **string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | +| `ViewCount` | **int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | +| `ViewOffset` | **int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | +| `SkipCount` | **int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | +| `Subtype` | **string* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | +| `LastRatedAt` | **int64* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | +| `CreatedAtAccuracy` | **string* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | +| `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` | **int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `UserRating` | **float32* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | +| `Image` | [][operations.GetAllMediaLibraryImage](../../models/operations/getallmedialibraryimage.md) | :heavy_minus_sign: | N/A | | +| `UltraBlurColors` | [*operations.GetAllMediaLibraryUltraBlurColors](../../models/operations/getallmedialibraryultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `Media` | [][operations.GetAllMediaLibraryMedia](../../models/operations/getallmedialibrarymedia.md) | :heavy_minus_sign: | N/A | | +| `Genre` | [][operations.GetAllMediaLibraryGenre](../../models/operations/getallmedialibrarygenre.md) | :heavy_minus_sign: | N/A | | +| `Country` | [][operations.GetAllMediaLibraryCountry](../../models/operations/getallmedialibrarycountry.md) | :heavy_minus_sign: | N/A | | +| `Director` | [][operations.GetAllMediaLibraryDirector](../../models/operations/getallmedialibrarydirector.md) | :heavy_minus_sign: | N/A | | +| `Writer` | [][operations.GetAllMediaLibraryWriter](../../models/operations/getallmedialibrarywriter.md) | :heavy_minus_sign: | N/A | | +| `Role` | [][operations.GetAllMediaLibraryRole](../../models/operations/getallmedialibraryrole.md) | :heavy_minus_sign: | N/A | | +| `Guids` | [][operations.Guids](../../models/operations/guids.md) | :heavy_minus_sign: | N/A | | +| `Collection` | [][operations.GetAllMediaLibraryCollection](../../models/operations/getallmedialibrarycollection.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryoperator.md b/docs/models/operations/getallmedialibraryoperator.md new file mode 100644 index 0000000..f42bb21 --- /dev/null +++ b/docs/models/operations/getallmedialibraryoperator.md @@ -0,0 +1,9 @@ +# GetAllMediaLibraryOperator + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Key` | *string* | :heavy_check_mark: | N/A | = | +| `Title` | *string* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryoptimizedforstreaming.md b/docs/models/operations/getallmedialibraryoptimizedforstreaming.md new file mode 100644 index 0000000..7a77cf8 --- /dev/null +++ b/docs/models/operations/getallmedialibraryoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetAllMediaLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### One + +```go +getAllMediaLibraryOptimizedForStreaming := operations.CreateGetAllMediaLibraryOptimizedForStreamingOne(operations.One{/* values here */}) +``` + +### + +```go +getAllMediaLibraryOptimizedForStreaming := operations.CreateGetAllMediaLibraryOptimizedForStreamingBoolean(bool{/* values here */}) +``` + diff --git a/docs/models/operations/getallmedialibraryoptimizedforstreaming1.md b/docs/models/operations/getallmedialibraryoptimizedforstreaming1.md new file mode 100644 index 0000000..b5f6c6d --- /dev/null +++ b/docs/models/operations/getallmedialibraryoptimizedforstreaming1.md @@ -0,0 +1,9 @@ +# GetAllMediaLibraryOptimizedForStreaming1 + + +## Values + +| Name | Value | +| ---------------------------------------------- | ---------------------------------------------- | +| `GetAllMediaLibraryOptimizedForStreaming1Zero` | 0 | +| `GetAllMediaLibraryOptimizedForStreaming1One` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarypart.md b/docs/models/operations/getallmedialibrarypart.md new file mode 100644 index 0000000..f3ecc67 --- /dev/null +++ b/docs/models/operations/getallmedialibrarypart.md @@ -0,0 +1,23 @@ +# GetAllMediaLibraryPart + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| `Accessible` | **bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `Exists` | **bool* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `ID` | *int64* | :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` | **int* | :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` | *int64* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `PacketLength` | **int* | :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` | **bool* | :heavy_minus_sign: | N/A | false | +| `OptimizedForStreaming` | [*operations.GetAllMediaLibraryLibraryOptimizedForStreaming](../../models/operations/getallmedialibrarylibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `HasThumbnail` | [*operations.GetAllMediaLibraryHasThumbnail](../../models/operations/getallmedialibraryhasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `Stream` | [][operations.GetAllMediaLibraryStream](../../models/operations/getallmedialibrarystream.md) | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryqueryparamincludemeta.md b/docs/models/operations/getallmedialibraryqueryparamincludemeta.md new file mode 100644 index 0000000..d3b34ef --- /dev/null +++ b/docs/models/operations/getallmedialibraryqueryparamincludemeta.md @@ -0,0 +1,12 @@ +# GetAllMediaLibraryQueryParamIncludeMeta + +Adds the Meta object to the response + + + +## Values + +| Name | Value | +| ------------------------------------------------ | ------------------------------------------------ | +| `GetAllMediaLibraryQueryParamIncludeMetaDisable` | 0 | +| `GetAllMediaLibraryQueryParamIncludeMetaEnable` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryqueryparamtype.md b/docs/models/operations/getallmedialibraryqueryparamtype.md new file mode 100644 index 0000000..442775e --- /dev/null +++ b/docs/models/operations/getallmedialibraryqueryparamtype.md @@ -0,0 +1,22 @@ +# GetAllMediaLibraryQueryParamType + +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 + + + +## Values + +| Name | Value | +| ----------------------------------------- | ----------------------------------------- | +| `GetAllMediaLibraryQueryParamTypeMovie` | 1 | +| `GetAllMediaLibraryQueryParamTypeTvShow` | 2 | +| `GetAllMediaLibraryQueryParamTypeSeason` | 3 | +| `GetAllMediaLibraryQueryParamTypeEpisode` | 4 | +| `GetAllMediaLibraryQueryParamTypeAudio` | 8 | +| `GetAllMediaLibraryQueryParamTypeAlbum` | 9 | +| `GetAllMediaLibraryQueryParamTypeTrack` | 10 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryrequest.md b/docs/models/operations/getallmedialibraryrequest.md new file mode 100644 index 0000000..e55ba6f --- /dev/null +++ b/docs/models/operations/getallmedialibraryrequest.md @@ -0,0 +1,16 @@ +# GetAllMediaLibraryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `SectionKey` | *int* | :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](../../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](../../models/operations/getallmedialibraryqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | +| `IncludeGuids` | [*operations.QueryParamIncludeGuids](../../models/operations/queryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | +| `IncludeAdvanced` | [*operations.IncludeAdvanced](../../models/operations/includeadvanced.md) | :heavy_minus_sign: | N/A | 1 | +| `IncludeCollections` | [*operations.QueryParamIncludeCollections](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | N/A | 1 | +| `IncludeExternalMedia` | [*operations.QueryParamIncludeExternalMedia](../../models/operations/queryparamincludeexternalmedia.md) | :heavy_minus_sign: | N/A | 1 | +| `XPlexContainerStart` | **int* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | +| `XPlexContainerSize` | **int* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryresponse.md b/docs/models/operations/getallmedialibraryresponse.md new file mode 100644 index 0000000..1bab186 --- /dev/null +++ b/docs/models/operations/getallmedialibraryresponse.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `Object` | [*operations.GetAllMediaLibraryResponseBody](../../models/operations/getallmedialibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryresponsebody.md b/docs/models/operations/getallmedialibraryresponsebody.md new file mode 100644 index 0000000..6cc5673 --- /dev/null +++ b/docs/models/operations/getallmedialibraryresponsebody.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryResponseBody + +Successful response containing media container data. + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `MediaContainer` | [*operations.GetAllMediaLibraryMediaContainer](../../models/operations/getallmedialibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryrole.md b/docs/models/operations/getallmedialibraryrole.md new file mode 100644 index 0000000..b82113f --- /dev/null +++ b/docs/models/operations/getallmedialibraryrole.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryRole + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The name of the actor for this role | Danny Boyle | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarysort.md b/docs/models/operations/getallmedialibrarysort.md new file mode 100644 index 0000000..7061d1a --- /dev/null +++ b/docs/models/operations/getallmedialibrarysort.md @@ -0,0 +1,15 @@ +# GetAllMediaLibrarySort + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `Default` | **string* | :heavy_minus_sign: | N/A | asc | +| `Active` | **bool* | :heavy_minus_sign: | N/A | false | +| `ActiveDirection` | [*operations.GetAllMediaLibraryActiveDirection](../../models/operations/getallmedialibraryactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `DefaultDirection` | [*operations.GetAllMediaLibraryDefaultDirection](../../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/models/operations/getallmedialibrarystream.md b/docs/models/operations/getallmedialibrarystream.md new file mode 100644 index 0000000..23fa8b2 --- /dev/null +++ b/docs/models/operations/getallmedialibrarystream.md @@ -0,0 +1,54 @@ +# GetAllMediaLibraryStream + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `ID` | *int64* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `StreamType` | *int* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | +| `Default` | **bool* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `Index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | +| `Bitrate` | **int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `Language` | *string* | :heavy_check_mark: | Language of the stream. | English | +| `LanguageTag` | *string* | :heavy_check_mark: | Language tag (e.g., en). | en | +| `LanguageCode` | *string* | :heavy_check_mark: | ISO language code. | eng | +| `HeaderCompression` | **bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `DOVIBLCompatID` | **int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `DOVIBLPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `DOVIELPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `DOVILevel` | **int* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `DOVIPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `DOVIProfile` | **int* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `DOVIRPUPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `DOVIVersion` | **string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `BitDepth` | **int* | :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` | **int* | :heavy_minus_sign: | Coded video height. | 1608 | +| `CodedWidth` | **int* | :heavy_minus_sign: | Coded video width. | 3840 | +| `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` | **float32* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `Height` | **int* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `Level` | **int* | :heavy_minus_sign: | Video level. | 150 | +| `Original` | **bool* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `HasScalingMatrix` | **bool* | :heavy_minus_sign: | N/A | false | +| `Profile` | **string* | :heavy_minus_sign: | Video profile. | main 10 | +| `ScanType` | **string* | :heavy_minus_sign: | N/A | progressive | +| `RefFrames` | **int* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `Width` | **int* | :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` | **bool* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `Forced` | **bool* | :heavy_minus_sign: | N/A | true | +| `Channels` | **int* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `AudioChannelLayout` | **string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `SamplingRate` | **int* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `CanAutoSync` | **bool* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `HearingImpaired` | **bool* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `Dub` | **bool* | :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/models/operations/getallmedialibrarytype.md b/docs/models/operations/getallmedialibrarytype.md new file mode 100644 index 0000000..4749141 --- /dev/null +++ b/docs/models/operations/getallmedialibrarytype.md @@ -0,0 +1,15 @@ +# GetAllMediaLibraryType + + +## 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` | *bool* | :heavy_check_mark: | N/A | false | +| `Filter` | [][operations.GetAllMediaLibraryFilter](../../models/operations/getallmedialibraryfilter.md) | :heavy_minus_sign: | N/A | | +| `Sort` | [][operations.GetAllMediaLibrarySort](../../models/operations/getallmedialibrarysort.md) | :heavy_minus_sign: | N/A | | +| `Field` | [][operations.GetAllMediaLibraryField](../../models/operations/getallmedialibraryfield.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibraryultrablurcolors.md b/docs/models/operations/getallmedialibraryultrablurcolors.md new file mode 100644 index 0000000..b515745 --- /dev/null +++ b/docs/models/operations/getallmedialibraryultrablurcolors.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryUltraBlurColors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `TopLeft` | *string* | :heavy_check_mark: | N/A | 11333b | +| `TopRight` | *string* | :heavy_check_mark: | N/A | 0a232d | +| `BottomRight` | *string* | :heavy_check_mark: | N/A | 73958 | +| `BottomLeft` | *string* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getallmedialibrarywriter.md b/docs/models/operations/getallmedialibrarywriter.md new file mode 100644 index 0000000..520daef --- /dev/null +++ b/docs/models/operations/getallmedialibrarywriter.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryWriter + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Danny Boyle | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibrarymediacontainer.md b/docs/models/operations/getcountrieslibrarymediacontainer.md index 80aa306..516f86f 100644 --- a/docs/models/operations/getcountrieslibrarymediacontainer.md +++ b/docs/models/operations/getcountrieslibrarymediacontainer.md @@ -5,18 +5,16 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `Size` | *float64* | :heavy_check_mark: | N/A | 50 | -| `Offset` | **int* | :heavy_minus_sign: | N/A | | -| `TotalSize` | **int* | :heavy_minus_sign: | N/A | | -| `Identifier` | *string* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `AllowSync` | *bool* | :heavy_check_mark: | N/A | false | -| `Art` | *string* | :heavy_check_mark: | N/A | /:/resources/show-fanart.jpg | -| `Content` | *string* | :heavy_check_mark: | N/A | secondary | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ | -| `MediaTagVersion` | *int64* | :heavy_check_mark: | N/A | 1734362201 | -| `Nocache` | *bool* | :heavy_check_mark: | N/A | true | -| `Thumb` | *string* | :heavy_check_mark: | N/A | /:/resources/show.png | -| `Title1` | *string* | :heavy_check_mark: | N/A | TV Series | -| `Title2` | *string* | :heavy_check_mark: | N/A | By Country | -| `ViewGroup` | *string* | :heavy_check_mark: | N/A | secondary | +| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `AllowSync` | *bool* | :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 | +| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `MediaTagVersion` | *int64* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `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 | | `Directory` | [][operations.GetCountriesLibraryDirectory](../../models/operations/getcountrieslibrarydirectory.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibrarymediacontainer.md b/docs/models/operations/getgenreslibrarymediacontainer.md index 83c7599..fd797ec 100644 --- a/docs/models/operations/getgenreslibrarymediacontainer.md +++ b/docs/models/operations/getgenreslibrarymediacontainer.md @@ -5,18 +5,16 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `Size` | *float64* | :heavy_check_mark: | N/A | 50 | -| `Offset` | **int* | :heavy_minus_sign: | N/A | | -| `TotalSize` | **int* | :heavy_minus_sign: | N/A | | -| `Identifier` | *string* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `AllowSync` | *bool* | :heavy_check_mark: | N/A | false | -| `Art` | *string* | :heavy_check_mark: | N/A | /:/resources/show-fanart.jpg | -| `Content` | *string* | :heavy_check_mark: | N/A | secondary | -| `MediaTagPrefix` | *string* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ | -| `MediaTagVersion` | *int64* | :heavy_check_mark: | N/A | 1734362201 | -| `Nocache` | *bool* | :heavy_check_mark: | N/A | true | -| `Thumb` | *string* | :heavy_check_mark: | N/A | /:/resources/show.png | -| `Title1` | *string* | :heavy_check_mark: | N/A | TV Shows (Reality) | -| `Title2` | *string* | :heavy_check_mark: | N/A | By Genre | -| `ViewGroup` | *string* | :heavy_check_mark: | N/A | secondary | +| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `AllowSync` | *bool* | :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 | +| `MediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `MediaTagVersion` | *int64* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `Nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `Thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `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 | | `Directory` | [][operations.GetGenresLibraryDirectory](../../models/operations/getgenreslibrarydirectory.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsfilter.md b/docs/models/operations/getlibraryitemsfilter.md index 9585aa3..eab87bb 100644 --- a/docs/models/operations/getlibraryitemsfilter.md +++ b/docs/models/operations/getlibraryitemsfilter.md @@ -9,4 +9,5 @@ | `FilterType` | *string* | :heavy_check_mark: | N/A | string | | `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | | `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | \ No newline at end of file +| `Type` | *string* | :heavy_check_mark: | N/A | filter | +| `Advanced` | **bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibrarytype.md b/docs/models/operations/getlibraryitemslibrarytype.md index 6cb356a..d462120 100644 --- a/docs/models/operations/getlibraryitemslibrarytype.md +++ b/docs/models/operations/getlibraryitemslibrarytype.md @@ -11,4 +11,6 @@ The type of media content | `GetLibraryItemsLibraryTypeMovie` | movie | | `GetLibraryItemsLibraryTypeTvShow` | show | | `GetLibraryItemsLibraryTypeSeason` | season | -| `GetLibraryItemsLibraryTypeEpisode` | episode | \ No newline at end of file +| `GetLibraryItemsLibraryTypeEpisode` | episode | +| `GetLibraryItemsLibraryTypeArtist` | artist | +| `GetLibraryItemsLibraryTypeAlbum` | album | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemstype.md b/docs/models/operations/getlibraryitemstype.md index 73566dc..0f9b7b6 100644 --- a/docs/models/operations/getlibraryitemstype.md +++ b/docs/models/operations/getlibraryitemstype.md @@ -6,7 +6,8 @@ | 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 | show | +| `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` | *bool* | :heavy_check_mark: | N/A | false | | `Filter` | [][operations.GetLibraryItemsFilter](../../models/operations/getlibraryitemsfilter.md) | :heavy_minus_sign: | N/A | | diff --git a/docs/models/operations/getmediametadatacountry.md b/docs/models/operations/getmediametadatacountry.md index e2c340d..1913c00 100644 --- a/docs/models/operations/getmediametadatacountry.md +++ b/docs/models/operations/getmediametadatacountry.md @@ -5,6 +5,6 @@ | Field | Type | Required | Description | Example | | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `ID` | *int64* | :heavy_check_mark: | The unique country identifier. | 58591 | +| `ID` | *int* | :heavy_check_mark: | The unique country identifier. | 58591 | | `Filter` | *string* | :heavy_check_mark: | The filter string for the country. | country=58591 | | `Tag` | *string* | :heavy_check_mark: | The country name. | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataguids.md b/docs/models/operations/getmediametadataguids.md new file mode 100644 index 0000000..1c52abf --- /dev/null +++ b/docs/models/operations/getmediametadataguids.md @@ -0,0 +1,8 @@ +# GetMediaMetaDataGuids + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `ID` | *string* | :heavy_check_mark: | The GUID value. | imdb://tt3032476 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatahasthumbnail.md b/docs/models/operations/getmediametadatahasthumbnail.md new file mode 100644 index 0000000..58a3def --- /dev/null +++ b/docs/models/operations/getmediametadatahasthumbnail.md @@ -0,0 +1,11 @@ +# GetMediaMetaDataHasThumbnail + +Indicates if the part has a thumbnail. + + +## Values + +| Name | Value | +| ----------------------------------- | ----------------------------------- | +| `GetMediaMetaDataHasThumbnailFalse` | 0 | +| `GetMediaMetaDataHasThumbnailTrue` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md new file mode 100644 index 0000000..eba3720 --- /dev/null +++ b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetMediaMetaDataLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### GetMediaMetaDataOptimizedForStreaming1 + +```go +getMediaMetaDataLibraryOptimizedForStreaming := operations.CreateGetMediaMetaDataLibraryOptimizedForStreamingGetMediaMetaDataOptimizedForStreaming1(operations.GetMediaMetaDataOptimizedForStreaming1{/* values here */}) +``` + +### + +```go +getMediaMetaDataLibraryOptimizedForStreaming := operations.CreateGetMediaMetaDataLibraryOptimizedForStreamingBoolean(bool{/* values here */}) +``` + diff --git a/docs/models/operations/getmediametadatamedia.md b/docs/models/operations/getmediametadatamedia.md index e20cbf1..e976ed6 100644 --- a/docs/models/operations/getmediametadatamedia.md +++ b/docs/models/operations/getmediametadatamedia.md @@ -3,20 +3,24 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `ID` | *int64* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `Duration` | *int64* | :heavy_check_mark: | Duration of the media in milliseconds. | 9610350 | -| `Bitrate` | *int64* | :heavy_check_mark: | Bitrate in bits per second. | 25512 | -| `Width` | *int64* | :heavy_check_mark: | Video width in pixels. | 3840 | -| `Height` | *int64* | :heavy_check_mark: | Video height in pixels. | 1602 | -| `AspectRatio` | *float32* | :heavy_check_mark: | Aspect ratio of the video. | 2.35 | -| `AudioChannels` | *int64* | :heavy_check_mark: | Number of audio channels. | 6 | -| `AudioCodec` | *string* | :heavy_check_mark: | Audio codec used. | eac3 | -| `VideoCodec` | *string* | :heavy_check_mark: | Video codec used. | hevc | -| `VideoResolution` | *string* | :heavy_check_mark: | Video resolution (e.g., 4k). | 4k | -| `Container` | *string* | :heavy_check_mark: | File container type. | mkv | -| `VideoFrameRate` | *string* | :heavy_check_mark: | Frame rate of the video (e.g., 24p). | 24p | -| `VideoProfile` | *string* | :heavy_check_mark: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | -| `Part` | [][operations.GetMediaMetaDataPart](../../models/operations/getmediametadatapart.md) | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `ID` | *int64* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `Duration` | **int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `Bitrate` | **int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `Width` | **int* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `Height` | **int* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `AspectRatio` | **float32* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `AudioChannels` | **int* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `DisplayOffset` | **int* | :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` | *bool* | :heavy_check_mark: | 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.GetMediaMetaDataOptimizedForStreaming](../../models/operations/getmediametadataoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `Has64bitOffsets` | **bool* | :heavy_minus_sign: | N/A | false | +| `Part` | [][operations.GetMediaMetaDataPart](../../models/operations/getmediametadatapart.md) | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatamediacontainer.md b/docs/models/operations/getmediametadatamediacontainer.md index fb010d2..a4e5bcc 100644 --- a/docs/models/operations/getmediametadatamediacontainer.md +++ b/docs/models/operations/getmediametadatamediacontainer.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `Size` | *float64* | :heavy_check_mark: | N/A | 50 | +| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | | `AllowSync` | *bool* | :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 | | `LibrarySectionID` | *int64* | :heavy_check_mark: | The unique identifier for the library section. | 2 | diff --git a/docs/models/operations/getmediametadatametadata.md b/docs/models/operations/getmediametadatametadata.md index d1a7085..cd7dfcc 100644 --- a/docs/models/operations/getmediametadatametadata.md +++ b/docs/models/operations/getmediametadatametadata.md @@ -23,30 +23,32 @@ | `LibrarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | TV Series | | `LibrarySectionID` | *int64* | :heavy_check_mark: | The ID of the library section. | 2 | | `LibrarySectionKey` | *string* | :heavy_check_mark: | The key of the library section. | /library/sections/2 | -| `ContentRating` | *string* | :heavy_check_mark: | The content rating (e.g., TV-MA). | TV-MA | +| `ContentRating` | **string* | :heavy_minus_sign: | The content rating (e.g., TV-MA). | TV-MA | | `Summary` | *string* | :heavy_check_mark: | A summary of the content. | Before Saul Goodman, he was Jimmy McGill. And if you're calling Jimmy, you're in real trouble. The prequel to "Breaking Bad" follows small-time attorney, Jimmy McGill, as he transforms into Walter White's morally challenged lawyer, Saul Goodman. | | `Index` | **int64* | :heavy_minus_sign: | The index or order of the item. | 1 | | `GrandparentTitle` | **string* | :heavy_minus_sign: | The title of the grandparent entity (typically the show's title). | Alice in Borderland | | `ParentTitle` | **string* | :heavy_minus_sign: | The title of the parent entity (typically the season's title). | Season 2 | -| `AudienceRating` | *float32* | :heavy_check_mark: | The audience rating for the content. | 8.7 | +| `AudienceRating` | **float32* | :heavy_minus_sign: | The audience rating for the content. | 8.7 | | `ViewCount` | **int64* | :heavy_minus_sign: | The number of times the item has been viewed. | 4 | | `SkipCount` | **int64* | :heavy_minus_sign: | The number of times the item has been skipped. | 1 | | `LastViewedAt` | **int64* | :heavy_minus_sign: | Unix timestamp of when the item was last viewed. | 1625764795 | -| `Year` | *int64* | :heavy_check_mark: | The release year. | 2015 | +| `Year` | *int* | :heavy_check_mark: | The release year. | 2015 | +| `Rating` | **float32* | :heavy_minus_sign: | The general rating | 6 | +| `RatingImage` | **string* | :heavy_minus_sign: | The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image). | rottentomatoes://image.rating.ripe | | `Tagline` | **string* | :heavy_minus_sign: | The tagline of the content. | Make the call | | `ChapterSource` | **string* | :heavy_minus_sign: | N/A | media | | `PrimaryExtraKey` | **string* | :heavy_minus_sign: | N/A | /library/metadata/134704 | | `Thumb` | *string* | :heavy_check_mark: | URL of the thumbnail image. | /library/metadata/44288/thumb/1736487993 | | `Art` | *string* | :heavy_check_mark: | URL of the art image. | /library/metadata/44288/art/1736487993 | | `Theme` | **string* | :heavy_minus_sign: | URL of the theme image. | /library/metadata/44288/theme/1736487993 | -| `Duration` | *int64* | :heavy_check_mark: | Duration of the content in milliseconds. | 2700000 | -| `OriginallyAvailableAt` | [types.Date](../../types/date.md) | :heavy_check_mark: | The original release date. | 2015-02-08 | +| `Duration` | *int* | :heavy_check_mark: | Duration of the content in milliseconds. | 2700000 | +| `OriginallyAvailableAt` | [*types.Date](../../types/date.md) | :heavy_minus_sign: | The original release date. | 2015-02-08 | | `LeafCount` | **int64* | :heavy_minus_sign: | The total number of episodes (or leaves). | 63 | | `ViewedLeafCount` | **int64* | :heavy_minus_sign: | The number of episodes that have been viewed. | 4 | -| `ChildCount` | **int64* | :heavy_minus_sign: | The number of child items. | 6 | -| `AddedAt` | *int64* | :heavy_check_mark: | Unix timestamp when the item was added. | 1625505101 | -| `UpdatedAt` | *int64* | :heavy_check_mark: | Unix timestamp when the item was last updated. | 1736487993 | -| `AudienceRatingImage` | *string* | :heavy_check_mark: | The URL for the audience rating image. | themoviedb://image.rating | +| `ChildCount` | **int* | :heavy_minus_sign: | The number of child items. | 6 | +| `AddedAt` | *int64* | :heavy_check_mark: | N/A | 1556281940 | +| `UpdatedAt` | *int64* | :heavy_check_mark: | N/A | 1556281940 | +| `AudienceRatingImage` | **string* | :heavy_minus_sign: | The URL for the audience rating image. | themoviedb://image.rating | | `ParentIndex` | **int64* | :heavy_minus_sign: | The index number of the parent entity, which could indicate its order or position. | 2 | | `ParentThumb` | **string* | :heavy_minus_sign: | The URL of the parent's thumbnail image. | /library/metadata/48047/thumb/1671800243 | | `GrandparentThumb` | **string* | :heavy_minus_sign: | The URL of the grandparent's thumbnail image. | /library/metadata/45520/thumb/1736488003 | @@ -56,8 +58,8 @@ | `UltraBlurColors` | [operations.GetMediaMetaDataUltraBlurColors](../../models/operations/getmediametadataultrablurcolors.md) | :heavy_check_mark: | N/A | | | `Genre` | [][operations.GetMediaMetaDataGenre](../../models/operations/getmediametadatagenre.md) | :heavy_minus_sign: | An array of genre tags. | | | `Country` | [][operations.GetMediaMetaDataCountry](../../models/operations/getmediametadatacountry.md) | :heavy_minus_sign: | An array of country tags. | | -| `Guids` | [][operations.Guids](../../models/operations/guids.md) | :heavy_check_mark: | An array of GUID objects. | | -| `Rating` | [][operations.Rating](../../models/operations/rating.md) | :heavy_check_mark: | An array of rating objects. | | +| `Guids` | [][operations.GetMediaMetaDataGuids](../../models/operations/getmediametadataguids.md) | :heavy_minus_sign: | An array of GUID objects. | | +| `Ratings` | [][operations.Ratings](../../models/operations/ratings.md) | :heavy_minus_sign: | An array of rating objects. | | | `Role` | [][operations.GetMediaMetaDataRole](../../models/operations/getmediametadatarole.md) | :heavy_minus_sign: | An array of Actor roles. | | | `Director` | [][operations.GetMediaMetaDataDirector](../../models/operations/getmediametadatadirector.md) | :heavy_minus_sign: | An array of Director roles. | | | `Writer` | [][operations.GetMediaMetaDataWriter](../../models/operations/getmediametadatawriter.md) | :heavy_minus_sign: | An array of Writer roles. | | diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming.md b/docs/models/operations/getmediametadataoptimizedforstreaming.md new file mode 100644 index 0000000..dbfde26 --- /dev/null +++ b/docs/models/operations/getmediametadataoptimizedforstreaming.md @@ -0,0 +1,19 @@ +# GetMediaMetaDataOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### OptimizedForStreaming1 + +```go +getMediaMetaDataOptimizedForStreaming := operations.CreateGetMediaMetaDataOptimizedForStreamingOptimizedForStreaming1(operations.OptimizedForStreaming1{/* values here */}) +``` + +### + +```go +getMediaMetaDataOptimizedForStreaming := operations.CreateGetMediaMetaDataOptimizedForStreamingBoolean(bool{/* values here */}) +``` + diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming1.md b/docs/models/operations/getmediametadataoptimizedforstreaming1.md new file mode 100644 index 0000000..c50c9da --- /dev/null +++ b/docs/models/operations/getmediametadataoptimizedforstreaming1.md @@ -0,0 +1,9 @@ +# GetMediaMetaDataOptimizedForStreaming1 + + +## Values + +| Name | Value | +| -------------------------------------------- | -------------------------------------------- | +| `GetMediaMetaDataOptimizedForStreaming1Zero` | 0 | +| `GetMediaMetaDataOptimizedForStreaming1One` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatapart.md b/docs/models/operations/getmediametadatapart.md index 2f722eb..0b40608 100644 --- a/docs/models/operations/getmediametadatapart.md +++ b/docs/models/operations/getmediametadatapart.md @@ -3,16 +3,21 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `Accessible` | **bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `Exists` | **bool* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `ID` | *int64* | :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` | *int64* | :heavy_check_mark: | 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` | *int64* | :heavy_check_mark: | File size in bytes. | 30649952104 | -| `Container` | *string* | :heavy_check_mark: | Container format of the part. | mkv | -| `VideoProfile` | *string* | :heavy_check_mark: | Video profile for the part. | main 10 | -| `Stream` | [][operations.GetMediaMetaDataStream](../../models/operations/getmediametadatastream.md) | :heavy_check_mark: | An array of streams for this part. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `Accessible` | **bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `Exists` | **bool* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `ID` | *int64* | :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` | **int* | :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` | *int64* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `PacketLength` | **int* | :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` | **bool* | :heavy_minus_sign: | N/A | false | +| `OptimizedForStreaming` | [*operations.GetMediaMetaDataLibraryOptimizedForStreaming](../../models/operations/getmediametadatalibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `HasThumbnail` | [*operations.GetMediaMetaDataHasThumbnail](../../models/operations/getmediametadatahasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `Stream` | [][operations.GetMediaMetaDataStream](../../models/operations/getmediametadatastream.md) | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatastream.md b/docs/models/operations/getmediametadatastream.md index 5d6cb01..911f297 100644 --- a/docs/models/operations/getmediametadatastream.md +++ b/docs/models/operations/getmediametadatastream.md @@ -6,47 +6,48 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | | `ID` | *int64* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `StreamType` | *int64* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | +| `StreamType` | *int* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | | `Default` | **bool* | :heavy_minus_sign: | Indicates if this stream is default. | true | | `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `Index` | *int64* | :heavy_check_mark: | Index of the stream. | 0 | -| `Bitrate` | *int64* | :heavy_check_mark: | Bitrate of the stream. | 24743 | +| `Index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | +| `Bitrate` | **int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | | `Language` | *string* | :heavy_check_mark: | Language of the stream. | English | | `LanguageTag` | *string* | :heavy_check_mark: | Language tag (e.g., en). | en | | `LanguageCode` | *string* | :heavy_check_mark: | ISO language code. | eng | -| `DOVIBLCompatID` | **int64* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `HeaderCompression` | **bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `DOVIBLCompatID` | **int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `DOVIBLPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | | `DOVIELPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `DOVILevel` | **int64* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `DOVILevel` | **int* | :heavy_minus_sign: | Dolby Vision level. | 6 | | `DOVIPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `DOVIProfile` | **int64* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `DOVIProfile` | **int* | :heavy_minus_sign: | Dolby Vision profile. | 8 | | `DOVIRPUPresent` | **bool* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | | `DOVIVersion` | **string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `BitDepth` | **int64* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `BitDepth` | **int* | :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` | **int64* | :heavy_minus_sign: | Coded video height. | 1608 | -| `CodedWidth` | **int64* | :heavy_minus_sign: | Coded video width. | 3840 | +| `CodedHeight` | **int* | :heavy_minus_sign: | Coded video height. | 1608 | +| `CodedWidth` | **int* | :heavy_minus_sign: | Coded video width. | 3840 | | `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` | **float32* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `Height` | **int64* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `Level` | **int64* | :heavy_minus_sign: | Video level. | 150 | +| `Height` | **int* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `Level` | **int* | :heavy_minus_sign: | Video level. | 150 | | `Original` | **bool* | :heavy_minus_sign: | Indicates if this is the original stream. | true | | `HasScalingMatrix` | **bool* | :heavy_minus_sign: | N/A | false | | `Profile` | **string* | :heavy_minus_sign: | Video profile. | main 10 | | `ScanType` | **string* | :heavy_minus_sign: | N/A | progressive | -| `RefFrames` | **int64* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `Width` | **int64* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `RefFrames` | **int* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `Width` | **int* | :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` | **bool* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | | `Forced` | **bool* | :heavy_minus_sign: | N/A | true | -| `Channels` | **int64* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `Channels` | **int* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | | `AudioChannelLayout` | **string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `SamplingRate` | **int64* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `SamplingRate` | **int* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | | `CanAutoSync` | **bool* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | | `HearingImpaired` | **bool* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | | `Dub` | **bool* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | diff --git a/docs/models/operations/getrecentlyaddedfilter.md b/docs/models/operations/getrecentlyaddedfilter.md index 256111d..053ae9d 100644 --- a/docs/models/operations/getrecentlyaddedfilter.md +++ b/docs/models/operations/getrecentlyaddedfilter.md @@ -9,4 +9,5 @@ | `FilterType` | *string* | :heavy_check_mark: | N/A | string | | `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | | `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | \ No newline at end of file +| `Type` | *string* | :heavy_check_mark: | N/A | filter | +| `Advanced` | **bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedhubstype.md b/docs/models/operations/getrecentlyaddedhubstype.md index ccb223e..f8281e4 100644 --- a/docs/models/operations/getrecentlyaddedhubstype.md +++ b/docs/models/operations/getrecentlyaddedhubstype.md @@ -11,4 +11,6 @@ The type of media content | `GetRecentlyAddedHubsTypeMovie` | movie | | `GetRecentlyAddedHubsTypeTvShow` | show | | `GetRecentlyAddedHubsTypeSeason` | season | -| `GetRecentlyAddedHubsTypeEpisode` | episode | \ No newline at end of file +| `GetRecentlyAddedHubsTypeEpisode` | episode | +| `GetRecentlyAddedHubsTypeArtist` | artist | +| `GetRecentlyAddedHubsTypeAlbum` | album | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryfilter.md b/docs/models/operations/getrecentlyaddedlibraryfilter.md index 2b56e55..76e1d9c 100644 --- a/docs/models/operations/getrecentlyaddedlibraryfilter.md +++ b/docs/models/operations/getrecentlyaddedlibraryfilter.md @@ -9,4 +9,5 @@ | `FilterType` | *string* | :heavy_check_mark: | N/A | string | | `Key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | | `Title` | *string* | :heavy_check_mark: | N/A | Genre | -| `Type` | *string* | :heavy_check_mark: | N/A | filter | \ No newline at end of file +| `Type` | *string* | :heavy_check_mark: | N/A | filter | +| `Advanced` | **bool* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarytype.md b/docs/models/operations/getrecentlyaddedlibrarytype.md index bb03d5a..4cc5871 100644 --- a/docs/models/operations/getrecentlyaddedlibrarytype.md +++ b/docs/models/operations/getrecentlyaddedlibrarytype.md @@ -6,7 +6,8 @@ | 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 | show | +| `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` | *bool* | :heavy_check_mark: | N/A | false | | `Filter` | [][operations.GetRecentlyAddedLibraryFilter](../../models/operations/getrecentlyaddedlibraryfilter.md) | :heavy_minus_sign: | N/A | | diff --git a/docs/models/operations/getrecentlyaddedmediacontainer.md b/docs/models/operations/getrecentlyaddedmediacontainer.md index 94e59dd..e1af96f 100644 --- a/docs/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/models/operations/getrecentlyaddedmediacontainer.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `Size` | *float64* | :heavy_check_mark: | N/A | 50 | +| `Size` | *int64* | :heavy_check_mark: | N/A | 50 | | `Offset` | **int* | :heavy_minus_sign: | N/A | | | `TotalSize` | **int* | :heavy_minus_sign: | N/A | | | `Identifier` | **string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | diff --git a/docs/models/operations/getrecentlyaddedtype.md b/docs/models/operations/getrecentlyaddedtype.md index ca48446..7c13584 100644 --- a/docs/models/operations/getrecentlyaddedtype.md +++ b/docs/models/operations/getrecentlyaddedtype.md @@ -6,7 +6,8 @@ | 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 | show | +| `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` | *bool* | :heavy_check_mark: | N/A | false | | `Filter` | [][operations.GetRecentlyAddedFilter](../../models/operations/getrecentlyaddedfilter.md) | :heavy_minus_sign: | N/A | | diff --git a/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md b/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md new file mode 100644 index 0000000..6afe2cf --- /dev/null +++ b/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md @@ -0,0 +1,11 @@ +# GetSearchAllLibrariesQueryParamIncludeCollections + +Whether to include collections in the search results. + + +## Values + +| Name | Value | +| ---------------------------------------------------------- | ---------------------------------------------------------- | +| `GetSearchAllLibrariesQueryParamIncludeCollectionsDisable` | 0 | +| `GetSearchAllLibrariesQueryParamIncludeCollectionsEnable` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md b/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md new file mode 100644 index 0000000..86ded0e --- /dev/null +++ b/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md @@ -0,0 +1,11 @@ +# GetSearchAllLibrariesQueryParamIncludeExternalMedia + +Whether to include external media in the search results. + + +## Values + +| Name | Value | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| `GetSearchAllLibrariesQueryParamIncludeExternalMediaDisable` | 0 | +| `GetSearchAllLibrariesQueryParamIncludeExternalMediaEnable` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesrequest.md b/docs/models/operations/getsearchalllibrariesrequest.md index b7f8565..3728667 100644 --- a/docs/models/operations/getsearchalllibrariesrequest.md +++ b/docs/models/operations/getsearchalllibrariesrequest.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `Query` | *string* | :heavy_check_mark: | The search query term. | | -| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `Limit` | **int64* | :heavy_minus_sign: | Limit the number of results returned. | | -| `SearchTypes` | [][operations.SearchTypes](../../models/operations/searchtypes.md) | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
| movies,music,otherVideos,people,tv | -| `IncludeCollections` | [*operations.QueryParamIncludeCollections](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | -| `IncludeExternalMedia` | [*operations.QueryParamIncludeExternalMedia](../../models/operations/queryparamincludeexternalmedia.md) | :heavy_minus_sign: | Whether to include external media in the search results. | 1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Query` | *string* | :heavy_check_mark: | The search query term. | | +| `ClientID` | *string* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | +| `Limit` | **int64* | :heavy_minus_sign: | Limit the number of results returned. | | +| `SearchTypes` | [][operations.SearchTypes](../../models/operations/searchtypes.md) | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
| movies,music,otherVideos,people,tv | +| `IncludeCollections` | [*operations.GetSearchAllLibrariesQueryParamIncludeCollections](../../models/operations/getsearchalllibrariesqueryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | +| `IncludeExternalMedia` | [*operations.GetSearchAllLibrariesQueryParamIncludeExternalMedia](../../models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md) | :heavy_minus_sign: | Whether to include external media in the search results. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariestype.md b/docs/models/operations/getsearchalllibrariestype.md index 75af348..f68b45f 100644 --- a/docs/models/operations/getsearchalllibrariestype.md +++ b/docs/models/operations/getsearchalllibrariestype.md @@ -11,4 +11,6 @@ The type of media content | `GetSearchAllLibrariesTypeMovie` | movie | | `GetSearchAllLibrariesTypeTvShow` | show | | `GetSearchAllLibrariesTypeSeason` | season | -| `GetSearchAllLibrariesTypeEpisode` | episode | \ No newline at end of file +| `GetSearchAllLibrariesTypeEpisode` | episode | +| `GetSearchAllLibrariesTypeArtist` | artist | +| `GetSearchAllLibrariesTypeAlbum` | album | \ No newline at end of file diff --git a/docs/models/operations/guids.md b/docs/models/operations/guids.md index e43e41d..e1162e8 100644 --- a/docs/models/operations/guids.md +++ b/docs/models/operations/guids.md @@ -3,6 +3,6 @@ ## 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_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/models/operations/includeadvanced.md b/docs/models/operations/includeadvanced.md new file mode 100644 index 0000000..fab0e97 --- /dev/null +++ b/docs/models/operations/includeadvanced.md @@ -0,0 +1,9 @@ +# IncludeAdvanced + + +## Values + +| Name | Value | +| ------------------------ | ------------------------ | +| `IncludeAdvancedDisable` | 0 | +| `IncludeAdvancedEnable` | 1 | \ No newline at end of file diff --git a/docs/models/operations/one.md b/docs/models/operations/one.md new file mode 100644 index 0000000..57e2060 --- /dev/null +++ b/docs/models/operations/one.md @@ -0,0 +1,9 @@ +# One + + +## Values + +| Name | Value | +| --------- | --------- | +| `OneZero` | 0 | +| `OneOne` | 1 | \ No newline at end of file diff --git a/docs/models/operations/optimizedforstreaming1.md b/docs/models/operations/optimizedforstreaming1.md new file mode 100644 index 0000000..75fa218 --- /dev/null +++ b/docs/models/operations/optimizedforstreaming1.md @@ -0,0 +1,9 @@ +# OptimizedForStreaming1 + + +## Values + +| Name | Value | +| ---------------------------- | ---------------------------- | +| `OptimizedForStreaming1Zero` | 0 | +| `OptimizedForStreaming1One` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludecollections.md b/docs/models/operations/queryparamincludecollections.md index 8f3fae2..3425743 100644 --- a/docs/models/operations/queryparamincludecollections.md +++ b/docs/models/operations/queryparamincludecollections.md @@ -1,7 +1,5 @@ # QueryParamIncludeCollections -Whether to include collections in the search results. - ## Values diff --git a/docs/models/operations/queryparamincludeexternalmedia.md b/docs/models/operations/queryparamincludeexternalmedia.md index 81a4c32..70b004a 100644 --- a/docs/models/operations/queryparamincludeexternalmedia.md +++ b/docs/models/operations/queryparamincludeexternalmedia.md @@ -1,7 +1,5 @@ # QueryParamIncludeExternalMedia -Whether to include external media in the search results. - ## Values diff --git a/docs/models/operations/queryparamincludeguids.md b/docs/models/operations/queryparamincludeguids.md new file mode 100644 index 0000000..c093cb0 --- /dev/null +++ b/docs/models/operations/queryparamincludeguids.md @@ -0,0 +1,12 @@ +# QueryParamIncludeGuids + +Adds the Guid object to the response + + + +## Values + +| Name | Value | +| ------------------------------- | ------------------------------- | +| `QueryParamIncludeGuidsDisable` | 0 | +| `QueryParamIncludeGuidsEnable` | 1 | \ No newline at end of file diff --git a/docs/models/operations/rating.md b/docs/models/operations/ratings.md similarity index 99% rename from docs/models/operations/rating.md rename to docs/models/operations/ratings.md index 6ececc4..28be5c0 100644 --- a/docs/models/operations/rating.md +++ b/docs/models/operations/ratings.md @@ -1,4 +1,4 @@ -# Rating +# Ratings ## Fields diff --git a/docs/models/operations/tag.md b/docs/models/operations/tag.md index a945827..fd08766 100644 --- a/docs/models/operations/tag.md +++ b/docs/models/operations/tag.md @@ -7,7 +7,6 @@ A key representing a specific tag within the section. | Name | Value | | ------------------- | ------------------- | -| `TagAll` | all | | `TagUnwatched` | unwatched | | `TagNewest` | newest | | `TagRecentlyAdded` | recentlyAdded | @@ -15,12 +14,9 @@ A key representing a specific tag within the section. | `TagOnDeck` | onDeck | | `TagCollection` | collection | | `TagEdition` | edition | -| `TagGenre` | genre | | `TagYear` | year | | `TagDecade` | decade | | `TagDirector` | director | -| `TagActor` | actor | -| `TagCountry` | country | | `TagContentRating` | contentRating | | `TagRating` | rating | | `TagResolution` | resolution | diff --git a/docs/models/sdkerrors/getallmedialibrarybadrequest.md b/docs/models/sdkerrors/getallmedialibrarybadrequest.md new file mode 100644 index 0000000..561777e --- /dev/null +++ b/docs/models/sdkerrors/getallmedialibrarybadrequest.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryBadRequest + +Bad Request - A parameter was not specified, or was specified incorrectly. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `Errors` | [][sdkerrors.GetAllMediaLibraryErrors](../../models/sdkerrors/getallmedialibraryerrors.md) | :heavy_minus_sign: | N/A | +| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/sdkerrors/getallmedialibraryerrors.md b/docs/models/sdkerrors/getallmedialibraryerrors.md new file mode 100644 index 0000000..70d0fd9 --- /dev/null +++ b/docs/models/sdkerrors/getallmedialibraryerrors.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `Code` | **int* | :heavy_minus_sign: | N/A | 1000 | +| `Message` | **string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | +| `Status` | **int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/sdkerrors/getallmedialibrarylibraryerrors.md b/docs/models/sdkerrors/getallmedialibrarylibraryerrors.md new file mode 100644 index 0000000..9e40754 --- /dev/null +++ b/docs/models/sdkerrors/getallmedialibrarylibraryerrors.md @@ -0,0 +1,10 @@ +# GetAllMediaLibraryLibraryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `Code` | **int* | :heavy_minus_sign: | N/A | 1001 | +| `Message` | **string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `Status` | **int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/sdkerrors/getallmedialibraryunauthorized.md b/docs/models/sdkerrors/getallmedialibraryunauthorized.md new file mode 100644 index 0000000..c41c5cb --- /dev/null +++ b/docs/models/sdkerrors/getallmedialibraryunauthorized.md @@ -0,0 +1,11 @@ +# GetAllMediaLibraryUnauthorized + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `Errors` | [][sdkerrors.GetAllMediaLibraryLibraryErrors](../../models/sdkerrors/getallmedialibrarylibraryerrors.md) | :heavy_minus_sign: | N/A | +| `RawResponse` | [*http.Response](https://pkg.go.dev/net/http#Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 9f00423..564f52f 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -14,6 +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 * [GetRefreshLibraryMetadata](#getrefreshlibrarymetadata) - Refresh Metadata Of The Library * [GetSearchLibrary](#getsearchlibrary) - Search Library * [GetGenresLibrary](#getgenreslibrary) - Get Genres of library media @@ -429,6 +430,63 @@ func main() { | sdkerrors.GetLibraryItemsUnauthorized | 401 | application/json | | sdkerrors.SDKError | 4XX, 5XX | \*/\* | +## GetAllMediaLibrary + +Retrieves a list of all general media data for this library. + + +### Example Usage + +```go +package main + +import( + "context" + "github.com/LukeHagar/plexgo" + "github.com/LukeHagar/plexgo/models/operations" + "log" +) + +func main() { + ctx := context.Background() + + s := plexgo.New( + plexgo.WithSecurity(""), + ) + + res, err := s.Library.GetAllMediaLibrary(ctx, operations.GetAllMediaLibraryRequest{ + SectionKey: 9518, + Type: operations.GetAllMediaLibraryQueryParamTypeTvShow, + }) + if err != nil { + log.Fatal(err) + } + if res.Object != nil { + // handle response + } +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | +| `request` | [operations.GetAllMediaLibraryRequest](../../models/operations/getallmedialibraryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | + +### Response + +**[*operations.GetAllMediaLibraryResponse](../../models/operations/getallmedialibraryresponse.md), error** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| sdkerrors.GetAllMediaLibraryBadRequest | 400 | application/json | +| sdkerrors.GetAllMediaLibraryUnauthorized | 401 | application/json | +| sdkerrors.SDKError | 4XX, 5XX | \*/\* | + ## GetRefreshLibraryMetadata This endpoint Refreshes all the Metadata of the library. diff --git a/library.go b/library.go index a3c9157..82a85a7 100644 --- a/library.go +++ b/library.go @@ -1543,6 +1543,256 @@ func (s *Library) GetLibraryItems(ctx context.Context, request operations.GetLib } +// GetAllMediaLibrary - Get all media of library +// Retrieves a list of all general media data for this library. +func (s *Library) GetAllMediaLibrary(ctx context.Context, request operations.GetAllMediaLibraryRequest, opts ...operations.Option) (*operations.GetAllMediaLibraryResponse, error) { + hookCtx := hooks.HookContext{ + Context: ctx, + OperationID: "get-all-media-library", + OAuth2Scopes: []string{}, + SecuritySource: s.sdkConfiguration.Security, + } + + o := operations.Options{} + supportedOptions := []string{ + operations.SupportedOptionRetries, + operations.SupportedOptionTimeout, + } + + for _, opt := range opts { + if err := opt(&o, supportedOptions...); err != nil { + return nil, fmt.Errorf("error applying option: %w", err) + } + } + + var baseURL string + if o.ServerURL == nil { + baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails()) + } else { + baseURL = *o.ServerURL + } + opURL, err := utils.GenerateURL(ctx, baseURL, "/library/sections/{sectionKey}/all", request, nil) + if err != nil { + return nil, fmt.Errorf("error generating URL: %w", err) + } + + timeout := o.Timeout + if timeout == nil { + timeout = s.sdkConfiguration.Timeout + } + + if timeout != nil { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, *timeout) + defer cancel() + } + + req, err := http.NewRequestWithContext(ctx, "GET", opURL, nil) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "application/json") + req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent) + + if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil { + return nil, fmt.Errorf("error populating query params: %w", err) + } + + if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil { + return nil, err + } + + for k, v := range o.SetHeaders { + req.Header.Set(k, v) + } + + globalRetryConfig := s.sdkConfiguration.RetryConfig + retryConfig := o.Retries + if retryConfig == nil { + if globalRetryConfig != nil { + retryConfig = globalRetryConfig + } + } + + var httpRes *http.Response + if retryConfig != nil { + httpRes, err = utils.Retry(ctx, utils.Retries{ + Config: retryConfig, + StatusCodes: []string{ + "429", + "500", + "502", + "503", + "504", + }, + }, func() (*http.Response, error) { + if req.Body != nil { + copyBody, err := req.GetBody() + if err != nil { + return nil, err + } + req.Body = copyBody + } + + req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req) + if err != nil { + if retry.IsPermanentError(err) || retry.IsTemporaryError(err) { + return nil, err + } + + return nil, retry.Permanent(err) + } + + httpRes, err := s.sdkConfiguration.Client.Do(req) + if err != nil || httpRes == nil { + if err != nil { + err = fmt.Errorf("error sending request: %w", err) + } else { + err = fmt.Errorf("error sending request: no response") + } + + _, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err) + } + return httpRes, err + }) + + if err != nil { + return nil, err + } else { + httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes) + if err != nil { + return nil, err + } + } + } else { + req, err = s.sdkConfiguration.Hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req) + if err != nil { + return nil, err + } + + httpRes, err = s.sdkConfiguration.Client.Do(req) + if err != nil || httpRes == nil { + if err != nil { + err = fmt.Errorf("error sending request: %w", err) + } else { + err = fmt.Errorf("error sending request: no response") + } + + _, err = s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err) + return nil, err + } else if utils.MatchStatusCodes([]string{"400", "401", "404", "4XX", "5XX"}, httpRes.StatusCode) { + _httpRes, err := s.sdkConfiguration.Hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil) + if err != nil { + return nil, err + } else if _httpRes != nil { + httpRes = _httpRes + } + } else { + httpRes, err = s.sdkConfiguration.Hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes) + if err != nil { + return nil, err + } + } + } + + res := &operations.GetAllMediaLibraryResponse{ + StatusCode: httpRes.StatusCode, + ContentType: httpRes.Header.Get("Content-Type"), + RawResponse: httpRes, + } + + switch { + case httpRes.StatusCode == 200: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out operations.GetAllMediaLibraryResponseBody + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, err + } + + res.Object = &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 400: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out sdkerrors.GetAllMediaLibraryBadRequest + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, err + } + + out.RawResponse = httpRes + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 401: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out sdkerrors.GetAllMediaLibraryUnauthorized + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, err + } + + out.RawResponse = httpRes + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, sdkerrors.NewSDKError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 404: + fallthrough + case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes) + case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, sdkerrors.NewSDKError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes) + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, sdkerrors.NewSDKError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes) + } + + return res, nil + +} + // GetRefreshLibraryMetadata - Refresh Metadata Of The Library // This endpoint Refreshes all the Metadata of the library. func (s *Library) GetRefreshLibraryMetadata(ctx context.Context, sectionKey int, force *operations.Force, opts ...operations.Option) (*operations.GetRefreshLibraryMetadataResponse, error) { diff --git a/models/operations/getactorslibrary.go b/models/operations/getactorslibrary.go index 445cac5..5e34e79 100644 --- a/models/operations/getactorslibrary.go +++ b/models/operations/getactorslibrary.go @@ -124,7 +124,8 @@ func (o *GetActorsLibraryDirectory) GetTitle() string { } type GetActorsLibraryMediaContainer struct { - Size float64 `json:"size"` + // Number of media items returned in this response. + Size int `json:"size"` // Indicates whether syncing is allowed. AllowSync bool `json:"allowSync"` // URL for the background artwork of the media container. @@ -151,9 +152,9 @@ type GetActorsLibraryMediaContainer struct { Directory []GetActorsLibraryDirectory `json:"Directory,omitempty"` } -func (o *GetActorsLibraryMediaContainer) GetSize() float64 { +func (o *GetActorsLibraryMediaContainer) GetSize() int { if o == nil { - return 0.0 + return 0 } return o.Size } diff --git a/models/operations/getallmedialibrary.go b/models/operations/getallmedialibrary.go new file mode 100644 index 0000000..26e738c --- /dev/null +++ b/models/operations/getallmedialibrary.go @@ -0,0 +1,2626 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "encoding/json" + "errors" + "fmt" + "github.com/LukeHagar/plexgo/internal/utils" + "github.com/LukeHagar/plexgo/types" + "net/http" +) + +// GetAllMediaLibraryQueryParamType - 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 +type GetAllMediaLibraryQueryParamType int64 + +const ( + GetAllMediaLibraryQueryParamTypeMovie GetAllMediaLibraryQueryParamType = 1 + GetAllMediaLibraryQueryParamTypeTvShow GetAllMediaLibraryQueryParamType = 2 + GetAllMediaLibraryQueryParamTypeSeason GetAllMediaLibraryQueryParamType = 3 + GetAllMediaLibraryQueryParamTypeEpisode GetAllMediaLibraryQueryParamType = 4 + GetAllMediaLibraryQueryParamTypeAudio GetAllMediaLibraryQueryParamType = 8 + GetAllMediaLibraryQueryParamTypeAlbum GetAllMediaLibraryQueryParamType = 9 + GetAllMediaLibraryQueryParamTypeTrack GetAllMediaLibraryQueryParamType = 10 +) + +func (e GetAllMediaLibraryQueryParamType) ToPointer() *GetAllMediaLibraryQueryParamType { + return &e +} +func (e *GetAllMediaLibraryQueryParamType) UnmarshalJSON(data []byte) error { + var v int64 + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 1: + fallthrough + case 2: + fallthrough + case 3: + fallthrough + case 4: + fallthrough + case 8: + fallthrough + case 9: + fallthrough + case 10: + *e = GetAllMediaLibraryQueryParamType(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryQueryParamType: %v", v) + } +} + +// GetAllMediaLibraryQueryParamIncludeMeta - Adds the Meta object to the response +type GetAllMediaLibraryQueryParamIncludeMeta int + +const ( + GetAllMediaLibraryQueryParamIncludeMetaDisable GetAllMediaLibraryQueryParamIncludeMeta = 0 + GetAllMediaLibraryQueryParamIncludeMetaEnable GetAllMediaLibraryQueryParamIncludeMeta = 1 +) + +func (e GetAllMediaLibraryQueryParamIncludeMeta) ToPointer() *GetAllMediaLibraryQueryParamIncludeMeta { + return &e +} +func (e *GetAllMediaLibraryQueryParamIncludeMeta) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = GetAllMediaLibraryQueryParamIncludeMeta(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryQueryParamIncludeMeta: %v", v) + } +} + +// QueryParamIncludeGuids - Adds the Guid object to the response +type QueryParamIncludeGuids int + +const ( + QueryParamIncludeGuidsDisable QueryParamIncludeGuids = 0 + QueryParamIncludeGuidsEnable QueryParamIncludeGuids = 1 +) + +func (e QueryParamIncludeGuids) ToPointer() *QueryParamIncludeGuids { + return &e +} +func (e *QueryParamIncludeGuids) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = QueryParamIncludeGuids(v) + return nil + default: + return fmt.Errorf("invalid value for QueryParamIncludeGuids: %v", v) + } +} + +type IncludeAdvanced int + +const ( + IncludeAdvancedDisable IncludeAdvanced = 0 + IncludeAdvancedEnable IncludeAdvanced = 1 +) + +func (e IncludeAdvanced) ToPointer() *IncludeAdvanced { + return &e +} +func (e *IncludeAdvanced) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = IncludeAdvanced(v) + return nil + default: + return fmt.Errorf("invalid value for IncludeAdvanced: %v", v) + } +} + +type QueryParamIncludeCollections int + +const ( + QueryParamIncludeCollectionsDisable QueryParamIncludeCollections = 0 + QueryParamIncludeCollectionsEnable QueryParamIncludeCollections = 1 +) + +func (e QueryParamIncludeCollections) ToPointer() *QueryParamIncludeCollections { + return &e +} +func (e *QueryParamIncludeCollections) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = QueryParamIncludeCollections(v) + return nil + default: + return fmt.Errorf("invalid value for QueryParamIncludeCollections: %v", v) + } +} + +type QueryParamIncludeExternalMedia int + +const ( + QueryParamIncludeExternalMediaDisable QueryParamIncludeExternalMedia = 0 + QueryParamIncludeExternalMediaEnable QueryParamIncludeExternalMedia = 1 +) + +func (e QueryParamIncludeExternalMedia) ToPointer() *QueryParamIncludeExternalMedia { + return &e +} +func (e *QueryParamIncludeExternalMedia) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = QueryParamIncludeExternalMedia(v) + return nil + default: + return fmt.Errorf("invalid value for QueryParamIncludeExternalMedia: %v", v) + } +} + +type GetAllMediaLibraryRequest struct { + // The unique key of the Plex library. + // Note: This is unique in the context of the Plex server. + // + SectionKey int `pathParam:"style=simple,explode=false,name=sectionKey"` + // 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 + // + Type GetAllMediaLibraryQueryParamType `queryParam:"style=form,explode=true,name=type"` + // Adds the Meta object to the response + // + IncludeMeta *GetAllMediaLibraryQueryParamIncludeMeta `default:"0" queryParam:"style=form,explode=true,name=includeMeta"` + // Adds the Guid object to the response + // + IncludeGuids *QueryParamIncludeGuids `default:"0" queryParam:"style=form,explode=true,name=includeGuids"` + IncludeAdvanced *IncludeAdvanced `default:"0" queryParam:"style=form,explode=true,name=includeAdvanced"` + IncludeCollections *QueryParamIncludeCollections `default:"0" queryParam:"style=form,explode=true,name=includeCollections"` + IncludeExternalMedia *QueryParamIncludeExternalMedia `default:"0" queryParam:"style=form,explode=true,name=includeExternalMedia"` + // The index of the first item to return. If not specified, the first item will be returned. + // If the number of items exceeds the limit, the response will be paginated. + // By default this is 0 + // + XPlexContainerStart *int `default:"0" queryParam:"style=form,explode=true,name=X-Plex-Container-Start"` + // The number of items to return. If not specified, all items will be returned. + // If the number of items exceeds the limit, the response will be paginated. + // By default this is 50 + // + XPlexContainerSize *int `default:"50" queryParam:"style=form,explode=true,name=X-Plex-Container-Size"` +} + +func (g GetAllMediaLibraryRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(g, "", false) +} + +func (g *GetAllMediaLibraryRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil { + return err + } + return nil +} + +func (o *GetAllMediaLibraryRequest) GetSectionKey() int { + if o == nil { + return 0 + } + return o.SectionKey +} + +func (o *GetAllMediaLibraryRequest) GetType() GetAllMediaLibraryQueryParamType { + if o == nil { + return GetAllMediaLibraryQueryParamType(0) + } + return o.Type +} + +func (o *GetAllMediaLibraryRequest) GetIncludeMeta() *GetAllMediaLibraryQueryParamIncludeMeta { + if o == nil { + return nil + } + return o.IncludeMeta +} + +func (o *GetAllMediaLibraryRequest) GetIncludeGuids() *QueryParamIncludeGuids { + if o == nil { + return nil + } + return o.IncludeGuids +} + +func (o *GetAllMediaLibraryRequest) GetIncludeAdvanced() *IncludeAdvanced { + if o == nil { + return nil + } + return o.IncludeAdvanced +} + +func (o *GetAllMediaLibraryRequest) GetIncludeCollections() *QueryParamIncludeCollections { + if o == nil { + return nil + } + return o.IncludeCollections +} + +func (o *GetAllMediaLibraryRequest) GetIncludeExternalMedia() *QueryParamIncludeExternalMedia { + if o == nil { + return nil + } + return o.IncludeExternalMedia +} + +func (o *GetAllMediaLibraryRequest) GetXPlexContainerStart() *int { + if o == nil { + return nil + } + return o.XPlexContainerStart +} + +func (o *GetAllMediaLibraryRequest) GetXPlexContainerSize() *int { + if o == nil { + return nil + } + return o.XPlexContainerSize +} + +type GetAllMediaLibraryFilter struct { + Filter string `json:"filter"` + FilterType string `json:"filterType"` + Key string `json:"key"` + Title string `json:"title"` + Type string `json:"type"` + Advanced *bool `json:"advanced,omitempty"` +} + +func (o *GetAllMediaLibraryFilter) GetFilter() string { + if o == nil { + return "" + } + return o.Filter +} + +func (o *GetAllMediaLibraryFilter) GetFilterType() string { + if o == nil { + return "" + } + return o.FilterType +} + +func (o *GetAllMediaLibraryFilter) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibraryFilter) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *GetAllMediaLibraryFilter) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *GetAllMediaLibraryFilter) GetAdvanced() *bool { + if o == nil { + return nil + } + return o.Advanced +} + +// GetAllMediaLibraryActiveDirection - The direction of the sort. Can be either `asc` or `desc`. +type GetAllMediaLibraryActiveDirection string + +const ( + GetAllMediaLibraryActiveDirectionAscending GetAllMediaLibraryActiveDirection = "asc" + GetAllMediaLibraryActiveDirectionDescending GetAllMediaLibraryActiveDirection = "desc" +) + +func (e GetAllMediaLibraryActiveDirection) ToPointer() *GetAllMediaLibraryActiveDirection { + return &e +} +func (e *GetAllMediaLibraryActiveDirection) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "asc": + fallthrough + case "desc": + *e = GetAllMediaLibraryActiveDirection(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryActiveDirection: %v", v) + } +} + +// GetAllMediaLibraryDefaultDirection - The direction of the sort. Can be either `asc` or `desc`. +type GetAllMediaLibraryDefaultDirection string + +const ( + GetAllMediaLibraryDefaultDirectionAscending GetAllMediaLibraryDefaultDirection = "asc" + GetAllMediaLibraryDefaultDirectionDescending GetAllMediaLibraryDefaultDirection = "desc" +) + +func (e GetAllMediaLibraryDefaultDirection) ToPointer() *GetAllMediaLibraryDefaultDirection { + return &e +} +func (e *GetAllMediaLibraryDefaultDirection) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "asc": + fallthrough + case "desc": + *e = GetAllMediaLibraryDefaultDirection(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryDefaultDirection: %v", v) + } +} + +type GetAllMediaLibrarySort struct { + Default *string `json:"default,omitempty"` + Active *bool `json:"active,omitempty"` + // The direction of the sort. Can be either `asc` or `desc`. + // + ActiveDirection *GetAllMediaLibraryActiveDirection `default:"asc" json:"activeDirection"` + // The direction of the sort. Can be either `asc` or `desc`. + // + DefaultDirection *GetAllMediaLibraryDefaultDirection `default:"asc" json:"defaultDirection"` + DescKey *string `json:"descKey,omitempty"` + FirstCharacterKey *string `json:"firstCharacterKey,omitempty"` + Key string `json:"key"` + Title string `json:"title"` +} + +func (g GetAllMediaLibrarySort) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(g, "", false) +} + +func (g *GetAllMediaLibrarySort) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil { + return err + } + return nil +} + +func (o *GetAllMediaLibrarySort) GetDefault() *string { + if o == nil { + return nil + } + return o.Default +} + +func (o *GetAllMediaLibrarySort) GetActive() *bool { + if o == nil { + return nil + } + return o.Active +} + +func (o *GetAllMediaLibrarySort) GetActiveDirection() *GetAllMediaLibraryActiveDirection { + if o == nil { + return nil + } + return o.ActiveDirection +} + +func (o *GetAllMediaLibrarySort) GetDefaultDirection() *GetAllMediaLibraryDefaultDirection { + if o == nil { + return nil + } + return o.DefaultDirection +} + +func (o *GetAllMediaLibrarySort) GetDescKey() *string { + if o == nil { + return nil + } + return o.DescKey +} + +func (o *GetAllMediaLibrarySort) GetFirstCharacterKey() *string { + if o == nil { + return nil + } + return o.FirstCharacterKey +} + +func (o *GetAllMediaLibrarySort) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibrarySort) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +type GetAllMediaLibraryField struct { + Key string `json:"key"` + Title string `json:"title"` + Type string `json:"type"` + SubType *string `json:"subType,omitempty"` +} + +func (o *GetAllMediaLibraryField) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibraryField) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *GetAllMediaLibraryField) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *GetAllMediaLibraryField) GetSubType() *string { + if o == nil { + return nil + } + return o.SubType +} + +type GetAllMediaLibraryType struct { + Key string `json:"key"` + Type string `json:"type"` + Subtype *string `json:"subtype,omitempty"` + Title string `json:"title"` + Active bool `json:"active"` + Filter []GetAllMediaLibraryFilter `json:"Filter,omitempty"` + Sort []GetAllMediaLibrarySort `json:"Sort,omitempty"` + Field []GetAllMediaLibraryField `json:"Field,omitempty"` +} + +func (o *GetAllMediaLibraryType) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibraryType) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *GetAllMediaLibraryType) GetSubtype() *string { + if o == nil { + return nil + } + return o.Subtype +} + +func (o *GetAllMediaLibraryType) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *GetAllMediaLibraryType) GetActive() bool { + if o == nil { + return false + } + return o.Active +} + +func (o *GetAllMediaLibraryType) GetFilter() []GetAllMediaLibraryFilter { + if o == nil { + return nil + } + return o.Filter +} + +func (o *GetAllMediaLibraryType) GetSort() []GetAllMediaLibrarySort { + if o == nil { + return nil + } + return o.Sort +} + +func (o *GetAllMediaLibraryType) GetField() []GetAllMediaLibraryField { + if o == nil { + return nil + } + return o.Field +} + +type GetAllMediaLibraryOperator struct { + Key string `json:"key"` + Title string `json:"title"` +} + +func (o *GetAllMediaLibraryOperator) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibraryOperator) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +type GetAllMediaLibraryFieldType struct { + Type string `json:"type"` + Operator []GetAllMediaLibraryOperator `json:"Operator"` +} + +func (o *GetAllMediaLibraryFieldType) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *GetAllMediaLibraryFieldType) GetOperator() []GetAllMediaLibraryOperator { + if o == nil { + return []GetAllMediaLibraryOperator{} + } + return o.Operator +} + +// GetAllMediaLibraryMeta - The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. +type GetAllMediaLibraryMeta struct { + Type []GetAllMediaLibraryType `json:"Type,omitempty"` + FieldType []GetAllMediaLibraryFieldType `json:"FieldType,omitempty"` +} + +func (o *GetAllMediaLibraryMeta) GetType() []GetAllMediaLibraryType { + if o == nil { + return nil + } + return o.Type +} + +func (o *GetAllMediaLibraryMeta) GetFieldType() []GetAllMediaLibraryFieldType { + if o == nil { + return nil + } + return o.FieldType +} + +// GetAllMediaLibraryLibraryType - The type of media content +type GetAllMediaLibraryLibraryType string + +const ( + GetAllMediaLibraryLibraryTypeMovie GetAllMediaLibraryLibraryType = "movie" + GetAllMediaLibraryLibraryTypeTvShow GetAllMediaLibraryLibraryType = "show" + GetAllMediaLibraryLibraryTypeSeason GetAllMediaLibraryLibraryType = "season" + GetAllMediaLibraryLibraryTypeEpisode GetAllMediaLibraryLibraryType = "episode" + GetAllMediaLibraryLibraryTypeArtist GetAllMediaLibraryLibraryType = "artist" + GetAllMediaLibraryLibraryTypeAlbum GetAllMediaLibraryLibraryType = "album" +) + +func (e GetAllMediaLibraryLibraryType) ToPointer() *GetAllMediaLibraryLibraryType { + return &e +} +func (e *GetAllMediaLibraryLibraryType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "movie": + fallthrough + case "show": + fallthrough + case "season": + fallthrough + case "episode": + fallthrough + case "artist": + fallthrough + case "album": + *e = GetAllMediaLibraryLibraryType(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryLibraryType: %v", v) + } +} + +type GetAllMediaLibraryLibraryResponseType string + +const ( + GetAllMediaLibraryLibraryResponseTypeCoverPoster GetAllMediaLibraryLibraryResponseType = "coverPoster" + GetAllMediaLibraryLibraryResponseTypeBackground GetAllMediaLibraryLibraryResponseType = "background" + GetAllMediaLibraryLibraryResponseTypeSnapshot GetAllMediaLibraryLibraryResponseType = "snapshot" + GetAllMediaLibraryLibraryResponseTypeClearLogo GetAllMediaLibraryLibraryResponseType = "clearLogo" +) + +func (e GetAllMediaLibraryLibraryResponseType) ToPointer() *GetAllMediaLibraryLibraryResponseType { + return &e +} +func (e *GetAllMediaLibraryLibraryResponseType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "coverPoster": + fallthrough + case "background": + fallthrough + case "snapshot": + fallthrough + case "clearLogo": + *e = GetAllMediaLibraryLibraryResponseType(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryLibraryResponseType: %v", v) + } +} + +type GetAllMediaLibraryImage struct { + Alt string `json:"alt"` + Type GetAllMediaLibraryLibraryResponseType `json:"type"` + URL string `json:"url"` +} + +func (o *GetAllMediaLibraryImage) GetAlt() string { + if o == nil { + return "" + } + return o.Alt +} + +func (o *GetAllMediaLibraryImage) GetType() GetAllMediaLibraryLibraryResponseType { + if o == nil { + return GetAllMediaLibraryLibraryResponseType("") + } + return o.Type +} + +func (o *GetAllMediaLibraryImage) GetURL() string { + if o == nil { + return "" + } + return o.URL +} + +type GetAllMediaLibraryUltraBlurColors struct { + TopLeft string `json:"topLeft"` + TopRight string `json:"topRight"` + BottomRight string `json:"bottomRight"` + BottomLeft string `json:"bottomLeft"` +} + +func (o *GetAllMediaLibraryUltraBlurColors) GetTopLeft() string { + if o == nil { + return "" + } + return o.TopLeft +} + +func (o *GetAllMediaLibraryUltraBlurColors) GetTopRight() string { + if o == nil { + return "" + } + return o.TopRight +} + +func (o *GetAllMediaLibraryUltraBlurColors) GetBottomRight() string { + if o == nil { + return "" + } + return o.BottomRight +} + +func (o *GetAllMediaLibraryUltraBlurColors) GetBottomLeft() string { + if o == nil { + return "" + } + return o.BottomLeft +} + +type One int + +const ( + OneZero One = 0 + OneOne One = 1 +) + +func (e One) ToPointer() *One { + return &e +} +func (e *One) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = One(v) + return nil + default: + return fmt.Errorf("invalid value for One: %v", v) + } +} + +type GetAllMediaLibraryOptimizedForStreamingType string + +const ( + GetAllMediaLibraryOptimizedForStreamingTypeOne GetAllMediaLibraryOptimizedForStreamingType = "1" + GetAllMediaLibraryOptimizedForStreamingTypeBoolean GetAllMediaLibraryOptimizedForStreamingType = "boolean" +) + +// GetAllMediaLibraryOptimizedForStreaming - Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true +type GetAllMediaLibraryOptimizedForStreaming struct { + One *One `queryParam:"inline"` + Boolean *bool `queryParam:"inline"` + + Type GetAllMediaLibraryOptimizedForStreamingType +} + +func CreateGetAllMediaLibraryOptimizedForStreamingOne(one One) GetAllMediaLibraryOptimizedForStreaming { + typ := GetAllMediaLibraryOptimizedForStreamingTypeOne + + return GetAllMediaLibraryOptimizedForStreaming{ + One: &one, + Type: typ, + } +} + +func CreateGetAllMediaLibraryOptimizedForStreamingBoolean(boolean bool) GetAllMediaLibraryOptimizedForStreaming { + typ := GetAllMediaLibraryOptimizedForStreamingTypeBoolean + + return GetAllMediaLibraryOptimizedForStreaming{ + Boolean: &boolean, + Type: typ, + } +} + +func (u *GetAllMediaLibraryOptimizedForStreaming) UnmarshalJSON(data []byte) error { + + var one One = One(0) + if err := utils.UnmarshalJSON(data, &one, "", true, true); err == nil { + u.One = &one + u.Type = GetAllMediaLibraryOptimizedForStreamingTypeOne + return nil + } + + var boolean bool = false + if err := utils.UnmarshalJSON(data, &boolean, "", true, true); err == nil { + u.Boolean = &boolean + u.Type = GetAllMediaLibraryOptimizedForStreamingTypeBoolean + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for GetAllMediaLibraryOptimizedForStreaming", string(data)) +} + +func (u GetAllMediaLibraryOptimizedForStreaming) MarshalJSON() ([]byte, error) { + if u.One != nil { + return utils.MarshalJSON(u.One, "", true) + } + + if u.Boolean != nil { + return utils.MarshalJSON(u.Boolean, "", true) + } + + return nil, errors.New("could not marshal union type GetAllMediaLibraryOptimizedForStreaming: all fields are null") +} + +type GetAllMediaLibraryOptimizedForStreaming1 int + +const ( + GetAllMediaLibraryOptimizedForStreaming1Zero GetAllMediaLibraryOptimizedForStreaming1 = 0 + GetAllMediaLibraryOptimizedForStreaming1One GetAllMediaLibraryOptimizedForStreaming1 = 1 +) + +func (e GetAllMediaLibraryOptimizedForStreaming1) ToPointer() *GetAllMediaLibraryOptimizedForStreaming1 { + return &e +} +func (e *GetAllMediaLibraryOptimizedForStreaming1) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = GetAllMediaLibraryOptimizedForStreaming1(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryOptimizedForStreaming1: %v", v) + } +} + +type GetAllMediaLibraryLibraryOptimizedForStreamingType string + +const ( + GetAllMediaLibraryLibraryOptimizedForStreamingTypeGetAllMediaLibraryOptimizedForStreaming1 GetAllMediaLibraryLibraryOptimizedForStreamingType = "get-all-media-library_optimizedForStreaming_1" + GetAllMediaLibraryLibraryOptimizedForStreamingTypeBoolean GetAllMediaLibraryLibraryOptimizedForStreamingType = "boolean" +) + +// GetAllMediaLibraryLibraryOptimizedForStreaming - Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true +type GetAllMediaLibraryLibraryOptimizedForStreaming struct { + GetAllMediaLibraryOptimizedForStreaming1 *GetAllMediaLibraryOptimizedForStreaming1 `queryParam:"inline"` + Boolean *bool `queryParam:"inline"` + + Type GetAllMediaLibraryLibraryOptimizedForStreamingType +} + +func CreateGetAllMediaLibraryLibraryOptimizedForStreamingGetAllMediaLibraryOptimizedForStreaming1(getAllMediaLibraryOptimizedForStreaming1 GetAllMediaLibraryOptimizedForStreaming1) GetAllMediaLibraryLibraryOptimizedForStreaming { + typ := GetAllMediaLibraryLibraryOptimizedForStreamingTypeGetAllMediaLibraryOptimizedForStreaming1 + + return GetAllMediaLibraryLibraryOptimizedForStreaming{ + GetAllMediaLibraryOptimizedForStreaming1: &getAllMediaLibraryOptimizedForStreaming1, + Type: typ, + } +} + +func CreateGetAllMediaLibraryLibraryOptimizedForStreamingBoolean(boolean bool) GetAllMediaLibraryLibraryOptimizedForStreaming { + typ := GetAllMediaLibraryLibraryOptimizedForStreamingTypeBoolean + + return GetAllMediaLibraryLibraryOptimizedForStreaming{ + Boolean: &boolean, + Type: typ, + } +} + +func (u *GetAllMediaLibraryLibraryOptimizedForStreaming) UnmarshalJSON(data []byte) error { + + var getAllMediaLibraryOptimizedForStreaming1 GetAllMediaLibraryOptimizedForStreaming1 = GetAllMediaLibraryOptimizedForStreaming1(0) + if err := utils.UnmarshalJSON(data, &getAllMediaLibraryOptimizedForStreaming1, "", true, true); err == nil { + u.GetAllMediaLibraryOptimizedForStreaming1 = &getAllMediaLibraryOptimizedForStreaming1 + u.Type = GetAllMediaLibraryLibraryOptimizedForStreamingTypeGetAllMediaLibraryOptimizedForStreaming1 + return nil + } + + var boolean bool = false + if err := utils.UnmarshalJSON(data, &boolean, "", true, true); err == nil { + u.Boolean = &boolean + u.Type = GetAllMediaLibraryLibraryOptimizedForStreamingTypeBoolean + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for GetAllMediaLibraryLibraryOptimizedForStreaming", string(data)) +} + +func (u GetAllMediaLibraryLibraryOptimizedForStreaming) MarshalJSON() ([]byte, error) { + if u.GetAllMediaLibraryOptimizedForStreaming1 != nil { + return utils.MarshalJSON(u.GetAllMediaLibraryOptimizedForStreaming1, "", true) + } + + if u.Boolean != nil { + return utils.MarshalJSON(u.Boolean, "", true) + } + + return nil, errors.New("could not marshal union type GetAllMediaLibraryLibraryOptimizedForStreaming: all fields are null") +} + +// GetAllMediaLibraryHasThumbnail - Indicates if the part has a thumbnail. +type GetAllMediaLibraryHasThumbnail string + +const ( + GetAllMediaLibraryHasThumbnailFalse GetAllMediaLibraryHasThumbnail = "0" + GetAllMediaLibraryHasThumbnailTrue GetAllMediaLibraryHasThumbnail = "1" +) + +func (e GetAllMediaLibraryHasThumbnail) ToPointer() *GetAllMediaLibraryHasThumbnail { + return &e +} +func (e *GetAllMediaLibraryHasThumbnail) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "0": + fallthrough + case "1": + *e = GetAllMediaLibraryHasThumbnail(v) + return nil + default: + return fmt.Errorf("invalid value for GetAllMediaLibraryHasThumbnail: %v", v) + } +} + +type GetAllMediaLibraryStream struct { + // Unique stream identifier. + ID int64 `json:"id"` + // Stream type (1=video, 2=audio, 3=subtitle). + StreamType int `json:"streamType"` + // Indicates if this stream is default. + Default *bool `json:"default,omitempty"` + // Codec used by the stream. + Codec string `json:"codec"` + // Index of the stream. + Index int `json:"index"` + // Bitrate of the stream. + Bitrate *int `json:"bitrate,omitempty"` + // Language of the stream. + Language string `json:"language"` + // Language tag (e.g., en). + LanguageTag string `json:"languageTag"` + // ISO language code. + LanguageCode string `json:"languageCode"` + // Indicates whether header compression is enabled. + HeaderCompression *bool `json:"headerCompression,omitempty"` + // Dolby Vision BL compatibility ID. + DOVIBLCompatID *int `json:"DOVIBLCompatID,omitempty"` + // Indicates if Dolby Vision BL is present. + DOVIBLPresent *bool `json:"DOVIBLPresent,omitempty"` + // Indicates if Dolby Vision EL is present. + DOVIELPresent *bool `json:"DOVIELPresent,omitempty"` + // Dolby Vision level. + DOVILevel *int `json:"DOVILevel,omitempty"` + // Indicates if Dolby Vision is present. + DOVIPresent *bool `json:"DOVIPresent,omitempty"` + // Dolby Vision profile. + DOVIProfile *int `json:"DOVIProfile,omitempty"` + // Indicates if Dolby Vision RPU is present. + DOVIRPUPresent *bool `json:"DOVIRPUPresent,omitempty"` + // Dolby Vision version. + DOVIVersion *string `json:"DOVIVersion,omitempty"` + // Bit depth of the video stream. + BitDepth *int `json:"bitDepth,omitempty"` + // Chroma sample location. + ChromaLocation *string `json:"chromaLocation,omitempty"` + // Chroma subsampling format. + ChromaSubsampling *string `json:"chromaSubsampling,omitempty"` + // Coded video height. + CodedHeight *int `json:"codedHeight,omitempty"` + // Coded video width. + CodedWidth *int `json:"codedWidth,omitempty"` + // Color primaries used. + ColorPrimaries *string `json:"colorPrimaries,omitempty"` + // Color range (e.g., tv). + ColorRange *string `json:"colorRange,omitempty"` + // Color space. + ColorSpace *string `json:"colorSpace,omitempty"` + // Color transfer characteristics. + ColorTrc *string `json:"colorTrc,omitempty"` + // Frame rate of the stream. + FrameRate *float32 `json:"frameRate,omitempty"` + // Height of the video stream. + Height *int `json:"height,omitempty"` + // Video level. + Level *int `json:"level,omitempty"` + // Indicates if this is the original stream. + Original *bool `json:"original,omitempty"` + HasScalingMatrix *bool `json:"hasScalingMatrix,omitempty"` + // Video profile. + Profile *string `json:"profile,omitempty"` + ScanType *string `json:"scanType,omitempty"` + // Number of reference frames. + RefFrames *int `json:"refFrames,omitempty"` + // Width of the video stream. + Width *int `json:"width,omitempty"` + // Display title for the stream. + DisplayTitle string `json:"displayTitle"` + // Extended display title for the stream. + ExtendedDisplayTitle string `json:"extendedDisplayTitle"` + // Indicates if this stream is selected (applicable for audio streams). + Selected *bool `json:"selected,omitempty"` + Forced *bool `json:"forced,omitempty"` + // Number of audio channels (for audio streams). + Channels *int `json:"channels,omitempty"` + // Audio channel layout. + AudioChannelLayout *string `json:"audioChannelLayout,omitempty"` + // Sampling rate for the audio stream. + SamplingRate *int `json:"samplingRate,omitempty"` + // Indicates if the stream can auto-sync. + CanAutoSync *bool `json:"canAutoSync,omitempty"` + // Indicates if the stream is for the hearing impaired. + HearingImpaired *bool `json:"hearingImpaired,omitempty"` + // Indicates if the stream is a dub. + Dub *bool `json:"dub,omitempty"` + // Optional title for the stream (e.g., language variant). + Title *string `json:"title,omitempty"` +} + +func (o *GetAllMediaLibraryStream) GetID() int64 { + if o == nil { + return 0 + } + return o.ID +} + +func (o *GetAllMediaLibraryStream) GetStreamType() int { + if o == nil { + return 0 + } + return o.StreamType +} + +func (o *GetAllMediaLibraryStream) GetDefault() *bool { + if o == nil { + return nil + } + return o.Default +} + +func (o *GetAllMediaLibraryStream) GetCodec() string { + if o == nil { + return "" + } + return o.Codec +} + +func (o *GetAllMediaLibraryStream) GetIndex() int { + if o == nil { + return 0 + } + return o.Index +} + +func (o *GetAllMediaLibraryStream) GetBitrate() *int { + if o == nil { + return nil + } + return o.Bitrate +} + +func (o *GetAllMediaLibraryStream) GetLanguage() string { + if o == nil { + return "" + } + return o.Language +} + +func (o *GetAllMediaLibraryStream) GetLanguageTag() string { + if o == nil { + return "" + } + return o.LanguageTag +} + +func (o *GetAllMediaLibraryStream) GetLanguageCode() string { + if o == nil { + return "" + } + return o.LanguageCode +} + +func (o *GetAllMediaLibraryStream) GetHeaderCompression() *bool { + if o == nil { + return nil + } + return o.HeaderCompression +} + +func (o *GetAllMediaLibraryStream) GetDOVIBLCompatID() *int { + if o == nil { + return nil + } + return o.DOVIBLCompatID +} + +func (o *GetAllMediaLibraryStream) GetDOVIBLPresent() *bool { + if o == nil { + return nil + } + return o.DOVIBLPresent +} + +func (o *GetAllMediaLibraryStream) GetDOVIELPresent() *bool { + if o == nil { + return nil + } + return o.DOVIELPresent +} + +func (o *GetAllMediaLibraryStream) GetDOVILevel() *int { + if o == nil { + return nil + } + return o.DOVILevel +} + +func (o *GetAllMediaLibraryStream) GetDOVIPresent() *bool { + if o == nil { + return nil + } + return o.DOVIPresent +} + +func (o *GetAllMediaLibraryStream) GetDOVIProfile() *int { + if o == nil { + return nil + } + return o.DOVIProfile +} + +func (o *GetAllMediaLibraryStream) GetDOVIRPUPresent() *bool { + if o == nil { + return nil + } + return o.DOVIRPUPresent +} + +func (o *GetAllMediaLibraryStream) GetDOVIVersion() *string { + if o == nil { + return nil + } + return o.DOVIVersion +} + +func (o *GetAllMediaLibraryStream) GetBitDepth() *int { + if o == nil { + return nil + } + return o.BitDepth +} + +func (o *GetAllMediaLibraryStream) GetChromaLocation() *string { + if o == nil { + return nil + } + return o.ChromaLocation +} + +func (o *GetAllMediaLibraryStream) GetChromaSubsampling() *string { + if o == nil { + return nil + } + return o.ChromaSubsampling +} + +func (o *GetAllMediaLibraryStream) GetCodedHeight() *int { + if o == nil { + return nil + } + return o.CodedHeight +} + +func (o *GetAllMediaLibraryStream) GetCodedWidth() *int { + if o == nil { + return nil + } + return o.CodedWidth +} + +func (o *GetAllMediaLibraryStream) GetColorPrimaries() *string { + if o == nil { + return nil + } + return o.ColorPrimaries +} + +func (o *GetAllMediaLibraryStream) GetColorRange() *string { + if o == nil { + return nil + } + return o.ColorRange +} + +func (o *GetAllMediaLibraryStream) GetColorSpace() *string { + if o == nil { + return nil + } + return o.ColorSpace +} + +func (o *GetAllMediaLibraryStream) GetColorTrc() *string { + if o == nil { + return nil + } + return o.ColorTrc +} + +func (o *GetAllMediaLibraryStream) GetFrameRate() *float32 { + if o == nil { + return nil + } + return o.FrameRate +} + +func (o *GetAllMediaLibraryStream) GetHeight() *int { + if o == nil { + return nil + } + return o.Height +} + +func (o *GetAllMediaLibraryStream) GetLevel() *int { + if o == nil { + return nil + } + return o.Level +} + +func (o *GetAllMediaLibraryStream) GetOriginal() *bool { + if o == nil { + return nil + } + return o.Original +} + +func (o *GetAllMediaLibraryStream) GetHasScalingMatrix() *bool { + if o == nil { + return nil + } + return o.HasScalingMatrix +} + +func (o *GetAllMediaLibraryStream) GetProfile() *string { + if o == nil { + return nil + } + return o.Profile +} + +func (o *GetAllMediaLibraryStream) GetScanType() *string { + if o == nil { + return nil + } + return o.ScanType +} + +func (o *GetAllMediaLibraryStream) GetRefFrames() *int { + if o == nil { + return nil + } + return o.RefFrames +} + +func (o *GetAllMediaLibraryStream) GetWidth() *int { + if o == nil { + return nil + } + return o.Width +} + +func (o *GetAllMediaLibraryStream) GetDisplayTitle() string { + if o == nil { + return "" + } + return o.DisplayTitle +} + +func (o *GetAllMediaLibraryStream) GetExtendedDisplayTitle() string { + if o == nil { + return "" + } + return o.ExtendedDisplayTitle +} + +func (o *GetAllMediaLibraryStream) GetSelected() *bool { + if o == nil { + return nil + } + return o.Selected +} + +func (o *GetAllMediaLibraryStream) GetForced() *bool { + if o == nil { + return nil + } + return o.Forced +} + +func (o *GetAllMediaLibraryStream) GetChannels() *int { + if o == nil { + return nil + } + return o.Channels +} + +func (o *GetAllMediaLibraryStream) GetAudioChannelLayout() *string { + if o == nil { + return nil + } + return o.AudioChannelLayout +} + +func (o *GetAllMediaLibraryStream) GetSamplingRate() *int { + if o == nil { + return nil + } + return o.SamplingRate +} + +func (o *GetAllMediaLibraryStream) GetCanAutoSync() *bool { + if o == nil { + return nil + } + return o.CanAutoSync +} + +func (o *GetAllMediaLibraryStream) GetHearingImpaired() *bool { + if o == nil { + return nil + } + return o.HearingImpaired +} + +func (o *GetAllMediaLibraryStream) GetDub() *bool { + if o == nil { + return nil + } + return o.Dub +} + +func (o *GetAllMediaLibraryStream) GetTitle() *string { + if o == nil { + return nil + } + return o.Title +} + +type GetAllMediaLibraryPart struct { + // Indicates if the part is accessible. + Accessible *bool `json:"accessible,omitempty"` + // Indicates if the part exists. + Exists *bool `json:"exists,omitempty"` + // Unique part identifier. + ID int64 `json:"id"` + // Key to access this part. + Key string `json:"key"` + Indexes *string `json:"indexes,omitempty"` + // Duration of the part in milliseconds. + Duration *int `json:"duration,omitempty"` + // File path for the part. + File string `json:"file"` + // File size in bytes. + Size int64 `json:"size"` + PacketLength *int `json:"packetLength,omitempty"` + // Container format of the part. + Container *string `json:"container,omitempty"` + // Video profile for the part. + VideoProfile *string `json:"videoProfile,omitempty"` + // The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + AudioProfile *string `json:"audioProfile,omitempty"` + Has64bitOffsets *bool `json:"has64bitOffsets,omitempty"` + // Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + OptimizedForStreaming *GetAllMediaLibraryLibraryOptimizedForStreaming `json:"optimizedForStreaming,omitempty"` + HasThumbnail *GetAllMediaLibraryHasThumbnail `default:"0" json:"hasThumbnail"` + // An array of streams for this part. + Stream []GetAllMediaLibraryStream `json:"Stream,omitempty"` +} + +func (g GetAllMediaLibraryPart) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(g, "", false) +} + +func (g *GetAllMediaLibraryPart) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil { + return err + } + return nil +} + +func (o *GetAllMediaLibraryPart) GetAccessible() *bool { + if o == nil { + return nil + } + return o.Accessible +} + +func (o *GetAllMediaLibraryPart) GetExists() *bool { + if o == nil { + return nil + } + return o.Exists +} + +func (o *GetAllMediaLibraryPart) GetID() int64 { + if o == nil { + return 0 + } + return o.ID +} + +func (o *GetAllMediaLibraryPart) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibraryPart) GetIndexes() *string { + if o == nil { + return nil + } + return o.Indexes +} + +func (o *GetAllMediaLibraryPart) GetDuration() *int { + if o == nil { + return nil + } + return o.Duration +} + +func (o *GetAllMediaLibraryPart) GetFile() string { + if o == nil { + return "" + } + return o.File +} + +func (o *GetAllMediaLibraryPart) GetSize() int64 { + if o == nil { + return 0 + } + return o.Size +} + +func (o *GetAllMediaLibraryPart) GetPacketLength() *int { + if o == nil { + return nil + } + return o.PacketLength +} + +func (o *GetAllMediaLibraryPart) GetContainer() *string { + if o == nil { + return nil + } + return o.Container +} + +func (o *GetAllMediaLibraryPart) GetVideoProfile() *string { + if o == nil { + return nil + } + return o.VideoProfile +} + +func (o *GetAllMediaLibraryPart) GetAudioProfile() *string { + if o == nil { + return nil + } + return o.AudioProfile +} + +func (o *GetAllMediaLibraryPart) GetHas64bitOffsets() *bool { + if o == nil { + return nil + } + return o.Has64bitOffsets +} + +func (o *GetAllMediaLibraryPart) GetOptimizedForStreaming() *GetAllMediaLibraryLibraryOptimizedForStreaming { + if o == nil { + return nil + } + return o.OptimizedForStreaming +} + +func (o *GetAllMediaLibraryPart) GetHasThumbnail() *GetAllMediaLibraryHasThumbnail { + if o == nil { + return nil + } + return o.HasThumbnail +} + +func (o *GetAllMediaLibraryPart) GetStream() []GetAllMediaLibraryStream { + if o == nil { + return nil + } + return o.Stream +} + +type GetAllMediaLibraryMedia struct { + // Unique media identifier. + ID int64 `json:"id"` + // Duration of the media in milliseconds. + Duration *int `json:"duration,omitempty"` + // Bitrate in bits per second. + Bitrate *int `json:"bitrate,omitempty"` + // Video width in pixels. + Width *int `json:"width,omitempty"` + // Video height in pixels. + Height *int `json:"height,omitempty"` + // Aspect ratio of the video. + AspectRatio *float32 `json:"aspectRatio,omitempty"` + // Number of audio channels. + AudioChannels *int `json:"audioChannels,omitempty"` + DisplayOffset *int `json:"displayOffset,omitempty"` + // Audio codec used. + AudioCodec *string `json:"audioCodec,omitempty"` + // Video codec used. + VideoCodec *string `json:"videoCodec,omitempty"` + // Video resolution (e.g., 4k). + VideoResolution *string `json:"videoResolution,omitempty"` + // File container type. + Container *string `json:"container,omitempty"` + // Frame rate of the video. Values found include NTSC, PAL, 24p + // + VideoFrameRate *string `json:"videoFrameRate,omitempty"` + // Video profile (e.g., main 10). + VideoProfile *string `json:"videoProfile,omitempty"` + // Indicates whether voice activity is detected. + HasVoiceActivity bool `json:"hasVoiceActivity"` + // The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + AudioProfile *string `json:"audioProfile,omitempty"` + // Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + OptimizedForStreaming *GetAllMediaLibraryOptimizedForStreaming `json:"optimizedForStreaming,omitempty"` + Has64bitOffsets *bool `json:"has64bitOffsets,omitempty"` + // An array of parts for this media item. + Part []GetAllMediaLibraryPart `json:"Part"` +} + +func (o *GetAllMediaLibraryMedia) GetID() int64 { + if o == nil { + return 0 + } + return o.ID +} + +func (o *GetAllMediaLibraryMedia) GetDuration() *int { + if o == nil { + return nil + } + return o.Duration +} + +func (o *GetAllMediaLibraryMedia) GetBitrate() *int { + if o == nil { + return nil + } + return o.Bitrate +} + +func (o *GetAllMediaLibraryMedia) GetWidth() *int { + if o == nil { + return nil + } + return o.Width +} + +func (o *GetAllMediaLibraryMedia) GetHeight() *int { + if o == nil { + return nil + } + return o.Height +} + +func (o *GetAllMediaLibraryMedia) GetAspectRatio() *float32 { + if o == nil { + return nil + } + return o.AspectRatio +} + +func (o *GetAllMediaLibraryMedia) GetAudioChannels() *int { + if o == nil { + return nil + } + return o.AudioChannels +} + +func (o *GetAllMediaLibraryMedia) GetDisplayOffset() *int { + if o == nil { + return nil + } + return o.DisplayOffset +} + +func (o *GetAllMediaLibraryMedia) GetAudioCodec() *string { + if o == nil { + return nil + } + return o.AudioCodec +} + +func (o *GetAllMediaLibraryMedia) GetVideoCodec() *string { + if o == nil { + return nil + } + return o.VideoCodec +} + +func (o *GetAllMediaLibraryMedia) GetVideoResolution() *string { + if o == nil { + return nil + } + return o.VideoResolution +} + +func (o *GetAllMediaLibraryMedia) GetContainer() *string { + if o == nil { + return nil + } + return o.Container +} + +func (o *GetAllMediaLibraryMedia) GetVideoFrameRate() *string { + if o == nil { + return nil + } + return o.VideoFrameRate +} + +func (o *GetAllMediaLibraryMedia) GetVideoProfile() *string { + if o == nil { + return nil + } + return o.VideoProfile +} + +func (o *GetAllMediaLibraryMedia) GetHasVoiceActivity() bool { + if o == nil { + return false + } + return o.HasVoiceActivity +} + +func (o *GetAllMediaLibraryMedia) GetAudioProfile() *string { + if o == nil { + return nil + } + return o.AudioProfile +} + +func (o *GetAllMediaLibraryMedia) GetOptimizedForStreaming() *GetAllMediaLibraryOptimizedForStreaming { + if o == nil { + return nil + } + return o.OptimizedForStreaming +} + +func (o *GetAllMediaLibraryMedia) GetHas64bitOffsets() *bool { + if o == nil { + return nil + } + return o.Has64bitOffsets +} + +func (o *GetAllMediaLibraryMedia) GetPart() []GetAllMediaLibraryPart { + if o == nil { + return []GetAllMediaLibraryPart{} + } + return o.Part +} + +type GetAllMediaLibraryGenre struct { + // The country of origin of this media item + Tag string `json:"tag"` +} + +func (o *GetAllMediaLibraryGenre) GetTag() string { + if o == nil { + return "" + } + return o.Tag +} + +type GetAllMediaLibraryCountry struct { + // The country of origin of this media item + Tag string `json:"tag"` +} + +func (o *GetAllMediaLibraryCountry) GetTag() string { + if o == nil { + return "" + } + return o.Tag +} + +type GetAllMediaLibraryDirector struct { + // The role of Director + Tag string `json:"tag"` +} + +func (o *GetAllMediaLibraryDirector) GetTag() string { + if o == nil { + return "" + } + return o.Tag +} + +type GetAllMediaLibraryWriter struct { + // The role of Writer + Tag string `json:"tag"` +} + +func (o *GetAllMediaLibraryWriter) GetTag() string { + if o == nil { + return "" + } + return o.Tag +} + +type GetAllMediaLibraryRole struct { + // The name of the actor for this role + Tag string `json:"tag"` +} + +func (o *GetAllMediaLibraryRole) GetTag() string { + if o == nil { + return "" + } + return o.Tag +} + +type Guids struct { + // The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + // + ID *string `json:"id,omitempty"` +} + +func (o *Guids) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +type GetAllMediaLibraryCollection struct { + // The user-made collection this media item belongs to + Tag string `json:"tag"` +} + +func (o *GetAllMediaLibraryCollection) GetTag() string { + if o == nil { + return "" + } + return o.Tag +} + +// GetAllMediaLibraryMetadata - Unknown +type GetAllMediaLibraryMetadata struct { + // 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. + RatingKey string `json:"ratingKey"` + // The unique key for the media item. + Key string `json:"key"` + // The globally unique identifier for the media item. + GUID string `json:"guid"` + // A URL‐friendly version of the media title. + Slug string `json:"slug"` + // The studio that produced the media item. + Studio *string `json:"studio,omitempty"` + Type GetAllMediaLibraryLibraryType `json:"type"` + // The title of the media item. + Title string `json:"title"` + // The sort title used for ordering media items. + TitleSort string `json:"titleSort"` + // The content rating for the media item. + ContentRating *string `json:"contentRating,omitempty"` + // A synopsis of the media item. + Summary string `json:"summary"` + // The critic rating for the media item. + Rating float32 `json:"rating"` + // The audience rating for the media item. + AudienceRating float64 `json:"audienceRating"` + // The release year of the media item. + Year int `json:"year"` + // A brief tagline for the media item. + Tagline string `json:"tagline"` + // The thumbnail image URL for the media item. + Thumb string `json:"thumb"` + // The art image URL for the media item. + Art string `json:"art"` + // The theme URL for the media item. + Theme string `json:"theme"` + // The index position of the media item. + Index int `json:"index"` + // The number of leaf items (end nodes) under this media item. + LeafCount *int `json:"leafCount,omitempty"` + // The number of leaf items that have been viewed. + ViewedLeafCount *int `json:"viewedLeafCount,omitempty"` + // The number of child items associated with this media item. + ChildCount int `json:"childCount"` + // The total number of seasons (for TV shows). + SeasonCount int `json:"seasonCount"` + // The duration of the media item in milliseconds. + Duration int `json:"duration"` + // The original release date of the media item. + OriginallyAvailableAt types.Date `json:"originallyAvailableAt"` + AddedAt int64 `json:"addedAt"` + // Unix epoch datetime in seconds + UpdatedAt *int64 `json:"updatedAt,omitempty"` + // The URL for the audience rating image. + AudienceRatingImage *string `json:"audienceRatingImage,omitempty"` + // The source from which chapter data is derived. + ChapterSource *string `json:"chapterSource,omitempty"` + // The primary extra key associated with this media item. + PrimaryExtraKey *string `json:"primaryExtraKey,omitempty"` + // The original title of the media item (if different). + OriginalTitle *string `json:"originalTitle,omitempty"` + // The rating key of the parent media item. + ParentRatingKey *string `json:"parentRatingKey,omitempty"` + // The rating key of the grandparent media item. + GrandparentRatingKey *string `json:"grandparentRatingKey,omitempty"` + // The GUID of the parent media item. + ParentGUID *string `json:"parentGuid,omitempty"` + // The GUID of the grandparent media item. + GrandparentGUID *string `json:"grandparentGuid,omitempty"` + // The slug for the grandparent media item. + GrandparentSlug *string `json:"grandparentSlug,omitempty"` + // The key of the grandparent media item. + GrandparentKey *string `json:"grandparentKey,omitempty"` + // The key of the parent media item. + ParentKey *string `json:"parentKey,omitempty"` + // The title of the grandparent media item. + GrandparentTitle *string `json:"grandparentTitle,omitempty"` + // The thumbnail URL for the grandparent media item. + GrandparentThumb *string `json:"grandparentThumb,omitempty"` + // The theme URL for the grandparent media item. + GrandparentTheme *string `json:"grandparentTheme,omitempty"` + // The art URL for the grandparent media item. + GrandparentArt *string `json:"grandparentArt,omitempty"` + // The title of the parent media item. + ParentTitle *string `json:"parentTitle,omitempty"` + // The index position of the parent media item. + ParentIndex *int `json:"parentIndex,omitempty"` + // The thumbnail URL for the parent media item. + ParentThumb *string `json:"parentThumb,omitempty"` + // The URL for the rating image. + RatingImage *string `json:"ratingImage,omitempty"` + // The number of times this media item has been viewed. + ViewCount *int `json:"viewCount,omitempty"` + // The current playback offset (in milliseconds). + ViewOffset *int `json:"viewOffset,omitempty"` + // The number of times this media item has been skipped. + SkipCount *int `json:"skipCount,omitempty"` + // A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + Subtype *string `json:"subtype,omitempty"` + // The Unix timestamp representing the last time the item was rated. + LastRatedAt *int64 `json:"lastRatedAt,omitempty"` + // The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). + CreatedAtAccuracy *string `json:"createdAtAccuracy,omitempty"` + // The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + CreatedAtTZOffset *string `json:"createdAtTZOffset,omitempty"` + // Unix timestamp for when the media item was last viewed. + LastViewedAt *int `json:"lastViewedAt,omitempty"` + // The rating provided by a user for the item. This value is expressed as a decimal number. + UserRating *float32 `json:"userRating,omitempty"` + Image []GetAllMediaLibraryImage `json:"Image,omitempty"` + UltraBlurColors *GetAllMediaLibraryUltraBlurColors `json:"UltraBlurColors,omitempty"` + Media []GetAllMediaLibraryMedia `json:"Media,omitempty"` + Genre []GetAllMediaLibraryGenre `json:"Genre,omitempty"` + Country []GetAllMediaLibraryCountry `json:"Country,omitempty"` + Director []GetAllMediaLibraryDirector `json:"Director,omitempty"` + Writer []GetAllMediaLibraryWriter `json:"Writer,omitempty"` + Role []GetAllMediaLibraryRole `json:"Role,omitempty"` + Guids []Guids `json:"Guid,omitempty"` + Collection []GetAllMediaLibraryCollection `json:"Collection,omitempty"` +} + +func (g GetAllMediaLibraryMetadata) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(g, "", false) +} + +func (g *GetAllMediaLibraryMetadata) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil { + return err + } + return nil +} + +func (o *GetAllMediaLibraryMetadata) GetRatingKey() string { + if o == nil { + return "" + } + return o.RatingKey +} + +func (o *GetAllMediaLibraryMetadata) GetKey() string { + if o == nil { + return "" + } + return o.Key +} + +func (o *GetAllMediaLibraryMetadata) GetGUID() string { + if o == nil { + return "" + } + return o.GUID +} + +func (o *GetAllMediaLibraryMetadata) GetSlug() string { + if o == nil { + return "" + } + return o.Slug +} + +func (o *GetAllMediaLibraryMetadata) GetStudio() *string { + if o == nil { + return nil + } + return o.Studio +} + +func (o *GetAllMediaLibraryMetadata) GetType() GetAllMediaLibraryLibraryType { + if o == nil { + return GetAllMediaLibraryLibraryType("") + } + return o.Type +} + +func (o *GetAllMediaLibraryMetadata) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *GetAllMediaLibraryMetadata) GetTitleSort() string { + if o == nil { + return "" + } + return o.TitleSort +} + +func (o *GetAllMediaLibraryMetadata) GetContentRating() *string { + if o == nil { + return nil + } + return o.ContentRating +} + +func (o *GetAllMediaLibraryMetadata) GetSummary() string { + if o == nil { + return "" + } + return o.Summary +} + +func (o *GetAllMediaLibraryMetadata) GetRating() float32 { + if o == nil { + return 0.0 + } + return o.Rating +} + +func (o *GetAllMediaLibraryMetadata) GetAudienceRating() float64 { + if o == nil { + return 0.0 + } + return o.AudienceRating +} + +func (o *GetAllMediaLibraryMetadata) GetYear() int { + if o == nil { + return 0 + } + return o.Year +} + +func (o *GetAllMediaLibraryMetadata) GetTagline() string { + if o == nil { + return "" + } + return o.Tagline +} + +func (o *GetAllMediaLibraryMetadata) GetThumb() string { + if o == nil { + return "" + } + return o.Thumb +} + +func (o *GetAllMediaLibraryMetadata) GetArt() string { + if o == nil { + return "" + } + return o.Art +} + +func (o *GetAllMediaLibraryMetadata) GetTheme() string { + if o == nil { + return "" + } + return o.Theme +} + +func (o *GetAllMediaLibraryMetadata) GetIndex() int { + if o == nil { + return 0 + } + return o.Index +} + +func (o *GetAllMediaLibraryMetadata) GetLeafCount() *int { + if o == nil { + return nil + } + return o.LeafCount +} + +func (o *GetAllMediaLibraryMetadata) GetViewedLeafCount() *int { + if o == nil { + return nil + } + return o.ViewedLeafCount +} + +func (o *GetAllMediaLibraryMetadata) GetChildCount() int { + if o == nil { + return 0 + } + return o.ChildCount +} + +func (o *GetAllMediaLibraryMetadata) GetSeasonCount() int { + if o == nil { + return 0 + } + return o.SeasonCount +} + +func (o *GetAllMediaLibraryMetadata) GetDuration() int { + if o == nil { + return 0 + } + return o.Duration +} + +func (o *GetAllMediaLibraryMetadata) GetOriginallyAvailableAt() types.Date { + if o == nil { + return types.Date{} + } + return o.OriginallyAvailableAt +} + +func (o *GetAllMediaLibraryMetadata) GetAddedAt() int64 { + if o == nil { + return 0 + } + return o.AddedAt +} + +func (o *GetAllMediaLibraryMetadata) GetUpdatedAt() *int64 { + if o == nil { + return nil + } + return o.UpdatedAt +} + +func (o *GetAllMediaLibraryMetadata) GetAudienceRatingImage() *string { + if o == nil { + return nil + } + return o.AudienceRatingImage +} + +func (o *GetAllMediaLibraryMetadata) GetChapterSource() *string { + if o == nil { + return nil + } + return o.ChapterSource +} + +func (o *GetAllMediaLibraryMetadata) GetPrimaryExtraKey() *string { + if o == nil { + return nil + } + return o.PrimaryExtraKey +} + +func (o *GetAllMediaLibraryMetadata) GetOriginalTitle() *string { + if o == nil { + return nil + } + return o.OriginalTitle +} + +func (o *GetAllMediaLibraryMetadata) GetParentRatingKey() *string { + if o == nil { + return nil + } + return o.ParentRatingKey +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentRatingKey() *string { + if o == nil { + return nil + } + return o.GrandparentRatingKey +} + +func (o *GetAllMediaLibraryMetadata) GetParentGUID() *string { + if o == nil { + return nil + } + return o.ParentGUID +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentGUID() *string { + if o == nil { + return nil + } + return o.GrandparentGUID +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentSlug() *string { + if o == nil { + return nil + } + return o.GrandparentSlug +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentKey() *string { + if o == nil { + return nil + } + return o.GrandparentKey +} + +func (o *GetAllMediaLibraryMetadata) GetParentKey() *string { + if o == nil { + return nil + } + return o.ParentKey +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentTitle() *string { + if o == nil { + return nil + } + return o.GrandparentTitle +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentThumb() *string { + if o == nil { + return nil + } + return o.GrandparentThumb +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentTheme() *string { + if o == nil { + return nil + } + return o.GrandparentTheme +} + +func (o *GetAllMediaLibraryMetadata) GetGrandparentArt() *string { + if o == nil { + return nil + } + return o.GrandparentArt +} + +func (o *GetAllMediaLibraryMetadata) GetParentTitle() *string { + if o == nil { + return nil + } + return o.ParentTitle +} + +func (o *GetAllMediaLibraryMetadata) GetParentIndex() *int { + if o == nil { + return nil + } + return o.ParentIndex +} + +func (o *GetAllMediaLibraryMetadata) GetParentThumb() *string { + if o == nil { + return nil + } + return o.ParentThumb +} + +func (o *GetAllMediaLibraryMetadata) GetRatingImage() *string { + if o == nil { + return nil + } + return o.RatingImage +} + +func (o *GetAllMediaLibraryMetadata) GetViewCount() *int { + if o == nil { + return nil + } + return o.ViewCount +} + +func (o *GetAllMediaLibraryMetadata) GetViewOffset() *int { + if o == nil { + return nil + } + return o.ViewOffset +} + +func (o *GetAllMediaLibraryMetadata) GetSkipCount() *int { + if o == nil { + return nil + } + return o.SkipCount +} + +func (o *GetAllMediaLibraryMetadata) GetSubtype() *string { + if o == nil { + return nil + } + return o.Subtype +} + +func (o *GetAllMediaLibraryMetadata) GetLastRatedAt() *int64 { + if o == nil { + return nil + } + return o.LastRatedAt +} + +func (o *GetAllMediaLibraryMetadata) GetCreatedAtAccuracy() *string { + if o == nil { + return nil + } + return o.CreatedAtAccuracy +} + +func (o *GetAllMediaLibraryMetadata) GetCreatedAtTZOffset() *string { + if o == nil { + return nil + } + return o.CreatedAtTZOffset +} + +func (o *GetAllMediaLibraryMetadata) GetLastViewedAt() *int { + if o == nil { + return nil + } + return o.LastViewedAt +} + +func (o *GetAllMediaLibraryMetadata) GetUserRating() *float32 { + if o == nil { + return nil + } + return o.UserRating +} + +func (o *GetAllMediaLibraryMetadata) GetImage() []GetAllMediaLibraryImage { + if o == nil { + return nil + } + return o.Image +} + +func (o *GetAllMediaLibraryMetadata) GetUltraBlurColors() *GetAllMediaLibraryUltraBlurColors { + if o == nil { + return nil + } + return o.UltraBlurColors +} + +func (o *GetAllMediaLibraryMetadata) GetMedia() []GetAllMediaLibraryMedia { + if o == nil { + return nil + } + return o.Media +} + +func (o *GetAllMediaLibraryMetadata) GetGenre() []GetAllMediaLibraryGenre { + if o == nil { + return nil + } + return o.Genre +} + +func (o *GetAllMediaLibraryMetadata) GetCountry() []GetAllMediaLibraryCountry { + if o == nil { + return nil + } + return o.Country +} + +func (o *GetAllMediaLibraryMetadata) GetDirector() []GetAllMediaLibraryDirector { + if o == nil { + return nil + } + return o.Director +} + +func (o *GetAllMediaLibraryMetadata) GetWriter() []GetAllMediaLibraryWriter { + if o == nil { + return nil + } + return o.Writer +} + +func (o *GetAllMediaLibraryMetadata) GetRole() []GetAllMediaLibraryRole { + if o == nil { + return nil + } + return o.Role +} + +func (o *GetAllMediaLibraryMetadata) GetGuids() []Guids { + if o == nil { + return nil + } + return o.Guids +} + +func (o *GetAllMediaLibraryMetadata) GetCollection() []GetAllMediaLibraryCollection { + if o == nil { + return nil + } + return o.Collection +} + +type GetAllMediaLibraryMediaContainer struct { + // Number of media items returned in this response. + Size int `json:"size"` + // Total number of media items in the library. + TotalSize int `json:"totalSize"` + // Offset value for pagination. + Offset int64 `json:"offset"` + // Indicates whether syncing is allowed. + AllowSync bool `json:"allowSync"` + // URL for the background artwork of the media container. + Art string `json:"art"` + // The content type or mode. + Content string `json:"content"` + // An plugin identifier for the media container. + Identifier string `json:"identifier"` + // The unique identifier for the library section. + LibrarySectionID int64 `json:"librarySectionID"` + // The title of the library section. + LibrarySectionTitle string `json:"librarySectionTitle"` + // The universally unique identifier for the library section. + LibrarySectionUUID *string `json:"librarySectionUUID,omitempty"` + // The prefix used for media tag resource paths. + MediaTagPrefix string `json:"mediaTagPrefix"` + // The version number for media tags. + MediaTagVersion int64 `json:"mediaTagVersion"` + // URL for the thumbnail image of the media container. + Thumb string `json:"thumb"` + // Specifies whether caching is disabled. + Nocache bool `json:"nocache"` + // The primary title of the media container. + Title1 string `json:"title1"` + // The secondary title of the media container. + Title2 string `json:"title2"` + // Identifier for the view group layout. + ViewGroup string `json:"viewGroup"` + // The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + // + Meta *GetAllMediaLibraryMeta `json:"Meta,omitempty"` + // An array of metadata items. + Metadata []GetAllMediaLibraryMetadata `json:"Metadata,omitempty"` +} + +func (o *GetAllMediaLibraryMediaContainer) GetSize() int { + if o == nil { + return 0 + } + return o.Size +} + +func (o *GetAllMediaLibraryMediaContainer) GetTotalSize() int { + if o == nil { + return 0 + } + return o.TotalSize +} + +func (o *GetAllMediaLibraryMediaContainer) GetOffset() int64 { + if o == nil { + return 0 + } + return o.Offset +} + +func (o *GetAllMediaLibraryMediaContainer) GetAllowSync() bool { + if o == nil { + return false + } + return o.AllowSync +} + +func (o *GetAllMediaLibraryMediaContainer) GetArt() string { + if o == nil { + return "" + } + return o.Art +} + +func (o *GetAllMediaLibraryMediaContainer) GetContent() string { + if o == nil { + return "" + } + return o.Content +} + +func (o *GetAllMediaLibraryMediaContainer) GetIdentifier() string { + if o == nil { + return "" + } + return o.Identifier +} + +func (o *GetAllMediaLibraryMediaContainer) GetLibrarySectionID() int64 { + if o == nil { + return 0 + } + return o.LibrarySectionID +} + +func (o *GetAllMediaLibraryMediaContainer) GetLibrarySectionTitle() string { + if o == nil { + return "" + } + return o.LibrarySectionTitle +} + +func (o *GetAllMediaLibraryMediaContainer) GetLibrarySectionUUID() *string { + if o == nil { + return nil + } + return o.LibrarySectionUUID +} + +func (o *GetAllMediaLibraryMediaContainer) GetMediaTagPrefix() string { + if o == nil { + return "" + } + return o.MediaTagPrefix +} + +func (o *GetAllMediaLibraryMediaContainer) GetMediaTagVersion() int64 { + if o == nil { + return 0 + } + return o.MediaTagVersion +} + +func (o *GetAllMediaLibraryMediaContainer) GetThumb() string { + if o == nil { + return "" + } + return o.Thumb +} + +func (o *GetAllMediaLibraryMediaContainer) GetNocache() bool { + if o == nil { + return false + } + return o.Nocache +} + +func (o *GetAllMediaLibraryMediaContainer) GetTitle1() string { + if o == nil { + return "" + } + return o.Title1 +} + +func (o *GetAllMediaLibraryMediaContainer) GetTitle2() string { + if o == nil { + return "" + } + return o.Title2 +} + +func (o *GetAllMediaLibraryMediaContainer) GetViewGroup() string { + if o == nil { + return "" + } + return o.ViewGroup +} + +func (o *GetAllMediaLibraryMediaContainer) GetMeta() *GetAllMediaLibraryMeta { + if o == nil { + return nil + } + return o.Meta +} + +func (o *GetAllMediaLibraryMediaContainer) GetMetadata() []GetAllMediaLibraryMetadata { + if o == nil { + return nil + } + return o.Metadata +} + +// GetAllMediaLibraryResponseBody - Successful response containing media container data. +type GetAllMediaLibraryResponseBody struct { + MediaContainer *GetAllMediaLibraryMediaContainer `json:"MediaContainer,omitempty"` +} + +func (o *GetAllMediaLibraryResponseBody) GetMediaContainer() *GetAllMediaLibraryMediaContainer { + if o == nil { + return nil + } + return o.MediaContainer +} + +type GetAllMediaLibraryResponse struct { + // HTTP response content type for this operation + ContentType string + // HTTP response status code for this operation + StatusCode int + // Raw HTTP response; suitable for custom response parsing + RawResponse *http.Response + // Successful response containing media container data. + Object *GetAllMediaLibraryResponseBody +} + +func (o *GetAllMediaLibraryResponse) GetContentType() string { + if o == nil { + return "" + } + return o.ContentType +} + +func (o *GetAllMediaLibraryResponse) GetStatusCode() int { + if o == nil { + return 0 + } + return o.StatusCode +} + +func (o *GetAllMediaLibraryResponse) GetRawResponse() *http.Response { + if o == nil { + return nil + } + return o.RawResponse +} + +func (o *GetAllMediaLibraryResponse) GetObject() *GetAllMediaLibraryResponseBody { + if o == nil { + return nil + } + return o.Object +} diff --git a/models/operations/getcountrieslibrary.go b/models/operations/getcountrieslibrary.go index 238c516..8fdf7de 100644 --- a/models/operations/getcountrieslibrary.go +++ b/models/operations/getcountrieslibrary.go @@ -112,51 +112,40 @@ func (o *GetCountriesLibraryDirectory) GetTitle() string { } type GetCountriesLibraryMediaContainer struct { - Size float64 `json:"size"` - Offset *int `json:"offset,omitempty"` - TotalSize *int `json:"totalSize,omitempty"` - Identifier string `json:"identifier"` - AllowSync bool `json:"allowSync"` - Art string `json:"art"` - Content string `json:"content"` - MediaTagPrefix string `json:"mediaTagPrefix"` - MediaTagVersion int64 `json:"mediaTagVersion"` - Nocache bool `json:"nocache"` - Thumb string `json:"thumb"` - Title1 string `json:"title1"` - Title2 string `json:"title2"` - ViewGroup string `json:"viewGroup"` - Directory []GetCountriesLibraryDirectory `json:"Directory,omitempty"` + // Number of media items returned in this response. + Size int `json:"size"` + // Indicates whether syncing is allowed. + AllowSync bool `json:"allowSync"` + // URL for the background artwork of the media container. + Art string `json:"art"` + // The content type or mode. + Content string `json:"content"` + // An plugin identifier for the media container. + Identifier string `json:"identifier"` + // The prefix used for media tag resource paths. + MediaTagPrefix string `json:"mediaTagPrefix"` + // The version number for media tags. + MediaTagVersion int64 `json:"mediaTagVersion"` + // Specifies whether caching is disabled. + Nocache bool `json:"nocache"` + // URL for the thumbnail image of the media container. + Thumb string `json:"thumb"` + // The primary title of the media container. + Title1 string `json:"title1"` + // The secondary title of the media container. + Title2 string `json:"title2"` + // Identifier for the view group layout. + ViewGroup string `json:"viewGroup"` + Directory []GetCountriesLibraryDirectory `json:"Directory,omitempty"` } -func (o *GetCountriesLibraryMediaContainer) GetSize() float64 { +func (o *GetCountriesLibraryMediaContainer) GetSize() int { if o == nil { - return 0.0 + return 0 } return o.Size } -func (o *GetCountriesLibraryMediaContainer) GetOffset() *int { - if o == nil { - return nil - } - return o.Offset -} - -func (o *GetCountriesLibraryMediaContainer) GetTotalSize() *int { - if o == nil { - return nil - } - return o.TotalSize -} - -func (o *GetCountriesLibraryMediaContainer) GetIdentifier() string { - if o == nil { - return "" - } - return o.Identifier -} - func (o *GetCountriesLibraryMediaContainer) GetAllowSync() bool { if o == nil { return false @@ -178,6 +167,13 @@ func (o *GetCountriesLibraryMediaContainer) GetContent() string { return o.Content } +func (o *GetCountriesLibraryMediaContainer) GetIdentifier() string { + if o == nil { + return "" + } + return o.Identifier +} + func (o *GetCountriesLibraryMediaContainer) GetMediaTagPrefix() string { if o == nil { return "" diff --git a/models/operations/getgenreslibrary.go b/models/operations/getgenreslibrary.go index 3164d69..4d1e0a2 100644 --- a/models/operations/getgenreslibrary.go +++ b/models/operations/getgenreslibrary.go @@ -120,51 +120,40 @@ func (o *GetGenresLibraryDirectory) GetType() string { } type GetGenresLibraryMediaContainer struct { - Size float64 `json:"size"` - Offset *int `json:"offset,omitempty"` - TotalSize *int `json:"totalSize,omitempty"` - Identifier string `json:"identifier"` - AllowSync bool `json:"allowSync"` - Art string `json:"art"` - Content string `json:"content"` - MediaTagPrefix string `json:"mediaTagPrefix"` - MediaTagVersion int64 `json:"mediaTagVersion"` - Nocache bool `json:"nocache"` - Thumb string `json:"thumb"` - Title1 string `json:"title1"` - Title2 string `json:"title2"` - ViewGroup string `json:"viewGroup"` - Directory []GetGenresLibraryDirectory `json:"Directory,omitempty"` + // Number of media items returned in this response. + Size int `json:"size"` + // Indicates whether syncing is allowed. + AllowSync bool `json:"allowSync"` + // URL for the background artwork of the media container. + Art string `json:"art"` + // The content type or mode. + Content string `json:"content"` + // An plugin identifier for the media container. + Identifier string `json:"identifier"` + // The prefix used for media tag resource paths. + MediaTagPrefix string `json:"mediaTagPrefix"` + // The version number for media tags. + MediaTagVersion int64 `json:"mediaTagVersion"` + // Specifies whether caching is disabled. + Nocache bool `json:"nocache"` + // URL for the thumbnail image of the media container. + Thumb string `json:"thumb"` + // The primary title of the media container. + Title1 string `json:"title1"` + // The secondary title of the media container. + Title2 string `json:"title2"` + // Identifier for the view group layout. + ViewGroup string `json:"viewGroup"` + Directory []GetGenresLibraryDirectory `json:"Directory,omitempty"` } -func (o *GetGenresLibraryMediaContainer) GetSize() float64 { +func (o *GetGenresLibraryMediaContainer) GetSize() int { if o == nil { - return 0.0 + return 0 } return o.Size } -func (o *GetGenresLibraryMediaContainer) GetOffset() *int { - if o == nil { - return nil - } - return o.Offset -} - -func (o *GetGenresLibraryMediaContainer) GetTotalSize() *int { - if o == nil { - return nil - } - return o.TotalSize -} - -func (o *GetGenresLibraryMediaContainer) GetIdentifier() string { - if o == nil { - return "" - } - return o.Identifier -} - func (o *GetGenresLibraryMediaContainer) GetAllowSync() bool { if o == nil { return false @@ -186,6 +175,13 @@ func (o *GetGenresLibraryMediaContainer) GetContent() string { return o.Content } +func (o *GetGenresLibraryMediaContainer) GetIdentifier() string { + if o == nil { + return "" + } + return o.Identifier +} + func (o *GetGenresLibraryMediaContainer) GetMediaTagPrefix() string { if o == nil { return "" diff --git a/models/operations/getlibraryitems.go b/models/operations/getlibraryitems.go index efc3003..d4a03b7 100644 --- a/models/operations/getlibraryitems.go +++ b/models/operations/getlibraryitems.go @@ -14,7 +14,6 @@ import ( type Tag string const ( - TagAll Tag = "all" TagUnwatched Tag = "unwatched" TagNewest Tag = "newest" TagRecentlyAdded Tag = "recentlyAdded" @@ -22,12 +21,9 @@ const ( TagOnDeck Tag = "onDeck" TagCollection Tag = "collection" TagEdition Tag = "edition" - TagGenre Tag = "genre" TagYear Tag = "year" TagDecade Tag = "decade" TagDirector Tag = "director" - TagActor Tag = "actor" - TagCountry Tag = "country" TagContentRating Tag = "contentRating" TagRating Tag = "rating" TagResolution Tag = "resolution" @@ -45,8 +41,6 @@ func (e *Tag) UnmarshalJSON(data []byte) error { return err } switch v { - case "all": - fallthrough case "unwatched": fallthrough case "newest": @@ -61,18 +55,12 @@ func (e *Tag) UnmarshalJSON(data []byte) error { fallthrough case "edition": fallthrough - case "genre": - fallthrough case "year": fallthrough case "decade": fallthrough case "director": fallthrough - case "actor": - fallthrough - case "country": - fallthrough case "contentRating": fallthrough case "rating": @@ -291,6 +279,7 @@ type GetLibraryItemsFilter struct { Key string `json:"key"` Title string `json:"title"` Type string `json:"type"` + Advanced *bool `json:"advanced,omitempty"` } func (o *GetLibraryItemsFilter) GetFilter() string { @@ -328,6 +317,13 @@ func (o *GetLibraryItemsFilter) GetType() string { return o.Type } +func (o *GetLibraryItemsFilter) GetAdvanced() *bool { + if o == nil { + return nil + } + return o.Advanced +} + // GetLibraryItemsActiveDirection - The direction of the sort. Can be either `asc` or `desc`. type GetLibraryItemsActiveDirection string @@ -500,13 +496,14 @@ func (o *GetLibraryItemsField) GetSubType() *string { } type GetLibraryItemsType struct { - Key string `json:"key"` - Type string `json:"type"` - Title string `json:"title"` - Active bool `json:"active"` - Filter []GetLibraryItemsFilter `json:"Filter,omitempty"` - Sort []GetLibraryItemsSort `json:"Sort,omitempty"` - Field []GetLibraryItemsField `json:"Field,omitempty"` + Key string `json:"key"` + Type string `json:"type"` + Subtype *string `json:"subtype,omitempty"` + Title string `json:"title"` + Active bool `json:"active"` + Filter []GetLibraryItemsFilter `json:"Filter,omitempty"` + Sort []GetLibraryItemsSort `json:"Sort,omitempty"` + Field []GetLibraryItemsField `json:"Field,omitempty"` } func (o *GetLibraryItemsType) GetKey() string { @@ -523,6 +520,13 @@ func (o *GetLibraryItemsType) GetType() string { return o.Type } +func (o *GetLibraryItemsType) GetSubtype() *string { + if o == nil { + return nil + } + return o.Subtype +} + func (o *GetLibraryItemsType) GetTitle() string { if o == nil { return "" @@ -604,6 +608,8 @@ const ( GetLibraryItemsLibraryTypeTvShow GetLibraryItemsLibraryType = "show" GetLibraryItemsLibraryTypeSeason GetLibraryItemsLibraryType = "season" GetLibraryItemsLibraryTypeEpisode GetLibraryItemsLibraryType = "episode" + GetLibraryItemsLibraryTypeArtist GetLibraryItemsLibraryType = "artist" + GetLibraryItemsLibraryTypeAlbum GetLibraryItemsLibraryType = "album" ) func (e GetLibraryItemsLibraryType) ToPointer() *GetLibraryItemsLibraryType { @@ -622,6 +628,10 @@ func (e *GetLibraryItemsLibraryType) UnmarshalJSON(data []byte) error { case "season": fallthrough case "episode": + fallthrough + case "artist": + fallthrough + case "album": *e = GetLibraryItemsLibraryType(v) return nil default: diff --git a/models/operations/getmediametadata.go b/models/operations/getmediametadata.go index 4fafe75..f88f42f 100644 --- a/models/operations/getmediametadata.go +++ b/models/operations/getmediametadata.go @@ -3,6 +3,9 @@ package operations import ( + "encoding/json" + "errors" + "fmt" "github.com/LukeHagar/plexgo/internal/utils" "github.com/LukeHagar/plexgo/types" "net/http" @@ -137,51 +140,260 @@ func (o *GetMediaMetaDataRequest) GetAsyncRefreshLocalMediaAgent() *bool { return o.AsyncRefreshLocalMediaAgent } +type OptimizedForStreaming1 int + +const ( + OptimizedForStreaming1Zero OptimizedForStreaming1 = 0 + OptimizedForStreaming1One OptimizedForStreaming1 = 1 +) + +func (e OptimizedForStreaming1) ToPointer() *OptimizedForStreaming1 { + return &e +} +func (e *OptimizedForStreaming1) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = OptimizedForStreaming1(v) + return nil + default: + return fmt.Errorf("invalid value for OptimizedForStreaming1: %v", v) + } +} + +type GetMediaMetaDataOptimizedForStreamingType string + +const ( + GetMediaMetaDataOptimizedForStreamingTypeOptimizedForStreaming1 GetMediaMetaDataOptimizedForStreamingType = "optimizedForStreaming_1" + GetMediaMetaDataOptimizedForStreamingTypeBoolean GetMediaMetaDataOptimizedForStreamingType = "boolean" +) + +// GetMediaMetaDataOptimizedForStreaming - Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true +type GetMediaMetaDataOptimizedForStreaming struct { + OptimizedForStreaming1 *OptimizedForStreaming1 `queryParam:"inline"` + Boolean *bool `queryParam:"inline"` + + Type GetMediaMetaDataOptimizedForStreamingType +} + +func CreateGetMediaMetaDataOptimizedForStreamingOptimizedForStreaming1(optimizedForStreaming1 OptimizedForStreaming1) GetMediaMetaDataOptimizedForStreaming { + typ := GetMediaMetaDataOptimizedForStreamingTypeOptimizedForStreaming1 + + return GetMediaMetaDataOptimizedForStreaming{ + OptimizedForStreaming1: &optimizedForStreaming1, + Type: typ, + } +} + +func CreateGetMediaMetaDataOptimizedForStreamingBoolean(boolean bool) GetMediaMetaDataOptimizedForStreaming { + typ := GetMediaMetaDataOptimizedForStreamingTypeBoolean + + return GetMediaMetaDataOptimizedForStreaming{ + Boolean: &boolean, + Type: typ, + } +} + +func (u *GetMediaMetaDataOptimizedForStreaming) UnmarshalJSON(data []byte) error { + + var optimizedForStreaming1 OptimizedForStreaming1 = OptimizedForStreaming1(0) + if err := utils.UnmarshalJSON(data, &optimizedForStreaming1, "", true, true); err == nil { + u.OptimizedForStreaming1 = &optimizedForStreaming1 + u.Type = GetMediaMetaDataOptimizedForStreamingTypeOptimizedForStreaming1 + return nil + } + + var boolean bool = false + if err := utils.UnmarshalJSON(data, &boolean, "", true, true); err == nil { + u.Boolean = &boolean + u.Type = GetMediaMetaDataOptimizedForStreamingTypeBoolean + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for GetMediaMetaDataOptimizedForStreaming", string(data)) +} + +func (u GetMediaMetaDataOptimizedForStreaming) MarshalJSON() ([]byte, error) { + if u.OptimizedForStreaming1 != nil { + return utils.MarshalJSON(u.OptimizedForStreaming1, "", true) + } + + if u.Boolean != nil { + return utils.MarshalJSON(u.Boolean, "", true) + } + + return nil, errors.New("could not marshal union type GetMediaMetaDataOptimizedForStreaming: all fields are null") +} + +type GetMediaMetaDataOptimizedForStreaming1 int + +const ( + GetMediaMetaDataOptimizedForStreaming1Zero GetMediaMetaDataOptimizedForStreaming1 = 0 + GetMediaMetaDataOptimizedForStreaming1One GetMediaMetaDataOptimizedForStreaming1 = 1 +) + +func (e GetMediaMetaDataOptimizedForStreaming1) ToPointer() *GetMediaMetaDataOptimizedForStreaming1 { + return &e +} +func (e *GetMediaMetaDataOptimizedForStreaming1) UnmarshalJSON(data []byte) error { + var v int + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case 0: + fallthrough + case 1: + *e = GetMediaMetaDataOptimizedForStreaming1(v) + return nil + default: + return fmt.Errorf("invalid value for GetMediaMetaDataOptimizedForStreaming1: %v", v) + } +} + +type GetMediaMetaDataLibraryOptimizedForStreamingType string + +const ( + GetMediaMetaDataLibraryOptimizedForStreamingTypeGetMediaMetaDataOptimizedForStreaming1 GetMediaMetaDataLibraryOptimizedForStreamingType = "get-media-meta-data_optimizedForStreaming_1" + GetMediaMetaDataLibraryOptimizedForStreamingTypeBoolean GetMediaMetaDataLibraryOptimizedForStreamingType = "boolean" +) + +// GetMediaMetaDataLibraryOptimizedForStreaming - Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true +type GetMediaMetaDataLibraryOptimizedForStreaming struct { + GetMediaMetaDataOptimizedForStreaming1 *GetMediaMetaDataOptimizedForStreaming1 `queryParam:"inline"` + Boolean *bool `queryParam:"inline"` + + Type GetMediaMetaDataLibraryOptimizedForStreamingType +} + +func CreateGetMediaMetaDataLibraryOptimizedForStreamingGetMediaMetaDataOptimizedForStreaming1(getMediaMetaDataOptimizedForStreaming1 GetMediaMetaDataOptimizedForStreaming1) GetMediaMetaDataLibraryOptimizedForStreaming { + typ := GetMediaMetaDataLibraryOptimizedForStreamingTypeGetMediaMetaDataOptimizedForStreaming1 + + return GetMediaMetaDataLibraryOptimizedForStreaming{ + GetMediaMetaDataOptimizedForStreaming1: &getMediaMetaDataOptimizedForStreaming1, + Type: typ, + } +} + +func CreateGetMediaMetaDataLibraryOptimizedForStreamingBoolean(boolean bool) GetMediaMetaDataLibraryOptimizedForStreaming { + typ := GetMediaMetaDataLibraryOptimizedForStreamingTypeBoolean + + return GetMediaMetaDataLibraryOptimizedForStreaming{ + Boolean: &boolean, + Type: typ, + } +} + +func (u *GetMediaMetaDataLibraryOptimizedForStreaming) UnmarshalJSON(data []byte) error { + + var getMediaMetaDataOptimizedForStreaming1 GetMediaMetaDataOptimizedForStreaming1 = GetMediaMetaDataOptimizedForStreaming1(0) + if err := utils.UnmarshalJSON(data, &getMediaMetaDataOptimizedForStreaming1, "", true, true); err == nil { + u.GetMediaMetaDataOptimizedForStreaming1 = &getMediaMetaDataOptimizedForStreaming1 + u.Type = GetMediaMetaDataLibraryOptimizedForStreamingTypeGetMediaMetaDataOptimizedForStreaming1 + return nil + } + + var boolean bool = false + if err := utils.UnmarshalJSON(data, &boolean, "", true, true); err == nil { + u.Boolean = &boolean + u.Type = GetMediaMetaDataLibraryOptimizedForStreamingTypeBoolean + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for GetMediaMetaDataLibraryOptimizedForStreaming", string(data)) +} + +func (u GetMediaMetaDataLibraryOptimizedForStreaming) MarshalJSON() ([]byte, error) { + if u.GetMediaMetaDataOptimizedForStreaming1 != nil { + return utils.MarshalJSON(u.GetMediaMetaDataOptimizedForStreaming1, "", true) + } + + if u.Boolean != nil { + return utils.MarshalJSON(u.Boolean, "", true) + } + + return nil, errors.New("could not marshal union type GetMediaMetaDataLibraryOptimizedForStreaming: all fields are null") +} + +// GetMediaMetaDataHasThumbnail - Indicates if the part has a thumbnail. +type GetMediaMetaDataHasThumbnail string + +const ( + GetMediaMetaDataHasThumbnailFalse GetMediaMetaDataHasThumbnail = "0" + GetMediaMetaDataHasThumbnailTrue GetMediaMetaDataHasThumbnail = "1" +) + +func (e GetMediaMetaDataHasThumbnail) ToPointer() *GetMediaMetaDataHasThumbnail { + return &e +} +func (e *GetMediaMetaDataHasThumbnail) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "0": + fallthrough + case "1": + *e = GetMediaMetaDataHasThumbnail(v) + return nil + default: + return fmt.Errorf("invalid value for GetMediaMetaDataHasThumbnail: %v", v) + } +} + type GetMediaMetaDataStream struct { // Unique stream identifier. ID int64 `json:"id"` // Stream type (1=video, 2=audio, 3=subtitle). - StreamType int64 `json:"streamType"` + StreamType int `json:"streamType"` // Indicates if this stream is default. Default *bool `json:"default,omitempty"` // Codec used by the stream. Codec string `json:"codec"` // Index of the stream. - Index int64 `json:"index"` + Index int `json:"index"` // Bitrate of the stream. - Bitrate int64 `json:"bitrate"` + Bitrate *int `json:"bitrate,omitempty"` // Language of the stream. Language string `json:"language"` // Language tag (e.g., en). LanguageTag string `json:"languageTag"` // ISO language code. LanguageCode string `json:"languageCode"` + // Indicates whether header compression is enabled. + HeaderCompression *bool `json:"headerCompression,omitempty"` // Dolby Vision BL compatibility ID. - DOVIBLCompatID *int64 `json:"DOVIBLCompatID,omitempty"` + DOVIBLCompatID *int `json:"DOVIBLCompatID,omitempty"` // Indicates if Dolby Vision BL is present. DOVIBLPresent *bool `json:"DOVIBLPresent,omitempty"` // Indicates if Dolby Vision EL is present. DOVIELPresent *bool `json:"DOVIELPresent,omitempty"` // Dolby Vision level. - DOVILevel *int64 `json:"DOVILevel,omitempty"` + DOVILevel *int `json:"DOVILevel,omitempty"` // Indicates if Dolby Vision is present. DOVIPresent *bool `json:"DOVIPresent,omitempty"` // Dolby Vision profile. - DOVIProfile *int64 `json:"DOVIProfile,omitempty"` + DOVIProfile *int `json:"DOVIProfile,omitempty"` // Indicates if Dolby Vision RPU is present. DOVIRPUPresent *bool `json:"DOVIRPUPresent,omitempty"` // Dolby Vision version. DOVIVersion *string `json:"DOVIVersion,omitempty"` // Bit depth of the video stream. - BitDepth *int64 `json:"bitDepth,omitempty"` + BitDepth *int `json:"bitDepth,omitempty"` // Chroma sample location. ChromaLocation *string `json:"chromaLocation,omitempty"` // Chroma subsampling format. ChromaSubsampling *string `json:"chromaSubsampling,omitempty"` // Coded video height. - CodedHeight *int64 `json:"codedHeight,omitempty"` + CodedHeight *int `json:"codedHeight,omitempty"` // Coded video width. - CodedWidth *int64 `json:"codedWidth,omitempty"` + CodedWidth *int `json:"codedWidth,omitempty"` // Color primaries used. ColorPrimaries *string `json:"colorPrimaries,omitempty"` // Color range (e.g., tv). @@ -193,9 +405,9 @@ type GetMediaMetaDataStream struct { // Frame rate of the stream. FrameRate *float32 `json:"frameRate,omitempty"` // Height of the video stream. - Height *int64 `json:"height,omitempty"` + Height *int `json:"height,omitempty"` // Video level. - Level *int64 `json:"level,omitempty"` + Level *int `json:"level,omitempty"` // Indicates if this is the original stream. Original *bool `json:"original,omitempty"` HasScalingMatrix *bool `json:"hasScalingMatrix,omitempty"` @@ -203,9 +415,9 @@ type GetMediaMetaDataStream struct { Profile *string `json:"profile,omitempty"` ScanType *string `json:"scanType,omitempty"` // Number of reference frames. - RefFrames *int64 `json:"refFrames,omitempty"` + RefFrames *int `json:"refFrames,omitempty"` // Width of the video stream. - Width *int64 `json:"width,omitempty"` + Width *int `json:"width,omitempty"` // Display title for the stream. DisplayTitle string `json:"displayTitle"` // Extended display title for the stream. @@ -214,11 +426,11 @@ type GetMediaMetaDataStream struct { Selected *bool `json:"selected,omitempty"` Forced *bool `json:"forced,omitempty"` // Number of audio channels (for audio streams). - Channels *int64 `json:"channels,omitempty"` + Channels *int `json:"channels,omitempty"` // Audio channel layout. AudioChannelLayout *string `json:"audioChannelLayout,omitempty"` // Sampling rate for the audio stream. - SamplingRate *int64 `json:"samplingRate,omitempty"` + SamplingRate *int `json:"samplingRate,omitempty"` // Indicates if the stream can auto-sync. CanAutoSync *bool `json:"canAutoSync,omitempty"` // Indicates if the stream is for the hearing impaired. @@ -236,7 +448,7 @@ func (o *GetMediaMetaDataStream) GetID() int64 { return o.ID } -func (o *GetMediaMetaDataStream) GetStreamType() int64 { +func (o *GetMediaMetaDataStream) GetStreamType() int { if o == nil { return 0 } @@ -257,16 +469,16 @@ func (o *GetMediaMetaDataStream) GetCodec() string { return o.Codec } -func (o *GetMediaMetaDataStream) GetIndex() int64 { +func (o *GetMediaMetaDataStream) GetIndex() int { if o == nil { return 0 } return o.Index } -func (o *GetMediaMetaDataStream) GetBitrate() int64 { +func (o *GetMediaMetaDataStream) GetBitrate() *int { if o == nil { - return 0 + return nil } return o.Bitrate } @@ -292,7 +504,14 @@ func (o *GetMediaMetaDataStream) GetLanguageCode() string { return o.LanguageCode } -func (o *GetMediaMetaDataStream) GetDOVIBLCompatID() *int64 { +func (o *GetMediaMetaDataStream) GetHeaderCompression() *bool { + if o == nil { + return nil + } + return o.HeaderCompression +} + +func (o *GetMediaMetaDataStream) GetDOVIBLCompatID() *int { if o == nil { return nil } @@ -313,7 +532,7 @@ func (o *GetMediaMetaDataStream) GetDOVIELPresent() *bool { return o.DOVIELPresent } -func (o *GetMediaMetaDataStream) GetDOVILevel() *int64 { +func (o *GetMediaMetaDataStream) GetDOVILevel() *int { if o == nil { return nil } @@ -327,7 +546,7 @@ func (o *GetMediaMetaDataStream) GetDOVIPresent() *bool { return o.DOVIPresent } -func (o *GetMediaMetaDataStream) GetDOVIProfile() *int64 { +func (o *GetMediaMetaDataStream) GetDOVIProfile() *int { if o == nil { return nil } @@ -348,7 +567,7 @@ func (o *GetMediaMetaDataStream) GetDOVIVersion() *string { return o.DOVIVersion } -func (o *GetMediaMetaDataStream) GetBitDepth() *int64 { +func (o *GetMediaMetaDataStream) GetBitDepth() *int { if o == nil { return nil } @@ -369,14 +588,14 @@ func (o *GetMediaMetaDataStream) GetChromaSubsampling() *string { return o.ChromaSubsampling } -func (o *GetMediaMetaDataStream) GetCodedHeight() *int64 { +func (o *GetMediaMetaDataStream) GetCodedHeight() *int { if o == nil { return nil } return o.CodedHeight } -func (o *GetMediaMetaDataStream) GetCodedWidth() *int64 { +func (o *GetMediaMetaDataStream) GetCodedWidth() *int { if o == nil { return nil } @@ -418,14 +637,14 @@ func (o *GetMediaMetaDataStream) GetFrameRate() *float32 { return o.FrameRate } -func (o *GetMediaMetaDataStream) GetHeight() *int64 { +func (o *GetMediaMetaDataStream) GetHeight() *int { if o == nil { return nil } return o.Height } -func (o *GetMediaMetaDataStream) GetLevel() *int64 { +func (o *GetMediaMetaDataStream) GetLevel() *int { if o == nil { return nil } @@ -460,14 +679,14 @@ func (o *GetMediaMetaDataStream) GetScanType() *string { return o.ScanType } -func (o *GetMediaMetaDataStream) GetRefFrames() *int64 { +func (o *GetMediaMetaDataStream) GetRefFrames() *int { if o == nil { return nil } return o.RefFrames } -func (o *GetMediaMetaDataStream) GetWidth() *int64 { +func (o *GetMediaMetaDataStream) GetWidth() *int { if o == nil { return nil } @@ -502,7 +721,7 @@ func (o *GetMediaMetaDataStream) GetForced() *bool { return o.Forced } -func (o *GetMediaMetaDataStream) GetChannels() *int64 { +func (o *GetMediaMetaDataStream) GetChannels() *int { if o == nil { return nil } @@ -516,7 +735,7 @@ func (o *GetMediaMetaDataStream) GetAudioChannelLayout() *string { return o.AudioChannelLayout } -func (o *GetMediaMetaDataStream) GetSamplingRate() *int64 { +func (o *GetMediaMetaDataStream) GetSamplingRate() *int { if o == nil { return nil } @@ -562,17 +781,35 @@ type GetMediaMetaDataPart struct { Key string `json:"key"` Indexes *string `json:"indexes,omitempty"` // Duration of the part in milliseconds. - Duration int64 `json:"duration"` + Duration *int `json:"duration,omitempty"` // File path for the part. File string `json:"file"` // File size in bytes. - Size int64 `json:"size"` + Size int64 `json:"size"` + PacketLength *int `json:"packetLength,omitempty"` // Container format of the part. - Container string `json:"container"` + Container *string `json:"container,omitempty"` // Video profile for the part. - VideoProfile string `json:"videoProfile"` + VideoProfile *string `json:"videoProfile,omitempty"` + // The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + AudioProfile *string `json:"audioProfile,omitempty"` + Has64bitOffsets *bool `json:"has64bitOffsets,omitempty"` + // Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + OptimizedForStreaming *GetMediaMetaDataLibraryOptimizedForStreaming `json:"optimizedForStreaming,omitempty"` + HasThumbnail *GetMediaMetaDataHasThumbnail `default:"0" json:"hasThumbnail"` // An array of streams for this part. - Stream []GetMediaMetaDataStream `json:"Stream"` + Stream []GetMediaMetaDataStream `json:"Stream,omitempty"` +} + +func (g GetMediaMetaDataPart) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(g, "", false) +} + +func (g *GetMediaMetaDataPart) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &g, "", false, false); err != nil { + return err + } + return nil } func (o *GetMediaMetaDataPart) GetAccessible() *bool { @@ -610,9 +847,9 @@ func (o *GetMediaMetaDataPart) GetIndexes() *string { return o.Indexes } -func (o *GetMediaMetaDataPart) GetDuration() int64 { +func (o *GetMediaMetaDataPart) GetDuration() *int { if o == nil { - return 0 + return nil } return o.Duration } @@ -631,23 +868,58 @@ func (o *GetMediaMetaDataPart) GetSize() int64 { return o.Size } -func (o *GetMediaMetaDataPart) GetContainer() string { +func (o *GetMediaMetaDataPart) GetPacketLength() *int { if o == nil { - return "" + return nil + } + return o.PacketLength +} + +func (o *GetMediaMetaDataPart) GetContainer() *string { + if o == nil { + return nil } return o.Container } -func (o *GetMediaMetaDataPart) GetVideoProfile() string { +func (o *GetMediaMetaDataPart) GetVideoProfile() *string { if o == nil { - return "" + return nil } return o.VideoProfile } +func (o *GetMediaMetaDataPart) GetAudioProfile() *string { + if o == nil { + return nil + } + return o.AudioProfile +} + +func (o *GetMediaMetaDataPart) GetHas64bitOffsets() *bool { + if o == nil { + return nil + } + return o.Has64bitOffsets +} + +func (o *GetMediaMetaDataPart) GetOptimizedForStreaming() *GetMediaMetaDataLibraryOptimizedForStreaming { + if o == nil { + return nil + } + return o.OptimizedForStreaming +} + +func (o *GetMediaMetaDataPart) GetHasThumbnail() *GetMediaMetaDataHasThumbnail { + if o == nil { + return nil + } + return o.HasThumbnail +} + func (o *GetMediaMetaDataPart) GetStream() []GetMediaMetaDataStream { if o == nil { - return []GetMediaMetaDataStream{} + return nil } return o.Stream } @@ -656,31 +928,38 @@ type GetMediaMetaDataMedia struct { // Unique media identifier. ID int64 `json:"id"` // Duration of the media in milliseconds. - Duration int64 `json:"duration"` + Duration *int `json:"duration,omitempty"` // Bitrate in bits per second. - Bitrate int64 `json:"bitrate"` + Bitrate *int `json:"bitrate,omitempty"` // Video width in pixels. - Width int64 `json:"width"` + Width *int `json:"width,omitempty"` // Video height in pixels. - Height int64 `json:"height"` + Height *int `json:"height,omitempty"` // Aspect ratio of the video. - AspectRatio float32 `json:"aspectRatio"` + AspectRatio *float32 `json:"aspectRatio,omitempty"` // Number of audio channels. - AudioChannels int64 `json:"audioChannels"` + AudioChannels *int `json:"audioChannels,omitempty"` + DisplayOffset *int `json:"displayOffset,omitempty"` // Audio codec used. - AudioCodec string `json:"audioCodec"` + AudioCodec *string `json:"audioCodec,omitempty"` // Video codec used. - VideoCodec string `json:"videoCodec"` + VideoCodec *string `json:"videoCodec,omitempty"` // Video resolution (e.g., 4k). - VideoResolution string `json:"videoResolution"` + VideoResolution *string `json:"videoResolution,omitempty"` // File container type. - Container string `json:"container"` - // Frame rate of the video (e.g., 24p). - VideoFrameRate string `json:"videoFrameRate"` + Container *string `json:"container,omitempty"` + // Frame rate of the video. Values found include NTSC, PAL, 24p + // + VideoFrameRate *string `json:"videoFrameRate,omitempty"` // Video profile (e.g., main 10). - VideoProfile string `json:"videoProfile"` + VideoProfile *string `json:"videoProfile,omitempty"` // Indicates whether voice activity is detected. HasVoiceActivity bool `json:"hasVoiceActivity"` + // The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + AudioProfile *string `json:"audioProfile,omitempty"` + // Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + OptimizedForStreaming *GetMediaMetaDataOptimizedForStreaming `json:"optimizedForStreaming,omitempty"` + Has64bitOffsets *bool `json:"has64bitOffsets,omitempty"` // An array of parts for this media item. Part []GetMediaMetaDataPart `json:"Part"` } @@ -692,86 +971,93 @@ func (o *GetMediaMetaDataMedia) GetID() int64 { return o.ID } -func (o *GetMediaMetaDataMedia) GetDuration() int64 { +func (o *GetMediaMetaDataMedia) GetDuration() *int { if o == nil { - return 0 + return nil } return o.Duration } -func (o *GetMediaMetaDataMedia) GetBitrate() int64 { +func (o *GetMediaMetaDataMedia) GetBitrate() *int { if o == nil { - return 0 + return nil } return o.Bitrate } -func (o *GetMediaMetaDataMedia) GetWidth() int64 { +func (o *GetMediaMetaDataMedia) GetWidth() *int { if o == nil { - return 0 + return nil } return o.Width } -func (o *GetMediaMetaDataMedia) GetHeight() int64 { +func (o *GetMediaMetaDataMedia) GetHeight() *int { if o == nil { - return 0 + return nil } return o.Height } -func (o *GetMediaMetaDataMedia) GetAspectRatio() float32 { +func (o *GetMediaMetaDataMedia) GetAspectRatio() *float32 { if o == nil { - return 0.0 + return nil } return o.AspectRatio } -func (o *GetMediaMetaDataMedia) GetAudioChannels() int64 { +func (o *GetMediaMetaDataMedia) GetAudioChannels() *int { if o == nil { - return 0 + return nil } return o.AudioChannels } -func (o *GetMediaMetaDataMedia) GetAudioCodec() string { +func (o *GetMediaMetaDataMedia) GetDisplayOffset() *int { if o == nil { - return "" + return nil + } + return o.DisplayOffset +} + +func (o *GetMediaMetaDataMedia) GetAudioCodec() *string { + if o == nil { + return nil } return o.AudioCodec } -func (o *GetMediaMetaDataMedia) GetVideoCodec() string { +func (o *GetMediaMetaDataMedia) GetVideoCodec() *string { if o == nil { - return "" + return nil } return o.VideoCodec } -func (o *GetMediaMetaDataMedia) GetVideoResolution() string { +func (o *GetMediaMetaDataMedia) GetVideoResolution() *string { if o == nil { - return "" + return nil } return o.VideoResolution } -func (o *GetMediaMetaDataMedia) GetContainer() string { +func (o *GetMediaMetaDataMedia) GetContainer() *string { if o == nil { - return "" + return nil } return o.Container } -func (o *GetMediaMetaDataMedia) GetVideoFrameRate() string { +func (o *GetMediaMetaDataMedia) GetVideoFrameRate() *string { if o == nil { - return "" + return nil } return o.VideoFrameRate } -func (o *GetMediaMetaDataMedia) GetVideoProfile() string { +func (o *GetMediaMetaDataMedia) GetVideoProfile() *string { if o == nil { - return "" + return nil } return o.VideoProfile } @@ -783,6 +1069,27 @@ func (o *GetMediaMetaDataMedia) GetHasVoiceActivity() bool { return o.HasVoiceActivity } +func (o *GetMediaMetaDataMedia) GetAudioProfile() *string { + if o == nil { + return nil + } + return o.AudioProfile +} + +func (o *GetMediaMetaDataMedia) GetOptimizedForStreaming() *GetMediaMetaDataOptimizedForStreaming { + if o == nil { + return nil + } + return o.OptimizedForStreaming +} + +func (o *GetMediaMetaDataMedia) GetHas64bitOffsets() *bool { + if o == nil { + return nil + } + return o.Has64bitOffsets +} + func (o *GetMediaMetaDataMedia) GetPart() []GetMediaMetaDataPart { if o == nil { return []GetMediaMetaDataPart{} @@ -891,14 +1198,14 @@ func (o *GetMediaMetaDataGenre) GetTag() string { type GetMediaMetaDataCountry struct { // The unique country identifier. - ID int64 `json:"id"` + ID int `json:"id"` // The filter string for the country. Filter string `json:"filter"` // The country name. Tag string `json:"tag"` } -func (o *GetMediaMetaDataCountry) GetID() int64 { +func (o *GetMediaMetaDataCountry) GetID() int { if o == nil { return 0 } @@ -919,19 +1226,19 @@ func (o *GetMediaMetaDataCountry) GetTag() string { return o.Tag } -type Guids struct { +type GetMediaMetaDataGuids struct { // The GUID value. ID string `json:"id"` } -func (o *Guids) GetID() string { +func (o *GetMediaMetaDataGuids) GetID() string { if o == nil { return "" } return o.ID } -type Rating struct { +type Ratings struct { // The image or reference for the rating. Image string `json:"image"` // The rating value. @@ -940,21 +1247,21 @@ type Rating struct { Type string `json:"type"` } -func (o *Rating) GetImage() string { +func (o *Ratings) GetImage() string { if o == nil { return "" } return o.Image } -func (o *Rating) GetValue() float32 { +func (o *Ratings) GetValue() float32 { if o == nil { return 0.0 } return o.Value } -func (o *Rating) GetType() string { +func (o *Ratings) GetType() string { if o == nil { return "" } @@ -1269,7 +1576,7 @@ type GetMediaMetaDataMetadata struct { // The key of the library section. LibrarySectionKey string `json:"librarySectionKey"` // The content rating (e.g., TV-MA). - ContentRating string `json:"contentRating"` + ContentRating *string `json:"contentRating,omitempty"` // A summary of the content. Summary string `json:"summary"` // The index or order of the item. @@ -1279,7 +1586,7 @@ type GetMediaMetaDataMetadata struct { // The title of the parent entity (typically the season's title). ParentTitle *string `json:"parentTitle,omitempty"` // The audience rating for the content. - AudienceRating float32 `json:"audienceRating"` + AudienceRating *float32 `json:"audienceRating,omitempty"` // The number of times the item has been viewed. ViewCount *int64 `json:"viewCount,omitempty"` // The number of times the item has been skipped. @@ -1287,7 +1594,11 @@ type GetMediaMetaDataMetadata struct { // Unix timestamp of when the item was last viewed. LastViewedAt *int64 `json:"lastViewedAt,omitempty"` // The release year. - Year int64 `json:"year"` + Year int `json:"year"` + // The general rating + Rating *float32 `json:"rating,omitempty"` + // The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image). + RatingImage *string `json:"ratingImage,omitempty"` // The tagline of the content. Tagline *string `json:"tagline,omitempty"` ChapterSource *string `json:"chapterSource,omitempty"` @@ -1299,21 +1610,19 @@ type GetMediaMetaDataMetadata struct { // URL of the theme image. Theme *string `json:"theme,omitempty"` // Duration of the content in milliseconds. - Duration int64 `json:"duration"` + Duration int `json:"duration"` // The original release date. - OriginallyAvailableAt types.Date `json:"originallyAvailableAt"` + OriginallyAvailableAt *types.Date `json:"originallyAvailableAt,omitempty"` // The total number of episodes (or leaves). LeafCount *int64 `json:"leafCount,omitempty"` // The number of episodes that have been viewed. ViewedLeafCount *int64 `json:"viewedLeafCount,omitempty"` // The number of child items. - ChildCount *int64 `json:"childCount,omitempty"` - // Unix timestamp when the item was added. - AddedAt int64 `json:"addedAt"` - // Unix timestamp when the item was last updated. - UpdatedAt int64 `json:"updatedAt"` + ChildCount *int `json:"childCount,omitempty"` + AddedAt int64 `json:"addedAt"` + UpdatedAt int64 `json:"updatedAt"` // The URL for the audience rating image. - AudienceRatingImage string `json:"audienceRatingImage"` + AudienceRatingImage *string `json:"audienceRatingImage,omitempty"` // The index number of the parent entity, which could indicate its order or position. ParentIndex *int64 `json:"parentIndex,omitempty"` // The URL of the parent's thumbnail image. @@ -1331,9 +1640,9 @@ type GetMediaMetaDataMetadata struct { // An array of country tags. Country []GetMediaMetaDataCountry `json:"Country,omitempty"` // An array of GUID objects. - Guids []Guids `json:"Guid"` + Guids []GetMediaMetaDataGuids `json:"Guid,omitempty"` // An array of rating objects. - Rating []Rating `json:"Rating"` + Ratings []Ratings `json:"Rating,omitempty"` // An array of Actor roles. Role []GetMediaMetaDataRole `json:"Role,omitempty"` // An array of Director roles. @@ -1485,9 +1794,9 @@ func (o *GetMediaMetaDataMetadata) GetLibrarySectionKey() string { return o.LibrarySectionKey } -func (o *GetMediaMetaDataMetadata) GetContentRating() string { +func (o *GetMediaMetaDataMetadata) GetContentRating() *string { if o == nil { - return "" + return nil } return o.ContentRating } @@ -1520,9 +1829,9 @@ func (o *GetMediaMetaDataMetadata) GetParentTitle() *string { return o.ParentTitle } -func (o *GetMediaMetaDataMetadata) GetAudienceRating() float32 { +func (o *GetMediaMetaDataMetadata) GetAudienceRating() *float32 { if o == nil { - return 0.0 + return nil } return o.AudienceRating } @@ -1548,13 +1857,27 @@ func (o *GetMediaMetaDataMetadata) GetLastViewedAt() *int64 { return o.LastViewedAt } -func (o *GetMediaMetaDataMetadata) GetYear() int64 { +func (o *GetMediaMetaDataMetadata) GetYear() int { if o == nil { return 0 } return o.Year } +func (o *GetMediaMetaDataMetadata) GetRating() *float32 { + if o == nil { + return nil + } + return o.Rating +} + +func (o *GetMediaMetaDataMetadata) GetRatingImage() *string { + if o == nil { + return nil + } + return o.RatingImage +} + func (o *GetMediaMetaDataMetadata) GetTagline() *string { if o == nil { return nil @@ -1597,16 +1920,16 @@ func (o *GetMediaMetaDataMetadata) GetTheme() *string { return o.Theme } -func (o *GetMediaMetaDataMetadata) GetDuration() int64 { +func (o *GetMediaMetaDataMetadata) GetDuration() int { if o == nil { return 0 } return o.Duration } -func (o *GetMediaMetaDataMetadata) GetOriginallyAvailableAt() types.Date { +func (o *GetMediaMetaDataMetadata) GetOriginallyAvailableAt() *types.Date { if o == nil { - return types.Date{} + return nil } return o.OriginallyAvailableAt } @@ -1625,7 +1948,7 @@ func (o *GetMediaMetaDataMetadata) GetViewedLeafCount() *int64 { return o.ViewedLeafCount } -func (o *GetMediaMetaDataMetadata) GetChildCount() *int64 { +func (o *GetMediaMetaDataMetadata) GetChildCount() *int { if o == nil { return nil } @@ -1646,9 +1969,9 @@ func (o *GetMediaMetaDataMetadata) GetUpdatedAt() int64 { return o.UpdatedAt } -func (o *GetMediaMetaDataMetadata) GetAudienceRatingImage() string { +func (o *GetMediaMetaDataMetadata) GetAudienceRatingImage() *string { if o == nil { - return "" + return nil } return o.AudienceRatingImage } @@ -1716,18 +2039,18 @@ func (o *GetMediaMetaDataMetadata) GetCountry() []GetMediaMetaDataCountry { return o.Country } -func (o *GetMediaMetaDataMetadata) GetGuids() []Guids { +func (o *GetMediaMetaDataMetadata) GetGuids() []GetMediaMetaDataGuids { if o == nil { - return []Guids{} + return nil } return o.Guids } -func (o *GetMediaMetaDataMetadata) GetRating() []Rating { +func (o *GetMediaMetaDataMetadata) GetRatings() []Ratings { if o == nil { - return []Rating{} + return nil } - return o.Rating + return o.Ratings } func (o *GetMediaMetaDataMetadata) GetRole() []GetMediaMetaDataRole { @@ -1773,7 +2096,8 @@ func (o *GetMediaMetaDataMetadata) GetLocation() []GetMediaMetaDataLocation { } type GetMediaMetaDataMediaContainer struct { - Size float64 `json:"size"` + // Number of media items returned in this response. + Size int `json:"size"` // Indicates whether syncing is allowed. AllowSync bool `json:"allowSync"` // An plugin identifier for the media container. @@ -1792,9 +2116,9 @@ type GetMediaMetaDataMediaContainer struct { Metadata []GetMediaMetaDataMetadata `json:"Metadata"` } -func (o *GetMediaMetaDataMediaContainer) GetSize() float64 { +func (o *GetMediaMetaDataMediaContainer) GetSize() int { if o == nil { - return 0.0 + return 0 } return o.Size } diff --git a/models/operations/getrecentlyadded.go b/models/operations/getrecentlyadded.go index dc9f5d4..d98152e 100644 --- a/models/operations/getrecentlyadded.go +++ b/models/operations/getrecentlyadded.go @@ -180,6 +180,7 @@ type GetRecentlyAddedFilter struct { Key string `json:"key"` Title string `json:"title"` Type string `json:"type"` + Advanced *bool `json:"advanced,omitempty"` } func (o *GetRecentlyAddedFilter) GetFilter() string { @@ -217,6 +218,13 @@ func (o *GetRecentlyAddedFilter) GetType() string { return o.Type } +func (o *GetRecentlyAddedFilter) GetAdvanced() *bool { + if o == nil { + return nil + } + return o.Advanced +} + // GetRecentlyAddedActiveDirection - The direction of the sort. Can be either `asc` or `desc`. type GetRecentlyAddedActiveDirection string @@ -389,13 +397,14 @@ func (o *GetRecentlyAddedField) GetSubType() *string { } type GetRecentlyAddedType struct { - Key string `json:"key"` - Type string `json:"type"` - Title string `json:"title"` - Active bool `json:"active"` - Filter []GetRecentlyAddedFilter `json:"Filter,omitempty"` - Sort []GetRecentlyAddedSort `json:"Sort,omitempty"` - Field []GetRecentlyAddedField `json:"Field,omitempty"` + Key string `json:"key"` + Type string `json:"type"` + Subtype *string `json:"subtype,omitempty"` + Title string `json:"title"` + Active bool `json:"active"` + Filter []GetRecentlyAddedFilter `json:"Filter,omitempty"` + Sort []GetRecentlyAddedSort `json:"Sort,omitempty"` + Field []GetRecentlyAddedField `json:"Field,omitempty"` } func (o *GetRecentlyAddedType) GetKey() string { @@ -412,6 +421,13 @@ func (o *GetRecentlyAddedType) GetType() string { return o.Type } +func (o *GetRecentlyAddedType) GetSubtype() *string { + if o == nil { + return nil + } + return o.Subtype +} + func (o *GetRecentlyAddedType) GetTitle() string { if o == nil { return "" @@ -513,6 +529,8 @@ const ( GetRecentlyAddedHubsTypeTvShow GetRecentlyAddedHubsType = "show" GetRecentlyAddedHubsTypeSeason GetRecentlyAddedHubsType = "season" GetRecentlyAddedHubsTypeEpisode GetRecentlyAddedHubsType = "episode" + GetRecentlyAddedHubsTypeArtist GetRecentlyAddedHubsType = "artist" + GetRecentlyAddedHubsTypeAlbum GetRecentlyAddedHubsType = "album" ) func (e GetRecentlyAddedHubsType) ToPointer() *GetRecentlyAddedHubsType { @@ -531,6 +549,10 @@ func (e *GetRecentlyAddedHubsType) UnmarshalJSON(data []byte) error { case "season": fallthrough case "episode": + fallthrough + case "artist": + fallthrough + case "album": *e = GetRecentlyAddedHubsType(v) return nil default: @@ -2244,7 +2266,7 @@ func (o *GetRecentlyAddedMetadata) GetParentTheme() *string { } type GetRecentlyAddedMediaContainer struct { - Size float64 `json:"size"` + Size int64 `json:"size"` Offset *int `json:"offset,omitempty"` TotalSize *int `json:"totalSize,omitempty"` Identifier *string `json:"identifier,omitempty"` @@ -2255,9 +2277,9 @@ type GetRecentlyAddedMediaContainer struct { Metadata []GetRecentlyAddedMetadata `json:"Metadata,omitempty"` } -func (o *GetRecentlyAddedMediaContainer) GetSize() float64 { +func (o *GetRecentlyAddedMediaContainer) GetSize() int64 { if o == nil { - return 0.0 + return 0 } return o.Size } diff --git a/models/operations/getrecentlyaddedlibrary.go b/models/operations/getrecentlyaddedlibrary.go index 08b2a72..7201707 100644 --- a/models/operations/getrecentlyaddedlibrary.go +++ b/models/operations/getrecentlyaddedlibrary.go @@ -178,6 +178,7 @@ type GetRecentlyAddedLibraryFilter struct { Key string `json:"key"` Title string `json:"title"` Type string `json:"type"` + Advanced *bool `json:"advanced,omitempty"` } func (o *GetRecentlyAddedLibraryFilter) GetFilter() string { @@ -215,6 +216,13 @@ func (o *GetRecentlyAddedLibraryFilter) GetType() string { return o.Type } +func (o *GetRecentlyAddedLibraryFilter) GetAdvanced() *bool { + if o == nil { + return nil + } + return o.Advanced +} + // ActiveDirection - The direction of the sort. Can be either `asc` or `desc`. type ActiveDirection string @@ -387,13 +395,14 @@ func (o *Field) GetSubType() *string { } type GetRecentlyAddedLibraryType struct { - Key string `json:"key"` - Type string `json:"type"` - Title string `json:"title"` - Active bool `json:"active"` - Filter []GetRecentlyAddedLibraryFilter `json:"Filter,omitempty"` - Sort []Sort `json:"Sort,omitempty"` - Field []Field `json:"Field,omitempty"` + Key string `json:"key"` + Type string `json:"type"` + Subtype *string `json:"subtype,omitempty"` + Title string `json:"title"` + Active bool `json:"active"` + Filter []GetRecentlyAddedLibraryFilter `json:"Filter,omitempty"` + Sort []Sort `json:"Sort,omitempty"` + Field []Field `json:"Field,omitempty"` } func (o *GetRecentlyAddedLibraryType) GetKey() string { @@ -410,6 +419,13 @@ func (o *GetRecentlyAddedLibraryType) GetType() string { return o.Type } +func (o *GetRecentlyAddedLibraryType) GetSubtype() *string { + if o == nil { + return nil + } + return o.Subtype +} + func (o *GetRecentlyAddedLibraryType) GetTitle() string { if o == nil { return "" diff --git a/models/operations/getsearchalllibraries.go b/models/operations/getsearchalllibraries.go index bdddbcb..5bd714c 100644 --- a/models/operations/getsearchalllibraries.go +++ b/models/operations/getsearchalllibraries.go @@ -45,18 +45,18 @@ func (e *SearchTypes) UnmarshalJSON(data []byte) error { } } -// QueryParamIncludeCollections - Whether to include collections in the search results. -type QueryParamIncludeCollections int +// GetSearchAllLibrariesQueryParamIncludeCollections - Whether to include collections in the search results. +type GetSearchAllLibrariesQueryParamIncludeCollections int const ( - QueryParamIncludeCollectionsDisable QueryParamIncludeCollections = 0 - QueryParamIncludeCollectionsEnable QueryParamIncludeCollections = 1 + GetSearchAllLibrariesQueryParamIncludeCollectionsDisable GetSearchAllLibrariesQueryParamIncludeCollections = 0 + GetSearchAllLibrariesQueryParamIncludeCollectionsEnable GetSearchAllLibrariesQueryParamIncludeCollections = 1 ) -func (e QueryParamIncludeCollections) ToPointer() *QueryParamIncludeCollections { +func (e GetSearchAllLibrariesQueryParamIncludeCollections) ToPointer() *GetSearchAllLibrariesQueryParamIncludeCollections { return &e } -func (e *QueryParamIncludeCollections) UnmarshalJSON(data []byte) error { +func (e *GetSearchAllLibrariesQueryParamIncludeCollections) UnmarshalJSON(data []byte) error { var v int if err := json.Unmarshal(data, &v); err != nil { return err @@ -65,25 +65,25 @@ func (e *QueryParamIncludeCollections) UnmarshalJSON(data []byte) error { case 0: fallthrough case 1: - *e = QueryParamIncludeCollections(v) + *e = GetSearchAllLibrariesQueryParamIncludeCollections(v) return nil default: - return fmt.Errorf("invalid value for QueryParamIncludeCollections: %v", v) + return fmt.Errorf("invalid value for GetSearchAllLibrariesQueryParamIncludeCollections: %v", v) } } -// QueryParamIncludeExternalMedia - Whether to include external media in the search results. -type QueryParamIncludeExternalMedia int +// GetSearchAllLibrariesQueryParamIncludeExternalMedia - Whether to include external media in the search results. +type GetSearchAllLibrariesQueryParamIncludeExternalMedia int const ( - QueryParamIncludeExternalMediaDisable QueryParamIncludeExternalMedia = 0 - QueryParamIncludeExternalMediaEnable QueryParamIncludeExternalMedia = 1 + GetSearchAllLibrariesQueryParamIncludeExternalMediaDisable GetSearchAllLibrariesQueryParamIncludeExternalMedia = 0 + GetSearchAllLibrariesQueryParamIncludeExternalMediaEnable GetSearchAllLibrariesQueryParamIncludeExternalMedia = 1 ) -func (e QueryParamIncludeExternalMedia) ToPointer() *QueryParamIncludeExternalMedia { +func (e GetSearchAllLibrariesQueryParamIncludeExternalMedia) ToPointer() *GetSearchAllLibrariesQueryParamIncludeExternalMedia { return &e } -func (e *QueryParamIncludeExternalMedia) UnmarshalJSON(data []byte) error { +func (e *GetSearchAllLibrariesQueryParamIncludeExternalMedia) UnmarshalJSON(data []byte) error { var v int if err := json.Unmarshal(data, &v); err != nil { return err @@ -92,10 +92,10 @@ func (e *QueryParamIncludeExternalMedia) UnmarshalJSON(data []byte) error { case 0: fallthrough case 1: - *e = QueryParamIncludeExternalMedia(v) + *e = GetSearchAllLibrariesQueryParamIncludeExternalMedia(v) return nil default: - return fmt.Errorf("invalid value for QueryParamIncludeExternalMedia: %v", v) + return fmt.Errorf("invalid value for GetSearchAllLibrariesQueryParamIncludeExternalMedia: %v", v) } } @@ -110,9 +110,9 @@ type GetSearchAllLibrariesRequest struct { // SearchTypes []SearchTypes `queryParam:"style=form,explode=false,name=searchTypes"` // Whether to include collections in the search results. - IncludeCollections *QueryParamIncludeCollections `default:"0" queryParam:"style=form,explode=true,name=includeCollections"` + IncludeCollections *GetSearchAllLibrariesQueryParamIncludeCollections `default:"0" queryParam:"style=form,explode=true,name=includeCollections"` // Whether to include external media in the search results. - IncludeExternalMedia *QueryParamIncludeExternalMedia `default:"0" queryParam:"style=form,explode=true,name=includeExternalMedia"` + IncludeExternalMedia *GetSearchAllLibrariesQueryParamIncludeExternalMedia `default:"0" queryParam:"style=form,explode=true,name=includeExternalMedia"` } func (g GetSearchAllLibrariesRequest) MarshalJSON() ([]byte, error) { @@ -154,14 +154,14 @@ func (o *GetSearchAllLibrariesRequest) GetSearchTypes() []SearchTypes { return o.SearchTypes } -func (o *GetSearchAllLibrariesRequest) GetIncludeCollections() *QueryParamIncludeCollections { +func (o *GetSearchAllLibrariesRequest) GetIncludeCollections() *GetSearchAllLibrariesQueryParamIncludeCollections { if o == nil { return nil } return o.IncludeCollections } -func (o *GetSearchAllLibrariesRequest) GetIncludeExternalMedia() *QueryParamIncludeExternalMedia { +func (o *GetSearchAllLibrariesRequest) GetIncludeExternalMedia() *GetSearchAllLibrariesQueryParamIncludeExternalMedia { if o == nil { return nil } @@ -176,6 +176,8 @@ const ( GetSearchAllLibrariesTypeTvShow GetSearchAllLibrariesType = "show" GetSearchAllLibrariesTypeSeason GetSearchAllLibrariesType = "season" GetSearchAllLibrariesTypeEpisode GetSearchAllLibrariesType = "episode" + GetSearchAllLibrariesTypeArtist GetSearchAllLibrariesType = "artist" + GetSearchAllLibrariesTypeAlbum GetSearchAllLibrariesType = "album" ) func (e GetSearchAllLibrariesType) ToPointer() *GetSearchAllLibrariesType { @@ -194,6 +196,10 @@ func (e *GetSearchAllLibrariesType) UnmarshalJSON(data []byte) error { case "season": fallthrough case "episode": + fallthrough + case "artist": + fallthrough + case "album": *e = GetSearchAllLibrariesType(v) return nil default: diff --git a/models/sdkerrors/getallmedialibrary.go b/models/sdkerrors/getallmedialibrary.go new file mode 100644 index 0000000..3896a7b --- /dev/null +++ b/models/sdkerrors/getallmedialibrary.go @@ -0,0 +1,90 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "net/http" +) + +type GetAllMediaLibraryLibraryErrors struct { + Code *int `json:"code,omitempty"` + Message *string `json:"message,omitempty"` + Status *int `json:"status,omitempty"` +} + +func (o *GetAllMediaLibraryLibraryErrors) GetCode() *int { + if o == nil { + return nil + } + return o.Code +} + +func (o *GetAllMediaLibraryLibraryErrors) GetMessage() *string { + if o == nil { + return nil + } + return o.Message +} + +func (o *GetAllMediaLibraryLibraryErrors) GetStatus() *int { + if o == nil { + return nil + } + return o.Status +} + +// GetAllMediaLibraryUnauthorized - Unauthorized - Returned if the X-Plex-Token is missing from the header or query. +type GetAllMediaLibraryUnauthorized struct { + Errors []GetAllMediaLibraryLibraryErrors `json:"errors,omitempty"` + // Raw HTTP response; suitable for custom response parsing + RawResponse *http.Response `json:"-"` +} + +var _ error = &GetAllMediaLibraryUnauthorized{} + +func (e *GetAllMediaLibraryUnauthorized) Error() string { + data, _ := json.Marshal(e) + return string(data) +} + +type GetAllMediaLibraryErrors struct { + Code *int `json:"code,omitempty"` + Message *string `json:"message,omitempty"` + Status *int `json:"status,omitempty"` +} + +func (o *GetAllMediaLibraryErrors) GetCode() *int { + if o == nil { + return nil + } + return o.Code +} + +func (o *GetAllMediaLibraryErrors) GetMessage() *string { + if o == nil { + return nil + } + return o.Message +} + +func (o *GetAllMediaLibraryErrors) GetStatus() *int { + if o == nil { + return nil + } + return o.Status +} + +// GetAllMediaLibraryBadRequest - Bad Request - A parameter was not specified, or was specified incorrectly. +type GetAllMediaLibraryBadRequest struct { + Errors []GetAllMediaLibraryErrors `json:"errors,omitempty"` + // Raw HTTP response; suitable for custom response parsing + RawResponse *http.Response `json:"-"` +} + +var _ error = &GetAllMediaLibraryBadRequest{} + +func (e *GetAllMediaLibraryBadRequest) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/plexapi.go b/plexapi.go index 211362c..e5f34d8 100644 --- a/plexapi.go +++ b/plexapi.go @@ -299,9 +299,9 @@ func New(opts ...SDKOption) *PlexAPI { sdkConfiguration: sdkConfiguration{ Language: "go", OpenAPIDocVersion: "0.0.3", - SDKVersion: "0.18.1", + SDKVersion: "0.19.0", GenVersion: "2.506.0", - UserAgent: "speakeasy-sdk/go 0.18.1 2.506.0 0.0.3 github.com/LukeHagar/plexgo", + UserAgent: "speakeasy-sdk/go 0.19.0 2.506.0 0.0.3 github.com/LukeHagar/plexgo", ServerDefaults: []map[string]string{ { "protocol": "https",