diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 3eef7f02..37afae65 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 16f22cbf-f23f-4419-8924-3a4b06381947 management: - docChecksum: 406db0d2227dc88ed9d449bb30b37091 + docChecksum: db70208972d147ac1e404cbc688f565d docVersion: 0.0.3 - speakeasyVersion: 1.487.0 + speakeasyVersion: 1.487.1 generationVersion: 2.506.0 - releaseVersion: 0.33.0 - configChecksum: b426017b55ad6e8489789b24a9365a67 + releaseVersion: 0.34.0 + configChecksum: ddd9eab813b869dba044072499dd8464 repoURL: https://github.com/LukeHagar/plexjs.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexjs @@ -34,6 +34,7 @@ features: responseFormat: 0.2.3 retries: 2.83.0 sdkHooks: 0.2.0 + unions: 2.85.8 generatedFiles: - .gitattributes - .npmignore @@ -86,6 +87,10 @@ generatedFiles: - docs/sdk/models/errors/getalllibrarieserrors.md - docs/sdk/models/errors/getalllibrarieslibraryerrors.md - docs/sdk/models/errors/getalllibrariesunauthorized.md + - docs/sdk/models/errors/getallmedialibrarybadrequest.md + - docs/sdk/models/errors/getallmedialibraryerrors.md + - docs/sdk/models/errors/getallmedialibrarylibraryerrors.md + - docs/sdk/models/errors/getallmedialibraryunauthorized.md - docs/sdk/models/errors/getavailableclientsbadrequest.md - docs/sdk/models/errors/getavailableclientserrors.md - docs/sdk/models/errors/getavailableclientsservererrors.md @@ -423,6 +428,39 @@ generatedFiles: - docs/sdk/models/operations/getalllibrariesmediacontainer.md - docs/sdk/models/operations/getalllibrariesresponse.md - docs/sdk/models/operations/getalllibrariesresponsebody.md + - docs/sdk/models/operations/getallmedialibraryactivedirection.md + - docs/sdk/models/operations/getallmedialibrarycollection.md + - docs/sdk/models/operations/getallmedialibrarycountry.md + - docs/sdk/models/operations/getallmedialibrarydefaultdirection.md + - docs/sdk/models/operations/getallmedialibrarydirector.md + - docs/sdk/models/operations/getallmedialibraryfield.md + - docs/sdk/models/operations/getallmedialibraryfieldtype.md + - docs/sdk/models/operations/getallmedialibraryfilter.md + - docs/sdk/models/operations/getallmedialibrarygenre.md + - docs/sdk/models/operations/getallmedialibraryhasthumbnail.md + - docs/sdk/models/operations/getallmedialibraryimage.md + - docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md + - docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md + - docs/sdk/models/operations/getallmedialibrarylibrarytype.md + - docs/sdk/models/operations/getallmedialibrarymedia.md + - docs/sdk/models/operations/getallmedialibrarymediacontainer.md + - docs/sdk/models/operations/getallmedialibrarymeta.md + - docs/sdk/models/operations/getallmedialibrarymetadata.md + - docs/sdk/models/operations/getallmedialibraryoperator.md + - docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md + - docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md + - docs/sdk/models/operations/getallmedialibrarypart.md + - docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md + - docs/sdk/models/operations/getallmedialibraryqueryparamtype.md + - docs/sdk/models/operations/getallmedialibraryrequest.md + - docs/sdk/models/operations/getallmedialibraryresponse.md + - docs/sdk/models/operations/getallmedialibraryresponsebody.md + - docs/sdk/models/operations/getallmedialibraryrole.md + - docs/sdk/models/operations/getallmedialibrarysort.md + - docs/sdk/models/operations/getallmedialibrarystream.md + - docs/sdk/models/operations/getallmedialibrarytype.md + - docs/sdk/models/operations/getallmedialibraryultrablurcolors.md + - docs/sdk/models/operations/getallmedialibrarywriter.md - docs/sdk/models/operations/getavailableclientsmediacontainer.md - docs/sdk/models/operations/getavailableclientsresponse.md - docs/sdk/models/operations/getavailableclientsresponsebody.md @@ -536,11 +574,16 @@ generatedFiles: - docs/sdk/models/operations/getmediametadatacountry.md - docs/sdk/models/operations/getmediametadatadirector.md - docs/sdk/models/operations/getmediametadatagenre.md + - docs/sdk/models/operations/getmediametadataguids.md + - docs/sdk/models/operations/getmediametadatahasthumbnail.md - docs/sdk/models/operations/getmediametadataimage.md + - docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md - docs/sdk/models/operations/getmediametadatalocation.md - docs/sdk/models/operations/getmediametadatamedia.md - docs/sdk/models/operations/getmediametadatamediacontainer.md - docs/sdk/models/operations/getmediametadatametadata.md + - docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md + - docs/sdk/models/operations/getmediametadataoptimizedforstreaming1.md - docs/sdk/models/operations/getmediametadatapart.md - docs/sdk/models/operations/getmediametadatarequest.md - docs/sdk/models/operations/getmediametadataresponse.md @@ -652,6 +695,8 @@ generatedFiles: - docs/sdk/models/operations/getsearchalllibrariesmetadatarating.md - docs/sdk/models/operations/getsearchalllibrariesoptimizedforstreaming.md - docs/sdk/models/operations/getsearchalllibrariespart.md + - docs/sdk/models/operations/getsearchalllibrariesqueryparamincludecollections.md + - docs/sdk/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md - docs/sdk/models/operations/getsearchalllibrariesrequest.md - docs/sdk/models/operations/getsearchalllibrariesresponse.md - docs/sdk/models/operations/getsearchalllibrariesresponsebody.md @@ -764,6 +809,7 @@ generatedFiles: - docs/sdk/models/operations/home.md - docs/sdk/models/operations/hub.md - docs/sdk/models/operations/image.md + - docs/sdk/models/operations/includeadvanced.md - docs/sdk/models/operations/includecollections.md - docs/sdk/models/operations/includedetails.md - docs/sdk/models/operations/includeexternalmedia.md @@ -794,9 +840,11 @@ generatedFiles: - docs/sdk/models/operations/metadatarating.md - docs/sdk/models/operations/minsize.md - docs/sdk/models/operations/myplex.md + - docs/sdk/models/operations/one.md - docs/sdk/models/operations/onlytransient.md - docs/sdk/models/operations/operator.md - docs/sdk/models/operations/optimizedforstreaming.md + - docs/sdk/models/operations/optimizedforstreaming1.md - docs/sdk/models/operations/owned.md - docs/sdk/models/operations/part.md - docs/sdk/models/operations/pastsubscription.md @@ -836,11 +884,12 @@ generatedFiles: - docs/sdk/models/operations/queryparamforce.md - docs/sdk/models/operations/queryparamincludecollections.md - docs/sdk/models/operations/queryparamincludeexternalmedia.md + - docs/sdk/models/operations/queryparamincludeguids.md - docs/sdk/models/operations/queryparamincludemeta.md - docs/sdk/models/operations/queryparamonlytransient.md - docs/sdk/models/operations/queryparamsmart.md - docs/sdk/models/operations/queryparamtype.md - - docs/sdk/models/operations/rating.md + - docs/sdk/models/operations/ratings.md - docs/sdk/models/operations/release.md - docs/sdk/models/operations/responsebody.md - docs/sdk/models/operations/restricted.md @@ -935,6 +984,7 @@ generatedFiles: - src/funcs/libraryDeleteLibrary.ts - src/funcs/libraryGetActorsLibrary.ts - src/funcs/libraryGetAllLibraries.ts + - src/funcs/libraryGetAllMediaLibrary.ts - src/funcs/libraryGetCountriesLibrary.ts - src/funcs/libraryGetFileHash.ts - src/funcs/libraryGetGenresLibrary.ts @@ -1036,6 +1086,7 @@ generatedFiles: - src/sdk/models/errors/enablepapertrail.ts - src/sdk/models/errors/getactorslibrary.ts - src/sdk/models/errors/getalllibraries.ts + - src/sdk/models/errors/getallmedialibrary.ts - src/sdk/models/errors/getavailableclients.ts - src/sdk/models/errors/getbandwidthstatistics.ts - src/sdk/models/errors/getbannerimage.ts @@ -1119,6 +1170,7 @@ generatedFiles: - src/sdk/models/operations/enablepapertrail.ts - src/sdk/models/operations/getactorslibrary.ts - src/sdk/models/operations/getalllibraries.ts + - src/sdk/models/operations/getallmedialibrary.ts - src/sdk/models/operations/getavailableclients.ts - src/sdk/models/operations/getbandwidthstatistics.ts - src/sdk/models/operations/getbannerimage.ts @@ -1580,7 +1632,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: @@ -1651,7 +1703,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": @@ -1703,7 +1755,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": @@ -2206,7 +2258,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": @@ -2220,7 +2272,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": @@ -2284,10 +2336,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 31af5875..5bf19d93 100755 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -13,7 +13,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false typescript: - version: 0.33.0 + version: 0.34.0 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 4657920d..a881b293 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.487.0 +speakeasyVersion: 1.487.1 sources: my-source: sourceNamespace: my-source @@ -9,20 +9,20 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:49536684a97842ea7c069f909012b31a22a046d8277aee47b50a334494bf2c64 - sourceBlobDigest: sha256:eac671ea32ce31e1e558839153f7effef39bb35b4e461c6e95661d0eaf4ce1c8 + sourceRevisionDigest: sha256:0efb9039972533bf1190dfc1ffb377429a8e486b6299442e732f662c1ffbeca6 + sourceBlobDigest: sha256:038d73166cc9db17f514d511cfe4365ea032f4ebcb247fa86b7aa1bba0e1ab46 tags: - latest - - speakeasy-sdk-regen-1738886999 + - speakeasy-sdk-regen-1739146221 - 0.0.3 targets: plexjs: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:49536684a97842ea7c069f909012b31a22a046d8277aee47b50a334494bf2c64 - sourceBlobDigest: sha256:eac671ea32ce31e1e558839153f7effef39bb35b4e461c6e95661d0eaf4ce1c8 + sourceRevisionDigest: sha256:0efb9039972533bf1190dfc1ffb377429a8e486b6299442e732f662c1ffbeca6 + sourceBlobDigest: sha256:038d73166cc9db17f514d511cfe4365ea032f4ebcb247fa86b7aa1bba0e1ab46 codeSamplesNamespace: code-samples-typescript-plexjs - codeSamplesRevisionDigest: sha256:cc0edeb64bf898493d4f7f9e628ac369bb39b63de609919e22052c030a54edec + codeSamplesRevisionDigest: sha256:18095ae1c50f9a506f370f124c16b4b0d5ebe8ec15c006e533371285a7201fb3 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index ac97d47b..d4b20fdc 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,7 @@ run(); * [getLibraryDetails](docs/sdks/library/README.md#getlibrarydetails) - Get Library Details * [deleteLibrary](docs/sdks/library/README.md#deletelibrary) - Delete Library Section * [getLibraryItems](docs/sdks/library/README.md#getlibraryitems) - Get Library Items +* [getAllMediaLibrary](docs/sdks/library/README.md#getallmedialibrary) - Get all media of library * [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 @@ -511,6 +512,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`libraryDeleteLibrary`](docs/sdks/library/README.md#deletelibrary) - Delete Library Section - [`libraryGetActorsLibrary`](docs/sdks/library/README.md#getactorslibrary) - Get Actors of library media - [`libraryGetAllLibraries`](docs/sdks/library/README.md#getalllibraries) - Get All Libraries +- [`libraryGetAllMediaLibrary`](docs/sdks/library/README.md#getallmedialibrary) - Get all media of library - [`libraryGetCountriesLibrary`](docs/sdks/library/README.md#getcountrieslibrary) - Get Countries of library media - [`libraryGetFileHash`](docs/sdks/library/README.md#getfilehash) - Get Hash Value - [`libraryGetGenresLibrary`](docs/sdks/library/README.md#getgenreslibrary) - Get Genres of library media diff --git a/RELEASES.md b/RELEASES.md index 467fade5..83d87d65 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1218,4 +1218,14 @@ Based on: ### Generated - [typescript v0.33.0] . ### Releases -- [NPM v0.33.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.33.0 - . \ No newline at end of file +- [NPM v0.33.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.33.0 - . + +## 2025-02-10 00:10:04 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.487.1 (2.506.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [typescript v0.34.0] . +### Releases +- [NPM v0.34.0] https://www.npmjs.com/package/@lukehagar/plexjs/v/0.34.0 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index c87e232a..92c146f8 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -858,6 +858,30 @@ actions: console.log(result); } + run(); + - target: $["paths"]["/library/sections/{sectionKey}/all"]["get"] + update: + x-codeSamples: + - lang: typescript + label: library + source: |- + import { PlexAPI } from "@lukehagar/plexjs"; + import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; + + const plexAPI = new PlexAPI({ + accessToken: "", + }); + + async function run() { + const result = await plexAPI.library.getAllMediaLibrary({ + sectionKey: 9518, + type: GetAllMediaLibraryQueryParamType.TvShow, + }); + + // Handle the result + console.log(result); + } + run(); - target: $["paths"]["/library/sections/{sectionKey}/country"]["get"] update: diff --git a/docs/sdk/models/errors/getallmedialibrarybadrequest.md b/docs/sdk/models/errors/getallmedialibrarybadrequest.md new file mode 100644 index 00000000..400f1ffc --- /dev/null +++ b/docs/sdk/models/errors/getallmedialibrarybadrequest.md @@ -0,0 +1,18 @@ +# GetAllMediaLibraryBadRequest + +Bad Request - A parameter was not specified, or was specified incorrectly. + +## Example Usage + +```typescript +import { GetAllMediaLibraryBadRequest } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `errors` | [errors.GetAllMediaLibraryErrors](../../../sdk/models/errors/getallmedialibraryerrors.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/errors/getallmedialibraryerrors.md b/docs/sdk/models/errors/getallmedialibraryerrors.md new file mode 100644 index 00000000..ca4dbc15 --- /dev/null +++ b/docs/sdk/models/errors/getallmedialibraryerrors.md @@ -0,0 +1,21 @@ +# GetAllMediaLibraryErrors + +## Example Usage + +```typescript +import { GetAllMediaLibraryErrors } from "@lukehagar/plexjs/sdk/models/errors"; + +let value: GetAllMediaLibraryErrors = { + code: 1000, + message: "X-Plex-Client-Identifier is missing", + status: 400, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1000 | +| `message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | +| `status` | *number* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/sdk/models/errors/getallmedialibrarylibraryerrors.md b/docs/sdk/models/errors/getallmedialibrarylibraryerrors.md new file mode 100644 index 00000000..73eaae65 --- /dev/null +++ b/docs/sdk/models/errors/getallmedialibrarylibraryerrors.md @@ -0,0 +1,21 @@ +# GetAllMediaLibraryLibraryErrors + +## Example Usage + +```typescript +import { GetAllMediaLibraryLibraryErrors } from "@lukehagar/plexjs/sdk/models/errors"; + +let value: GetAllMediaLibraryLibraryErrors = { + code: 1001, + message: "User could not be authenticated", + status: 401, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *number* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *number* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/sdk/models/errors/getallmedialibraryunauthorized.md b/docs/sdk/models/errors/getallmedialibraryunauthorized.md new file mode 100644 index 00000000..616fcb6b --- /dev/null +++ b/docs/sdk/models/errors/getallmedialibraryunauthorized.md @@ -0,0 +1,18 @@ +# GetAllMediaLibraryUnauthorized + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + +## Example Usage + +```typescript +import { GetAllMediaLibraryUnauthorized } from "@lukehagar/plexjs/sdk/models/errors"; + +// No examples available for this model +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `errors` | [errors.GetAllMediaLibraryLibraryErrors](../../../sdk/models/errors/getallmedialibrarylibraryerrors.md)[] | :heavy_minus_sign: | N/A | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/sdk/models/operations/addplaylistcontentsrequest.md b/docs/sdk/models/operations/addplaylistcontentsrequest.md index f2f87695..fb1f52e3 100644 --- a/docs/sdk/models/operations/addplaylistcontentsrequest.md +++ b/docs/sdk/models/operations/addplaylistcontentsrequest.md @@ -6,7 +6,7 @@ import { AddPlaylistContentsRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: AddPlaylistContentsRequest = { - playlistID: 6874.88, + playlistID: 3741.7, uri: "server://12345/com.plexapp.plugins.library/library/metadata/1", playQueueID: 123, }; diff --git a/docs/sdk/models/operations/addplaylistcontentsresponse.md b/docs/sdk/models/operations/addplaylistcontentsresponse.md index 77c36cab..1233bd19 100644 --- a/docs/sdk/models/operations/addplaylistcontentsresponse.md +++ b/docs/sdk/models/operations/addplaylistcontentsresponse.md @@ -7,7 +7,7 @@ import { AddPlaylistContentsResponse } from "@lukehagar/plexjs/sdk/models/operat let value: AddPlaylistContentsResponse = { contentType: "", - statusCode: 226, + statusCode: 302, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/applyupdatesresponse.md b/docs/sdk/models/operations/applyupdatesresponse.md index c07f77d5..5cea471b 100644 --- a/docs/sdk/models/operations/applyupdatesresponse.md +++ b/docs/sdk/models/operations/applyupdatesresponse.md @@ -7,7 +7,7 @@ import { ApplyUpdatesResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: ApplyUpdatesResponse = { contentType: "", - statusCode: 101, + statusCode: 428, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/billing.md b/docs/sdk/models/operations/billing.md index 31da1172..889024a4 100644 --- a/docs/sdk/models/operations/billing.md +++ b/docs/sdk/models/operations/billing.md @@ -7,7 +7,7 @@ import { Billing } from "@lukehagar/plexjs/sdk/models/operations"; let value: Billing = { internalPaymentMethod: {}, - paymentMethodId: 517379, + paymentMethodId: 765326, }; ``` diff --git a/docs/sdk/models/operations/checkforupdatesresponse.md b/docs/sdk/models/operations/checkforupdatesresponse.md index 75b05c5d..92357f87 100644 --- a/docs/sdk/models/operations/checkforupdatesresponse.md +++ b/docs/sdk/models/operations/checkforupdatesresponse.md @@ -7,7 +7,7 @@ import { CheckForUpdatesResponse } from "@lukehagar/plexjs/sdk/models/operations let value: CheckForUpdatesResponse = { contentType: "", - statusCode: 205, + statusCode: 508, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/clearplaylistcontentsrequest.md b/docs/sdk/models/operations/clearplaylistcontentsrequest.md index 506b957f..18f39d9b 100644 --- a/docs/sdk/models/operations/clearplaylistcontentsrequest.md +++ b/docs/sdk/models/operations/clearplaylistcontentsrequest.md @@ -6,7 +6,7 @@ import { ClearPlaylistContentsRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: ClearPlaylistContentsRequest = { - playlistID: 7980.47, + playlistID: 256.62, }; ``` diff --git a/docs/sdk/models/operations/clearplaylistcontentsresponse.md b/docs/sdk/models/operations/clearplaylistcontentsresponse.md index 69ed6fab..530686d5 100644 --- a/docs/sdk/models/operations/clearplaylistcontentsresponse.md +++ b/docs/sdk/models/operations/clearplaylistcontentsresponse.md @@ -7,7 +7,7 @@ import { ClearPlaylistContentsResponse } from "@lukehagar/plexjs/sdk/models/oper let value: ClearPlaylistContentsResponse = { contentType: "", - statusCode: 103, + statusCode: 204, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/createplaylistqueryparamtype.md b/docs/sdk/models/operations/createplaylistqueryparamtype.md index 5a270d89..f039f9e5 100644 --- a/docs/sdk/models/operations/createplaylistqueryparamtype.md +++ b/docs/sdk/models/operations/createplaylistqueryparamtype.md @@ -7,7 +7,7 @@ type of playlist to create ```typescript import { CreatePlaylistQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; -let value: CreatePlaylistQueryParamType = CreatePlaylistQueryParamType.Audio; +let value: CreatePlaylistQueryParamType = CreatePlaylistQueryParamType.Video; ``` ## Values diff --git a/docs/sdk/models/operations/createplaylistrequest.md b/docs/sdk/models/operations/createplaylistrequest.md index e5ec972c..cd3815b8 100644 --- a/docs/sdk/models/operations/createplaylistrequest.md +++ b/docs/sdk/models/operations/createplaylistrequest.md @@ -7,9 +7,9 @@ import { CreatePlaylistQueryParamType, CreatePlaylistRequest, Smart } from "@luk let value: CreatePlaylistRequest = { title: "", - type: CreatePlaylistQueryParamType.Video, - smart: Smart.Zero, - uri: "https://humble-confusion.com", + type: CreatePlaylistQueryParamType.Photo, + smart: Smart.One, + uri: "https://radiant-dividend.com/", }; ``` diff --git a/docs/sdk/models/operations/createplaylistresponse.md b/docs/sdk/models/operations/createplaylistresponse.md index 1f0b04b1..c4900560 100644 --- a/docs/sdk/models/operations/createplaylistresponse.md +++ b/docs/sdk/models/operations/createplaylistresponse.md @@ -7,7 +7,7 @@ import { CreatePlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations" let value: CreatePlaylistResponse = { contentType: "", - statusCode: 102, + statusCode: 409, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/deleteplaylistrequest.md b/docs/sdk/models/operations/deleteplaylistrequest.md index f5026537..7ff6ec77 100644 --- a/docs/sdk/models/operations/deleteplaylistrequest.md +++ b/docs/sdk/models/operations/deleteplaylistrequest.md @@ -6,7 +6,7 @@ import { DeletePlaylistRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: DeletePlaylistRequest = { - playlistID: 206.51, + playlistID: 1856.36, }; ``` diff --git a/docs/sdk/models/operations/deleteplaylistresponse.md b/docs/sdk/models/operations/deleteplaylistresponse.md index d381892d..69102af8 100644 --- a/docs/sdk/models/operations/deleteplaylistresponse.md +++ b/docs/sdk/models/operations/deleteplaylistresponse.md @@ -7,7 +7,7 @@ import { DeletePlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations" let value: DeletePlaylistResponse = { contentType: "", - statusCode: 409, + statusCode: 507, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/enablepapertrailresponse.md b/docs/sdk/models/operations/enablepapertrailresponse.md index 145e75b3..2ab826dd 100644 --- a/docs/sdk/models/operations/enablepapertrailresponse.md +++ b/docs/sdk/models/operations/enablepapertrailresponse.md @@ -7,7 +7,7 @@ import { EnablePaperTrailResponse } from "@lukehagar/plexjs/sdk/models/operation let value: EnablePaperTrailResponse = { contentType: "", - statusCode: 302, + statusCode: 102, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/filter.md b/docs/sdk/models/operations/filter.md index 7579d234..85de5e7c 100644 --- a/docs/sdk/models/operations/filter.md +++ b/docs/sdk/models/operations/filter.md @@ -7,7 +7,7 @@ Filter ```typescript import { Filter } from "@lukehagar/plexjs/sdk/models/operations"; -let value: Filter = Filter.Available; +let value: Filter = Filter.All; ``` ## Values diff --git a/docs/sdk/models/operations/force.md b/docs/sdk/models/operations/force.md index 272869d9..5265772f 100644 --- a/docs/sdk/models/operations/force.md +++ b/docs/sdk/models/operations/force.md @@ -7,7 +7,7 @@ Force the refresh even if the library is already being refreshed. ```typescript import { Force } from "@lukehagar/plexjs/sdk/models/operations"; -let value: Force = Force.Zero; +let value: Force = Force.One; ``` ## Values diff --git a/docs/sdk/models/operations/getactorslibrarymediacontainer.md b/docs/sdk/models/operations/getactorslibrarymediacontainer.md index 82620d9c..286384dc 100644 --- a/docs/sdk/models/operations/getactorslibrarymediacontainer.md +++ b/docs/sdk/models/operations/getactorslibrarymediacontainer.md @@ -34,7 +34,7 @@ let value: GetActorsLibraryMediaContainer = { | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `size` | *number* | :heavy_check_mark: | N/A | 50 | +| `size` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | | `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | | `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/sdk/models/operations/getactorslibraryresponse.md b/docs/sdk/models/operations/getactorslibraryresponse.md index d8077cae..1bc82632 100644 --- a/docs/sdk/models/operations/getactorslibraryresponse.md +++ b/docs/sdk/models/operations/getactorslibraryresponse.md @@ -7,7 +7,7 @@ import { GetActorsLibraryResponse } from "@lukehagar/plexjs/sdk/models/operation let value: GetActorsLibraryResponse = { contentType: "", - statusCode: 413, + statusCode: 101, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getallmedialibraryactivedirection.md b/docs/sdk/models/operations/getallmedialibraryactivedirection.md new file mode 100644 index 00000000..5ba7646b --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryactivedirection.md @@ -0,0 +1,20 @@ +# GetAllMediaLibraryActiveDirection + +The direction of the sort. Can be either `asc` or `desc`. + + +## Example Usage + +```typescript +import { GetAllMediaLibraryActiveDirection } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryActiveDirection = + GetAllMediaLibraryActiveDirection.Ascending; +``` + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Ascending` | asc | +| `Descending` | desc | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarycollection.md b/docs/sdk/models/operations/getallmedialibrarycollection.md new file mode 100644 index 00000000..c6071674 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarycollection.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryCollection + +## Example Usage + +```typescript +import { GetAllMediaLibraryCollection } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryCollection = { + tag: "My Awesome Collection", +}; +``` + +## 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/sdk/models/operations/getallmedialibrarycountry.md b/docs/sdk/models/operations/getallmedialibrarycountry.md new file mode 100644 index 00000000..e6d3c6dc --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarycountry.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryCountry + +## Example Usage + +```typescript +import { GetAllMediaLibraryCountry } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryCountry = { + tag: "United States of America", +}; +``` + +## 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/sdk/models/operations/getallmedialibrarydefaultdirection.md b/docs/sdk/models/operations/getallmedialibrarydefaultdirection.md new file mode 100644 index 00000000..890f8a3d --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarydefaultdirection.md @@ -0,0 +1,20 @@ +# GetAllMediaLibraryDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + +## Example Usage + +```typescript +import { GetAllMediaLibraryDefaultDirection } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryDefaultDirection = + GetAllMediaLibraryDefaultDirection.Ascending; +``` + +## Values + +| Name | Value | +| ------------ | ------------ | +| `Ascending` | asc | +| `Descending` | desc | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarydirector.md b/docs/sdk/models/operations/getallmedialibrarydirector.md new file mode 100644 index 00000000..fdd2445c --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarydirector.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryDirector + +## Example Usage + +```typescript +import { GetAllMediaLibraryDirector } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryDirector = { + tag: "Danny Boyle", +}; +``` + +## 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/sdk/models/operations/getallmedialibraryfield.md b/docs/sdk/models/operations/getallmedialibraryfield.md new file mode 100644 index 00000000..10d42274 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryfield.md @@ -0,0 +1,23 @@ +# GetAllMediaLibraryField + +## Example Usage + +```typescript +import { GetAllMediaLibraryField } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryField = { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", +}; +``` + +## 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/sdk/models/operations/getallmedialibraryfieldtype.md b/docs/sdk/models/operations/getallmedialibraryfieldtype.md new file mode 100644 index 00000000..0700e88a --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryfieldtype.md @@ -0,0 +1,24 @@ +# GetAllMediaLibraryFieldType + +## Example Usage + +```typescript +import { GetAllMediaLibraryFieldType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryFieldType = { + type: "tag", + operator: [ + { + key: "=", + title: "is", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `type` | *string* | :heavy_check_mark: | N/A | tag | +| `operator` | [operations.GetAllMediaLibraryOperator](../../../sdk/models/operations/getallmedialibraryoperator.md)[] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryfilter.md b/docs/sdk/models/operations/getallmedialibraryfilter.md new file mode 100644 index 00000000..6b3ee0ce --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryfilter.md @@ -0,0 +1,27 @@ +# GetAllMediaLibraryFilter + +## Example Usage + +```typescript +import { GetAllMediaLibraryFilter } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryFilter = { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, +}; +``` + +## 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` | *boolean* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarygenre.md b/docs/sdk/models/operations/getallmedialibrarygenre.md new file mode 100644 index 00000000..e92cb8c6 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarygenre.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryGenre + +## Example Usage + +```typescript +import { GetAllMediaLibraryGenre } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryGenre = { + tag: "United States of America", +}; +``` + +## 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/sdk/models/operations/getallmedialibraryhasthumbnail.md b/docs/sdk/models/operations/getallmedialibraryhasthumbnail.md new file mode 100644 index 00000000..e290bfe9 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryhasthumbnail.md @@ -0,0 +1,18 @@ +# GetAllMediaLibraryHasThumbnail + +Indicates if the part has a thumbnail. + +## Example Usage + +```typescript +import { GetAllMediaLibraryHasThumbnail } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryHasThumbnail = GetAllMediaLibraryHasThumbnail.True; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryimage.md b/docs/sdk/models/operations/getallmedialibraryimage.md new file mode 100644 index 00000000..24a05d6d --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryimage.md @@ -0,0 +1,21 @@ +# GetAllMediaLibraryImage + +## Example Usage + +```typescript +import { GetAllMediaLibraryImage, GetAllMediaLibraryLibraryResponseType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryImage = { + alt: "Episode 1", + type: GetAllMediaLibraryLibraryResponseType.Background, + url: "/library/metadata/45521/thumb/1644710589", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `alt` | *string* | :heavy_check_mark: | N/A | Episode 1 | +| `type` | [operations.GetAllMediaLibraryLibraryResponseType](../../../sdk/models/operations/getallmedialibrarylibraryresponsetype.md) | :heavy_check_mark: | N/A | background | +| `url` | *string* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md new file mode 100644 index 00000000..6027b207 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarylibraryoptimizedforstreaming.md @@ -0,0 +1,20 @@ +# GetAllMediaLibraryLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.GetAllMediaLibraryOptimizedForStreaming1` + +```typescript +const value: operations.GetAllMediaLibraryOptimizedForStreaming1 = + GetAllMediaLibraryOptimizedForStreaming1.One; +``` + +### `boolean` + +```typescript +const value: boolean = false; +``` + diff --git a/docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md b/docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md new file mode 100644 index 00000000..ebc1cfb1 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarylibraryresponsetype.md @@ -0,0 +1,19 @@ +# GetAllMediaLibraryLibraryResponseType + +## Example Usage + +```typescript +import { GetAllMediaLibraryLibraryResponseType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryLibraryResponseType = + GetAllMediaLibraryLibraryResponseType.Background; +``` + +## Values + +| Name | Value | +| ------------- | ------------- | +| `CoverPoster` | coverPoster | +| `Background` | background | +| `Snapshot` | snapshot | +| `ClearLogo` | clearLogo | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarylibrarytype.md b/docs/sdk/models/operations/getallmedialibrarylibrarytype.md new file mode 100644 index 00000000..5cbb430d --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarylibrarytype.md @@ -0,0 +1,23 @@ +# GetAllMediaLibraryLibraryType + +The type of media content + + +## Example Usage + +```typescript +import { GetAllMediaLibraryLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryLibraryType = GetAllMediaLibraryLibraryType.Movie; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Movie` | movie | +| `TvShow` | show | +| `Season` | season | +| `Episode` | episode | +| `Artist` | artist | +| `Album` | album | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymedia.md b/docs/sdk/models/operations/getallmedialibrarymedia.md new file mode 100644 index 00000000..8f6146f3 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarymedia.md @@ -0,0 +1,119 @@ +# GetAllMediaLibraryMedia + +## Example Usage + +```typescript +import { GetAllMediaLibraryMedia } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryMedia = { + id: 387322, + duration: 9610350, + bitrate: 25512, + width: 3840, + height: 1602, + aspectRatio: 2.35, + audioChannels: 6, + displayOffset: 50, + audioCodec: "eac3", + videoCodec: "hevc", + videoResolution: "4k", + container: "mkv", + videoFrameRate: "24p", + videoProfile: "main 10", + hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, + part: [ + { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + stream: [ + { + id: 1002625, + streamType: 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", + }, + ], + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `duration` | *number* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `width` | *number* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `height` | *number* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `aspectRatio` | *number* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `audioChannels` | *number* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `displayOffset` | *number* | :heavy_minus_sign: | N/A | 50 | +| `audioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | +| `videoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | +| `videoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | +| `container` | *string* | :heavy_minus_sign: | File container type. | mkv | +| `videoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | +| `videoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `hasVoiceActivity` | *boolean* | :heavy_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* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | +| `part` | [operations.GetAllMediaLibraryPart](../../../sdk/models/operations/getallmedialibrarypart.md)[] | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymediacontainer.md b/docs/sdk/models/operations/getallmedialibrarymediacontainer.md new file mode 100644 index 00000000..dfb7c26e --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarymediacontainer.md @@ -0,0 +1,305 @@ +# GetAllMediaLibraryMediaContainer + +## Example Usage + +```typescript +import { + GetAllMediaLibraryLibraryResponseType, + GetAllMediaLibraryLibraryType, + GetAllMediaLibraryMediaContainer, +} from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; + +let value: GetAllMediaLibraryMediaContainer = { + size: 50, + totalSize: 50, + offset: 0, + allowSync: false, + art: "/:/resources/show-fanart.jpg", + content: "secondary", + identifier: "com.plexapp.plugins.library", + librarySectionID: 2, + librarySectionTitle: "TV Series", + librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", + mediaTagPrefix: "/system/bundle/media/flags/", + mediaTagVersion: 1734362201, + thumb: "/:/resources/show.png", + nocache: true, + title1: "TV Series", + title2: "By Starring Actor", + viewGroup: "secondary", + meta: { + type: [ + { + key: "/library/sections/2/all?type=2", + type: "filter", + subtype: "clip", + title: "TV Shows", + active: false, + filter: [ + { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, + }, + ], + sort: [ + { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", + }, + ], + field: [ + { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", + }, + ], + }, + ], + fieldType: [ + { + type: "tag", + operator: [ + { + key: "=", + title: "is", + }, + ], + }, + ], + }, + metadata: [ + { + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetAllMediaLibraryLibraryType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", + summary: + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work with Neytiri and the army of the Na'vi race to protect their home.\n" + + "", + rating: 7.6, + audienceRating: 9.2, + year: 2022, + tagline: "Return to Pandora.", + thumb: "/library/metadata/58683/thumb/1703239236", + art: "/library/metadata/58683/art/1703239236", + theme: "/library/metadata/1/theme/1705636920", + index: 1, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), + addedAt: 1556281940, + updatedAt: 1556281940, + audienceRatingImage: "rottentomatoes://image.rating.upright", + chapterSource: "media", + primaryExtraKey: "/library/metadata/58684", + originalTitle: "映画 ブラッククローバー 魔法帝の剣", + parentRatingKey: "66", + grandparentRatingKey: "66", + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentSlug: "alice-in-borderland-2020", + grandparentKey: "/library/metadata/66", + parentKey: "/library/metadata/66", + grandparentTitle: "Caprica", + grandparentThumb: "/library/metadata/66/thumb/1705716261", + grandparentTheme: "/library/metadata/66/theme/1705716261", + grandparentArt: "/library/metadata/66/art/1705716261", + parentTitle: "Caprica", + parentIndex: 1, + parentThumb: "/library/metadata/66/thumb/1705716261", + ratingImage: "rottentomatoes://image.rating.ripe", + viewCount: 1, + viewOffset: 5222500, + skipCount: 1, + subtype: "clip", + lastRatedAt: 1721813113, + createdAtAccuracy: "epoch,local", + createdAtTZOffset: "0", + lastViewedAt: 1682752242, + userRating: 10, + image: [ + { + alt: "Episode 1", + type: GetAllMediaLibraryLibraryResponseType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + media: [ + { + id: 387322, + duration: 9610350, + bitrate: 25512, + width: 3840, + height: 1602, + aspectRatio: 2.35, + audioChannels: 6, + displayOffset: 50, + audioCodec: "eac3", + videoCodec: "hevc", + videoResolution: "4k", + container: "mkv", + videoFrameRate: "24p", + videoProfile: "main 10", + hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, + part: [ + { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + stream: [ + { + id: 1002625, + streamType: 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", + }, + ], + country: [ + { + tag: "United States of America", + }, + ], + director: [ + { + tag: "Danny Boyle", + }, + ], + writer: [ + { + tag: "Danny Boyle", + }, + ], + role: [ + { + tag: "Danny Boyle", + }, + ], + guids: [ + { + id: "tvdb://2337", + }, + ], + collection: [ + { + tag: "My Awesome Collection", + }, + ], + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `size` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `totalSize` | *number* | :heavy_check_mark: | Total number of media items in the library. | 50 | +| `offset` | *number* | :heavy_check_mark: | Offset value for pagination. | 0 | +| `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `librarySectionID` | *number* | :heavy_check_mark: | The unique identifier for the library section. | 2 | +| `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | TV Series | +| `librarySectionUUID` | *string* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | +| `mediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `mediaTagVersion` | *number* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `thumb` | *string* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | +| `nocache` | *boolean* | :heavy_check_mark: | Specifies whether caching is disabled. | true | +| `title1` | *string* | :heavy_check_mark: | The primary title of the media container. | TV Series | +| `title2` | *string* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | +| `viewGroup` | *string* | :heavy_check_mark: | Identifier for the view group layout. | secondary | +| `meta` | [operations.GetAllMediaLibraryMeta](../../../sdk/models/operations/getallmedialibrarymeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | +| `metadata` | [operations.GetAllMediaLibraryMetadata](../../../sdk/models/operations/getallmedialibrarymetadata.md)[] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymeta.md b/docs/sdk/models/operations/getallmedialibrarymeta.md new file mode 100644 index 00000000..fb08c672 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarymeta.md @@ -0,0 +1,68 @@ +# GetAllMediaLibraryMeta + +The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + +## Example Usage + +```typescript +import { GetAllMediaLibraryMeta } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryMeta = { + type: [ + { + key: "/library/sections/2/all?type=2", + type: "filter", + subtype: "clip", + title: "TV Shows", + active: false, + filter: [ + { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, + }, + ], + sort: [ + { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", + }, + ], + field: [ + { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", + }, + ], + }, + ], + fieldType: [ + { + type: "tag", + operator: [ + { + key: "=", + title: "is", + }, + ], + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `type` | [operations.GetAllMediaLibraryType](../../../sdk/models/operations/getallmedialibrarytype.md)[] | :heavy_minus_sign: | N/A | +| `fieldType` | [operations.GetAllMediaLibraryFieldType](../../../sdk/models/operations/getallmedialibraryfieldtype.md)[] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarymetadata.md b/docs/sdk/models/operations/getallmedialibrarymetadata.md new file mode 100644 index 00000000..cd1edf77 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarymetadata.md @@ -0,0 +1,282 @@ +# GetAllMediaLibraryMetadata + +Unknown + + +## Example Usage + +```typescript +import { + GetAllMediaLibraryLibraryResponseType, + GetAllMediaLibraryLibraryType, + GetAllMediaLibraryMetadata, +} from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; + +let value: GetAllMediaLibraryMetadata = { + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetAllMediaLibraryLibraryType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", + summary: + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work with Neytiri and the army of the Na'vi race to protect their home.\n" + + "", + rating: 7.6, + audienceRating: 9.2, + year: 2022, + tagline: "Return to Pandora.", + thumb: "/library/metadata/58683/thumb/1703239236", + art: "/library/metadata/58683/art/1703239236", + theme: "/library/metadata/1/theme/1705636920", + index: 1, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), + addedAt: 1556281940, + updatedAt: 1556281940, + audienceRatingImage: "rottentomatoes://image.rating.upright", + chapterSource: "media", + primaryExtraKey: "/library/metadata/58684", + originalTitle: "映画 ブラッククローバー 魔法帝の剣", + parentRatingKey: "66", + grandparentRatingKey: "66", + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentSlug: "alice-in-borderland-2020", + grandparentKey: "/library/metadata/66", + parentKey: "/library/metadata/66", + grandparentTitle: "Caprica", + grandparentThumb: "/library/metadata/66/thumb/1705716261", + grandparentTheme: "/library/metadata/66/theme/1705716261", + grandparentArt: "/library/metadata/66/art/1705716261", + parentTitle: "Caprica", + parentIndex: 1, + parentThumb: "/library/metadata/66/thumb/1705716261", + ratingImage: "rottentomatoes://image.rating.ripe", + viewCount: 1, + viewOffset: 5222500, + skipCount: 1, + subtype: "clip", + lastRatedAt: 1721813113, + createdAtAccuracy: "epoch,local", + createdAtTZOffset: "0", + lastViewedAt: 1682752242, + userRating: 10, + image: [ + { + alt: "Episode 1", + type: GetAllMediaLibraryLibraryResponseType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + media: [ + { + id: 387322, + duration: 9610350, + bitrate: 25512, + width: 3840, + height: 1602, + aspectRatio: 2.35, + audioChannels: 6, + displayOffset: 50, + audioCodec: "eac3", + videoCodec: "hevc", + videoResolution: "4k", + container: "mkv", + videoFrameRate: "24p", + videoProfile: "main 10", + hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, + part: [ + { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + stream: [ + { + id: 1002625, + streamType: 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", + }, + ], + country: [ + { + tag: "United States of America", + }, + ], + director: [ + { + tag: "Danny Boyle", + }, + ], + writer: [ + { + tag: "Danny Boyle", + }, + ], + role: [ + { + tag: "Danny Boyle", + }, + ], + guids: [ + { + id: "tvdb://2337", + }, + ], + collection: [ + { + tag: "My Awesome Collection", + }, + ], +}; +``` + +## 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](../../../sdk/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` | *number* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | +| `audienceRating` | *number* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | +| `year` | *number* | :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` | *number* | :heavy_check_mark: | The index position of the media item. | 1 | +| `leafCount` | *number* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | +| `viewedLeafCount` | *number* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | +| `childCount` | *number* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | +| `seasonCount` | *number* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | +| `duration` | *number* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_check_mark: | The original release date of the media item. | 2022-12-14 | +| `addedAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | +| `updatedAt` | *number* | :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` | *number* | :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` | *number* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | +| `viewOffset` | *number* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | +| `skipCount` | *number* | :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` | *number* | :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` | *number* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `userRating` | *number* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | +| `image` | [operations.GetAllMediaLibraryImage](../../../sdk/models/operations/getallmedialibraryimage.md)[] | :heavy_minus_sign: | N/A | | +| `ultraBlurColors` | [operations.GetAllMediaLibraryUltraBlurColors](../../../sdk/models/operations/getallmedialibraryultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `media` | [operations.GetAllMediaLibraryMedia](../../../sdk/models/operations/getallmedialibrarymedia.md)[] | :heavy_minus_sign: | N/A | | +| `genre` | [operations.GetAllMediaLibraryGenre](../../../sdk/models/operations/getallmedialibrarygenre.md)[] | :heavy_minus_sign: | N/A | | +| `country` | [operations.GetAllMediaLibraryCountry](../../../sdk/models/operations/getallmedialibrarycountry.md)[] | :heavy_minus_sign: | N/A | | +| `director` | [operations.GetAllMediaLibraryDirector](../../../sdk/models/operations/getallmedialibrarydirector.md)[] | :heavy_minus_sign: | N/A | | +| `writer` | [operations.GetAllMediaLibraryWriter](../../../sdk/models/operations/getallmedialibrarywriter.md)[] | :heavy_minus_sign: | N/A | | +| `role` | [operations.GetAllMediaLibraryRole](../../../sdk/models/operations/getallmedialibraryrole.md)[] | :heavy_minus_sign: | N/A | | +| `guids` | [operations.Guids](../../../sdk/models/operations/guids.md)[] | :heavy_minus_sign: | N/A | | +| `collection` | [operations.GetAllMediaLibraryCollection](../../../sdk/models/operations/getallmedialibrarycollection.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryoperator.md b/docs/sdk/models/operations/getallmedialibraryoperator.md new file mode 100644 index 00000000..f1773e78 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryoperator.md @@ -0,0 +1,19 @@ +# GetAllMediaLibraryOperator + +## Example Usage + +```typescript +import { GetAllMediaLibraryOperator } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryOperator = { + key: "=", + title: "is", +}; +``` + +## 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/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming.md new file mode 100644 index 00000000..44b01827 --- /dev/null +++ b/docs/sdk/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 + +### `operations.One` + +```typescript +const value: operations.One = One.One; +``` + +### `boolean` + +```typescript +const value: boolean = false; +``` + diff --git a/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md b/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md new file mode 100644 index 00000000..9ae904d5 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryoptimizedforstreaming1.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryOptimizedForStreaming1 + +## Example Usage + +```typescript +import { GetAllMediaLibraryOptimizedForStreaming1 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryOptimizedForStreaming1 = + GetAllMediaLibraryOptimizedForStreaming1.Zero; +``` + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarypart.md b/docs/sdk/models/operations/getallmedialibrarypart.md new file mode 100644 index 00000000..c030b264 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarypart.md @@ -0,0 +1,95 @@ +# GetAllMediaLibraryPart + +## Example Usage + +```typescript +import { GetAllMediaLibraryPart } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryPart = { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + stream: [ + { + id: 1002625, + streamType: 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", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `accessible` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `id` | *number* | :heavy_check_mark: | Unique part identifier. | 418385 | +| `key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | +| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | +| `duration` | *number* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | +| `file` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | +| `size` | *number* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `packetLength` | *number* | :heavy_minus_sign: | N/A | 188 | +| `container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | +| `videoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | +| `audioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | +| `optimizedForStreaming` | *operations.GetAllMediaLibraryLibraryOptimizedForStreaming* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `hasThumbnail` | [operations.GetAllMediaLibraryHasThumbnail](../../../sdk/models/operations/getallmedialibraryhasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | [operations.GetAllMediaLibraryStream](../../../sdk/models/operations/getallmedialibrarystream.md)[] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md b/docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md new file mode 100644 index 00000000..aac393a1 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryqueryparamincludemeta.md @@ -0,0 +1,20 @@ +# GetAllMediaLibraryQueryParamIncludeMeta + +Adds the Meta object to the response + + +## Example Usage + +```typescript +import { GetAllMediaLibraryQueryParamIncludeMeta } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryQueryParamIncludeMeta = + GetAllMediaLibraryQueryParamIncludeMeta.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryqueryparamtype.md b/docs/sdk/models/operations/getallmedialibraryqueryparamtype.md new file mode 100644 index 00000000..33ad9b94 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryqueryparamtype.md @@ -0,0 +1,30 @@ +# 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 + + +## Example Usage + +```typescript +import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryQueryParamType = + GetAllMediaLibraryQueryParamType.TvShow; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Movie` | 1 | +| `TvShow` | 2 | +| `Season` | 3 | +| `Episode` | 4 | +| `Audio` | 8 | +| `Album` | 9 | +| `Track` | 10 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryrequest.md b/docs/sdk/models/operations/getallmedialibraryrequest.md new file mode 100644 index 00000000..bc8bdc21 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryrequest.md @@ -0,0 +1,26 @@ +# GetAllMediaLibraryRequest + +## Example Usage + +```typescript +import { GetAllMediaLibraryQueryParamType, GetAllMediaLibraryRequest } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryRequest = { + sectionKey: 9518, + type: GetAllMediaLibraryQueryParamType.TvShow, +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sectionKey` | *number* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | +| `type` | [operations.GetAllMediaLibraryQueryParamType](../../../sdk/models/operations/getallmedialibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `includeMeta` | [operations.GetAllMediaLibraryQueryParamIncludeMeta](../../../sdk/models/operations/getallmedialibraryqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | +| `includeGuids` | [operations.QueryParamIncludeGuids](../../../sdk/models/operations/queryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | +| `includeAdvanced` | [operations.IncludeAdvanced](../../../sdk/models/operations/includeadvanced.md) | :heavy_minus_sign: | N/A | 1 | +| `includeCollections` | [operations.QueryParamIncludeCollections](../../../sdk/models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | N/A | 1 | +| `includeExternalMedia` | [operations.QueryParamIncludeExternalMedia](../../../sdk/models/operations/queryparamincludeexternalmedia.md) | :heavy_minus_sign: | N/A | 1 | +| `xPlexContainerStart` | *number* | :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` | *number* | :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/sdk/models/operations/getallmedialibraryresponse.md b/docs/sdk/models/operations/getallmedialibraryresponse.md new file mode 100644 index 00000000..b1cf7f98 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryresponse.md @@ -0,0 +1,299 @@ +# GetAllMediaLibraryResponse + +## Example Usage + +```typescript +import { + GetAllMediaLibraryLibraryResponseType, + GetAllMediaLibraryLibraryType, + GetAllMediaLibraryResponse, +} from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; + +let value: GetAllMediaLibraryResponse = { + contentType: "", + statusCode: 103, + rawResponse: new Response("{\"message\": \"hello world\"}", { + headers: { "Content-Type": "application/json" }, + }), + object: { + mediaContainer: { + size: 50, + totalSize: 50, + offset: 0, + allowSync: false, + art: "/:/resources/show-fanart.jpg", + content: "secondary", + identifier: "com.plexapp.plugins.library", + librarySectionID: 2, + librarySectionTitle: "TV Series", + librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", + mediaTagPrefix: "/system/bundle/media/flags/", + mediaTagVersion: 1734362201, + thumb: "/:/resources/show.png", + nocache: true, + title1: "TV Series", + title2: "By Starring Actor", + viewGroup: "secondary", + meta: { + type: [ + { + key: "/library/sections/2/all?type=2", + type: "filter", + subtype: "clip", + title: "TV Shows", + active: false, + filter: [ + { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, + }, + ], + sort: [ + { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", + }, + ], + field: [ + { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", + }, + ], + }, + ], + fieldType: [ + { + type: "tag", + operator: [ + { + key: "=", + title: "is", + }, + ], + }, + ], + }, + metadata: [ + { + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetAllMediaLibraryLibraryType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", + summary: + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work with Neytiri and the army of the Na'vi race to protect their home.\n" + + "", + rating: 7.6, + audienceRating: 9.2, + year: 2022, + tagline: "Return to Pandora.", + thumb: "/library/metadata/58683/thumb/1703239236", + art: "/library/metadata/58683/art/1703239236", + theme: "/library/metadata/1/theme/1705636920", + index: 1, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), + addedAt: 1556281940, + updatedAt: 1556281940, + audienceRatingImage: "rottentomatoes://image.rating.upright", + chapterSource: "media", + primaryExtraKey: "/library/metadata/58684", + originalTitle: "映画 ブラッククローバー 魔法帝の剣", + parentRatingKey: "66", + grandparentRatingKey: "66", + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentSlug: "alice-in-borderland-2020", + grandparentKey: "/library/metadata/66", + parentKey: "/library/metadata/66", + grandparentTitle: "Caprica", + grandparentThumb: "/library/metadata/66/thumb/1705716261", + grandparentTheme: "/library/metadata/66/theme/1705716261", + grandparentArt: "/library/metadata/66/art/1705716261", + parentTitle: "Caprica", + parentIndex: 1, + parentThumb: "/library/metadata/66/thumb/1705716261", + ratingImage: "rottentomatoes://image.rating.ripe", + viewCount: 1, + viewOffset: 5222500, + skipCount: 1, + subtype: "clip", + lastRatedAt: 1721813113, + createdAtAccuracy: "epoch,local", + createdAtTZOffset: "0", + lastViewedAt: 1682752242, + userRating: 10, + image: [ + { + alt: "Episode 1", + type: GetAllMediaLibraryLibraryResponseType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + media: [ + { + id: 387322, + duration: 9610350, + bitrate: 25512, + width: 3840, + height: 1602, + aspectRatio: 2.35, + audioChannels: 6, + displayOffset: 50, + audioCodec: "eac3", + videoCodec: "hevc", + videoResolution: "4k", + container: "mkv", + videoFrameRate: "24p", + videoProfile: "main 10", + hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, + part: [ + { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + stream: [ + { + id: 1002625, + streamType: 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", + }, + ], + country: [ + { + tag: "United States of America", + }, + ], + director: [ + { + tag: "Danny Boyle", + }, + ], + writer: [ + { + tag: "Danny Boyle", + }, + ], + role: [ + { + tag: "Danny Boyle", + }, + ], + guids: [ + { + id: "tvdb://2337", + }, + ], + collection: [ + { + tag: "My Awesome Collection", + }, + ], + }, + ], + }, + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *number* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [operations.GetAllMediaLibraryResponseBody](../../../sdk/models/operations/getallmedialibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryresponsebody.md b/docs/sdk/models/operations/getallmedialibraryresponsebody.md new file mode 100644 index 00000000..99709a50 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryresponsebody.md @@ -0,0 +1,291 @@ +# GetAllMediaLibraryResponseBody + +Successful response containing media container data. + +## Example Usage + +```typescript +import { + GetAllMediaLibraryLibraryResponseType, + GetAllMediaLibraryLibraryType, + GetAllMediaLibraryResponseBody, +} from "@lukehagar/plexjs/sdk/models/operations"; +import { RFCDate } from "@lukehagar/plexjs/sdk/types"; + +let value: GetAllMediaLibraryResponseBody = { + mediaContainer: { + size: 50, + totalSize: 50, + offset: 0, + allowSync: false, + art: "/:/resources/show-fanart.jpg", + content: "secondary", + identifier: "com.plexapp.plugins.library", + librarySectionID: 2, + librarySectionTitle: "TV Series", + librarySectionUUID: "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", + mediaTagPrefix: "/system/bundle/media/flags/", + mediaTagVersion: 1734362201, + thumb: "/:/resources/show.png", + nocache: true, + title1: "TV Series", + title2: "By Starring Actor", + viewGroup: "secondary", + meta: { + type: [ + { + key: "/library/sections/2/all?type=2", + type: "filter", + subtype: "clip", + title: "TV Shows", + active: false, + filter: [ + { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, + }, + ], + sort: [ + { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", + }, + ], + field: [ + { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", + }, + ], + }, + ], + fieldType: [ + { + type: "tag", + operator: [ + { + key: "=", + title: "is", + }, + ], + }, + ], + }, + metadata: [ + { + ratingKey: "58683", + key: "/library/metadata/58683", + guid: "plex://movie/5d7768ba96b655001fdc0408", + slug: "4-for-texas", + studio: "20th Century Studios", + type: GetAllMediaLibraryLibraryType.Movie, + title: "Avatar: The Way of Water", + titleSort: "Whale", + contentRating: "PG-13", + summary: + "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\n" + + "Once a familiar threat returns to finish what was previously started, Jake must\n" + + "work with Neytiri and the army of the Na'vi race to protect their home.\n" + + "", + rating: 7.6, + audienceRating: 9.2, + year: 2022, + tagline: "Return to Pandora.", + thumb: "/library/metadata/58683/thumb/1703239236", + art: "/library/metadata/58683/art/1703239236", + theme: "/library/metadata/1/theme/1705636920", + index: 1, + leafCount: 14, + viewedLeafCount: 0, + childCount: 1, + seasonCount: 2022, + duration: 11558112, + originallyAvailableAt: new RFCDate("2022-12-14"), + addedAt: 1556281940, + updatedAt: 1556281940, + audienceRatingImage: "rottentomatoes://image.rating.upright", + chapterSource: "media", + primaryExtraKey: "/library/metadata/58684", + originalTitle: "映画 ブラッククローバー 魔法帝の剣", + parentRatingKey: "66", + grandparentRatingKey: "66", + parentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentGuid: "plex://show/5d9c081b170e24001f2a7be4", + grandparentSlug: "alice-in-borderland-2020", + grandparentKey: "/library/metadata/66", + parentKey: "/library/metadata/66", + grandparentTitle: "Caprica", + grandparentThumb: "/library/metadata/66/thumb/1705716261", + grandparentTheme: "/library/metadata/66/theme/1705716261", + grandparentArt: "/library/metadata/66/art/1705716261", + parentTitle: "Caprica", + parentIndex: 1, + parentThumb: "/library/metadata/66/thumb/1705716261", + ratingImage: "rottentomatoes://image.rating.ripe", + viewCount: 1, + viewOffset: 5222500, + skipCount: 1, + subtype: "clip", + lastRatedAt: 1721813113, + createdAtAccuracy: "epoch,local", + createdAtTZOffset: "0", + lastViewedAt: 1682752242, + userRating: 10, + image: [ + { + alt: "Episode 1", + type: GetAllMediaLibraryLibraryResponseType.Background, + url: "/library/metadata/45521/thumb/1644710589", + }, + ], + ultraBlurColors: { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", + }, + media: [ + { + id: 387322, + duration: 9610350, + bitrate: 25512, + width: 3840, + height: 1602, + aspectRatio: 2.35, + audioChannels: 6, + displayOffset: 50, + audioCodec: "eac3", + videoCodec: "hevc", + videoResolution: "4k", + container: "mkv", + videoFrameRate: "24p", + videoProfile: "main 10", + hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, + part: [ + { + accessible: true, + exists: true, + id: 418385, + key: "/library/parts/418385/1735864239/file.mkv", + indexes: "sd", + duration: 9610350, + file: "/mnt/Movies_1/W/Wicked (2024).mkv", + size: 30649952104, + packetLength: 188, + container: "mkv", + videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, + stream: [ + { + id: 1002625, + streamType: 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", + }, + ], + country: [ + { + tag: "United States of America", + }, + ], + director: [ + { + tag: "Danny Boyle", + }, + ], + writer: [ + { + tag: "Danny Boyle", + }, + ], + role: [ + { + tag: "Danny Boyle", + }, + ], + guids: [ + { + id: "tvdb://2337", + }, + ], + collection: [ + { + tag: "My Awesome Collection", + }, + ], + }, + ], + }, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| `mediaContainer` | [operations.GetAllMediaLibraryMediaContainer](../../../sdk/models/operations/getallmedialibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryrole.md b/docs/sdk/models/operations/getallmedialibraryrole.md new file mode 100644 index 00000000..c436e268 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryrole.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryRole + +## Example Usage + +```typescript +import { GetAllMediaLibraryRole } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryRole = { + tag: "Danny Boyle", +}; +``` + +## 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/sdk/models/operations/getallmedialibrarysort.md b/docs/sdk/models/operations/getallmedialibrarysort.md new file mode 100644 index 00000000..9fc133f5 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarysort.md @@ -0,0 +1,29 @@ +# GetAllMediaLibrarySort + +## Example Usage + +```typescript +import { GetAllMediaLibrarySort } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibrarySort = { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `default` | *string* | :heavy_minus_sign: | N/A | asc | +| `active` | *boolean* | :heavy_minus_sign: | N/A | false | +| `activeDirection` | [operations.GetAllMediaLibraryActiveDirection](../../../sdk/models/operations/getallmedialibraryactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `defaultDirection` | [operations.GetAllMediaLibraryDefaultDirection](../../../sdk/models/operations/getallmedialibrarydefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `descKey` | *string* | :heavy_minus_sign: | N/A | titleSort:desc | +| `firstCharacterKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | +| `key` | *string* | :heavy_check_mark: | N/A | titleSort | +| `title` | *string* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarystream.md b/docs/sdk/models/operations/getallmedialibrarystream.md new file mode 100644 index 00000000..efe08c1c --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarystream.md @@ -0,0 +1,109 @@ +# GetAllMediaLibraryStream + +## Example Usage + +```typescript +import { GetAllMediaLibraryStream } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryStream = { + 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", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `id` | *number* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `streamType` | *number* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | +| `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `index` | *number* | :heavy_check_mark: | Index of the stream. | 0 | +| `bitrate` | *number* | :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` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *number* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *number* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitDepth` | *number* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *number* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *number* | :heavy_minus_sign: | Coded video width. | 3840 | +| `colorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frameRate` | *number* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `height` | *number* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *number* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *boolean* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `hasScalingMatrix` | *boolean* | :heavy_minus_sign: | N/A | false | +| `profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `scanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `refFrames` | *number* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *number* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `displayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `extendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `selected` | *boolean* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *boolean* | :heavy_minus_sign: | N/A | true | +| `channels` | *number* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `samplingRate` | *number* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `canAutoSync` | *boolean* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearingImpaired` | *boolean* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *boolean* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibrarytype.md b/docs/sdk/models/operations/getallmedialibrarytype.md new file mode 100644 index 00000000..9528968f --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarytype.md @@ -0,0 +1,56 @@ +# GetAllMediaLibraryType + +## Example Usage + +```typescript +import { GetAllMediaLibraryType } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryType = { + key: "/library/sections/2/all?type=2", + type: "filter", + subtype: "clip", + title: "TV Shows", + active: false, + filter: [ + { + filter: "genre", + filterType: "string", + key: "/library/sections/2/genre?type=2", + title: "Genre", + type: "filter", + advanced: true, + }, + ], + sort: [ + { + default: "asc", + active: false, + descKey: "titleSort:desc", + firstCharacterKey: "/library/sections/2/firstCharacter", + key: "titleSort", + title: "Title", + }, + ], + field: [ + { + key: "show.title", + title: "Show Title", + type: "string", + subType: "rating", + }, + ], +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `key` | *string* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *string* | :heavy_check_mark: | N/A | filter | +| `subtype` | *string* | :heavy_minus_sign: | N/A | clip | +| `title` | *string* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *boolean* | :heavy_check_mark: | N/A | false | +| `filter` | [operations.GetAllMediaLibraryFilter](../../../sdk/models/operations/getallmedialibraryfilter.md)[] | :heavy_minus_sign: | N/A | | +| `sort` | [operations.GetAllMediaLibrarySort](../../../sdk/models/operations/getallmedialibrarysort.md)[] | :heavy_minus_sign: | N/A | | +| `field` | [operations.GetAllMediaLibraryField](../../../sdk/models/operations/getallmedialibraryfield.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getallmedialibraryultrablurcolors.md b/docs/sdk/models/operations/getallmedialibraryultrablurcolors.md new file mode 100644 index 00000000..09aa5666 --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibraryultrablurcolors.md @@ -0,0 +1,23 @@ +# GetAllMediaLibraryUltraBlurColors + +## Example Usage + +```typescript +import { GetAllMediaLibraryUltraBlurColors } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryUltraBlurColors = { + topLeft: "11333b", + topRight: "0a232d", + bottomRight: "73958", + bottomLeft: "1f5066", +}; +``` + +## 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/sdk/models/operations/getallmedialibrarywriter.md b/docs/sdk/models/operations/getallmedialibrarywriter.md new file mode 100644 index 00000000..f6d6aeea --- /dev/null +++ b/docs/sdk/models/operations/getallmedialibrarywriter.md @@ -0,0 +1,17 @@ +# GetAllMediaLibraryWriter + +## Example Usage + +```typescript +import { GetAllMediaLibraryWriter } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetAllMediaLibraryWriter = { + tag: "Danny Boyle", +}; +``` + +## 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/sdk/models/operations/getbandwidthstatisticsresponse.md b/docs/sdk/models/operations/getbandwidthstatisticsresponse.md index 5e24f610..ca3e14e9 100644 --- a/docs/sdk/models/operations/getbandwidthstatisticsresponse.md +++ b/docs/sdk/models/operations/getbandwidthstatisticsresponse.md @@ -7,7 +7,7 @@ import { GetBandwidthStatisticsResponse } from "@lukehagar/plexjs/sdk/models/ope let value: GetBandwidthStatisticsResponse = { contentType: "", - statusCode: 500, + statusCode: 424, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getcountrieslibrarymediacontainer.md b/docs/sdk/models/operations/getcountrieslibrarymediacontainer.md index 699ff21d..677de200 100644 --- a/docs/sdk/models/operations/getcountrieslibrarymediacontainer.md +++ b/docs/sdk/models/operations/getcountrieslibrarymediacontainer.md @@ -7,16 +7,16 @@ import { GetCountriesLibraryMediaContainer } from "@lukehagar/plexjs/sdk/models/ let value: GetCountriesLibraryMediaContainer = { size: 50, - identifier: "com.plexapp.plugins.library", 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 Country", + title2: "By Starring Actor", viewGroup: "secondary", directory: [ { @@ -32,18 +32,16 @@ let value: GetCountriesLibraryMediaContainer = { | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `size` | *number* | :heavy_check_mark: | N/A | 50 | -| `offset` | *number* | :heavy_minus_sign: | N/A | | -| `totalSize` | *number* | :heavy_minus_sign: | N/A | | -| `identifier` | *string* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `allowSync` | *boolean* | :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` | *number* | :heavy_check_mark: | N/A | 1734362201 | -| `nocache` | *boolean* | :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` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `mediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `mediaTagVersion` | *number* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `nocache` | *boolean* | :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](../../../sdk/models/operations/getcountrieslibrarydirectory.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getcountrieslibraryresponse.md b/docs/sdk/models/operations/getcountrieslibraryresponse.md index 8d047e59..9b940897 100644 --- a/docs/sdk/models/operations/getcountrieslibraryresponse.md +++ b/docs/sdk/models/operations/getcountrieslibraryresponse.md @@ -7,23 +7,23 @@ import { GetCountriesLibraryResponse } from "@lukehagar/plexjs/sdk/models/operat let value: GetCountriesLibraryResponse = { contentType: "", - statusCode: 300, + statusCode: 510, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), object: { mediaContainer: { size: 50, - identifier: "com.plexapp.plugins.library", 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 Country", + title2: "By Starring Actor", viewGroup: "secondary", directory: [ { diff --git a/docs/sdk/models/operations/getcountrieslibraryresponsebody.md b/docs/sdk/models/operations/getcountrieslibraryresponsebody.md index 4c58d34f..cfea5461 100644 --- a/docs/sdk/models/operations/getcountrieslibraryresponsebody.md +++ b/docs/sdk/models/operations/getcountrieslibraryresponsebody.md @@ -10,16 +10,16 @@ import { GetCountriesLibraryResponseBody } from "@lukehagar/plexjs/sdk/models/op let value: GetCountriesLibraryResponseBody = { mediaContainer: { size: 50, - identifier: "com.plexapp.plugins.library", 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 Country", + title2: "By Starring Actor", viewGroup: "secondary", directory: [ { diff --git a/docs/sdk/models/operations/getgenreslibrarymediacontainer.md b/docs/sdk/models/operations/getgenreslibrarymediacontainer.md index a6ce318c..cda4010b 100644 --- a/docs/sdk/models/operations/getgenreslibrarymediacontainer.md +++ b/docs/sdk/models/operations/getgenreslibrarymediacontainer.md @@ -7,16 +7,16 @@ import { GetGenresLibraryMediaContainer } from "@lukehagar/plexjs/sdk/models/ope let value: GetGenresLibraryMediaContainer = { size: 50, - identifier: "com.plexapp.plugins.library", 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 Shows (Reality)", - title2: "By Genre", + title1: "TV Series", + title2: "By Starring Actor", viewGroup: "secondary", directory: [ { @@ -33,18 +33,16 @@ let value: GetGenresLibraryMediaContainer = { | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `size` | *number* | :heavy_check_mark: | N/A | 50 | -| `offset` | *number* | :heavy_minus_sign: | N/A | | -| `totalSize` | *number* | :heavy_minus_sign: | N/A | | -| `identifier` | *string* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `allowSync` | *boolean* | :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` | *number* | :heavy_check_mark: | N/A | 1734362201 | -| `nocache` | *boolean* | :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` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `art` | *string* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | +| `content` | *string* | :heavy_check_mark: | The content type or mode. | secondary | +| `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | +| `mediaTagPrefix` | *string* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | +| `mediaTagVersion` | *number* | :heavy_check_mark: | The version number for media tags. | 1734362201 | +| `nocache` | *boolean* | :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](../../../sdk/models/operations/getgenreslibrarydirectory.md)[] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getgenreslibraryresponse.md b/docs/sdk/models/operations/getgenreslibraryresponse.md index c99f95d7..5471d82b 100644 --- a/docs/sdk/models/operations/getgenreslibraryresponse.md +++ b/docs/sdk/models/operations/getgenreslibraryresponse.md @@ -7,23 +7,23 @@ import { GetGenresLibraryResponse } from "@lukehagar/plexjs/sdk/models/operation let value: GetGenresLibraryResponse = { contentType: "", - statusCode: 506, + statusCode: 428, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), object: { mediaContainer: { size: 50, - identifier: "com.plexapp.plugins.library", 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 Shows (Reality)", - title2: "By Genre", + title1: "TV Series", + title2: "By Starring Actor", viewGroup: "secondary", directory: [ { diff --git a/docs/sdk/models/operations/getgenreslibraryresponsebody.md b/docs/sdk/models/operations/getgenreslibraryresponsebody.md index be833fe0..98df4960 100644 --- a/docs/sdk/models/operations/getgenreslibraryresponsebody.md +++ b/docs/sdk/models/operations/getgenreslibraryresponsebody.md @@ -10,16 +10,16 @@ import { GetGenresLibraryResponseBody } from "@lukehagar/plexjs/sdk/models/opera let value: GetGenresLibraryResponseBody = { mediaContainer: { size: 50, - identifier: "com.plexapp.plugins.library", 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 Shows (Reality)", - title2: "By Genre", + title1: "TV Series", + title2: "By Starring Actor", viewGroup: "secondary", directory: [ { diff --git a/docs/sdk/models/operations/getlibraryitemsfilter.md b/docs/sdk/models/operations/getlibraryitemsfilter.md index 87ae32d8..ce7d95c3 100644 --- a/docs/sdk/models/operations/getlibraryitemsfilter.md +++ b/docs/sdk/models/operations/getlibraryitemsfilter.md @@ -11,6 +11,7 @@ let value: GetLibraryItemsFilter = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }; ``` @@ -22,4 +23,5 @@ let value: GetLibraryItemsFilter = { | `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` | *boolean* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibraryitemslibrarytype.md b/docs/sdk/models/operations/getlibraryitemslibrarytype.md index 2fa708c9..6f4897fa 100644 --- a/docs/sdk/models/operations/getlibraryitemslibrarytype.md +++ b/docs/sdk/models/operations/getlibraryitemslibrarytype.md @@ -18,4 +18,6 @@ let value: GetLibraryItemsLibraryType = GetLibraryItemsLibraryType.Movie; | `Movie` | movie | | `TvShow` | show | | `Season` | season | -| `Episode` | episode | \ No newline at end of file +| `Episode` | episode | +| `Artist` | artist | +| `Album` | album | \ No newline at end of file diff --git a/docs/sdk/models/operations/getlibraryitemsmediacontainer.md b/docs/sdk/models/operations/getlibraryitemsmediacontainer.md index e1f9f72d..36bf1a8b 100644 --- a/docs/sdk/models/operations/getlibraryitemsmediacontainer.md +++ b/docs/sdk/models/operations/getlibraryitemsmediacontainer.md @@ -21,7 +21,8 @@ let value: GetLibraryItemsMediaContainer = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -31,6 +32,7 @@ let value: GetLibraryItemsMediaContainer = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getlibraryitemsresponse.md b/docs/sdk/models/operations/getlibraryitemsresponse.md index 60f3e6bc..7c1ce82e 100644 --- a/docs/sdk/models/operations/getlibraryitemsresponse.md +++ b/docs/sdk/models/operations/getlibraryitemsresponse.md @@ -25,7 +25,8 @@ let value: GetLibraryItemsResponse = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -35,6 +36,7 @@ let value: GetLibraryItemsResponse = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getlibraryitemsresponsebody.md b/docs/sdk/models/operations/getlibraryitemsresponsebody.md index cab64861..4fb95f43 100644 --- a/docs/sdk/models/operations/getlibraryitemsresponsebody.md +++ b/docs/sdk/models/operations/getlibraryitemsresponsebody.md @@ -21,7 +21,8 @@ let value: GetLibraryItemsResponseBody = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -31,6 +32,7 @@ let value: GetLibraryItemsResponseBody = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getlibraryitemstype.md b/docs/sdk/models/operations/getlibraryitemstype.md index 6189e338..ec8023f3 100644 --- a/docs/sdk/models/operations/getlibraryitemstype.md +++ b/docs/sdk/models/operations/getlibraryitemstype.md @@ -7,7 +7,8 @@ import { GetLibraryItemsType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetLibraryItemsType = { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -17,6 +18,7 @@ let value: GetLibraryItemsType = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ @@ -45,7 +47,8 @@ let value: GetLibraryItemsType = { | 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` | *boolean* | :heavy_check_mark: | N/A | false | | `filter` | [operations.GetLibraryItemsFilter](../../../sdk/models/operations/getlibraryitemsfilter.md)[] | :heavy_minus_sign: | N/A | | diff --git a/docs/sdk/models/operations/getmediametadataguids.md b/docs/sdk/models/operations/getmediametadataguids.md new file mode 100644 index 00000000..df28758b --- /dev/null +++ b/docs/sdk/models/operations/getmediametadataguids.md @@ -0,0 +1,17 @@ +# GetMediaMetaDataGuids + +## Example Usage + +```typescript +import { GetMediaMetaDataGuids } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetMediaMetaDataGuids = { + id: "imdb://tt3032476", +}; +``` + +## 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/sdk/models/operations/getmediametadatahasthumbnail.md b/docs/sdk/models/operations/getmediametadatahasthumbnail.md new file mode 100644 index 00000000..a1419e1b --- /dev/null +++ b/docs/sdk/models/operations/getmediametadatahasthumbnail.md @@ -0,0 +1,18 @@ +# GetMediaMetaDataHasThumbnail + +Indicates if the part has a thumbnail. + +## Example Usage + +```typescript +import { GetMediaMetaDataHasThumbnail } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetMediaMetaDataHasThumbnail = GetMediaMetaDataHasThumbnail.True; +``` + +## Values + +| Name | Value | +| ------- | ------- | +| `False` | 0 | +| `True` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md b/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md new file mode 100644 index 00000000..e5cd6680 --- /dev/null +++ b/docs/sdk/models/operations/getmediametadatalibraryoptimizedforstreaming.md @@ -0,0 +1,20 @@ +# GetMediaMetaDataLibraryOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### `operations.GetMediaMetaDataOptimizedForStreaming1` + +```typescript +const value: operations.GetMediaMetaDataOptimizedForStreaming1 = + GetMediaMetaDataOptimizedForStreaming1.One; +``` + +### `boolean` + +```typescript +const value: boolean = false; +``` + diff --git a/docs/sdk/models/operations/getmediametadatamedia.md b/docs/sdk/models/operations/getmediametadatamedia.md index a118d1e4..3d4634d4 100644 --- a/docs/sdk/models/operations/getmediametadatamedia.md +++ b/docs/sdk/models/operations/getmediametadatamedia.md @@ -13,6 +13,7 @@ let value: GetMediaMetaDataMedia = { height: 1602, aspectRatio: 2.35, audioChannels: 6, + displayOffset: 50, audioCodec: "eac3", videoCodec: "hevc", videoResolution: "4k", @@ -20,6 +21,8 @@ let value: GetMediaMetaDataMedia = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, part: [ { accessible: true, @@ -30,8 +33,11 @@ let value: GetMediaMetaDataMedia = { duration: 9610350, file: "/mnt/Movies_1/W/Wicked (2024).mkv", size: 30649952104, + packetLength: 188, container: "mkv", videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, stream: [ { id: 1002625, @@ -43,6 +49,7 @@ let value: GetMediaMetaDataMedia = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -92,17 +99,21 @@ let value: GetMediaMetaDataMedia = { | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | `id` | *number* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *number* | :heavy_check_mark: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *number* | :heavy_check_mark: | Bitrate in bits per second. | 25512 | -| `width` | *number* | :heavy_check_mark: | Video width in pixels. | 3840 | -| `height` | *number* | :heavy_check_mark: | Video height in pixels. | 1602 | -| `aspectRatio` | *number* | :heavy_check_mark: | Aspect ratio of the video. | 2.35 | -| `audioChannels` | *number* | :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 | +| `duration` | *number* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `bitrate` | *number* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `width` | *number* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `height` | *number* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `aspectRatio` | *number* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `audioChannels` | *number* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `displayOffset` | *number* | :heavy_minus_sign: | N/A | 50 | +| `audioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | +| `videoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | +| `videoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | +| `container` | *string* | :heavy_minus_sign: | File container type. | mkv | +| `videoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | +| `videoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | | `hasVoiceActivity` | *boolean* | :heavy_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* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | | `part` | [operations.GetMediaMetaDataPart](../../../sdk/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/sdk/models/operations/getmediametadatamediacontainer.md b/docs/sdk/models/operations/getmediametadatamediacontainer.md index 23a03702..569524a7 100644 --- a/docs/sdk/models/operations/getmediametadatamediacontainer.md +++ b/docs/sdk/models/operations/getmediametadatamediacontainer.md @@ -46,6 +46,8 @@ let value: GetMediaMetaDataMediaContainer = { skipCount: 1, lastViewedAt: 1625764795, year: 2015, + rating: 6, + ratingImage: "rottentomatoes://image.rating.ripe", tagline: "Make the call", chapterSource: "media", primaryExtraKey: "/library/metadata/134704", @@ -57,8 +59,8 @@ let value: GetMediaMetaDataMediaContainer = { leafCount: 63, viewedLeafCount: 4, childCount: 6, - addedAt: 1625505101, - updatedAt: 1736487993, + addedAt: 1556281940, + updatedAt: 1556281940, audienceRatingImage: "themoviedb://image.rating", parentIndex: 2, parentThumb: "/library/metadata/48047/thumb/1671800243", @@ -73,6 +75,7 @@ let value: GetMediaMetaDataMediaContainer = { height: 1602, aspectRatio: 2.35, audioChannels: 6, + displayOffset: 50, audioCodec: "eac3", videoCodec: "hevc", videoResolution: "4k", @@ -80,6 +83,8 @@ let value: GetMediaMetaDataMediaContainer = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, part: [ { accessible: true, @@ -90,8 +95,11 @@ let value: GetMediaMetaDataMediaContainer = { duration: 9610350, file: "/mnt/Movies_1/W/Wicked (2024).mkv", size: 30649952104, + packetLength: 188, container: "mkv", videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, stream: [ { id: 1002625, @@ -103,6 +111,7 @@ let value: GetMediaMetaDataMediaContainer = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -178,7 +187,7 @@ let value: GetMediaMetaDataMediaContainer = { id: "imdb://tt3032476", }, ], - rating: [ + ratings: [ { image: "imdb://image.rating", value: 9, @@ -250,7 +259,7 @@ let value: GetMediaMetaDataMediaContainer = { | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `size` | *number* | :heavy_check_mark: | N/A | 50 | +| `size` | *number* | :heavy_check_mark: | Number of media items returned in this response. | 50 | | `allowSync` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | | `identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | | `librarySectionID` | *number* | :heavy_check_mark: | The unique identifier for the library section. | 2 | diff --git a/docs/sdk/models/operations/getmediametadatametadata.md b/docs/sdk/models/operations/getmediametadatametadata.md index af75629f..4ed8dbb9 100644 --- a/docs/sdk/models/operations/getmediametadatametadata.md +++ b/docs/sdk/models/operations/getmediametadatametadata.md @@ -36,6 +36,8 @@ let value: GetMediaMetaDataMetadata = { skipCount: 1, lastViewedAt: 1625764795, year: 2015, + rating: 6, + ratingImage: "rottentomatoes://image.rating.ripe", tagline: "Make the call", chapterSource: "media", primaryExtraKey: "/library/metadata/134704", @@ -47,8 +49,8 @@ let value: GetMediaMetaDataMetadata = { leafCount: 63, viewedLeafCount: 4, childCount: 6, - addedAt: 1625505101, - updatedAt: 1736487993, + addedAt: 1556281940, + updatedAt: 1556281940, audienceRatingImage: "themoviedb://image.rating", parentIndex: 2, parentThumb: "/library/metadata/48047/thumb/1671800243", @@ -63,6 +65,7 @@ let value: GetMediaMetaDataMetadata = { height: 1602, aspectRatio: 2.35, audioChannels: 6, + displayOffset: 50, audioCodec: "eac3", videoCodec: "hevc", videoResolution: "4k", @@ -70,6 +73,8 @@ let value: GetMediaMetaDataMetadata = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, part: [ { accessible: true, @@ -80,8 +85,11 @@ let value: GetMediaMetaDataMetadata = { duration: 9610350, file: "/mnt/Movies_1/W/Wicked (2024).mkv", size: 30649952104, + packetLength: 188, container: "mkv", videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, stream: [ { id: 1002625, @@ -93,6 +101,7 @@ let value: GetMediaMetaDataMetadata = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -168,7 +177,7 @@ let value: GetMediaMetaDataMetadata = { id: "imdb://tt3032476", }, ], - rating: [ + ratings: [ { image: "imdb://image.rating", value: 9, @@ -256,16 +265,18 @@ let value: GetMediaMetaDataMetadata = { | `librarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | TV Series | | `librarySectionID` | *number* | :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` | *number* | :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` | *number* | :heavy_check_mark: | The audience rating for the content. | 8.7 | +| `audienceRating` | *number* | :heavy_minus_sign: | The audience rating for the content. | 8.7 | | `viewCount` | *number* | :heavy_minus_sign: | The number of times the item has been viewed. | 4 | | `skipCount` | *number* | :heavy_minus_sign: | The number of times the item has been skipped. | 1 | | `lastViewedAt` | *number* | :heavy_minus_sign: | Unix timestamp of when the item was last viewed. | 1625764795 | | `year` | *number* | :heavy_check_mark: | The release year. | 2015 | +| `rating` | *number* | :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 | @@ -273,13 +284,13 @@ let value: GetMediaMetaDataMetadata = { | `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` | *number* | :heavy_check_mark: | Duration of the content in milliseconds. | 2700000 | -| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_check_mark: | The original release date. | 2015-02-08 | +| `originallyAvailableAt` | [RFCDate](../../../types/rfcdate.md) | :heavy_minus_sign: | The original release date. | 2015-02-08 | | `leafCount` | *number* | :heavy_minus_sign: | The total number of episodes (or leaves). | 63 | | `viewedLeafCount` | *number* | :heavy_minus_sign: | The number of episodes that have been viewed. | 4 | | `childCount` | *number* | :heavy_minus_sign: | The number of child items. | 6 | -| `addedAt` | *number* | :heavy_check_mark: | Unix timestamp when the item was added. | 1625505101 | -| `updatedAt` | *number* | :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 | +| `addedAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | +| `updatedAt` | *number* | :heavy_check_mark: | N/A | 1556281940 | +| `audienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | themoviedb://image.rating | | `parentIndex` | *number* | :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 | @@ -289,8 +300,8 @@ let value: GetMediaMetaDataMetadata = { | `ultraBlurColors` | [operations.GetMediaMetaDataUltraBlurColors](../../../sdk/models/operations/getmediametadataultrablurcolors.md) | :heavy_check_mark: | N/A | | | `genre` | [operations.GetMediaMetaDataGenre](../../../sdk/models/operations/getmediametadatagenre.md)[] | :heavy_minus_sign: | An array of genre tags. | | | `country` | [operations.GetMediaMetaDataCountry](../../../sdk/models/operations/getmediametadatacountry.md)[] | :heavy_minus_sign: | An array of country tags. | | -| `guids` | [operations.Guids](../../../sdk/models/operations/guids.md)[] | :heavy_check_mark: | An array of GUID objects. | | -| `rating` | [operations.Rating](../../../sdk/models/operations/rating.md)[] | :heavy_check_mark: | An array of rating objects. | | +| `guids` | [operations.GetMediaMetaDataGuids](../../../sdk/models/operations/getmediametadataguids.md)[] | :heavy_minus_sign: | An array of GUID objects. | | +| `ratings` | [operations.Ratings](../../../sdk/models/operations/ratings.md)[] | :heavy_minus_sign: | An array of rating objects. | | | `role` | [operations.GetMediaMetaDataRole](../../../sdk/models/operations/getmediametadatarole.md)[] | :heavy_minus_sign: | An array of Actor roles. | | | `director` | [operations.GetMediaMetaDataDirector](../../../sdk/models/operations/getmediametadatadirector.md)[] | :heavy_minus_sign: | An array of Director roles. | | | `writer` | [operations.GetMediaMetaDataWriter](../../../sdk/models/operations/getmediametadatawriter.md)[] | :heavy_minus_sign: | An array of Writer roles. | | diff --git a/docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md b/docs/sdk/models/operations/getmediametadataoptimizedforstreaming.md new file mode 100644 index 00000000..e84202e1 --- /dev/null +++ b/docs/sdk/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 + +### `operations.OptimizedForStreaming1` + +```typescript +const value: operations.OptimizedForStreaming1 = OptimizedForStreaming1.Zero; +``` + +### `boolean` + +```typescript +const value: boolean = false; +``` + diff --git a/docs/sdk/models/operations/getmediametadataoptimizedforstreaming1.md b/docs/sdk/models/operations/getmediametadataoptimizedforstreaming1.md new file mode 100644 index 00000000..c44624ef --- /dev/null +++ b/docs/sdk/models/operations/getmediametadataoptimizedforstreaming1.md @@ -0,0 +1,17 @@ +# GetMediaMetaDataOptimizedForStreaming1 + +## Example Usage + +```typescript +import { GetMediaMetaDataOptimizedForStreaming1 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetMediaMetaDataOptimizedForStreaming1 = + GetMediaMetaDataOptimizedForStreaming1.One; +``` + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadatapart.md b/docs/sdk/models/operations/getmediametadatapart.md index eb2ef6e2..524da41d 100644 --- a/docs/sdk/models/operations/getmediametadatapart.md +++ b/docs/sdk/models/operations/getmediametadatapart.md @@ -14,8 +14,11 @@ let value: GetMediaMetaDataPart = { duration: 9610350, file: "/mnt/Movies_1/W/Wicked (2024).mkv", size: 30649952104, + packetLength: 188, container: "mkv", videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, stream: [ { id: 1002625, @@ -27,6 +30,7 @@ let value: GetMediaMetaDataPart = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -71,16 +75,21 @@ let value: GetMediaMetaDataPart = { ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `accessible` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *number* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `duration` | *number* | :heavy_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` | *number* | :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](../../../sdk/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` | *boolean* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `exists` | *boolean* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `id` | *number* | :heavy_check_mark: | Unique part identifier. | 418385 | +| `key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | +| `indexes` | *string* | :heavy_minus_sign: | N/A | sd | +| `duration` | *number* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | +| `file` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | +| `size` | *number* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `packetLength` | *number* | :heavy_minus_sign: | N/A | 188 | +| `container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | +| `videoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | +| `audioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `has64bitOffsets` | *boolean* | :heavy_minus_sign: | N/A | false | +| `optimizedForStreaming` | *operations.GetMediaMetaDataLibraryOptimizedForStreaming* | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `hasThumbnail` | [operations.GetMediaMetaDataHasThumbnail](../../../sdk/models/operations/getmediametadatahasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | [operations.GetMediaMetaDataStream](../../../sdk/models/operations/getmediametadatastream.md)[] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/sdk/models/operations/getmediametadataresponse.md b/docs/sdk/models/operations/getmediametadataresponse.md index 1ae3d42e..b23f3a98 100644 --- a/docs/sdk/models/operations/getmediametadataresponse.md +++ b/docs/sdk/models/operations/getmediametadataresponse.md @@ -8,7 +8,7 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetMediaMetaDataResponse = { contentType: "", - statusCode: 103, + statusCode: 226, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), @@ -53,6 +53,8 @@ let value: GetMediaMetaDataResponse = { skipCount: 1, lastViewedAt: 1625764795, year: 2015, + rating: 6, + ratingImage: "rottentomatoes://image.rating.ripe", tagline: "Make the call", chapterSource: "media", primaryExtraKey: "/library/metadata/134704", @@ -64,8 +66,8 @@ let value: GetMediaMetaDataResponse = { leafCount: 63, viewedLeafCount: 4, childCount: 6, - addedAt: 1625505101, - updatedAt: 1736487993, + addedAt: 1556281940, + updatedAt: 1556281940, audienceRatingImage: "themoviedb://image.rating", parentIndex: 2, parentThumb: "/library/metadata/48047/thumb/1671800243", @@ -80,6 +82,7 @@ let value: GetMediaMetaDataResponse = { height: 1602, aspectRatio: 2.35, audioChannels: 6, + displayOffset: 50, audioCodec: "eac3", videoCodec: "hevc", videoResolution: "4k", @@ -87,6 +90,8 @@ let value: GetMediaMetaDataResponse = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, part: [ { accessible: true, @@ -97,8 +102,11 @@ let value: GetMediaMetaDataResponse = { duration: 9610350, file: "/mnt/Movies_1/W/Wicked (2024).mkv", size: 30649952104, + packetLength: 188, container: "mkv", videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, stream: [ { id: 1002625, @@ -110,6 +118,7 @@ let value: GetMediaMetaDataResponse = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -185,7 +194,7 @@ let value: GetMediaMetaDataResponse = { id: "imdb://tt3032476", }, ], - rating: [ + ratings: [ { image: "imdb://image.rating", value: 9, diff --git a/docs/sdk/models/operations/getmediametadataresponsebody.md b/docs/sdk/models/operations/getmediametadataresponsebody.md index eedddf44..880a1de9 100644 --- a/docs/sdk/models/operations/getmediametadataresponsebody.md +++ b/docs/sdk/models/operations/getmediametadataresponsebody.md @@ -49,6 +49,8 @@ let value: GetMediaMetaDataResponseBody = { skipCount: 1, lastViewedAt: 1625764795, year: 2015, + rating: 6, + ratingImage: "rottentomatoes://image.rating.ripe", tagline: "Make the call", chapterSource: "media", primaryExtraKey: "/library/metadata/134704", @@ -60,8 +62,8 @@ let value: GetMediaMetaDataResponseBody = { leafCount: 63, viewedLeafCount: 4, childCount: 6, - addedAt: 1625505101, - updatedAt: 1736487993, + addedAt: 1556281940, + updatedAt: 1556281940, audienceRatingImage: "themoviedb://image.rating", parentIndex: 2, parentThumb: "/library/metadata/48047/thumb/1671800243", @@ -76,6 +78,7 @@ let value: GetMediaMetaDataResponseBody = { height: 1602, aspectRatio: 2.35, audioChannels: 6, + displayOffset: 50, audioCodec: "eac3", videoCodec: "hevc", videoResolution: "4k", @@ -83,6 +86,8 @@ let value: GetMediaMetaDataResponseBody = { videoFrameRate: "24p", videoProfile: "main 10", hasVoiceActivity: false, + audioProfile: "dts", + has64bitOffsets: false, part: [ { accessible: true, @@ -93,8 +98,11 @@ let value: GetMediaMetaDataResponseBody = { duration: 9610350, file: "/mnt/Movies_1/W/Wicked (2024).mkv", size: 30649952104, + packetLength: 188, container: "mkv", videoProfile: "main 10", + audioProfile: "dts", + has64bitOffsets: false, stream: [ { id: 1002625, @@ -106,6 +114,7 @@ let value: GetMediaMetaDataResponseBody = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -181,7 +190,7 @@ let value: GetMediaMetaDataResponseBody = { id: "imdb://tt3032476", }, ], - rating: [ + ratings: [ { image: "imdb://image.rating", value: 9, diff --git a/docs/sdk/models/operations/getmediametadatastream.md b/docs/sdk/models/operations/getmediametadatastream.md index c5ae5009..73816750 100644 --- a/docs/sdk/models/operations/getmediametadatastream.md +++ b/docs/sdk/models/operations/getmediametadatastream.md @@ -15,6 +15,7 @@ let value: GetMediaMetaDataStream = { language: "English", languageTag: "en", languageCode: "eng", + headerCompression: true, doviblCompatID: 1, doviblPresent: true, dovielPresent: false, @@ -64,10 +65,11 @@ let value: GetMediaMetaDataStream = { | `default` | *boolean* | :heavy_minus_sign: | Indicates if this stream is default. | true | | `codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | | `index` | *number* | :heavy_check_mark: | Index of the stream. | 0 | -| `bitrate` | *number* | :heavy_check_mark: | Bitrate of the stream. | 24743 | +| `bitrate` | *number* | :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` | *boolean* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `doviblCompatID` | *number* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `doviblPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | | `dovielPresent` | *boolean* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | diff --git a/docs/sdk/models/operations/getmetadatachildrenrequest.md b/docs/sdk/models/operations/getmetadatachildrenrequest.md index 29c0d3ab..8797d2ee 100644 --- a/docs/sdk/models/operations/getmetadatachildrenrequest.md +++ b/docs/sdk/models/operations/getmetadatachildrenrequest.md @@ -6,7 +6,7 @@ import { GetMetadataChildrenRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetMetadataChildrenRequest = { - ratingKey: 2239.24, + ratingKey: 6139.66, }; ``` diff --git a/docs/sdk/models/operations/getmetadatachildrenresponse.md b/docs/sdk/models/operations/getmetadatachildrenresponse.md index 35912fbd..7ad1d831 100644 --- a/docs/sdk/models/operations/getmetadatachildrenresponse.md +++ b/docs/sdk/models/operations/getmetadatachildrenresponse.md @@ -7,7 +7,7 @@ import { GetMetadataChildrenResponse } from "@lukehagar/plexjs/sdk/models/operat let value: GetMetadataChildrenResponse = { contentType: "", - statusCode: 226, + statusCode: 305, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getondeckresponse.md b/docs/sdk/models/operations/getondeckresponse.md index 6140589e..14141722 100644 --- a/docs/sdk/models/operations/getondeckresponse.md +++ b/docs/sdk/models/operations/getondeckresponse.md @@ -7,7 +7,7 @@ import { GetOnDeckResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetOnDeckResponse = { contentType: "", - statusCode: 102, + statusCode: 202, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getplaylistcontentsrequest.md b/docs/sdk/models/operations/getplaylistcontentsrequest.md index bc51f92b..8eb6f059 100644 --- a/docs/sdk/models/operations/getplaylistcontentsrequest.md +++ b/docs/sdk/models/operations/getplaylistcontentsrequest.md @@ -6,7 +6,7 @@ import { GetPlaylistContentsQueryParamType, GetPlaylistContentsRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetPlaylistContentsRequest = { - playlistID: 6289.82, + playlistID: 2539.41, type: GetPlaylistContentsQueryParamType.TvShow, }; ``` diff --git a/docs/sdk/models/operations/getplaylistcontentsresponse.md b/docs/sdk/models/operations/getplaylistcontentsresponse.md index dcc4bb58..dc56042d 100644 --- a/docs/sdk/models/operations/getplaylistcontentsresponse.md +++ b/docs/sdk/models/operations/getplaylistcontentsresponse.md @@ -8,7 +8,7 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetPlaylistContentsResponse = { contentType: "", - statusCode: 503, + statusCode: 205, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getplaylistrequest.md b/docs/sdk/models/operations/getplaylistrequest.md index 611129db..16bd95f7 100644 --- a/docs/sdk/models/operations/getplaylistrequest.md +++ b/docs/sdk/models/operations/getplaylistrequest.md @@ -6,7 +6,7 @@ import { GetPlaylistRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetPlaylistRequest = { - playlistID: 2168.97, + playlistID: 8726.51, }; ``` diff --git a/docs/sdk/models/operations/getplaylistresponse.md b/docs/sdk/models/operations/getplaylistresponse.md index b1f3b56d..8790ff79 100644 --- a/docs/sdk/models/operations/getplaylistresponse.md +++ b/docs/sdk/models/operations/getplaylistresponse.md @@ -7,7 +7,7 @@ import { GetPlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetPlaylistResponse = { contentType: "", - statusCode: 407, + statusCode: 207, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getplaylistsresponse.md b/docs/sdk/models/operations/getplaylistsresponse.md index 2fac4603..b645470d 100644 --- a/docs/sdk/models/operations/getplaylistsresponse.md +++ b/docs/sdk/models/operations/getplaylistsresponse.md @@ -7,7 +7,7 @@ import { GetPlaylistsResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetPlaylistsResponse = { contentType: "", - statusCode: 511, + statusCode: 506, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getrecentlyaddedfilter.md b/docs/sdk/models/operations/getrecentlyaddedfilter.md index f257edcc..e73d768d 100644 --- a/docs/sdk/models/operations/getrecentlyaddedfilter.md +++ b/docs/sdk/models/operations/getrecentlyaddedfilter.md @@ -11,6 +11,7 @@ let value: GetRecentlyAddedFilter = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }; ``` @@ -22,4 +23,5 @@ let value: GetRecentlyAddedFilter = { | `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` | *boolean* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/sdk/models/operations/getrecentlyaddedhubstype.md b/docs/sdk/models/operations/getrecentlyaddedhubstype.md index 91cbf3b3..78d9d63b 100644 --- a/docs/sdk/models/operations/getrecentlyaddedhubstype.md +++ b/docs/sdk/models/operations/getrecentlyaddedhubstype.md @@ -18,4 +18,6 @@ let value: GetRecentlyAddedHubsType = GetRecentlyAddedHubsType.Movie; | `Movie` | movie | | `TvShow` | show | | `Season` | season | -| `Episode` | episode | \ No newline at end of file +| `Episode` | episode | +| `Artist` | artist | +| `Album` | album | \ No newline at end of file diff --git a/docs/sdk/models/operations/getrecentlyaddedlibraryfilter.md b/docs/sdk/models/operations/getrecentlyaddedlibraryfilter.md index b17f95c1..264971dd 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibraryfilter.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibraryfilter.md @@ -11,6 +11,7 @@ let value: GetRecentlyAddedLibraryFilter = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }; ``` @@ -22,4 +23,5 @@ let value: GetRecentlyAddedLibraryFilter = { | `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` | *boolean* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/sdk/models/operations/getrecentlyaddedlibrarymediacontainer.md b/docs/sdk/models/operations/getrecentlyaddedlibrarymediacontainer.md index 9bac9607..044491a3 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibrarymediacontainer.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibrarymediacontainer.md @@ -12,7 +12,8 @@ let value: GetRecentlyAddedLibraryMediaContainer = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -22,6 +23,7 @@ let value: GetRecentlyAddedLibraryMediaContainer = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md b/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md index bc8ed00e..76b49087 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibraryresponse.md @@ -16,7 +16,8 @@ let value: GetRecentlyAddedLibraryResponse = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -26,6 +27,7 @@ let value: GetRecentlyAddedLibraryResponse = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getrecentlyaddedlibraryresponsebody.md b/docs/sdk/models/operations/getrecentlyaddedlibraryresponsebody.md index 34b50be0..7f5ccb8f 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibraryresponsebody.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibraryresponsebody.md @@ -12,7 +12,8 @@ let value: GetRecentlyAddedLibraryResponseBody = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -22,6 +23,7 @@ let value: GetRecentlyAddedLibraryResponseBody = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getrecentlyaddedlibrarytype.md b/docs/sdk/models/operations/getrecentlyaddedlibrarytype.md index 9576a945..80e4d4c2 100644 --- a/docs/sdk/models/operations/getrecentlyaddedlibrarytype.md +++ b/docs/sdk/models/operations/getrecentlyaddedlibrarytype.md @@ -7,7 +7,8 @@ import { GetRecentlyAddedLibraryType } from "@lukehagar/plexjs/sdk/models/operat let value: GetRecentlyAddedLibraryType = { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -17,6 +18,7 @@ let value: GetRecentlyAddedLibraryType = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ @@ -45,7 +47,8 @@ let value: GetRecentlyAddedLibraryType = { | 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` | *boolean* | :heavy_check_mark: | N/A | false | | `filter` | [operations.GetRecentlyAddedLibraryFilter](../../../sdk/models/operations/getrecentlyaddedlibraryfilter.md)[] | :heavy_minus_sign: | N/A | | diff --git a/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md b/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md index 36d66805..a7969e72 100644 --- a/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/sdk/models/operations/getrecentlyaddedmediacontainer.md @@ -22,7 +22,8 @@ let value: GetRecentlyAddedMediaContainer = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -32,6 +33,7 @@ let value: GetRecentlyAddedMediaContainer = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getrecentlyaddedresponse.md b/docs/sdk/models/operations/getrecentlyaddedresponse.md index 87367002..316a6c96 100644 --- a/docs/sdk/models/operations/getrecentlyaddedresponse.md +++ b/docs/sdk/models/operations/getrecentlyaddedresponse.md @@ -29,7 +29,8 @@ let value: GetRecentlyAddedResponse = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -39,6 +40,7 @@ let value: GetRecentlyAddedResponse = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getrecentlyaddedresponsebody.md b/docs/sdk/models/operations/getrecentlyaddedresponsebody.md index 0df25dae..05d64862 100644 --- a/docs/sdk/models/operations/getrecentlyaddedresponsebody.md +++ b/docs/sdk/models/operations/getrecentlyaddedresponsebody.md @@ -25,7 +25,8 @@ let value: GetRecentlyAddedResponseBody = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -35,6 +36,7 @@ let value: GetRecentlyAddedResponseBody = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/getrecentlyaddedtype.md b/docs/sdk/models/operations/getrecentlyaddedtype.md index b7256f14..62d84772 100644 --- a/docs/sdk/models/operations/getrecentlyaddedtype.md +++ b/docs/sdk/models/operations/getrecentlyaddedtype.md @@ -7,7 +7,8 @@ import { GetRecentlyAddedType } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetRecentlyAddedType = { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -17,6 +18,7 @@ let value: GetRecentlyAddedType = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ @@ -45,7 +47,8 @@ let value: GetRecentlyAddedType = { | 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` | *boolean* | :heavy_check_mark: | N/A | false | | `filter` | [operations.GetRecentlyAddedFilter](../../../sdk/models/operations/getrecentlyaddedfilter.md)[] | :heavy_minus_sign: | N/A | | diff --git a/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md b/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md index 5640bd89..88d7370a 100644 --- a/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md +++ b/docs/sdk/models/operations/getrefreshlibrarymetadataresponse.md @@ -7,7 +7,7 @@ import { GetRefreshLibraryMetadataResponse } from "@lukehagar/plexjs/sdk/models/ let value: GetRefreshLibraryMetadataResponse = { contentType: "", - statusCode: 102, + statusCode: 300, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getresourcesstatisticsresponse.md b/docs/sdk/models/operations/getresourcesstatisticsresponse.md index c8b590b3..505abc8d 100644 --- a/docs/sdk/models/operations/getresourcesstatisticsresponse.md +++ b/docs/sdk/models/operations/getresourcesstatisticsresponse.md @@ -7,7 +7,7 @@ import { GetResourcesStatisticsResponse } from "@lukehagar/plexjs/sdk/models/ope let value: GetResourcesStatisticsResponse = { contentType: "", - statusCode: 423, + statusCode: 103, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md b/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md index 26312ec4..85eacf9c 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md +++ b/docs/sdk/models/operations/getsearchalllibrariesmediacontainer.md @@ -15,10 +15,10 @@ import { import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetSearchAllLibrariesMediaContainer = { - size: 8558.04, + size: 543.38, searchResult: [ { - score: 117.14, + score: 1999.96, metadata: { ratingKey: "58683", key: "/library/metadata/58683", diff --git a/docs/sdk/models/operations/getsearchalllibrariesqueryparamincludecollections.md b/docs/sdk/models/operations/getsearchalllibrariesqueryparamincludecollections.md new file mode 100644 index 00000000..4346490d --- /dev/null +++ b/docs/sdk/models/operations/getsearchalllibrariesqueryparamincludecollections.md @@ -0,0 +1,19 @@ +# GetSearchAllLibrariesQueryParamIncludeCollections + +Whether to include collections in the search results. + +## Example Usage + +```typescript +import { GetSearchAllLibrariesQueryParamIncludeCollections } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetSearchAllLibrariesQueryParamIncludeCollections = + GetSearchAllLibrariesQueryParamIncludeCollections.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md b/docs/sdk/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md new file mode 100644 index 00000000..e1ea075f --- /dev/null +++ b/docs/sdk/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md @@ -0,0 +1,19 @@ +# GetSearchAllLibrariesQueryParamIncludeExternalMedia + +Whether to include external media in the search results. + +## Example Usage + +```typescript +import { GetSearchAllLibrariesQueryParamIncludeExternalMedia } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: GetSearchAllLibrariesQueryParamIncludeExternalMedia = + GetSearchAllLibrariesQueryParamIncludeExternalMedia.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsearchalllibrariesrequest.md b/docs/sdk/models/operations/getsearchalllibrariesrequest.md index 99f88725..6e8d2e58 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesrequest.md +++ b/docs/sdk/models/operations/getsearchalllibrariesrequest.md @@ -9,18 +9,18 @@ let value: GetSearchAllLibrariesRequest = { query: "", clientID: "3381b62b-9ab7-4e37-827b-203e9809eb58", searchTypes: [ - SearchTypes.Tv, + SearchTypes.Movies, ], }; ``` ## 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` | *number* | :heavy_minus_sign: | Limit the number of results returned. | | -| `searchTypes` | [operations.SearchTypes](../../../sdk/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](../../../sdk/models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | -| `includeExternalMedia` | [operations.QueryParamIncludeExternalMedia](../../../sdk/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` | *number* | :heavy_minus_sign: | Limit the number of results returned. | | +| `searchTypes` | [operations.SearchTypes](../../../sdk/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](../../../sdk/models/operations/getsearchalllibrariesqueryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | +| `includeExternalMedia` | [operations.GetSearchAllLibrariesQueryParamIncludeExternalMedia](../../../sdk/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/sdk/models/operations/getsearchalllibrariesresponse.md b/docs/sdk/models/operations/getsearchalllibrariesresponse.md index 11c3248f..aa5e2f88 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesresponse.md +++ b/docs/sdk/models/operations/getsearchalllibrariesresponse.md @@ -16,16 +16,16 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetSearchAllLibrariesResponse = { contentType: "", - statusCode: 102, + statusCode: 203, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), object: { mediaContainer: { - size: 543.38, + size: 9280.82, searchResult: [ { - score: 1999.96, + score: 7044.15, metadata: { ratingKey: "58683", key: "/library/metadata/58683", diff --git a/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md b/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md index 8baa5b10..ac19a731 100644 --- a/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md +++ b/docs/sdk/models/operations/getsearchalllibrariesresponsebody.md @@ -18,10 +18,10 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetSearchAllLibrariesResponseBody = { mediaContainer: { - size: 3599.78, + size: 185.21, searchResult: [ { - score: 7299.91, + score: 7936.98, metadata: { ratingKey: "58683", key: "/library/metadata/58683", diff --git a/docs/sdk/models/operations/getsearchalllibrariestype.md b/docs/sdk/models/operations/getsearchalllibrariestype.md index 778db5c7..4404b3b0 100644 --- a/docs/sdk/models/operations/getsearchalllibrariestype.md +++ b/docs/sdk/models/operations/getsearchalllibrariestype.md @@ -18,4 +18,6 @@ let value: GetSearchAllLibrariesType = GetSearchAllLibrariesType.Movie; | `Movie` | movie | | `TvShow` | show | | `Season` | season | -| `Episode` | episode | \ No newline at end of file +| `Episode` | episode | +| `Artist` | artist | +| `Album` | album | \ No newline at end of file diff --git a/docs/sdk/models/operations/getsearchlibraryresponse.md b/docs/sdk/models/operations/getsearchlibraryresponse.md index cf0cfb7e..a957fdda 100644 --- a/docs/sdk/models/operations/getsearchlibraryresponse.md +++ b/docs/sdk/models/operations/getsearchlibraryresponse.md @@ -7,7 +7,7 @@ import { GetSearchLibraryResponse } from "@lukehagar/plexjs/sdk/models/operation let value: GetSearchLibraryResponse = { contentType: "", - statusCode: 103, + statusCode: 413, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getsessionhistoryresponse.md b/docs/sdk/models/operations/getsessionhistoryresponse.md index a58742c4..fd554a1f 100644 --- a/docs/sdk/models/operations/getsessionhistoryresponse.md +++ b/docs/sdk/models/operations/getsessionhistoryresponse.md @@ -8,7 +8,7 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetSessionHistoryResponse = { contentType: "", - statusCode: 503, + statusCode: 101, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getsessionsresponse.md b/docs/sdk/models/operations/getsessionsresponse.md index 29531c90..44484669 100644 --- a/docs/sdk/models/operations/getsessionsresponse.md +++ b/docs/sdk/models/operations/getsessionsresponse.md @@ -7,7 +7,7 @@ import { GetSessionsResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetSessionsResponse = { contentType: "", - statusCode: 305, + statusCode: 205, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getsourceconnectioninformationresponse.md b/docs/sdk/models/operations/getsourceconnectioninformationresponse.md index 9a70f217..c4e55fe2 100644 --- a/docs/sdk/models/operations/getsourceconnectioninformationresponse.md +++ b/docs/sdk/models/operations/getsourceconnectioninformationresponse.md @@ -7,7 +7,7 @@ import { GetSourceConnectionInformationResponse } from "@lukehagar/plexjs/sdk/mo let value: GetSourceConnectionInformationResponse = { contentType: "", - statusCode: 204, + statusCode: 301, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getstatisticsresponse.md b/docs/sdk/models/operations/getstatisticsresponse.md index bf016fb0..7ae63dd1 100644 --- a/docs/sdk/models/operations/getstatisticsresponse.md +++ b/docs/sdk/models/operations/getstatisticsresponse.md @@ -7,7 +7,7 @@ import { GetStatisticsResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetStatisticsResponse = { contentType: "", - statusCode: 226, + statusCode: 201, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/gettokendetailsresponse.md b/docs/sdk/models/operations/gettokendetailsresponse.md index e6e64b2d..57ac593f 100644 --- a/docs/sdk/models/operations/gettokendetailsresponse.md +++ b/docs/sdk/models/operations/gettokendetailsresponse.md @@ -13,7 +13,7 @@ import { let value: GetTokenDetailsResponse = { contentType: "", - statusCode: 307, + statusCode: 303, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), @@ -31,7 +31,7 @@ let value: GetTokenDetailsResponse = { homeSize: 1, id: 13692262, joinedAt: 1556281940, - locale: "fr", + locale: "no", mailingListStatus: MailingListStatus.Active, maxHomeSize: 15, profile: { diff --git a/docs/sdk/models/operations/gettokendetailsuserplexaccount.md b/docs/sdk/models/operations/gettokendetailsuserplexaccount.md index f28b834a..6f13f71b 100644 --- a/docs/sdk/models/operations/gettokendetailsuserplexaccount.md +++ b/docs/sdk/models/operations/gettokendetailsuserplexaccount.md @@ -27,7 +27,7 @@ let value: GetTokenDetailsUserPlexAccount = { homeSize: 1, id: 13692262, joinedAt: 1556281940, - locale: "pt", + locale: "fr", mailingListStatus: MailingListStatus.Active, maxHomeSize: 15, profile: { diff --git a/docs/sdk/models/operations/gettopwatchedcontentresponse.md b/docs/sdk/models/operations/gettopwatchedcontentresponse.md index 17d52b97..8fd10250 100644 --- a/docs/sdk/models/operations/gettopwatchedcontentresponse.md +++ b/docs/sdk/models/operations/gettopwatchedcontentresponse.md @@ -8,7 +8,7 @@ import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: GetTopWatchedContentResponse = { contentType: "", - statusCode: 400, + statusCode: 409, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/gettranscodesessionsresponse.md b/docs/sdk/models/operations/gettranscodesessionsresponse.md index 98de94d0..59e51346 100644 --- a/docs/sdk/models/operations/gettranscodesessionsresponse.md +++ b/docs/sdk/models/operations/gettranscodesessionsresponse.md @@ -7,7 +7,7 @@ import { GetTranscodeSessionsResponse } from "@lukehagar/plexjs/sdk/models/opera let value: GetTranscodeSessionsResponse = { contentType: "", - statusCode: 201, + statusCode: 510, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/gettransienttokenresponse.md b/docs/sdk/models/operations/gettransienttokenresponse.md index ad51ace7..43cff5fe 100644 --- a/docs/sdk/models/operations/gettransienttokenresponse.md +++ b/docs/sdk/models/operations/gettransienttokenresponse.md @@ -7,7 +7,7 @@ import { GetTransientTokenResponse } from "@lukehagar/plexjs/sdk/models/operatio let value: GetTransientTokenResponse = { contentType: "", - statusCode: 100, + statusCode: 102, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getupdatestatusresponse.md b/docs/sdk/models/operations/getupdatestatusresponse.md index 03f31c76..75585685 100644 --- a/docs/sdk/models/operations/getupdatestatusresponse.md +++ b/docs/sdk/models/operations/getupdatestatusresponse.md @@ -7,7 +7,7 @@ import { GetUpdateStatusResponse } from "@lukehagar/plexjs/sdk/models/operations let value: GetUpdateStatusResponse = { contentType: "", - statusCode: 424, + statusCode: 226, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getusersresponse.md b/docs/sdk/models/operations/getusersresponse.md index b322828a..21d3ab96 100644 --- a/docs/sdk/models/operations/getusersresponse.md +++ b/docs/sdk/models/operations/getusersresponse.md @@ -7,7 +7,7 @@ import { GetUsersResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetUsersResponse = { contentType: "", - statusCode: 510, + statusCode: 208, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/getwatchlistrequest.md b/docs/sdk/models/operations/getwatchlistrequest.md index b89ab30d..9e9c7015 100644 --- a/docs/sdk/models/operations/getwatchlistrequest.md +++ b/docs/sdk/models/operations/getwatchlistrequest.md @@ -6,7 +6,7 @@ import { Filter, GetWatchListRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetWatchListRequest = { - filter: Filter.Available, + filter: Filter.All, xPlexToken: "CV5xoxjTpFKUzBTShsaf", }; ``` diff --git a/docs/sdk/models/operations/getwatchlistresponse.md b/docs/sdk/models/operations/getwatchlistresponse.md index 72ce6a3f..5029a580 100644 --- a/docs/sdk/models/operations/getwatchlistresponse.md +++ b/docs/sdk/models/operations/getwatchlistresponse.md @@ -7,7 +7,7 @@ import { GetWatchListResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: GetWatchListResponse = { contentType: "", - statusCode: 306, + statusCode: 200, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/guids.md b/docs/sdk/models/operations/guids.md index dc307535..98432a0b 100644 --- a/docs/sdk/models/operations/guids.md +++ b/docs/sdk/models/operations/guids.md @@ -6,12 +6,12 @@ import { Guids } from "@lukehagar/plexjs/sdk/models/operations"; let value: Guids = { - id: "imdb://tt3032476", + id: "tvdb://2337", }; ``` ## 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/sdk/models/operations/includeadvanced.md b/docs/sdk/models/operations/includeadvanced.md new file mode 100644 index 00000000..6ac084bf --- /dev/null +++ b/docs/sdk/models/operations/includeadvanced.md @@ -0,0 +1,16 @@ +# IncludeAdvanced + +## Example Usage + +```typescript +import { IncludeAdvanced } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: IncludeAdvanced = IncludeAdvanced.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/includeexternalmedia.md b/docs/sdk/models/operations/includeexternalmedia.md index e720260e..309bac8f 100644 --- a/docs/sdk/models/operations/includeexternalmedia.md +++ b/docs/sdk/models/operations/includeexternalmedia.md @@ -8,7 +8,7 @@ include external media in the results ```typescript import { IncludeExternalMedia } from "@lukehagar/plexjs/sdk/models/operations"; -let value: IncludeExternalMedia = IncludeExternalMedia.Zero; +let value: IncludeExternalMedia = IncludeExternalMedia.One; ``` ## Values diff --git a/docs/sdk/models/operations/level.md b/docs/sdk/models/operations/level.md index f843a310..861ffd0b 100644 --- a/docs/sdk/models/operations/level.md +++ b/docs/sdk/models/operations/level.md @@ -13,7 +13,7 @@ An integer log level to write to the PMS log with. ```typescript import { Level } from "@lukehagar/plexjs/sdk/models/operations"; -let value: Level = Level.One; +let value: Level = Level.Two; ``` ## Values diff --git a/docs/sdk/models/operations/libtype.md b/docs/sdk/models/operations/libtype.md index ff8aa206..00bd8379 100644 --- a/docs/sdk/models/operations/libtype.md +++ b/docs/sdk/models/operations/libtype.md @@ -8,7 +8,7 @@ The type of library to filter. Can be "movie" or "show", or all if not present. ```typescript import { Libtype } from "@lukehagar/plexjs/sdk/models/operations"; -let value: Libtype = Libtype.Movie; +let value: Libtype = Libtype.Show; ``` ## Values diff --git a/docs/sdk/models/operations/loglineresponse.md b/docs/sdk/models/operations/loglineresponse.md index 94aa5aa7..1dfad548 100644 --- a/docs/sdk/models/operations/loglineresponse.md +++ b/docs/sdk/models/operations/loglineresponse.md @@ -7,7 +7,7 @@ import { LogLineResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: LogLineResponse = { contentType: "", - statusCode: 201, + statusCode: 410, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/logmultilineresponse.md b/docs/sdk/models/operations/logmultilineresponse.md index 5f16d780..bc67217d 100644 --- a/docs/sdk/models/operations/logmultilineresponse.md +++ b/docs/sdk/models/operations/logmultilineresponse.md @@ -7,7 +7,7 @@ import { LogMultiLineResponse } from "@lukehagar/plexjs/sdk/models/operations"; let value: LogMultiLineResponse = { contentType: "", - statusCode: 508, + statusCode: 100, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/meta.md b/docs/sdk/models/operations/meta.md index 76a37a7b..3670fb92 100644 --- a/docs/sdk/models/operations/meta.md +++ b/docs/sdk/models/operations/meta.md @@ -12,7 +12,8 @@ let value: Meta = { type: [ { key: "/library/sections/2/all?type=2", - type: "show", + type: "filter", + subtype: "clip", title: "TV Shows", active: false, filter: [ @@ -22,6 +23,7 @@ let value: Meta = { key: "/library/sections/2/genre?type=2", title: "Genre", type: "filter", + advanced: true, }, ], sort: [ diff --git a/docs/sdk/models/operations/one.md b/docs/sdk/models/operations/one.md new file mode 100644 index 00000000..8b1d1ec4 --- /dev/null +++ b/docs/sdk/models/operations/one.md @@ -0,0 +1,16 @@ +# One + +## Example Usage + +```typescript +import { One } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: One = One.Zero; +``` + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/optimizedforstreaming1.md b/docs/sdk/models/operations/optimizedforstreaming1.md new file mode 100644 index 00000000..02900e40 --- /dev/null +++ b/docs/sdk/models/operations/optimizedforstreaming1.md @@ -0,0 +1,16 @@ +# OptimizedForStreaming1 + +## Example Usage + +```typescript +import { OptimizedForStreaming1 } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: OptimizedForStreaming1 = OptimizedForStreaming1.Zero; +``` + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/pastsubscription.md b/docs/sdk/models/operations/pastsubscription.md index b7ae5d2e..a439bb7f 100644 --- a/docs/sdk/models/operations/pastsubscription.md +++ b/docs/sdk/models/operations/pastsubscription.md @@ -15,7 +15,7 @@ let value: PastSubscription = { state: PostUsersSignInDataState.Ended, billing: { internalPaymentMethod: {}, - paymentMethodId: 132068, + paymentMethodId: 748664, }, }; ``` diff --git a/docs/sdk/models/operations/postuserssignindataresponse.md b/docs/sdk/models/operations/postuserssignindataresponse.md index 7f6a02db..295826bc 100644 --- a/docs/sdk/models/operations/postuserssignindataresponse.md +++ b/docs/sdk/models/operations/postuserssignindataresponse.md @@ -14,7 +14,7 @@ import { let value: PostUsersSignInDataResponse = { contentType: "", - statusCode: 301, + statusCode: 305, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), @@ -32,7 +32,7 @@ let value: PostUsersSignInDataResponse = { homeSize: 1, id: 13692262, joinedAt: 1556281940, - locale: "fr", + locale: "el", mailingListStatus: PostUsersSignInDataMailingListStatus.Active, maxHomeSize: 15, profile: { @@ -79,7 +79,7 @@ let value: PostUsersSignInDataResponse = { state: PostUsersSignInDataState.Ended, billing: { internalPaymentMethod: {}, - paymentMethodId: 488056, + paymentMethodId: 292147, }, }, ], diff --git a/docs/sdk/models/operations/postuserssignindatauserplexaccount.md b/docs/sdk/models/operations/postuserssignindatauserplexaccount.md index c25e56d1..e31e7fda 100644 --- a/docs/sdk/models/operations/postuserssignindatauserplexaccount.md +++ b/docs/sdk/models/operations/postuserssignindatauserplexaccount.md @@ -28,7 +28,7 @@ let value: PostUsersSignInDataUserPlexAccount = { homeSize: 1, id: 13692262, joinedAt: 1556281940, - locale: "pl", + locale: "no", mailingListStatus: PostUsersSignInDataMailingListStatus.Active, maxHomeSize: 15, profile: { @@ -75,7 +75,7 @@ let value: PostUsersSignInDataUserPlexAccount = { state: PostUsersSignInDataState.Ended, billing: { internalPaymentMethod: {}, - paymentMethodId: 396060, + paymentMethodId: 83422, }, }, ], diff --git a/docs/sdk/models/operations/queryparamincludecollections.md b/docs/sdk/models/operations/queryparamincludecollections.md index 661dcb2c..81b8fb39 100644 --- a/docs/sdk/models/operations/queryparamincludecollections.md +++ b/docs/sdk/models/operations/queryparamincludecollections.md @@ -1,7 +1,5 @@ # QueryParamIncludeCollections -Whether to include collections in the search results. - ## Example Usage ```typescript diff --git a/docs/sdk/models/operations/queryparamincludeexternalmedia.md b/docs/sdk/models/operations/queryparamincludeexternalmedia.md index 48b7d33c..b120ac3c 100644 --- a/docs/sdk/models/operations/queryparamincludeexternalmedia.md +++ b/docs/sdk/models/operations/queryparamincludeexternalmedia.md @@ -1,7 +1,5 @@ # QueryParamIncludeExternalMedia -Whether to include external media in the search results. - ## Example Usage ```typescript diff --git a/docs/sdk/models/operations/queryparamincludeguids.md b/docs/sdk/models/operations/queryparamincludeguids.md new file mode 100644 index 00000000..0f737ce1 --- /dev/null +++ b/docs/sdk/models/operations/queryparamincludeguids.md @@ -0,0 +1,19 @@ +# QueryParamIncludeGuids + +Adds the Guid object to the response + + +## Example Usage + +```typescript +import { QueryParamIncludeGuids } from "@lukehagar/plexjs/sdk/models/operations"; + +let value: QueryParamIncludeGuids = QueryParamIncludeGuids.Enable; +``` + +## Values + +| Name | Value | +| --------- | --------- | +| `Disable` | 0 | +| `Enable` | 1 | \ No newline at end of file diff --git a/docs/sdk/models/operations/rating.md b/docs/sdk/models/operations/ratings.md similarity index 92% rename from docs/sdk/models/operations/rating.md rename to docs/sdk/models/operations/ratings.md index f1e9f0db..ce6b866e 100644 --- a/docs/sdk/models/operations/rating.md +++ b/docs/sdk/models/operations/ratings.md @@ -1,11 +1,11 @@ -# Rating +# Ratings ## Example Usage ```typescript -import { Rating } from "@lukehagar/plexjs/sdk/models/operations"; +import { Ratings } from "@lukehagar/plexjs/sdk/models/operations"; -let value: Rating = { +let value: Ratings = { image: "imdb://image.rating", value: 9, type: "audience", diff --git a/docs/sdk/models/operations/searchresult.md b/docs/sdk/models/operations/searchresult.md index 0da99516..19905b99 100644 --- a/docs/sdk/models/operations/searchresult.md +++ b/docs/sdk/models/operations/searchresult.md @@ -15,7 +15,7 @@ import { import { RFCDate } from "@lukehagar/plexjs/sdk/types"; let value: SearchResult = { - score: 9755.22, + score: 5210.37, metadata: { ratingKey: "58683", key: "/library/metadata/58683", diff --git a/docs/sdk/models/operations/smart.md b/docs/sdk/models/operations/smart.md index 74b6be4f..cfaf9932 100644 --- a/docs/sdk/models/operations/smart.md +++ b/docs/sdk/models/operations/smart.md @@ -7,7 +7,7 @@ whether the playlist is smart or not ```typescript import { Smart } from "@lukehagar/plexjs/sdk/models/operations"; -let value: Smart = Smart.Zero; +let value: Smart = Smart.One; ``` ## Values diff --git a/docs/sdk/models/operations/stoptranscodesessionresponse.md b/docs/sdk/models/operations/stoptranscodesessionresponse.md index 61bce81e..62b0b6be 100644 --- a/docs/sdk/models/operations/stoptranscodesessionresponse.md +++ b/docs/sdk/models/operations/stoptranscodesessionresponse.md @@ -7,7 +7,7 @@ import { StopTranscodeSessionResponse } from "@lukehagar/plexjs/sdk/models/opera let value: StopTranscodeSessionResponse = { contentType: "", - statusCode: 103, + statusCode: 226, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/tag.md b/docs/sdk/models/operations/tag.md index 405c67d7..96666393 100644 --- a/docs/sdk/models/operations/tag.md +++ b/docs/sdk/models/operations/tag.md @@ -14,7 +14,6 @@ let value: Tag = Tag.Newest; | Name | Value | | ---------------- | ---------------- | -| `All` | all | | `Unwatched` | unwatched | | `Newest` | newest | | `RecentlyAdded` | recentlyAdded | @@ -22,12 +21,9 @@ let value: Tag = Tag.Newest; | `OnDeck` | onDeck | | `Collection` | collection | | `Edition` | edition | -| `Genre` | genre | | `Year` | year | | `Decade` | decade | | `Director` | director | -| `Actor` | actor | -| `Country` | country | | `ContentRating` | contentRating | | `Rating` | rating | | `Resolution` | resolution | diff --git a/docs/sdk/models/operations/updateplaylistrequest.md b/docs/sdk/models/operations/updateplaylistrequest.md index 80c7ade1..8ab37336 100644 --- a/docs/sdk/models/operations/updateplaylistrequest.md +++ b/docs/sdk/models/operations/updateplaylistrequest.md @@ -6,7 +6,7 @@ import { UpdatePlaylistRequest } from "@lukehagar/plexjs/sdk/models/operations"; let value: UpdatePlaylistRequest = { - playlistID: 3834.64, + playlistID: 2155.07, }; ``` diff --git a/docs/sdk/models/operations/updateplaylistresponse.md b/docs/sdk/models/operations/updateplaylistresponse.md index 8027c71a..89884886 100644 --- a/docs/sdk/models/operations/updateplaylistresponse.md +++ b/docs/sdk/models/operations/updateplaylistresponse.md @@ -7,7 +7,7 @@ import { UpdatePlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations" let value: UpdatePlaylistResponse = { contentType: "", - statusCode: 307, + statusCode: 508, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdk/models/operations/uploadplaylistrequest.md b/docs/sdk/models/operations/uploadplaylistrequest.md index 1efbb2c1..f60f6883 100644 --- a/docs/sdk/models/operations/uploadplaylistrequest.md +++ b/docs/sdk/models/operations/uploadplaylistrequest.md @@ -7,7 +7,7 @@ import { QueryParamForce, UploadPlaylistRequest } from "@lukehagar/plexjs/sdk/mo let value: UploadPlaylistRequest = { path: "/home/barkley/playlist.m3u", - force: QueryParamForce.Zero, + force: QueryParamForce.One, sectionID: 1, }; ``` diff --git a/docs/sdk/models/operations/uploadplaylistresponse.md b/docs/sdk/models/operations/uploadplaylistresponse.md index 8a66cea1..fb724bb7 100644 --- a/docs/sdk/models/operations/uploadplaylistresponse.md +++ b/docs/sdk/models/operations/uploadplaylistresponse.md @@ -7,7 +7,7 @@ import { UploadPlaylistResponse } from "@lukehagar/plexjs/sdk/models/operations" let value: UploadPlaylistResponse = { contentType: "", - statusCode: 205, + statusCode: 102, rawResponse: new Response("{\"message\": \"hello world\"}", { headers: { "Content-Type": "application/json" }, }), diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 98d2995f..43ef0dec 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 @@ -585,6 +586,89 @@ run(); | errors.GetLibraryItemsUnauthorized | 401 | application/json | | errors.SDKError | 4XX, 5XX | \*/\* | +## getAllMediaLibrary + +Retrieves a list of all general media data for this library. + + +### Example Usage + +```typescript +import { PlexAPI } from "@lukehagar/plexjs"; +import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; + +const plexAPI = new PlexAPI({ + accessToken: "", +}); + +async function run() { + const result = await plexAPI.library.getAllMediaLibrary({ + sectionKey: 9518, + type: GetAllMediaLibraryQueryParamType.TvShow, + }); + + // Handle the result + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { PlexAPICore } from "@lukehagar/plexjs/core.js"; +import { libraryGetAllMediaLibrary } from "@lukehagar/plexjs/funcs/libraryGetAllMediaLibrary.js"; +import { GetAllMediaLibraryQueryParamType } from "@lukehagar/plexjs/sdk/models/operations"; + +// Use `PlexAPICore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const plexAPI = new PlexAPICore({ + accessToken: "", +}); + +async function run() { + const res = await libraryGetAllMediaLibrary(plexAPI, { + sectionKey: 9518, + type: GetAllMediaLibraryQueryParamType.TvShow, + }); + + if (!res.ok) { + throw res.error; + } + + const { value: result } = res; + + // Handle the result + console.log(result); +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetAllMediaLibraryRequest](../../sdk/models/operations/getallmedialibraryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.GetAllMediaLibraryResponse](../../sdk/models/operations/getallmedialibraryresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| errors.GetAllMediaLibraryBadRequest | 400 | application/json | +| errors.GetAllMediaLibraryUnauthorized | 401 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | + ## getRefreshLibraryMetadata This endpoint Refreshes all the Metadata of the library. diff --git a/jsr.json b/jsr.json index af32747e..9a2f78eb 100644 --- a/jsr.json +++ b/jsr.json @@ -2,7 +2,7 @@ { "name": "@lukehagar/plexjs", - "version": "0.33.0", + "version": "0.34.0", "exports": { ".": "./src/index.ts", "./sdk/models/errors": "./src/sdk/models/errors/index.ts", diff --git a/package-lock.json b/package-lock.json index ca6a2d7c..e5228c9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lukehagar/plexjs", - "version": "0.33.0", + "version": "0.34.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@lukehagar/plexjs", - "version": "0.33.0", + "version": "0.34.0", "devDependencies": { "@eslint/js": "^9.19.0", "eslint": "^9.19.0", diff --git a/package.json b/package.json index 20da14ab..8a6c6104 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lukehagar/plexjs", - "version": "0.33.0", + "version": "0.34.0", "author": "LukeHagar", "main": "./index.js", "sideEffects": false, diff --git a/src/funcs/libraryGetAllMediaLibrary.ts b/src/funcs/libraryGetAllMediaLibrary.ts new file mode 100644 index 00000000..7597c62c --- /dev/null +++ b/src/funcs/libraryGetAllMediaLibrary.ts @@ -0,0 +1,161 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { PlexAPICore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../sdk/models/errors/httpclienterrors.js"; +import * as errors from "../sdk/models/errors/index.js"; +import { SDKError } from "../sdk/models/errors/sdkerror.js"; +import { SDKValidationError } from "../sdk/models/errors/sdkvalidationerror.js"; +import * as operations from "../sdk/models/operations/index.js"; +import { Result } from "../sdk/types/fp.js"; + +/** + * Get all media of library + * + * @remarks + * Retrieves a list of all general media data for this library. + */ +export async function libraryGetAllMediaLibrary( + client: PlexAPICore, + request: operations.GetAllMediaLibraryRequest, + options?: RequestOptions, +): Promise< + Result< + operations.GetAllMediaLibraryResponse, + | errors.GetAllMediaLibraryBadRequest + | errors.GetAllMediaLibraryUnauthorized + | SDKError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + > +> { + const parsed = safeParse( + request, + (value) => operations.GetAllMediaLibraryRequest$outboundSchema.parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return parsed; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + sectionKey: encodeSimple("sectionKey", payload.sectionKey, { + explode: false, + charEncoding: "percent", + }), + }; + + const path = pathToFunc("/library/sections/{sectionKey}/all")(pathParams); + + const query = encodeFormQuery({ + "includeAdvanced": payload.includeAdvanced, + "includeCollections": payload.includeCollections, + "includeExternalMedia": payload.includeExternalMedia, + "includeGuids": payload.includeGuids, + "includeMeta": payload.includeMeta, + "type": payload.type, + "X-Plex-Container-Size": payload["X-Plex-Container-Size"], + "X-Plex-Container-Start": payload["X-Plex-Container-Start"], + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.accessToken); + const securityInput = secConfig == null ? {} : { accessToken: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + operationID: "get-all-media-library", + oAuth2Scopes: [], + + resolvedSecurity: requestSecurity, + + securitySource: client._options.accessToken, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "GET", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return requestRes; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + errorCodes: ["400", "401", "404", "4XX", "5XX"], + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return doResult; + } + const response = doResult.value; + + const responseFields = { + ContentType: response.headers.get("content-type") + ?? "application/octet-stream", + StatusCode: response.status, + RawResponse: response, + Headers: {}, + }; + + const [result] = await M.match< + operations.GetAllMediaLibraryResponse, + | errors.GetAllMediaLibraryBadRequest + | errors.GetAllMediaLibraryUnauthorized + | SDKError + | SDKValidationError + | UnexpectedClientError + | InvalidRequestError + | RequestAbortedError + | RequestTimeoutError + | ConnectionError + >( + M.json(200, operations.GetAllMediaLibraryResponse$inboundSchema, { + key: "object", + }), + M.jsonErr(400, errors.GetAllMediaLibraryBadRequest$inboundSchema), + M.jsonErr(401, errors.GetAllMediaLibraryUnauthorized$inboundSchema), + M.fail([404, "4XX"]), + M.fail("5XX"), + )(response, { extraFields: responseFields }); + if (!result.ok) { + return result; + } + + return result; +} diff --git a/src/lib/config.ts b/src/lib/config.ts index e972f431..0a946ec4 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -90,7 +90,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "0.0.3", - sdkVersion: "0.33.0", + sdkVersion: "0.34.0", genVersion: "2.506.0", - userAgent: "speakeasy-sdk/typescript 0.33.0 2.506.0 0.0.3 @lukehagar/plexjs", + userAgent: "speakeasy-sdk/typescript 0.34.0 2.506.0 0.0.3 @lukehagar/plexjs", } as const; diff --git a/src/sdk/library.ts b/src/sdk/library.ts index 65a580d3..12e1a94c 100644 --- a/src/sdk/library.ts +++ b/src/sdk/library.ts @@ -5,6 +5,7 @@ import { libraryDeleteLibrary } from "../funcs/libraryDeleteLibrary.js"; import { libraryGetActorsLibrary } from "../funcs/libraryGetActorsLibrary.js"; import { libraryGetAllLibraries } from "../funcs/libraryGetAllLibraries.js"; +import { libraryGetAllMediaLibrary } from "../funcs/libraryGetAllMediaLibrary.js"; import { libraryGetCountriesLibrary } from "../funcs/libraryGetCountriesLibrary.js"; import { libraryGetFileHash } from "../funcs/libraryGetFileHash.js"; import { libraryGetGenresLibrary } from "../funcs/libraryGetGenresLibrary.js"; @@ -190,6 +191,23 @@ export class Library extends ClientSDK { )); } + /** + * Get all media of library + * + * @remarks + * Retrieves a list of all general media data for this library. + */ + async getAllMediaLibrary( + request: operations.GetAllMediaLibraryRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(libraryGetAllMediaLibrary( + this, + request, + options, + )); + } + /** * Refresh Metadata Of The Library * diff --git a/src/sdk/models/errors/getallmedialibrary.ts b/src/sdk/models/errors/getallmedialibrary.ts new file mode 100644 index 00000000..37092fad --- /dev/null +++ b/src/sdk/models/errors/getallmedialibrary.ts @@ -0,0 +1,336 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "./sdkvalidationerror.js"; + +export type GetAllMediaLibraryLibraryErrors = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export type GetAllMediaLibraryUnauthorizedData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + */ +export class GetAllMediaLibraryUnauthorized extends Error { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetAllMediaLibraryUnauthorizedData; + + constructor(err: GetAllMediaLibraryUnauthorizedData) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message); + this.data$ = err; + + if (err.errors != null) this.errors = err.errors; + if (err.rawResponse != null) this.rawResponse = err.rawResponse; + + this.name = "GetAllMediaLibraryUnauthorized"; + } +} + +export type GetAllMediaLibraryErrors = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export type GetAllMediaLibraryBadRequestData = { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; +}; + +/** + * Bad Request - A parameter was not specified, or was specified incorrectly. + */ +export class GetAllMediaLibraryBadRequest extends Error { + errors?: Array | undefined; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse?: Response | undefined; + + /** The original data that was passed to this error instance. */ + data$: GetAllMediaLibraryBadRequestData; + + constructor(err: GetAllMediaLibraryBadRequestData) { + const message = "message" in err && typeof err.message === "string" + ? err.message + : `API error occurred: ${JSON.stringify(err)}`; + super(message); + this.data$ = err; + + if (err.errors != null) this.errors = err.errors; + if (err.rawResponse != null) this.rawResponse = err.rawResponse; + + this.name = "GetAllMediaLibraryBadRequest"; + } +} + +/** @internal */ +export const GetAllMediaLibraryLibraryErrors$inboundSchema: z.ZodType< + GetAllMediaLibraryLibraryErrors, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** @internal */ +export type GetAllMediaLibraryLibraryErrors$Outbound = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryLibraryErrors$outboundSchema: z.ZodType< + GetAllMediaLibraryLibraryErrors$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryLibraryErrors +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryLibraryErrors$ { + /** @deprecated use `GetAllMediaLibraryLibraryErrors$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryLibraryErrors$inboundSchema; + /** @deprecated use `GetAllMediaLibraryLibraryErrors$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryLibraryErrors$outboundSchema; + /** @deprecated use `GetAllMediaLibraryLibraryErrors$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryLibraryErrors$Outbound; +} + +export function getAllMediaLibraryLibraryErrorsToJSON( + getAllMediaLibraryLibraryErrors: GetAllMediaLibraryLibraryErrors, +): string { + return JSON.stringify( + GetAllMediaLibraryLibraryErrors$outboundSchema.parse( + getAllMediaLibraryLibraryErrors, + ), + ); +} + +export function getAllMediaLibraryLibraryErrorsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryLibraryErrors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryLibraryErrors' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryUnauthorized$inboundSchema: z.ZodType< + GetAllMediaLibraryUnauthorized, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array(z.lazy(() => GetAllMediaLibraryLibraryErrors$inboundSchema)) + .optional(), + RawResponse: z.instanceof(Response).optional(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetAllMediaLibraryUnauthorized(remapped); + }); + +/** @internal */ +export type GetAllMediaLibraryUnauthorized$Outbound = { + errors?: Array | undefined; + RawResponse?: never | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryUnauthorized$outboundSchema: z.ZodType< + GetAllMediaLibraryUnauthorized$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryUnauthorized +> = z.instanceof(GetAllMediaLibraryUnauthorized) + .transform(v => v.data$) + .pipe( + z.object({ + errors: z.array( + z.lazy(() => GetAllMediaLibraryLibraryErrors$outboundSchema), + ).optional(), + rawResponse: z.instanceof(Response).transform(() => { + throw new Error("Response cannot be serialized"); + }).optional(), + }).transform((v) => { + return remap$(v, { + rawResponse: "RawResponse", + }); + }), + ); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryUnauthorized$ { + /** @deprecated use `GetAllMediaLibraryUnauthorized$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryUnauthorized$inboundSchema; + /** @deprecated use `GetAllMediaLibraryUnauthorized$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryUnauthorized$outboundSchema; + /** @deprecated use `GetAllMediaLibraryUnauthorized$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryUnauthorized$Outbound; +} + +/** @internal */ +export const GetAllMediaLibraryErrors$inboundSchema: z.ZodType< + GetAllMediaLibraryErrors, + z.ZodTypeDef, + unknown +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** @internal */ +export type GetAllMediaLibraryErrors$Outbound = { + code?: number | undefined; + message?: string | undefined; + status?: number | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryErrors$outboundSchema: z.ZodType< + GetAllMediaLibraryErrors$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryErrors +> = z.object({ + code: z.number().int().optional(), + message: z.string().optional(), + status: z.number().int().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryErrors$ { + /** @deprecated use `GetAllMediaLibraryErrors$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryErrors$inboundSchema; + /** @deprecated use `GetAllMediaLibraryErrors$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryErrors$outboundSchema; + /** @deprecated use `GetAllMediaLibraryErrors$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryErrors$Outbound; +} + +export function getAllMediaLibraryErrorsToJSON( + getAllMediaLibraryErrors: GetAllMediaLibraryErrors, +): string { + return JSON.stringify( + GetAllMediaLibraryErrors$outboundSchema.parse(getAllMediaLibraryErrors), + ); +} + +export function getAllMediaLibraryErrorsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryErrors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryErrors' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryBadRequest$inboundSchema: z.ZodType< + GetAllMediaLibraryBadRequest, + z.ZodTypeDef, + unknown +> = z.object({ + errors: z.array(z.lazy(() => GetAllMediaLibraryErrors$inboundSchema)) + .optional(), + RawResponse: z.instanceof(Response).optional(), +}) + .transform((v) => { + const remapped = remap$(v, { + "RawResponse": "rawResponse", + }); + + return new GetAllMediaLibraryBadRequest(remapped); + }); + +/** @internal */ +export type GetAllMediaLibraryBadRequest$Outbound = { + errors?: Array | undefined; + RawResponse?: never | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryBadRequest$outboundSchema: z.ZodType< + GetAllMediaLibraryBadRequest$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryBadRequest +> = z.instanceof(GetAllMediaLibraryBadRequest) + .transform(v => v.data$) + .pipe( + z.object({ + errors: z.array(z.lazy(() => GetAllMediaLibraryErrors$outboundSchema)) + .optional(), + rawResponse: z.instanceof(Response).transform(() => { + throw new Error("Response cannot be serialized"); + }).optional(), + }).transform((v) => { + return remap$(v, { + rawResponse: "RawResponse", + }); + }), + ); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryBadRequest$ { + /** @deprecated use `GetAllMediaLibraryBadRequest$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryBadRequest$inboundSchema; + /** @deprecated use `GetAllMediaLibraryBadRequest$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryBadRequest$outboundSchema; + /** @deprecated use `GetAllMediaLibraryBadRequest$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryBadRequest$Outbound; +} diff --git a/src/sdk/models/errors/index.ts b/src/sdk/models/errors/index.ts index fcc1c768..6e95bcb8 100644 --- a/src/sdk/models/errors/index.ts +++ b/src/sdk/models/errors/index.ts @@ -13,6 +13,7 @@ export * from "./deleteplaylist.js"; export * from "./enablepapertrail.js"; export * from "./getactorslibrary.js"; export * from "./getalllibraries.js"; +export * from "./getallmedialibrary.js"; export * from "./getavailableclients.js"; export * from "./getbandwidthstatistics.js"; export * from "./getbannerimage.js"; diff --git a/src/sdk/models/operations/getactorslibrary.ts b/src/sdk/models/operations/getactorslibrary.ts index 6a0d2e82..d8177ffc 100644 --- a/src/sdk/models/operations/getactorslibrary.ts +++ b/src/sdk/models/operations/getactorslibrary.ts @@ -69,6 +69,9 @@ export type GetActorsLibraryDirectory = { }; export type GetActorsLibraryMediaContainer = { + /** + * Number of media items returned in this response. + */ size: number; /** * Indicates whether syncing is allowed. @@ -293,7 +296,7 @@ export const GetActorsLibraryMediaContainer$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - size: z.number(), + size: z.number().int(), allowSync: z.boolean(), art: z.string(), identifier: z.string(), @@ -336,7 +339,7 @@ export const GetActorsLibraryMediaContainer$outboundSchema: z.ZodType< z.ZodTypeDef, GetActorsLibraryMediaContainer > = z.object({ - size: z.number(), + size: z.number().int(), allowSync: z.boolean(), art: z.string(), identifier: z.string(), diff --git a/src/sdk/models/operations/getallmedialibrary.ts b/src/sdk/models/operations/getallmedialibrary.ts new file mode 100644 index 00000000..c21e643d --- /dev/null +++ b/src/sdk/models/operations/getallmedialibrary.ts @@ -0,0 +1,3475 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod"; +import { remap as remap$ } from "../../../lib/primitives.js"; +import { safeParse } from "../../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { RFCDate } from "../../types/rfcdate.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +/** + * The type of media to retrieve or filter by. + * + * @remarks + * 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 + */ +export enum GetAllMediaLibraryQueryParamType { + Movie = 1, + TvShow = 2, + Season = 3, + Episode = 4, + Audio = 8, + Album = 9, + Track = 10, +} + +/** + * Adds the Meta object to the response + * + * @remarks + */ +export enum GetAllMediaLibraryQueryParamIncludeMeta { + Disable = 0, + Enable = 1, +} + +/** + * Adds the Guid object to the response + * + * @remarks + */ +export enum QueryParamIncludeGuids { + Disable = 0, + Enable = 1, +} + +export enum IncludeAdvanced { + Disable = 0, + Enable = 1, +} + +export enum QueryParamIncludeCollections { + Disable = 0, + Enable = 1, +} + +export enum QueryParamIncludeExternalMedia { + Disable = 0, + Enable = 1, +} + +export type GetAllMediaLibraryRequest = { + /** + * The unique key of the Plex library. + * + * @remarks + * Note: This is unique in the context of the Plex server. + */ + sectionKey: number; + /** + * The type of media to retrieve or filter by. + * + * @remarks + * 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; + /** + * Adds the Meta object to the response + * + * @remarks + */ + includeMeta?: GetAllMediaLibraryQueryParamIncludeMeta | undefined; + /** + * Adds the Guid object to the response + * + * @remarks + */ + includeGuids?: QueryParamIncludeGuids | undefined; + includeAdvanced?: IncludeAdvanced | undefined; + includeCollections?: QueryParamIncludeCollections | undefined; + includeExternalMedia?: QueryParamIncludeExternalMedia | undefined; + /** + * The index of the first item to return. If not specified, the first item will be returned. + * + * @remarks + * If the number of items exceeds the limit, the response will be paginated. + * By default this is 0 + */ + xPlexContainerStart?: number | undefined; + /** + * The number of items to return. If not specified, all items will be returned. + * + * @remarks + * If the number of items exceeds the limit, the response will be paginated. + * By default this is 50 + */ + xPlexContainerSize?: number | undefined; +}; + +export type GetAllMediaLibraryFilter = { + filter: string; + filterType: string; + key: string; + title: string; + type: string; + advanced?: boolean | undefined; +}; + +/** + * The direction of the sort. Can be either `asc` or `desc`. + * + * @remarks + */ +export enum GetAllMediaLibraryActiveDirection { + Ascending = "asc", + Descending = "desc", +} + +/** + * The direction of the sort. Can be either `asc` or `desc`. + * + * @remarks + */ +export enum GetAllMediaLibraryDefaultDirection { + Ascending = "asc", + Descending = "desc", +} + +export type GetAllMediaLibrarySort = { + default?: string | undefined; + active?: boolean | undefined; + /** + * The direction of the sort. Can be either `asc` or `desc`. + * + * @remarks + */ + activeDirection?: GetAllMediaLibraryActiveDirection | undefined; + /** + * The direction of the sort. Can be either `asc` or `desc`. + * + * @remarks + */ + defaultDirection?: GetAllMediaLibraryDefaultDirection | undefined; + descKey?: string | undefined; + firstCharacterKey?: string | undefined; + key: string; + title: string; +}; + +export type GetAllMediaLibraryField = { + key: string; + title: string; + type: string; + subType?: string | undefined; +}; + +export type GetAllMediaLibraryType = { + key: string; + type: string; + subtype?: string | undefined; + title: string; + active: boolean; + filter?: Array | undefined; + sort?: Array | undefined; + field?: Array | undefined; +}; + +export type GetAllMediaLibraryOperator = { + key: string; + title: string; +}; + +export type GetAllMediaLibraryFieldType = { + type: string; + operator: Array; +}; + +/** + * The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + * + * @remarks + */ +export type GetAllMediaLibraryMeta = { + type?: Array | undefined; + fieldType?: Array | undefined; +}; + +/** + * The type of media content + * + * @remarks + */ +export enum GetAllMediaLibraryLibraryType { + Movie = "movie", + TvShow = "show", + Season = "season", + Episode = "episode", + Artist = "artist", + Album = "album", +} + +export enum GetAllMediaLibraryLibraryResponseType { + CoverPoster = "coverPoster", + Background = "background", + Snapshot = "snapshot", + ClearLogo = "clearLogo", +} + +export type GetAllMediaLibraryImage = { + alt: string; + type: GetAllMediaLibraryLibraryResponseType; + url: string; +}; + +export type GetAllMediaLibraryUltraBlurColors = { + topLeft: string; + topRight: string; + bottomRight: string; + bottomLeft: string; +}; + +export enum One { + Zero = 0, + One = 1, +} + +/** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ +export type GetAllMediaLibraryOptimizedForStreaming = One | boolean; + +export enum GetAllMediaLibraryOptimizedForStreaming1 { + Zero = 0, + One = 1, +} + +/** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ +export type GetAllMediaLibraryLibraryOptimizedForStreaming = + | GetAllMediaLibraryOptimizedForStreaming1 + | boolean; + +/** + * Indicates if the part has a thumbnail. + */ +export enum GetAllMediaLibraryHasThumbnail { + False = "0", + True = "1", +} + +export type GetAllMediaLibraryStream = { + /** + * Unique stream identifier. + */ + id: number; + /** + * Stream type (1=video, 2=audio, 3=subtitle). + */ + streamType: number; + /** + * Indicates if this stream is default. + */ + default?: boolean | undefined; + /** + * Codec used by the stream. + */ + codec: string; + /** + * Index of the stream. + */ + index: number; + /** + * Bitrate of the stream. + */ + bitrate?: number | undefined; + /** + * Language of the stream. + */ + language: string; + /** + * Language tag (e.g., en). + */ + languageTag: string; + /** + * ISO language code. + */ + languageCode: string; + /** + * Indicates whether header compression is enabled. + */ + headerCompression?: boolean | undefined; + /** + * Dolby Vision BL compatibility ID. + */ + doviblCompatID?: number | undefined; + /** + * Indicates if Dolby Vision BL is present. + */ + doviblPresent?: boolean | undefined; + /** + * Indicates if Dolby Vision EL is present. + */ + dovielPresent?: boolean | undefined; + /** + * Dolby Vision level. + */ + doviLevel?: number | undefined; + /** + * Indicates if Dolby Vision is present. + */ + doviPresent?: boolean | undefined; + /** + * Dolby Vision profile. + */ + doviProfile?: number | undefined; + /** + * Indicates if Dolby Vision RPU is present. + */ + dovirpuPresent?: boolean | undefined; + /** + * Dolby Vision version. + */ + doviVersion?: string | undefined; + /** + * Bit depth of the video stream. + */ + bitDepth?: number | undefined; + /** + * Chroma sample location. + */ + chromaLocation?: string | undefined; + /** + * Chroma subsampling format. + */ + chromaSubsampling?: string | undefined; + /** + * Coded video height. + */ + codedHeight?: number | undefined; + /** + * Coded video width. + */ + codedWidth?: number | undefined; + /** + * Color primaries used. + */ + colorPrimaries?: string | undefined; + /** + * Color range (e.g., tv). + */ + colorRange?: string | undefined; + /** + * Color space. + */ + colorSpace?: string | undefined; + /** + * Color transfer characteristics. + */ + colorTrc?: string | undefined; + /** + * Frame rate of the stream. + */ + frameRate?: number | undefined; + /** + * Height of the video stream. + */ + height?: number | undefined; + /** + * Video level. + */ + level?: number | undefined; + /** + * Indicates if this is the original stream. + */ + original?: boolean | undefined; + hasScalingMatrix?: boolean | undefined; + /** + * Video profile. + */ + profile?: string | undefined; + scanType?: string | undefined; + /** + * Number of reference frames. + */ + refFrames?: number | undefined; + /** + * Width of the video stream. + */ + width?: number | undefined; + /** + * Display title for the stream. + */ + displayTitle: string; + /** + * Extended display title for the stream. + */ + extendedDisplayTitle: string; + /** + * Indicates if this stream is selected (applicable for audio streams). + */ + selected?: boolean | undefined; + forced?: boolean | undefined; + /** + * Number of audio channels (for audio streams). + */ + channels?: number | undefined; + /** + * Audio channel layout. + */ + audioChannelLayout?: string | undefined; + /** + * Sampling rate for the audio stream. + */ + samplingRate?: number | undefined; + /** + * Indicates if the stream can auto-sync. + */ + canAutoSync?: boolean | undefined; + /** + * Indicates if the stream is for the hearing impaired. + */ + hearingImpaired?: boolean | undefined; + /** + * Indicates if the stream is a dub. + */ + dub?: boolean | undefined; + /** + * Optional title for the stream (e.g., language variant). + */ + title?: string | undefined; +}; + +export type GetAllMediaLibraryPart = { + /** + * Indicates if the part is accessible. + */ + accessible?: boolean | undefined; + /** + * Indicates if the part exists. + */ + exists?: boolean | undefined; + /** + * Unique part identifier. + */ + id: number; + /** + * Key to access this part. + */ + key: string; + indexes?: string | undefined; + /** + * Duration of the part in milliseconds. + */ + duration?: number | undefined; + /** + * File path for the part. + */ + file: string; + /** + * File size in bytes. + */ + size: number; + packetLength?: number | undefined; + /** + * Container format of the part. + */ + container?: string | undefined; + /** + * Video profile for the part. + */ + videoProfile?: string | undefined; + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + audioProfile?: string | undefined; + has64bitOffsets?: boolean | undefined; + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + optimizedForStreaming?: + | GetAllMediaLibraryOptimizedForStreaming1 + | boolean + | undefined; + hasThumbnail?: GetAllMediaLibraryHasThumbnail | undefined; + /** + * An array of streams for this part. + */ + stream?: Array | undefined; +}; + +export type GetAllMediaLibraryMedia = { + /** + * Unique media identifier. + */ + id: number; + /** + * Duration of the media in milliseconds. + */ + duration?: number | undefined; + /** + * Bitrate in bits per second. + */ + bitrate?: number | undefined; + /** + * Video width in pixels. + */ + width?: number | undefined; + /** + * Video height in pixels. + */ + height?: number | undefined; + /** + * Aspect ratio of the video. + */ + aspectRatio?: number | undefined; + /** + * Number of audio channels. + */ + audioChannels?: number | undefined; + displayOffset?: number | undefined; + /** + * Audio codec used. + */ + audioCodec?: string | undefined; + /** + * Video codec used. + */ + videoCodec?: string | undefined; + /** + * Video resolution (e.g., 4k). + */ + videoResolution?: string | undefined; + /** + * File container type. + */ + container?: string | undefined; + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + * @remarks + */ + videoFrameRate?: string | undefined; + /** + * Video profile (e.g., main 10). + */ + videoProfile?: string | undefined; + /** + * Indicates whether voice activity is detected. + */ + hasVoiceActivity: boolean; + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + audioProfile?: string | undefined; + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + optimizedForStreaming?: One | boolean | undefined; + has64bitOffsets?: boolean | undefined; + /** + * An array of parts for this media item. + */ + part: Array; +}; + +export type GetAllMediaLibraryGenre = { + /** + * The country of origin of this media item + */ + tag: string; +}; + +export type GetAllMediaLibraryCountry = { + /** + * The country of origin of this media item + */ + tag: string; +}; + +export type GetAllMediaLibraryDirector = { + /** + * The role of Director + */ + tag: string; +}; + +export type GetAllMediaLibraryWriter = { + /** + * The role of Writer + */ + tag: string; +}; + +export type GetAllMediaLibraryRole = { + /** + * The name of the actor for this role + */ + tag: string; +}; + +export type Guids = { + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + * @remarks + */ + id?: string | undefined; +}; + +export type GetAllMediaLibraryCollection = { + /** + * The user-made collection this media item belongs to + */ + tag: string; +}; + +/** + * Unknown + * + * @remarks + */ +export type GetAllMediaLibraryMetadata = { + /** + * 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; + /** + * The unique key for the media item. + */ + key: string; + /** + * The globally unique identifier for the media item. + */ + guid: string; + /** + * A URL‐friendly version of the media title. + */ + slug: string; + /** + * The studio that produced the media item. + */ + studio?: string | undefined; + type: GetAllMediaLibraryLibraryType; + /** + * The title of the media item. + */ + title: string; + /** + * The sort title used for ordering media items. + */ + titleSort: string; + /** + * The content rating for the media item. + */ + contentRating?: string | undefined; + /** + * A synopsis of the media item. + */ + summary: string; + /** + * The critic rating for the media item. + */ + rating: number; + /** + * The audience rating for the media item. + */ + audienceRating: number; + /** + * The release year of the media item. + */ + year: number; + /** + * A brief tagline for the media item. + */ + tagline: string; + /** + * The thumbnail image URL for the media item. + */ + thumb: string; + /** + * The art image URL for the media item. + */ + art: string; + /** + * The theme URL for the media item. + */ + theme: string; + /** + * The index position of the media item. + */ + index: number; + /** + * The number of leaf items (end nodes) under this media item. + */ + leafCount?: number | undefined; + /** + * The number of leaf items that have been viewed. + */ + viewedLeafCount?: number | undefined; + /** + * The number of child items associated with this media item. + */ + childCount: number; + /** + * The total number of seasons (for TV shows). + */ + seasonCount: number; + /** + * The duration of the media item in milliseconds. + */ + duration: number; + /** + * The original release date of the media item. + */ + originallyAvailableAt: RFCDate; + addedAt: number; + /** + * Unix epoch datetime in seconds + */ + updatedAt?: number | undefined; + /** + * The URL for the audience rating image. + */ + audienceRatingImage?: string | undefined; + /** + * The source from which chapter data is derived. + */ + chapterSource?: string | undefined; + /** + * The primary extra key associated with this media item. + */ + primaryExtraKey?: string | undefined; + /** + * The original title of the media item (if different). + */ + originalTitle?: string | undefined; + /** + * The rating key of the parent media item. + */ + parentRatingKey?: string | undefined; + /** + * The rating key of the grandparent media item. + */ + grandparentRatingKey?: string | undefined; + /** + * The GUID of the parent media item. + */ + parentGuid?: string | undefined; + /** + * The GUID of the grandparent media item. + */ + grandparentGuid?: string | undefined; + /** + * The slug for the grandparent media item. + */ + grandparentSlug?: string | undefined; + /** + * The key of the grandparent media item. + */ + grandparentKey?: string | undefined; + /** + * The key of the parent media item. + */ + parentKey?: string | undefined; + /** + * The title of the grandparent media item. + */ + grandparentTitle?: string | undefined; + /** + * The thumbnail URL for the grandparent media item. + */ + grandparentThumb?: string | undefined; + /** + * The theme URL for the grandparent media item. + */ + grandparentTheme?: string | undefined; + /** + * The art URL for the grandparent media item. + */ + grandparentArt?: string | undefined; + /** + * The title of the parent media item. + */ + parentTitle?: string | undefined; + /** + * The index position of the parent media item. + */ + parentIndex?: number | undefined; + /** + * The thumbnail URL for the parent media item. + */ + parentThumb?: string | undefined; + /** + * The URL for the rating image. + */ + ratingImage?: string | undefined; + /** + * The number of times this media item has been viewed. + */ + viewCount?: number | undefined; + /** + * The current playback offset (in milliseconds). + */ + viewOffset?: number | undefined; + /** + * The number of times this media item has been skipped. + */ + skipCount?: number | undefined; + /** + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + */ + subtype?: string | undefined; + /** + * The Unix timestamp representing the last time the item was rated. + */ + lastRatedAt?: number | undefined; + /** + * 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 | undefined; + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + createdAtTZOffset?: string | undefined; + /** + * Unix timestamp for when the media item was last viewed. + */ + lastViewedAt?: number | undefined; + /** + * The rating provided by a user for the item. This value is expressed as a decimal number. + */ + userRating?: number | undefined; + image?: Array | undefined; + ultraBlurColors?: GetAllMediaLibraryUltraBlurColors | undefined; + media?: Array | undefined; + genre?: Array | undefined; + country?: Array | undefined; + director?: Array | undefined; + writer?: Array | undefined; + role?: Array | undefined; + guids?: Array | undefined; + collection?: Array | undefined; +}; + +export type GetAllMediaLibraryMediaContainer = { + /** + * Number of media items returned in this response. + */ + size: number; + /** + * Total number of media items in the library. + */ + totalSize: number; + /** + * Offset value for pagination. + */ + offset: number; + /** + * Indicates whether syncing is allowed. + */ + allowSync: boolean; + /** + * URL for the background artwork of the media container. + */ + art: string; + /** + * The content type or mode. + */ + content: string; + /** + * An plugin identifier for the media container. + */ + identifier: string; + /** + * The unique identifier for the library section. + */ + librarySectionID: number; + /** + * The title of the library section. + */ + librarySectionTitle: string; + /** + * The universally unique identifier for the library section. + */ + librarySectionUUID?: string | undefined; + /** + * The prefix used for media tag resource paths. + */ + mediaTagPrefix: string; + /** + * The version number for media tags. + */ + mediaTagVersion: number; + /** + * URL for the thumbnail image of the media container. + */ + thumb: string; + /** + * Specifies whether caching is disabled. + */ + nocache: boolean; + /** + * The primary title of the media container. + */ + title1: string; + /** + * The secondary title of the media container. + */ + title2: string; + /** + * Identifier for the view group layout. + */ + viewGroup: string; + /** + * The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + * + * @remarks + */ + meta?: GetAllMediaLibraryMeta | undefined; + /** + * An array of metadata items. + */ + metadata?: Array | undefined; +}; + +/** + * Successful response containing media container data. + */ +export type GetAllMediaLibraryResponseBody = { + mediaContainer?: GetAllMediaLibraryMediaContainer | undefined; +}; + +export type GetAllMediaLibraryResponse = { + /** + * HTTP response content type for this operation + */ + contentType: string; + /** + * HTTP response status code for this operation + */ + statusCode: number; + /** + * Raw HTTP response; suitable for custom response parsing + */ + rawResponse: Response; + /** + * Successful response containing media container data. + */ + object?: GetAllMediaLibraryResponseBody | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryQueryParamType$inboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryQueryParamType +> = z.nativeEnum(GetAllMediaLibraryQueryParamType); + +/** @internal */ +export const GetAllMediaLibraryQueryParamType$outboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryQueryParamType +> = GetAllMediaLibraryQueryParamType$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryQueryParamType$ { + /** @deprecated use `GetAllMediaLibraryQueryParamType$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryQueryParamType$inboundSchema; + /** @deprecated use `GetAllMediaLibraryQueryParamType$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryQueryParamType$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema: + z.ZodNativeEnum = z + .nativeEnum(GetAllMediaLibraryQueryParamIncludeMeta); + +/** @internal */ +export const GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema: + z.ZodNativeEnum = + GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryQueryParamIncludeMeta$ { + /** @deprecated use `GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema` instead. */ + export const inboundSchema = + GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema; + /** @deprecated use `GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema; +} + +/** @internal */ +export const QueryParamIncludeGuids$inboundSchema: z.ZodNativeEnum< + typeof QueryParamIncludeGuids +> = z.nativeEnum(QueryParamIncludeGuids); + +/** @internal */ +export const QueryParamIncludeGuids$outboundSchema: z.ZodNativeEnum< + typeof QueryParamIncludeGuids +> = QueryParamIncludeGuids$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace QueryParamIncludeGuids$ { + /** @deprecated use `QueryParamIncludeGuids$inboundSchema` instead. */ + export const inboundSchema = QueryParamIncludeGuids$inboundSchema; + /** @deprecated use `QueryParamIncludeGuids$outboundSchema` instead. */ + export const outboundSchema = QueryParamIncludeGuids$outboundSchema; +} + +/** @internal */ +export const IncludeAdvanced$inboundSchema: z.ZodNativeEnum< + typeof IncludeAdvanced +> = z.nativeEnum(IncludeAdvanced); + +/** @internal */ +export const IncludeAdvanced$outboundSchema: z.ZodNativeEnum< + typeof IncludeAdvanced +> = IncludeAdvanced$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace IncludeAdvanced$ { + /** @deprecated use `IncludeAdvanced$inboundSchema` instead. */ + export const inboundSchema = IncludeAdvanced$inboundSchema; + /** @deprecated use `IncludeAdvanced$outboundSchema` instead. */ + export const outboundSchema = IncludeAdvanced$outboundSchema; +} + +/** @internal */ +export const QueryParamIncludeCollections$inboundSchema: z.ZodNativeEnum< + typeof QueryParamIncludeCollections +> = z.nativeEnum(QueryParamIncludeCollections); + +/** @internal */ +export const QueryParamIncludeCollections$outboundSchema: z.ZodNativeEnum< + typeof QueryParamIncludeCollections +> = QueryParamIncludeCollections$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace QueryParamIncludeCollections$ { + /** @deprecated use `QueryParamIncludeCollections$inboundSchema` instead. */ + export const inboundSchema = QueryParamIncludeCollections$inboundSchema; + /** @deprecated use `QueryParamIncludeCollections$outboundSchema` instead. */ + export const outboundSchema = QueryParamIncludeCollections$outboundSchema; +} + +/** @internal */ +export const QueryParamIncludeExternalMedia$inboundSchema: z.ZodNativeEnum< + typeof QueryParamIncludeExternalMedia +> = z.nativeEnum(QueryParamIncludeExternalMedia); + +/** @internal */ +export const QueryParamIncludeExternalMedia$outboundSchema: z.ZodNativeEnum< + typeof QueryParamIncludeExternalMedia +> = QueryParamIncludeExternalMedia$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace QueryParamIncludeExternalMedia$ { + /** @deprecated use `QueryParamIncludeExternalMedia$inboundSchema` instead. */ + export const inboundSchema = QueryParamIncludeExternalMedia$inboundSchema; + /** @deprecated use `QueryParamIncludeExternalMedia$outboundSchema` instead. */ + export const outboundSchema = QueryParamIncludeExternalMedia$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryRequest$inboundSchema: z.ZodType< + GetAllMediaLibraryRequest, + z.ZodTypeDef, + unknown +> = z.object({ + sectionKey: z.number().int(), + type: GetAllMediaLibraryQueryParamType$inboundSchema, + includeMeta: GetAllMediaLibraryQueryParamIncludeMeta$inboundSchema, + includeGuids: QueryParamIncludeGuids$inboundSchema, + includeAdvanced: IncludeAdvanced$inboundSchema, + includeCollections: QueryParamIncludeCollections$inboundSchema, + includeExternalMedia: QueryParamIncludeExternalMedia$inboundSchema, + "X-Plex-Container-Start": z.number().int().default(0), + "X-Plex-Container-Size": z.number().int().default(50), +}).transform((v) => { + return remap$(v, { + "X-Plex-Container-Start": "xPlexContainerStart", + "X-Plex-Container-Size": "xPlexContainerSize", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryRequest$Outbound = { + sectionKey: number; + type: number; + includeMeta: number; + includeGuids: number; + includeAdvanced: number; + includeCollections: number; + includeExternalMedia: number; + "X-Plex-Container-Start": number; + "X-Plex-Container-Size": number; +}; + +/** @internal */ +export const GetAllMediaLibraryRequest$outboundSchema: z.ZodType< + GetAllMediaLibraryRequest$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryRequest +> = z.object({ + sectionKey: z.number().int(), + type: GetAllMediaLibraryQueryParamType$outboundSchema, + includeMeta: GetAllMediaLibraryQueryParamIncludeMeta$outboundSchema.default( + GetAllMediaLibraryQueryParamIncludeMeta.Disable, + ), + includeGuids: QueryParamIncludeGuids$outboundSchema.default( + QueryParamIncludeGuids.Disable, + ), + includeAdvanced: IncludeAdvanced$outboundSchema.default( + IncludeAdvanced.Disable, + ), + includeCollections: QueryParamIncludeCollections$outboundSchema.default( + QueryParamIncludeCollections.Disable, + ), + includeExternalMedia: QueryParamIncludeExternalMedia$outboundSchema.default( + QueryParamIncludeExternalMedia.Disable, + ), + xPlexContainerStart: z.number().int().default(0), + xPlexContainerSize: z.number().int().default(50), +}).transform((v) => { + return remap$(v, { + xPlexContainerStart: "X-Plex-Container-Start", + xPlexContainerSize: "X-Plex-Container-Size", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryRequest$ { + /** @deprecated use `GetAllMediaLibraryRequest$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryRequest$inboundSchema; + /** @deprecated use `GetAllMediaLibraryRequest$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryRequest$outboundSchema; + /** @deprecated use `GetAllMediaLibraryRequest$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryRequest$Outbound; +} + +export function getAllMediaLibraryRequestToJSON( + getAllMediaLibraryRequest: GetAllMediaLibraryRequest, +): string { + return JSON.stringify( + GetAllMediaLibraryRequest$outboundSchema.parse(getAllMediaLibraryRequest), + ); +} + +export function getAllMediaLibraryRequestFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryRequest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryRequest' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryFilter$inboundSchema: z.ZodType< + GetAllMediaLibraryFilter, + z.ZodTypeDef, + unknown +> = z.object({ + filter: z.string(), + filterType: z.string(), + key: z.string(), + title: z.string(), + type: z.string(), + advanced: z.boolean().optional(), +}); + +/** @internal */ +export type GetAllMediaLibraryFilter$Outbound = { + filter: string; + filterType: string; + key: string; + title: string; + type: string; + advanced?: boolean | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryFilter$outboundSchema: z.ZodType< + GetAllMediaLibraryFilter$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryFilter +> = z.object({ + filter: z.string(), + filterType: z.string(), + key: z.string(), + title: z.string(), + type: z.string(), + advanced: z.boolean().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryFilter$ { + /** @deprecated use `GetAllMediaLibraryFilter$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryFilter$inboundSchema; + /** @deprecated use `GetAllMediaLibraryFilter$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryFilter$outboundSchema; + /** @deprecated use `GetAllMediaLibraryFilter$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryFilter$Outbound; +} + +export function getAllMediaLibraryFilterToJSON( + getAllMediaLibraryFilter: GetAllMediaLibraryFilter, +): string { + return JSON.stringify( + GetAllMediaLibraryFilter$outboundSchema.parse(getAllMediaLibraryFilter), + ); +} + +export function getAllMediaLibraryFilterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryFilter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryFilter' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryActiveDirection$inboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryActiveDirection +> = z.nativeEnum(GetAllMediaLibraryActiveDirection); + +/** @internal */ +export const GetAllMediaLibraryActiveDirection$outboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryActiveDirection +> = GetAllMediaLibraryActiveDirection$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryActiveDirection$ { + /** @deprecated use `GetAllMediaLibraryActiveDirection$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryActiveDirection$inboundSchema; + /** @deprecated use `GetAllMediaLibraryActiveDirection$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryActiveDirection$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryDefaultDirection$inboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryDefaultDirection +> = z.nativeEnum(GetAllMediaLibraryDefaultDirection); + +/** @internal */ +export const GetAllMediaLibraryDefaultDirection$outboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryDefaultDirection +> = GetAllMediaLibraryDefaultDirection$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryDefaultDirection$ { + /** @deprecated use `GetAllMediaLibraryDefaultDirection$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryDefaultDirection$inboundSchema; + /** @deprecated use `GetAllMediaLibraryDefaultDirection$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryDefaultDirection$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibrarySort$inboundSchema: z.ZodType< + GetAllMediaLibrarySort, + z.ZodTypeDef, + unknown +> = z.object({ + default: z.string().optional(), + active: z.boolean().optional(), + activeDirection: GetAllMediaLibraryActiveDirection$inboundSchema.default( + GetAllMediaLibraryActiveDirection.Ascending, + ), + defaultDirection: GetAllMediaLibraryDefaultDirection$inboundSchema.default( + GetAllMediaLibraryDefaultDirection.Ascending, + ), + descKey: z.string().optional(), + firstCharacterKey: z.string().optional(), + key: z.string(), + title: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibrarySort$Outbound = { + default?: string | undefined; + active?: boolean | undefined; + activeDirection: string; + defaultDirection: string; + descKey?: string | undefined; + firstCharacterKey?: string | undefined; + key: string; + title: string; +}; + +/** @internal */ +export const GetAllMediaLibrarySort$outboundSchema: z.ZodType< + GetAllMediaLibrarySort$Outbound, + z.ZodTypeDef, + GetAllMediaLibrarySort +> = z.object({ + default: z.string().optional(), + active: z.boolean().optional(), + activeDirection: GetAllMediaLibraryActiveDirection$outboundSchema.default( + GetAllMediaLibraryActiveDirection.Ascending, + ), + defaultDirection: GetAllMediaLibraryDefaultDirection$outboundSchema.default( + GetAllMediaLibraryDefaultDirection.Ascending, + ), + descKey: z.string().optional(), + firstCharacterKey: z.string().optional(), + key: z.string(), + title: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibrarySort$ { + /** @deprecated use `GetAllMediaLibrarySort$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibrarySort$inboundSchema; + /** @deprecated use `GetAllMediaLibrarySort$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibrarySort$outboundSchema; + /** @deprecated use `GetAllMediaLibrarySort$Outbound` instead. */ + export type Outbound = GetAllMediaLibrarySort$Outbound; +} + +export function getAllMediaLibrarySortToJSON( + getAllMediaLibrarySort: GetAllMediaLibrarySort, +): string { + return JSON.stringify( + GetAllMediaLibrarySort$outboundSchema.parse(getAllMediaLibrarySort), + ); +} + +export function getAllMediaLibrarySortFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibrarySort$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibrarySort' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryField$inboundSchema: z.ZodType< + GetAllMediaLibraryField, + z.ZodTypeDef, + unknown +> = z.object({ + key: z.string(), + title: z.string(), + type: z.string(), + subType: z.string().optional(), +}); + +/** @internal */ +export type GetAllMediaLibraryField$Outbound = { + key: string; + title: string; + type: string; + subType?: string | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryField$outboundSchema: z.ZodType< + GetAllMediaLibraryField$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryField +> = z.object({ + key: z.string(), + title: z.string(), + type: z.string(), + subType: z.string().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryField$ { + /** @deprecated use `GetAllMediaLibraryField$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryField$inboundSchema; + /** @deprecated use `GetAllMediaLibraryField$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryField$outboundSchema; + /** @deprecated use `GetAllMediaLibraryField$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryField$Outbound; +} + +export function getAllMediaLibraryFieldToJSON( + getAllMediaLibraryField: GetAllMediaLibraryField, +): string { + return JSON.stringify( + GetAllMediaLibraryField$outboundSchema.parse(getAllMediaLibraryField), + ); +} + +export function getAllMediaLibraryFieldFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryField$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryField' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryType$inboundSchema: z.ZodType< + GetAllMediaLibraryType, + z.ZodTypeDef, + unknown +> = z.object({ + key: z.string(), + type: z.string(), + subtype: z.string().optional(), + title: z.string(), + active: z.boolean(), + Filter: z.array(z.lazy(() => GetAllMediaLibraryFilter$inboundSchema)) + .optional(), + Sort: z.array(z.lazy(() => GetAllMediaLibrarySort$inboundSchema)).optional(), + Field: z.array(z.lazy(() => GetAllMediaLibraryField$inboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + "Filter": "filter", + "Sort": "sort", + "Field": "field", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryType$Outbound = { + key: string; + type: string; + subtype?: string | undefined; + title: string; + active: boolean; + Filter?: Array | undefined; + Sort?: Array | undefined; + Field?: Array | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryType$outboundSchema: z.ZodType< + GetAllMediaLibraryType$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryType +> = z.object({ + key: z.string(), + type: z.string(), + subtype: z.string().optional(), + title: z.string(), + active: z.boolean(), + filter: z.array(z.lazy(() => GetAllMediaLibraryFilter$outboundSchema)) + .optional(), + sort: z.array(z.lazy(() => GetAllMediaLibrarySort$outboundSchema)).optional(), + field: z.array(z.lazy(() => GetAllMediaLibraryField$outboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + filter: "Filter", + sort: "Sort", + field: "Field", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryType$ { + /** @deprecated use `GetAllMediaLibraryType$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryType$inboundSchema; + /** @deprecated use `GetAllMediaLibraryType$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryType$outboundSchema; + /** @deprecated use `GetAllMediaLibraryType$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryType$Outbound; +} + +export function getAllMediaLibraryTypeToJSON( + getAllMediaLibraryType: GetAllMediaLibraryType, +): string { + return JSON.stringify( + GetAllMediaLibraryType$outboundSchema.parse(getAllMediaLibraryType), + ); +} + +export function getAllMediaLibraryTypeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryType$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryType' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryOperator$inboundSchema: z.ZodType< + GetAllMediaLibraryOperator, + z.ZodTypeDef, + unknown +> = z.object({ + key: z.string(), + title: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryOperator$Outbound = { + key: string; + title: string; +}; + +/** @internal */ +export const GetAllMediaLibraryOperator$outboundSchema: z.ZodType< + GetAllMediaLibraryOperator$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryOperator +> = z.object({ + key: z.string(), + title: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryOperator$ { + /** @deprecated use `GetAllMediaLibraryOperator$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryOperator$inboundSchema; + /** @deprecated use `GetAllMediaLibraryOperator$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryOperator$outboundSchema; + /** @deprecated use `GetAllMediaLibraryOperator$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryOperator$Outbound; +} + +export function getAllMediaLibraryOperatorToJSON( + getAllMediaLibraryOperator: GetAllMediaLibraryOperator, +): string { + return JSON.stringify( + GetAllMediaLibraryOperator$outboundSchema.parse(getAllMediaLibraryOperator), + ); +} + +export function getAllMediaLibraryOperatorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryOperator$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryOperator' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryFieldType$inboundSchema: z.ZodType< + GetAllMediaLibraryFieldType, + z.ZodTypeDef, + unknown +> = z.object({ + type: z.string(), + Operator: z.array(z.lazy(() => GetAllMediaLibraryOperator$inboundSchema)), +}).transform((v) => { + return remap$(v, { + "Operator": "operator", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryFieldType$Outbound = { + type: string; + Operator: Array; +}; + +/** @internal */ +export const GetAllMediaLibraryFieldType$outboundSchema: z.ZodType< + GetAllMediaLibraryFieldType$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryFieldType +> = z.object({ + type: z.string(), + operator: z.array(z.lazy(() => GetAllMediaLibraryOperator$outboundSchema)), +}).transform((v) => { + return remap$(v, { + operator: "Operator", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryFieldType$ { + /** @deprecated use `GetAllMediaLibraryFieldType$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryFieldType$inboundSchema; + /** @deprecated use `GetAllMediaLibraryFieldType$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryFieldType$outboundSchema; + /** @deprecated use `GetAllMediaLibraryFieldType$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryFieldType$Outbound; +} + +export function getAllMediaLibraryFieldTypeToJSON( + getAllMediaLibraryFieldType: GetAllMediaLibraryFieldType, +): string { + return JSON.stringify( + GetAllMediaLibraryFieldType$outboundSchema.parse( + getAllMediaLibraryFieldType, + ), + ); +} + +export function getAllMediaLibraryFieldTypeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryFieldType$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryFieldType' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryMeta$inboundSchema: z.ZodType< + GetAllMediaLibraryMeta, + z.ZodTypeDef, + unknown +> = z.object({ + Type: z.array(z.lazy(() => GetAllMediaLibraryType$inboundSchema)).optional(), + FieldType: z.array(z.lazy(() => GetAllMediaLibraryFieldType$inboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + "Type": "type", + "FieldType": "fieldType", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryMeta$Outbound = { + Type?: Array | undefined; + FieldType?: Array | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryMeta$outboundSchema: z.ZodType< + GetAllMediaLibraryMeta$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryMeta +> = z.object({ + type: z.array(z.lazy(() => GetAllMediaLibraryType$outboundSchema)).optional(), + fieldType: z.array(z.lazy(() => GetAllMediaLibraryFieldType$outboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + type: "Type", + fieldType: "FieldType", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryMeta$ { + /** @deprecated use `GetAllMediaLibraryMeta$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryMeta$inboundSchema; + /** @deprecated use `GetAllMediaLibraryMeta$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryMeta$outboundSchema; + /** @deprecated use `GetAllMediaLibraryMeta$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryMeta$Outbound; +} + +export function getAllMediaLibraryMetaToJSON( + getAllMediaLibraryMeta: GetAllMediaLibraryMeta, +): string { + return JSON.stringify( + GetAllMediaLibraryMeta$outboundSchema.parse(getAllMediaLibraryMeta), + ); +} + +export function getAllMediaLibraryMetaFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryMeta$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryMeta' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryLibraryType$inboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryLibraryType +> = z.nativeEnum(GetAllMediaLibraryLibraryType); + +/** @internal */ +export const GetAllMediaLibraryLibraryType$outboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryLibraryType +> = GetAllMediaLibraryLibraryType$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryLibraryType$ { + /** @deprecated use `GetAllMediaLibraryLibraryType$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryLibraryType$inboundSchema; + /** @deprecated use `GetAllMediaLibraryLibraryType$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryLibraryType$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryLibraryResponseType$inboundSchema: + z.ZodNativeEnum = z.nativeEnum( + GetAllMediaLibraryLibraryResponseType, + ); + +/** @internal */ +export const GetAllMediaLibraryLibraryResponseType$outboundSchema: + z.ZodNativeEnum = + GetAllMediaLibraryLibraryResponseType$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryLibraryResponseType$ { + /** @deprecated use `GetAllMediaLibraryLibraryResponseType$inboundSchema` instead. */ + export const inboundSchema = + GetAllMediaLibraryLibraryResponseType$inboundSchema; + /** @deprecated use `GetAllMediaLibraryLibraryResponseType$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryLibraryResponseType$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryImage$inboundSchema: z.ZodType< + GetAllMediaLibraryImage, + z.ZodTypeDef, + unknown +> = z.object({ + alt: z.string(), + type: GetAllMediaLibraryLibraryResponseType$inboundSchema, + url: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryImage$Outbound = { + alt: string; + type: string; + url: string; +}; + +/** @internal */ +export const GetAllMediaLibraryImage$outboundSchema: z.ZodType< + GetAllMediaLibraryImage$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryImage +> = z.object({ + alt: z.string(), + type: GetAllMediaLibraryLibraryResponseType$outboundSchema, + url: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryImage$ { + /** @deprecated use `GetAllMediaLibraryImage$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryImage$inboundSchema; + /** @deprecated use `GetAllMediaLibraryImage$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryImage$outboundSchema; + /** @deprecated use `GetAllMediaLibraryImage$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryImage$Outbound; +} + +export function getAllMediaLibraryImageToJSON( + getAllMediaLibraryImage: GetAllMediaLibraryImage, +): string { + return JSON.stringify( + GetAllMediaLibraryImage$outboundSchema.parse(getAllMediaLibraryImage), + ); +} + +export function getAllMediaLibraryImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryImage' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryUltraBlurColors$inboundSchema: z.ZodType< + GetAllMediaLibraryUltraBlurColors, + z.ZodTypeDef, + unknown +> = z.object({ + topLeft: z.string(), + topRight: z.string(), + bottomRight: z.string(), + bottomLeft: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryUltraBlurColors$Outbound = { + topLeft: string; + topRight: string; + bottomRight: string; + bottomLeft: string; +}; + +/** @internal */ +export const GetAllMediaLibraryUltraBlurColors$outboundSchema: z.ZodType< + GetAllMediaLibraryUltraBlurColors$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryUltraBlurColors +> = z.object({ + topLeft: z.string(), + topRight: z.string(), + bottomRight: z.string(), + bottomLeft: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryUltraBlurColors$ { + /** @deprecated use `GetAllMediaLibraryUltraBlurColors$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryUltraBlurColors$inboundSchema; + /** @deprecated use `GetAllMediaLibraryUltraBlurColors$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryUltraBlurColors$outboundSchema; + /** @deprecated use `GetAllMediaLibraryUltraBlurColors$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryUltraBlurColors$Outbound; +} + +export function getAllMediaLibraryUltraBlurColorsToJSON( + getAllMediaLibraryUltraBlurColors: GetAllMediaLibraryUltraBlurColors, +): string { + return JSON.stringify( + GetAllMediaLibraryUltraBlurColors$outboundSchema.parse( + getAllMediaLibraryUltraBlurColors, + ), + ); +} + +export function getAllMediaLibraryUltraBlurColorsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryUltraBlurColors$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryUltraBlurColors' from JSON`, + ); +} + +/** @internal */ +export const One$inboundSchema: z.ZodNativeEnum = z.nativeEnum(One); + +/** @internal */ +export const One$outboundSchema: z.ZodNativeEnum = + One$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace One$ { + /** @deprecated use `One$inboundSchema` instead. */ + export const inboundSchema = One$inboundSchema; + /** @deprecated use `One$outboundSchema` instead. */ + export const outboundSchema = One$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryOptimizedForStreaming$inboundSchema: z.ZodType< + GetAllMediaLibraryOptimizedForStreaming, + z.ZodTypeDef, + unknown +> = z.union([One$inboundSchema, z.boolean()]); + +/** @internal */ +export type GetAllMediaLibraryOptimizedForStreaming$Outbound = number | boolean; + +/** @internal */ +export const GetAllMediaLibraryOptimizedForStreaming$outboundSchema: z.ZodType< + GetAllMediaLibraryOptimizedForStreaming$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryOptimizedForStreaming +> = z.union([One$outboundSchema, z.boolean()]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryOptimizedForStreaming$ { + /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming$inboundSchema` instead. */ + export const inboundSchema = + GetAllMediaLibraryOptimizedForStreaming$inboundSchema; + /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryOptimizedForStreaming$outboundSchema; + /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryOptimizedForStreaming$Outbound; +} + +export function getAllMediaLibraryOptimizedForStreamingToJSON( + getAllMediaLibraryOptimizedForStreaming: + GetAllMediaLibraryOptimizedForStreaming, +): string { + return JSON.stringify( + GetAllMediaLibraryOptimizedForStreaming$outboundSchema.parse( + getAllMediaLibraryOptimizedForStreaming, + ), + ); +} + +export function getAllMediaLibraryOptimizedForStreamingFromJSON( + jsonString: string, +): SafeParseResult< + GetAllMediaLibraryOptimizedForStreaming, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + GetAllMediaLibraryOptimizedForStreaming$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'GetAllMediaLibraryOptimizedForStreaming' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryOptimizedForStreaming1$inboundSchema: + z.ZodNativeEnum = z + .nativeEnum(GetAllMediaLibraryOptimizedForStreaming1); + +/** @internal */ +export const GetAllMediaLibraryOptimizedForStreaming1$outboundSchema: + z.ZodNativeEnum = + GetAllMediaLibraryOptimizedForStreaming1$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryOptimizedForStreaming1$ { + /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming1$inboundSchema` instead. */ + export const inboundSchema = + GetAllMediaLibraryOptimizedForStreaming1$inboundSchema; + /** @deprecated use `GetAllMediaLibraryOptimizedForStreaming1$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryOptimizedForStreaming1$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema: + z.ZodType< + GetAllMediaLibraryLibraryOptimizedForStreaming, + z.ZodTypeDef, + unknown + > = z.union([ + GetAllMediaLibraryOptimizedForStreaming1$inboundSchema, + z.boolean(), + ]); + +/** @internal */ +export type GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound = + | number + | boolean; + +/** @internal */ +export const GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema: + z.ZodType< + GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryLibraryOptimizedForStreaming + > = z.union([ + GetAllMediaLibraryOptimizedForStreaming1$outboundSchema, + z.boolean(), + ]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryLibraryOptimizedForStreaming$ { + /** @deprecated use `GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema` instead. */ + export const inboundSchema = + GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema; + /** @deprecated use `GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema` instead. */ + export const outboundSchema = + GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema; + /** @deprecated use `GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound` instead. */ + export type Outbound = + GetAllMediaLibraryLibraryOptimizedForStreaming$Outbound; +} + +export function getAllMediaLibraryLibraryOptimizedForStreamingToJSON( + getAllMediaLibraryLibraryOptimizedForStreaming: + GetAllMediaLibraryLibraryOptimizedForStreaming, +): string { + return JSON.stringify( + GetAllMediaLibraryLibraryOptimizedForStreaming$outboundSchema.parse( + getAllMediaLibraryLibraryOptimizedForStreaming, + ), + ); +} + +export function getAllMediaLibraryLibraryOptimizedForStreamingFromJSON( + jsonString: string, +): SafeParseResult< + GetAllMediaLibraryLibraryOptimizedForStreaming, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + GetAllMediaLibraryLibraryOptimizedForStreaming$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'GetAllMediaLibraryLibraryOptimizedForStreaming' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryHasThumbnail$inboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryHasThumbnail +> = z.nativeEnum(GetAllMediaLibraryHasThumbnail); + +/** @internal */ +export const GetAllMediaLibraryHasThumbnail$outboundSchema: z.ZodNativeEnum< + typeof GetAllMediaLibraryHasThumbnail +> = GetAllMediaLibraryHasThumbnail$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryHasThumbnail$ { + /** @deprecated use `GetAllMediaLibraryHasThumbnail$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryHasThumbnail$inboundSchema; + /** @deprecated use `GetAllMediaLibraryHasThumbnail$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryHasThumbnail$outboundSchema; +} + +/** @internal */ +export const GetAllMediaLibraryStream$inboundSchema: z.ZodType< + GetAllMediaLibraryStream, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + streamType: z.number().int(), + default: z.boolean().optional(), + codec: z.string(), + index: z.number().int(), + bitrate: z.number().int().optional(), + language: z.string(), + languageTag: z.string(), + languageCode: z.string(), + headerCompression: z.boolean().optional(), + DOVIBLCompatID: z.number().int().optional(), + DOVIBLPresent: z.boolean().optional(), + DOVIELPresent: z.boolean().optional(), + DOVILevel: z.number().int().optional(), + DOVIPresent: z.boolean().optional(), + DOVIProfile: z.number().int().optional(), + DOVIRPUPresent: z.boolean().optional(), + DOVIVersion: z.string().optional(), + bitDepth: z.number().int().optional(), + chromaLocation: z.string().optional(), + chromaSubsampling: z.string().optional(), + codedHeight: z.number().int().optional(), + codedWidth: z.number().int().optional(), + colorPrimaries: z.string().optional(), + colorRange: z.string().optional(), + colorSpace: z.string().optional(), + colorTrc: z.string().optional(), + frameRate: z.number().optional(), + height: z.number().int().optional(), + level: z.number().int().optional(), + original: z.boolean().optional(), + hasScalingMatrix: z.boolean().optional(), + profile: z.string().optional(), + scanType: z.string().optional(), + refFrames: z.number().int().optional(), + width: z.number().int().optional(), + displayTitle: z.string(), + extendedDisplayTitle: z.string(), + selected: z.boolean().optional(), + forced: z.boolean().optional(), + channels: z.number().int().optional(), + audioChannelLayout: z.string().optional(), + samplingRate: z.number().int().optional(), + canAutoSync: z.boolean().optional(), + hearingImpaired: z.boolean().optional(), + dub: z.boolean().optional(), + title: z.string().optional(), +}).transform((v) => { + return remap$(v, { + "DOVIBLCompatID": "doviblCompatID", + "DOVIBLPresent": "doviblPresent", + "DOVIELPresent": "dovielPresent", + "DOVILevel": "doviLevel", + "DOVIPresent": "doviPresent", + "DOVIProfile": "doviProfile", + "DOVIRPUPresent": "dovirpuPresent", + "DOVIVersion": "doviVersion", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryStream$Outbound = { + id: number; + streamType: number; + default?: boolean | undefined; + codec: string; + index: number; + bitrate?: number | undefined; + language: string; + languageTag: string; + languageCode: string; + headerCompression?: boolean | undefined; + DOVIBLCompatID?: number | undefined; + DOVIBLPresent?: boolean | undefined; + DOVIELPresent?: boolean | undefined; + DOVILevel?: number | undefined; + DOVIPresent?: boolean | undefined; + DOVIProfile?: number | undefined; + DOVIRPUPresent?: boolean | undefined; + DOVIVersion?: string | undefined; + bitDepth?: number | undefined; + chromaLocation?: string | undefined; + chromaSubsampling?: string | undefined; + codedHeight?: number | undefined; + codedWidth?: number | undefined; + colorPrimaries?: string | undefined; + colorRange?: string | undefined; + colorSpace?: string | undefined; + colorTrc?: string | undefined; + frameRate?: number | undefined; + height?: number | undefined; + level?: number | undefined; + original?: boolean | undefined; + hasScalingMatrix?: boolean | undefined; + profile?: string | undefined; + scanType?: string | undefined; + refFrames?: number | undefined; + width?: number | undefined; + displayTitle: string; + extendedDisplayTitle: string; + selected?: boolean | undefined; + forced?: boolean | undefined; + channels?: number | undefined; + audioChannelLayout?: string | undefined; + samplingRate?: number | undefined; + canAutoSync?: boolean | undefined; + hearingImpaired?: boolean | undefined; + dub?: boolean | undefined; + title?: string | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryStream$outboundSchema: z.ZodType< + GetAllMediaLibraryStream$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryStream +> = z.object({ + id: z.number().int(), + streamType: z.number().int(), + default: z.boolean().optional(), + codec: z.string(), + index: z.number().int(), + bitrate: z.number().int().optional(), + language: z.string(), + languageTag: z.string(), + languageCode: z.string(), + headerCompression: z.boolean().optional(), + doviblCompatID: z.number().int().optional(), + doviblPresent: z.boolean().optional(), + dovielPresent: z.boolean().optional(), + doviLevel: z.number().int().optional(), + doviPresent: z.boolean().optional(), + doviProfile: z.number().int().optional(), + dovirpuPresent: z.boolean().optional(), + doviVersion: z.string().optional(), + bitDepth: z.number().int().optional(), + chromaLocation: z.string().optional(), + chromaSubsampling: z.string().optional(), + codedHeight: z.number().int().optional(), + codedWidth: z.number().int().optional(), + colorPrimaries: z.string().optional(), + colorRange: z.string().optional(), + colorSpace: z.string().optional(), + colorTrc: z.string().optional(), + frameRate: z.number().optional(), + height: z.number().int().optional(), + level: z.number().int().optional(), + original: z.boolean().optional(), + hasScalingMatrix: z.boolean().optional(), + profile: z.string().optional(), + scanType: z.string().optional(), + refFrames: z.number().int().optional(), + width: z.number().int().optional(), + displayTitle: z.string(), + extendedDisplayTitle: z.string(), + selected: z.boolean().optional(), + forced: z.boolean().optional(), + channels: z.number().int().optional(), + audioChannelLayout: z.string().optional(), + samplingRate: z.number().int().optional(), + canAutoSync: z.boolean().optional(), + hearingImpaired: z.boolean().optional(), + dub: z.boolean().optional(), + title: z.string().optional(), +}).transform((v) => { + return remap$(v, { + doviblCompatID: "DOVIBLCompatID", + doviblPresent: "DOVIBLPresent", + dovielPresent: "DOVIELPresent", + doviLevel: "DOVILevel", + doviPresent: "DOVIPresent", + doviProfile: "DOVIProfile", + dovirpuPresent: "DOVIRPUPresent", + doviVersion: "DOVIVersion", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryStream$ { + /** @deprecated use `GetAllMediaLibraryStream$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryStream$inboundSchema; + /** @deprecated use `GetAllMediaLibraryStream$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryStream$outboundSchema; + /** @deprecated use `GetAllMediaLibraryStream$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryStream$Outbound; +} + +export function getAllMediaLibraryStreamToJSON( + getAllMediaLibraryStream: GetAllMediaLibraryStream, +): string { + return JSON.stringify( + GetAllMediaLibraryStream$outboundSchema.parse(getAllMediaLibraryStream), + ); +} + +export function getAllMediaLibraryStreamFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryStream$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryStream' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryPart$inboundSchema: z.ZodType< + GetAllMediaLibraryPart, + z.ZodTypeDef, + unknown +> = z.object({ + accessible: z.boolean().optional(), + exists: z.boolean().optional(), + id: z.number().int(), + key: z.string(), + indexes: z.string().optional(), + duration: z.number().int().optional(), + file: z.string(), + size: z.number().int(), + packetLength: z.number().int().optional(), + container: z.string().optional(), + videoProfile: z.string().optional(), + audioProfile: z.string().optional(), + has64bitOffsets: z.boolean().optional(), + optimizedForStreaming: z.union([ + GetAllMediaLibraryOptimizedForStreaming1$inboundSchema, + z.boolean(), + ]).optional(), + hasThumbnail: GetAllMediaLibraryHasThumbnail$inboundSchema.default( + GetAllMediaLibraryHasThumbnail.False, + ), + Stream: z.array(z.lazy(() => GetAllMediaLibraryStream$inboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + "Stream": "stream", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryPart$Outbound = { + accessible?: boolean | undefined; + exists?: boolean | undefined; + id: number; + key: string; + indexes?: string | undefined; + duration?: number | undefined; + file: string; + size: number; + packetLength?: number | undefined; + container?: string | undefined; + videoProfile?: string | undefined; + audioProfile?: string | undefined; + has64bitOffsets?: boolean | undefined; + optimizedForStreaming?: number | boolean | undefined; + hasThumbnail: string; + Stream?: Array | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryPart$outboundSchema: z.ZodType< + GetAllMediaLibraryPart$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryPart +> = z.object({ + accessible: z.boolean().optional(), + exists: z.boolean().optional(), + id: z.number().int(), + key: z.string(), + indexes: z.string().optional(), + duration: z.number().int().optional(), + file: z.string(), + size: z.number().int(), + packetLength: z.number().int().optional(), + container: z.string().optional(), + videoProfile: z.string().optional(), + audioProfile: z.string().optional(), + has64bitOffsets: z.boolean().optional(), + optimizedForStreaming: z.union([ + GetAllMediaLibraryOptimizedForStreaming1$outboundSchema, + z.boolean(), + ]).optional(), + hasThumbnail: GetAllMediaLibraryHasThumbnail$outboundSchema.default( + GetAllMediaLibraryHasThumbnail.False, + ), + stream: z.array(z.lazy(() => GetAllMediaLibraryStream$outboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + stream: "Stream", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryPart$ { + /** @deprecated use `GetAllMediaLibraryPart$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryPart$inboundSchema; + /** @deprecated use `GetAllMediaLibraryPart$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryPart$outboundSchema; + /** @deprecated use `GetAllMediaLibraryPart$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryPart$Outbound; +} + +export function getAllMediaLibraryPartToJSON( + getAllMediaLibraryPart: GetAllMediaLibraryPart, +): string { + return JSON.stringify( + GetAllMediaLibraryPart$outboundSchema.parse(getAllMediaLibraryPart), + ); +} + +export function getAllMediaLibraryPartFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryPart$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryPart' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryMedia$inboundSchema: z.ZodType< + GetAllMediaLibraryMedia, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.number().int(), + duration: z.number().int().optional(), + bitrate: z.number().int().optional(), + width: z.number().int().optional(), + height: z.number().int().optional(), + aspectRatio: z.number().optional(), + audioChannels: z.number().int().optional(), + displayOffset: z.number().int().optional(), + audioCodec: z.string().optional(), + videoCodec: z.string().optional(), + videoResolution: z.string().optional(), + container: z.string().optional(), + videoFrameRate: z.string().optional(), + videoProfile: z.string().optional(), + hasVoiceActivity: z.boolean(), + audioProfile: z.string().optional(), + optimizedForStreaming: z.union([One$inboundSchema, z.boolean()]).optional(), + has64bitOffsets: z.boolean().optional(), + Part: z.array(z.lazy(() => GetAllMediaLibraryPart$inboundSchema)), +}).transform((v) => { + return remap$(v, { + "Part": "part", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryMedia$Outbound = { + id: number; + duration?: number | undefined; + bitrate?: number | undefined; + width?: number | undefined; + height?: number | undefined; + aspectRatio?: number | undefined; + audioChannels?: number | undefined; + displayOffset?: number | undefined; + audioCodec?: string | undefined; + videoCodec?: string | undefined; + videoResolution?: string | undefined; + container?: string | undefined; + videoFrameRate?: string | undefined; + videoProfile?: string | undefined; + hasVoiceActivity: boolean; + audioProfile?: string | undefined; + optimizedForStreaming?: number | boolean | undefined; + has64bitOffsets?: boolean | undefined; + Part: Array; +}; + +/** @internal */ +export const GetAllMediaLibraryMedia$outboundSchema: z.ZodType< + GetAllMediaLibraryMedia$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryMedia +> = z.object({ + id: z.number().int(), + duration: z.number().int().optional(), + bitrate: z.number().int().optional(), + width: z.number().int().optional(), + height: z.number().int().optional(), + aspectRatio: z.number().optional(), + audioChannels: z.number().int().optional(), + displayOffset: z.number().int().optional(), + audioCodec: z.string().optional(), + videoCodec: z.string().optional(), + videoResolution: z.string().optional(), + container: z.string().optional(), + videoFrameRate: z.string().optional(), + videoProfile: z.string().optional(), + hasVoiceActivity: z.boolean(), + audioProfile: z.string().optional(), + optimizedForStreaming: z.union([One$outboundSchema, z.boolean()]).optional(), + has64bitOffsets: z.boolean().optional(), + part: z.array(z.lazy(() => GetAllMediaLibraryPart$outboundSchema)), +}).transform((v) => { + return remap$(v, { + part: "Part", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryMedia$ { + /** @deprecated use `GetAllMediaLibraryMedia$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryMedia$inboundSchema; + /** @deprecated use `GetAllMediaLibraryMedia$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryMedia$outboundSchema; + /** @deprecated use `GetAllMediaLibraryMedia$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryMedia$Outbound; +} + +export function getAllMediaLibraryMediaToJSON( + getAllMediaLibraryMedia: GetAllMediaLibraryMedia, +): string { + return JSON.stringify( + GetAllMediaLibraryMedia$outboundSchema.parse(getAllMediaLibraryMedia), + ); +} + +export function getAllMediaLibraryMediaFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryMedia$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryMedia' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryGenre$inboundSchema: z.ZodType< + GetAllMediaLibraryGenre, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryGenre$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetAllMediaLibraryGenre$outboundSchema: z.ZodType< + GetAllMediaLibraryGenre$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryGenre +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryGenre$ { + /** @deprecated use `GetAllMediaLibraryGenre$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryGenre$inboundSchema; + /** @deprecated use `GetAllMediaLibraryGenre$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryGenre$outboundSchema; + /** @deprecated use `GetAllMediaLibraryGenre$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryGenre$Outbound; +} + +export function getAllMediaLibraryGenreToJSON( + getAllMediaLibraryGenre: GetAllMediaLibraryGenre, +): string { + return JSON.stringify( + GetAllMediaLibraryGenre$outboundSchema.parse(getAllMediaLibraryGenre), + ); +} + +export function getAllMediaLibraryGenreFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryGenre$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryGenre' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryCountry$inboundSchema: z.ZodType< + GetAllMediaLibraryCountry, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryCountry$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetAllMediaLibraryCountry$outboundSchema: z.ZodType< + GetAllMediaLibraryCountry$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryCountry +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryCountry$ { + /** @deprecated use `GetAllMediaLibraryCountry$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryCountry$inboundSchema; + /** @deprecated use `GetAllMediaLibraryCountry$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryCountry$outboundSchema; + /** @deprecated use `GetAllMediaLibraryCountry$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryCountry$Outbound; +} + +export function getAllMediaLibraryCountryToJSON( + getAllMediaLibraryCountry: GetAllMediaLibraryCountry, +): string { + return JSON.stringify( + GetAllMediaLibraryCountry$outboundSchema.parse(getAllMediaLibraryCountry), + ); +} + +export function getAllMediaLibraryCountryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryCountry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryCountry' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryDirector$inboundSchema: z.ZodType< + GetAllMediaLibraryDirector, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryDirector$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetAllMediaLibraryDirector$outboundSchema: z.ZodType< + GetAllMediaLibraryDirector$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryDirector +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryDirector$ { + /** @deprecated use `GetAllMediaLibraryDirector$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryDirector$inboundSchema; + /** @deprecated use `GetAllMediaLibraryDirector$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryDirector$outboundSchema; + /** @deprecated use `GetAllMediaLibraryDirector$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryDirector$Outbound; +} + +export function getAllMediaLibraryDirectorToJSON( + getAllMediaLibraryDirector: GetAllMediaLibraryDirector, +): string { + return JSON.stringify( + GetAllMediaLibraryDirector$outboundSchema.parse(getAllMediaLibraryDirector), + ); +} + +export function getAllMediaLibraryDirectorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryDirector$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryDirector' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryWriter$inboundSchema: z.ZodType< + GetAllMediaLibraryWriter, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryWriter$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetAllMediaLibraryWriter$outboundSchema: z.ZodType< + GetAllMediaLibraryWriter$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryWriter +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryWriter$ { + /** @deprecated use `GetAllMediaLibraryWriter$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryWriter$inboundSchema; + /** @deprecated use `GetAllMediaLibraryWriter$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryWriter$outboundSchema; + /** @deprecated use `GetAllMediaLibraryWriter$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryWriter$Outbound; +} + +export function getAllMediaLibraryWriterToJSON( + getAllMediaLibraryWriter: GetAllMediaLibraryWriter, +): string { + return JSON.stringify( + GetAllMediaLibraryWriter$outboundSchema.parse(getAllMediaLibraryWriter), + ); +} + +export function getAllMediaLibraryWriterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryWriter$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryWriter' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryRole$inboundSchema: z.ZodType< + GetAllMediaLibraryRole, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryRole$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetAllMediaLibraryRole$outboundSchema: z.ZodType< + GetAllMediaLibraryRole$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryRole +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryRole$ { + /** @deprecated use `GetAllMediaLibraryRole$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryRole$inboundSchema; + /** @deprecated use `GetAllMediaLibraryRole$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryRole$outboundSchema; + /** @deprecated use `GetAllMediaLibraryRole$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryRole$Outbound; +} + +export function getAllMediaLibraryRoleToJSON( + getAllMediaLibraryRole: GetAllMediaLibraryRole, +): string { + return JSON.stringify( + GetAllMediaLibraryRole$outboundSchema.parse(getAllMediaLibraryRole), + ); +} + +export function getAllMediaLibraryRoleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryRole$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryRole' from JSON`, + ); +} + +/** @internal */ +export const Guids$inboundSchema: z.ZodType = z + .object({ + id: z.string().optional(), + }); + +/** @internal */ +export type Guids$Outbound = { + id?: string | undefined; +}; + +/** @internal */ +export const Guids$outboundSchema: z.ZodType< + Guids$Outbound, + z.ZodTypeDef, + Guids +> = z.object({ + id: z.string().optional(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace Guids$ { + /** @deprecated use `Guids$inboundSchema` instead. */ + export const inboundSchema = Guids$inboundSchema; + /** @deprecated use `Guids$outboundSchema` instead. */ + export const outboundSchema = Guids$outboundSchema; + /** @deprecated use `Guids$Outbound` instead. */ + export type Outbound = Guids$Outbound; +} + +export function guidsToJSON(guids: Guids): string { + return JSON.stringify(Guids$outboundSchema.parse(guids)); +} + +export function guidsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Guids$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Guids' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryCollection$inboundSchema: z.ZodType< + GetAllMediaLibraryCollection, + z.ZodTypeDef, + unknown +> = z.object({ + tag: z.string(), +}); + +/** @internal */ +export type GetAllMediaLibraryCollection$Outbound = { + tag: string; +}; + +/** @internal */ +export const GetAllMediaLibraryCollection$outboundSchema: z.ZodType< + GetAllMediaLibraryCollection$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryCollection +> = z.object({ + tag: z.string(), +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryCollection$ { + /** @deprecated use `GetAllMediaLibraryCollection$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryCollection$inboundSchema; + /** @deprecated use `GetAllMediaLibraryCollection$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryCollection$outboundSchema; + /** @deprecated use `GetAllMediaLibraryCollection$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryCollection$Outbound; +} + +export function getAllMediaLibraryCollectionToJSON( + getAllMediaLibraryCollection: GetAllMediaLibraryCollection, +): string { + return JSON.stringify( + GetAllMediaLibraryCollection$outboundSchema.parse( + getAllMediaLibraryCollection, + ), + ); +} + +export function getAllMediaLibraryCollectionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryCollection$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryCollection' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryMetadata$inboundSchema: z.ZodType< + GetAllMediaLibraryMetadata, + z.ZodTypeDef, + unknown +> = z.object({ + ratingKey: z.string(), + key: z.string(), + guid: z.string(), + slug: z.string(), + studio: z.string().optional(), + type: GetAllMediaLibraryLibraryType$inboundSchema, + title: z.string(), + titleSort: z.string(), + contentRating: z.string().optional(), + summary: z.string(), + rating: z.number(), + audienceRating: z.number(), + year: z.number().int(), + tagline: z.string(), + thumb: z.string(), + art: z.string(), + theme: z.string(), + index: z.number().int(), + leafCount: z.number().int().optional(), + viewedLeafCount: z.number().int().optional(), + childCount: z.number().int(), + seasonCount: z.number().int(), + duration: z.number().int(), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)), + addedAt: z.number().int(), + updatedAt: z.number().int().optional(), + audienceRatingImage: z.string().optional(), + chapterSource: z.string().optional(), + primaryExtraKey: z.string().optional(), + originalTitle: z.string().optional(), + parentRatingKey: z.string().optional(), + grandparentRatingKey: z.string().optional(), + parentGuid: z.string().optional(), + grandparentGuid: z.string().optional(), + grandparentSlug: z.string().optional(), + grandparentKey: z.string().optional(), + parentKey: z.string().optional(), + grandparentTitle: z.string().optional(), + grandparentThumb: z.string().optional(), + grandparentTheme: z.string().optional(), + grandparentArt: z.string().optional(), + parentTitle: z.string().optional(), + parentIndex: z.number().int().optional(), + parentThumb: z.string().optional(), + ratingImage: z.string().optional(), + viewCount: z.number().int().optional(), + viewOffset: z.number().int().optional(), + skipCount: z.number().int().optional(), + subtype: z.string().optional(), + lastRatedAt: z.number().int().optional(), + createdAtAccuracy: z.string().optional(), + createdAtTZOffset: z.string().optional(), + lastViewedAt: z.number().int().optional(), + userRating: z.number().optional(), + Image: z.array(z.lazy(() => GetAllMediaLibraryImage$inboundSchema)) + .optional(), + UltraBlurColors: z.lazy(() => GetAllMediaLibraryUltraBlurColors$inboundSchema) + .optional(), + Media: z.array(z.lazy(() => GetAllMediaLibraryMedia$inboundSchema)) + .optional(), + Genre: z.array(z.lazy(() => GetAllMediaLibraryGenre$inboundSchema)) + .optional(), + Country: z.array(z.lazy(() => GetAllMediaLibraryCountry$inboundSchema)) + .optional(), + Director: z.array(z.lazy(() => GetAllMediaLibraryDirector$inboundSchema)) + .optional(), + Writer: z.array(z.lazy(() => GetAllMediaLibraryWriter$inboundSchema)) + .optional(), + Role: z.array(z.lazy(() => GetAllMediaLibraryRole$inboundSchema)).optional(), + Guid: z.array(z.lazy(() => Guids$inboundSchema)).optional(), + Collection: z.array(z.lazy(() => GetAllMediaLibraryCollection$inboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + "Image": "image", + "UltraBlurColors": "ultraBlurColors", + "Media": "media", + "Genre": "genre", + "Country": "country", + "Director": "director", + "Writer": "writer", + "Role": "role", + "Guid": "guids", + "Collection": "collection", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryMetadata$Outbound = { + ratingKey: string; + key: string; + guid: string; + slug: string; + studio?: string | undefined; + type: string; + title: string; + titleSort: string; + contentRating?: string | undefined; + summary: string; + rating: number; + audienceRating: number; + year: number; + tagline: string; + thumb: string; + art: string; + theme: string; + index: number; + leafCount?: number | undefined; + viewedLeafCount?: number | undefined; + childCount: number; + seasonCount: number; + duration: number; + originallyAvailableAt: string; + addedAt: number; + updatedAt?: number | undefined; + audienceRatingImage?: string | undefined; + chapterSource?: string | undefined; + primaryExtraKey?: string | undefined; + originalTitle?: string | undefined; + parentRatingKey?: string | undefined; + grandparentRatingKey?: string | undefined; + parentGuid?: string | undefined; + grandparentGuid?: string | undefined; + grandparentSlug?: string | undefined; + grandparentKey?: string | undefined; + parentKey?: string | undefined; + grandparentTitle?: string | undefined; + grandparentThumb?: string | undefined; + grandparentTheme?: string | undefined; + grandparentArt?: string | undefined; + parentTitle?: string | undefined; + parentIndex?: number | undefined; + parentThumb?: string | undefined; + ratingImage?: string | undefined; + viewCount?: number | undefined; + viewOffset?: number | undefined; + skipCount?: number | undefined; + subtype?: string | undefined; + lastRatedAt?: number | undefined; + createdAtAccuracy?: string | undefined; + createdAtTZOffset?: string | undefined; + lastViewedAt?: number | undefined; + userRating?: number | undefined; + Image?: Array | undefined; + UltraBlurColors?: GetAllMediaLibraryUltraBlurColors$Outbound | undefined; + Media?: Array | undefined; + Genre?: Array | undefined; + Country?: Array | undefined; + Director?: Array | undefined; + Writer?: Array | undefined; + Role?: Array | undefined; + Guid?: Array | undefined; + Collection?: Array | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryMetadata$outboundSchema: z.ZodType< + GetAllMediaLibraryMetadata$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryMetadata +> = z.object({ + ratingKey: z.string(), + key: z.string(), + guid: z.string(), + slug: z.string(), + studio: z.string().optional(), + type: GetAllMediaLibraryLibraryType$outboundSchema, + title: z.string(), + titleSort: z.string(), + contentRating: z.string().optional(), + summary: z.string(), + rating: z.number(), + audienceRating: z.number(), + year: z.number().int(), + tagline: z.string(), + thumb: z.string(), + art: z.string(), + theme: z.string(), + index: z.number().int(), + leafCount: z.number().int().optional(), + viewedLeafCount: z.number().int().optional(), + childCount: z.number().int(), + seasonCount: z.number().int(), + duration: z.number().int(), + originallyAvailableAt: z.instanceof(RFCDate).transform(v => v.toString()), + addedAt: z.number().int(), + updatedAt: z.number().int().optional(), + audienceRatingImage: z.string().optional(), + chapterSource: z.string().optional(), + primaryExtraKey: z.string().optional(), + originalTitle: z.string().optional(), + parentRatingKey: z.string().optional(), + grandparentRatingKey: z.string().optional(), + parentGuid: z.string().optional(), + grandparentGuid: z.string().optional(), + grandparentSlug: z.string().optional(), + grandparentKey: z.string().optional(), + parentKey: z.string().optional(), + grandparentTitle: z.string().optional(), + grandparentThumb: z.string().optional(), + grandparentTheme: z.string().optional(), + grandparentArt: z.string().optional(), + parentTitle: z.string().optional(), + parentIndex: z.number().int().optional(), + parentThumb: z.string().optional(), + ratingImage: z.string().optional(), + viewCount: z.number().int().optional(), + viewOffset: z.number().int().optional(), + skipCount: z.number().int().optional(), + subtype: z.string().optional(), + lastRatedAt: z.number().int().optional(), + createdAtAccuracy: z.string().optional(), + createdAtTZOffset: z.string().optional(), + lastViewedAt: z.number().int().optional(), + userRating: z.number().optional(), + image: z.array(z.lazy(() => GetAllMediaLibraryImage$outboundSchema)) + .optional(), + ultraBlurColors: z.lazy(() => + GetAllMediaLibraryUltraBlurColors$outboundSchema + ).optional(), + media: z.array(z.lazy(() => GetAllMediaLibraryMedia$outboundSchema)) + .optional(), + genre: z.array(z.lazy(() => GetAllMediaLibraryGenre$outboundSchema)) + .optional(), + country: z.array(z.lazy(() => GetAllMediaLibraryCountry$outboundSchema)) + .optional(), + director: z.array(z.lazy(() => GetAllMediaLibraryDirector$outboundSchema)) + .optional(), + writer: z.array(z.lazy(() => GetAllMediaLibraryWriter$outboundSchema)) + .optional(), + role: z.array(z.lazy(() => GetAllMediaLibraryRole$outboundSchema)).optional(), + guids: z.array(z.lazy(() => Guids$outboundSchema)).optional(), + collection: z.array(z.lazy(() => GetAllMediaLibraryCollection$outboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + image: "Image", + ultraBlurColors: "UltraBlurColors", + media: "Media", + genre: "Genre", + country: "Country", + director: "Director", + writer: "Writer", + role: "Role", + guids: "Guid", + collection: "Collection", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryMetadata$ { + /** @deprecated use `GetAllMediaLibraryMetadata$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryMetadata$inboundSchema; + /** @deprecated use `GetAllMediaLibraryMetadata$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryMetadata$outboundSchema; + /** @deprecated use `GetAllMediaLibraryMetadata$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryMetadata$Outbound; +} + +export function getAllMediaLibraryMetadataToJSON( + getAllMediaLibraryMetadata: GetAllMediaLibraryMetadata, +): string { + return JSON.stringify( + GetAllMediaLibraryMetadata$outboundSchema.parse(getAllMediaLibraryMetadata), + ); +} + +export function getAllMediaLibraryMetadataFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryMetadata$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryMetadata' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryMediaContainer$inboundSchema: z.ZodType< + GetAllMediaLibraryMediaContainer, + z.ZodTypeDef, + unknown +> = z.object({ + size: z.number().int(), + totalSize: z.number().int(), + offset: z.number().int(), + allowSync: z.boolean(), + art: z.string(), + content: z.string(), + identifier: z.string(), + librarySectionID: z.number().int(), + librarySectionTitle: z.string(), + librarySectionUUID: z.string().optional(), + mediaTagPrefix: z.string(), + mediaTagVersion: z.number().int(), + thumb: z.string(), + nocache: z.boolean(), + title1: z.string(), + title2: z.string(), + viewGroup: z.string(), + Meta: z.lazy(() => GetAllMediaLibraryMeta$inboundSchema).optional(), + Metadata: z.array(z.lazy(() => GetAllMediaLibraryMetadata$inboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + "Meta": "meta", + "Metadata": "metadata", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryMediaContainer$Outbound = { + size: number; + totalSize: number; + offset: number; + allowSync: boolean; + art: string; + content: string; + identifier: string; + librarySectionID: number; + librarySectionTitle: string; + librarySectionUUID?: string | undefined; + mediaTagPrefix: string; + mediaTagVersion: number; + thumb: string; + nocache: boolean; + title1: string; + title2: string; + viewGroup: string; + Meta?: GetAllMediaLibraryMeta$Outbound | undefined; + Metadata?: Array | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryMediaContainer$outboundSchema: z.ZodType< + GetAllMediaLibraryMediaContainer$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryMediaContainer +> = z.object({ + size: z.number().int(), + totalSize: z.number().int(), + offset: z.number().int(), + allowSync: z.boolean(), + art: z.string(), + content: z.string(), + identifier: z.string(), + librarySectionID: z.number().int(), + librarySectionTitle: z.string(), + librarySectionUUID: z.string().optional(), + mediaTagPrefix: z.string(), + mediaTagVersion: z.number().int(), + thumb: z.string(), + nocache: z.boolean(), + title1: z.string(), + title2: z.string(), + viewGroup: z.string(), + meta: z.lazy(() => GetAllMediaLibraryMeta$outboundSchema).optional(), + metadata: z.array(z.lazy(() => GetAllMediaLibraryMetadata$outboundSchema)) + .optional(), +}).transform((v) => { + return remap$(v, { + meta: "Meta", + metadata: "Metadata", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryMediaContainer$ { + /** @deprecated use `GetAllMediaLibraryMediaContainer$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryMediaContainer$inboundSchema; + /** @deprecated use `GetAllMediaLibraryMediaContainer$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryMediaContainer$outboundSchema; + /** @deprecated use `GetAllMediaLibraryMediaContainer$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryMediaContainer$Outbound; +} + +export function getAllMediaLibraryMediaContainerToJSON( + getAllMediaLibraryMediaContainer: GetAllMediaLibraryMediaContainer, +): string { + return JSON.stringify( + GetAllMediaLibraryMediaContainer$outboundSchema.parse( + getAllMediaLibraryMediaContainer, + ), + ); +} + +export function getAllMediaLibraryMediaContainerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryMediaContainer$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryMediaContainer' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryResponseBody$inboundSchema: z.ZodType< + GetAllMediaLibraryResponseBody, + z.ZodTypeDef, + unknown +> = z.object({ + MediaContainer: z.lazy(() => GetAllMediaLibraryMediaContainer$inboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + "MediaContainer": "mediaContainer", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryResponseBody$Outbound = { + MediaContainer?: GetAllMediaLibraryMediaContainer$Outbound | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryResponseBody$outboundSchema: z.ZodType< + GetAllMediaLibraryResponseBody$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryResponseBody +> = z.object({ + mediaContainer: z.lazy(() => GetAllMediaLibraryMediaContainer$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + mediaContainer: "MediaContainer", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryResponseBody$ { + /** @deprecated use `GetAllMediaLibraryResponseBody$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryResponseBody$inboundSchema; + /** @deprecated use `GetAllMediaLibraryResponseBody$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryResponseBody$outboundSchema; + /** @deprecated use `GetAllMediaLibraryResponseBody$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryResponseBody$Outbound; +} + +export function getAllMediaLibraryResponseBodyToJSON( + getAllMediaLibraryResponseBody: GetAllMediaLibraryResponseBody, +): string { + return JSON.stringify( + GetAllMediaLibraryResponseBody$outboundSchema.parse( + getAllMediaLibraryResponseBody, + ), + ); +} + +export function getAllMediaLibraryResponseBodyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryResponseBody$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryResponseBody' from JSON`, + ); +} + +/** @internal */ +export const GetAllMediaLibraryResponse$inboundSchema: z.ZodType< + GetAllMediaLibraryResponse, + z.ZodTypeDef, + unknown +> = z.object({ + ContentType: z.string(), + StatusCode: z.number().int(), + RawResponse: z.instanceof(Response), + object: z.lazy(() => GetAllMediaLibraryResponseBody$inboundSchema).optional(), +}).transform((v) => { + return remap$(v, { + "ContentType": "contentType", + "StatusCode": "statusCode", + "RawResponse": "rawResponse", + }); +}); + +/** @internal */ +export type GetAllMediaLibraryResponse$Outbound = { + ContentType: string; + StatusCode: number; + RawResponse: never; + object?: GetAllMediaLibraryResponseBody$Outbound | undefined; +}; + +/** @internal */ +export const GetAllMediaLibraryResponse$outboundSchema: z.ZodType< + GetAllMediaLibraryResponse$Outbound, + z.ZodTypeDef, + GetAllMediaLibraryResponse +> = z.object({ + contentType: z.string(), + statusCode: z.number().int(), + rawResponse: z.instanceof(Response).transform(() => { + throw new Error("Response cannot be serialized"); + }), + object: z.lazy(() => GetAllMediaLibraryResponseBody$outboundSchema) + .optional(), +}).transform((v) => { + return remap$(v, { + contentType: "ContentType", + statusCode: "StatusCode", + rawResponse: "RawResponse", + }); +}); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetAllMediaLibraryResponse$ { + /** @deprecated use `GetAllMediaLibraryResponse$inboundSchema` instead. */ + export const inboundSchema = GetAllMediaLibraryResponse$inboundSchema; + /** @deprecated use `GetAllMediaLibraryResponse$outboundSchema` instead. */ + export const outboundSchema = GetAllMediaLibraryResponse$outboundSchema; + /** @deprecated use `GetAllMediaLibraryResponse$Outbound` instead. */ + export type Outbound = GetAllMediaLibraryResponse$Outbound; +} + +export function getAllMediaLibraryResponseToJSON( + getAllMediaLibraryResponse: GetAllMediaLibraryResponse, +): string { + return JSON.stringify( + GetAllMediaLibraryResponse$outboundSchema.parse(getAllMediaLibraryResponse), + ); +} + +export function getAllMediaLibraryResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GetAllMediaLibraryResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetAllMediaLibraryResponse' from JSON`, + ); +} diff --git a/src/sdk/models/operations/getcountrieslibrary.ts b/src/sdk/models/operations/getcountrieslibrary.ts index 12a408e1..3e0f1bc2 100644 --- a/src/sdk/models/operations/getcountrieslibrary.ts +++ b/src/sdk/models/operations/getcountrieslibrary.ts @@ -56,19 +56,53 @@ export type GetCountriesLibraryDirectory = { }; export type GetCountriesLibraryMediaContainer = { + /** + * Number of media items returned in this response. + */ size: number; - offset?: number | undefined; - totalSize?: number | undefined; - identifier: string; + /** + * Indicates whether syncing is allowed. + */ allowSync: boolean; + /** + * URL for the background artwork of the media container. + */ art: string; + /** + * The content type or mode. + */ content: string; + /** + * An plugin identifier for the media container. + */ + identifier: string; + /** + * The prefix used for media tag resource paths. + */ mediaTagPrefix: string; + /** + * The version number for media tags. + */ mediaTagVersion: number; + /** + * Specifies whether caching is disabled. + */ nocache: boolean; + /** + * URL for the thumbnail image of the media container. + */ thumb: string; + /** + * The primary title of the media container. + */ title1: string; + /** + * The secondary title of the media container. + */ title2: string; + /** + * Identifier for the view group layout. + */ viewGroup: string; directory?: Array | undefined; }; @@ -246,13 +280,11 @@ export const GetCountriesLibraryMediaContainer$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - size: z.number(), - offset: z.number().int().optional(), - totalSize: z.number().int().optional(), - identifier: z.string(), + size: z.number().int(), allowSync: z.boolean(), art: z.string(), content: z.string(), + identifier: z.string(), mediaTagPrefix: z.string(), mediaTagVersion: z.number().int(), nocache: z.boolean(), @@ -271,12 +303,10 @@ export const GetCountriesLibraryMediaContainer$inboundSchema: z.ZodType< /** @internal */ export type GetCountriesLibraryMediaContainer$Outbound = { size: number; - offset?: number | undefined; - totalSize?: number | undefined; - identifier: string; allowSync: boolean; art: string; content: string; + identifier: string; mediaTagPrefix: string; mediaTagVersion: number; nocache: boolean; @@ -293,13 +323,11 @@ export const GetCountriesLibraryMediaContainer$outboundSchema: z.ZodType< z.ZodTypeDef, GetCountriesLibraryMediaContainer > = z.object({ - size: z.number(), - offset: z.number().int().optional(), - totalSize: z.number().int().optional(), - identifier: z.string(), + size: z.number().int(), allowSync: z.boolean(), art: z.string(), content: z.string(), + identifier: z.string(), mediaTagPrefix: z.string(), mediaTagVersion: z.number().int(), nocache: z.boolean(), diff --git a/src/sdk/models/operations/getgenreslibrary.ts b/src/sdk/models/operations/getgenreslibrary.ts index 79cb2de8..607698da 100644 --- a/src/sdk/models/operations/getgenreslibrary.ts +++ b/src/sdk/models/operations/getgenreslibrary.ts @@ -57,19 +57,53 @@ export type GetGenresLibraryDirectory = { }; export type GetGenresLibraryMediaContainer = { + /** + * Number of media items returned in this response. + */ size: number; - offset?: number | undefined; - totalSize?: number | undefined; - identifier: string; + /** + * Indicates whether syncing is allowed. + */ allowSync: boolean; + /** + * URL for the background artwork of the media container. + */ art: string; + /** + * The content type or mode. + */ content: string; + /** + * An plugin identifier for the media container. + */ + identifier: string; + /** + * The prefix used for media tag resource paths. + */ mediaTagPrefix: string; + /** + * The version number for media tags. + */ mediaTagVersion: number; + /** + * Specifies whether caching is disabled. + */ nocache: boolean; + /** + * URL for the thumbnail image of the media container. + */ thumb: string; + /** + * The primary title of the media container. + */ title1: string; + /** + * The secondary title of the media container. + */ title2: string; + /** + * Identifier for the view group layout. + */ viewGroup: string; directory?: Array | undefined; }; @@ -247,13 +281,11 @@ export const GetGenresLibraryMediaContainer$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - size: z.number(), - offset: z.number().int().optional(), - totalSize: z.number().int().optional(), - identifier: z.string(), + size: z.number().int(), allowSync: z.boolean(), art: z.string(), content: z.string(), + identifier: z.string(), mediaTagPrefix: z.string(), mediaTagVersion: z.number().int(), nocache: z.boolean(), @@ -272,12 +304,10 @@ export const GetGenresLibraryMediaContainer$inboundSchema: z.ZodType< /** @internal */ export type GetGenresLibraryMediaContainer$Outbound = { size: number; - offset?: number | undefined; - totalSize?: number | undefined; - identifier: string; allowSync: boolean; art: string; content: string; + identifier: string; mediaTagPrefix: string; mediaTagVersion: number; nocache: boolean; @@ -294,13 +324,11 @@ export const GetGenresLibraryMediaContainer$outboundSchema: z.ZodType< z.ZodTypeDef, GetGenresLibraryMediaContainer > = z.object({ - size: z.number(), - offset: z.number().int().optional(), - totalSize: z.number().int().optional(), - identifier: z.string(), + size: z.number().int(), allowSync: z.boolean(), art: z.string(), content: z.string(), + identifier: z.string(), mediaTagPrefix: z.string(), mediaTagVersion: z.number().int(), nocache: z.boolean(), diff --git a/src/sdk/models/operations/getlibraryitems.ts b/src/sdk/models/operations/getlibraryitems.ts index a23ecd8d..f22737ff 100644 --- a/src/sdk/models/operations/getlibraryitems.ts +++ b/src/sdk/models/operations/getlibraryitems.ts @@ -13,7 +13,6 @@ import { SDKValidationError } from "../errors/sdkvalidationerror.js"; * A key representing a specific tag within the section. */ export enum Tag { - All = "all", Unwatched = "unwatched", Newest = "newest", RecentlyAdded = "recentlyAdded", @@ -21,12 +20,9 @@ export enum Tag { OnDeck = "onDeck", Collection = "collection", Edition = "edition", - Genre = "genre", Year = "year", Decade = "decade", Director = "director", - Actor = "actor", - Country = "country", ContentRating = "contentRating", Rating = "rating", Resolution = "resolution", @@ -134,6 +130,7 @@ export type GetLibraryItemsFilter = { key: string; title: string; type: string; + advanced?: boolean | undefined; }; /** @@ -187,6 +184,7 @@ export type GetLibraryItemsField = { export type GetLibraryItemsType = { key: string; type: string; + subtype?: string | undefined; title: string; active: boolean; filter?: Array | undefined; @@ -214,6 +212,8 @@ export enum GetLibraryItemsLibraryType { TvShow = "show", Season = "season", Episode = "episode", + Artist = "artist", + Album = "album", } /** @@ -1008,6 +1008,7 @@ export const GetLibraryItemsFilter$inboundSchema: z.ZodType< key: z.string(), title: z.string(), type: z.string(), + advanced: z.boolean().optional(), }); /** @internal */ @@ -1017,6 +1018,7 @@ export type GetLibraryItemsFilter$Outbound = { key: string; title: string; type: string; + advanced?: boolean | undefined; }; /** @internal */ @@ -1030,6 +1032,7 @@ export const GetLibraryItemsFilter$outboundSchema: z.ZodType< key: z.string(), title: z.string(), type: z.string(), + advanced: z.boolean().optional(), }); /** @@ -1259,6 +1262,7 @@ export const GetLibraryItemsType$inboundSchema: z.ZodType< > = z.object({ key: z.string(), type: z.string(), + subtype: z.string().optional(), title: z.string(), active: z.boolean(), Filter: z.array(z.lazy(() => GetLibraryItemsFilter$inboundSchema)).optional(), @@ -1276,6 +1280,7 @@ export const GetLibraryItemsType$inboundSchema: z.ZodType< export type GetLibraryItemsType$Outbound = { key: string; type: string; + subtype?: string | undefined; title: string; active: boolean; Filter?: Array | undefined; @@ -1291,6 +1296,7 @@ export const GetLibraryItemsType$outboundSchema: z.ZodType< > = z.object({ key: z.string(), type: z.string(), + subtype: z.string().optional(), title: z.string(), active: z.boolean(), filter: z.array(z.lazy(() => GetLibraryItemsFilter$outboundSchema)) diff --git a/src/sdk/models/operations/getmediametadata.ts b/src/sdk/models/operations/getmediametadata.ts index 5782bf78..69bcf744 100644 --- a/src/sdk/models/operations/getmediametadata.ts +++ b/src/sdk/models/operations/getmediametadata.ts @@ -68,6 +68,38 @@ export type GetMediaMetaDataRequest = { asyncRefreshLocalMediaAgent?: boolean | undefined; }; +export enum OptimizedForStreaming1 { + Zero = 0, + One = 1, +} + +/** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ +export type GetMediaMetaDataOptimizedForStreaming = + | OptimizedForStreaming1 + | boolean; + +export enum GetMediaMetaDataOptimizedForStreaming1 { + Zero = 0, + One = 1, +} + +/** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ +export type GetMediaMetaDataLibraryOptimizedForStreaming = + | GetMediaMetaDataOptimizedForStreaming1 + | boolean; + +/** + * Indicates if the part has a thumbnail. + */ +export enum GetMediaMetaDataHasThumbnail { + False = "0", + True = "1", +} + export type GetMediaMetaDataStream = { /** * Unique stream identifier. @@ -92,7 +124,7 @@ export type GetMediaMetaDataStream = { /** * Bitrate of the stream. */ - bitrate: number; + bitrate?: number | undefined; /** * Language of the stream. */ @@ -105,6 +137,10 @@ export type GetMediaMetaDataStream = { * ISO language code. */ languageCode: string; + /** + * Indicates whether header compression is enabled. + */ + headerCompression?: boolean | undefined; /** * Dolby Vision BL compatibility ID. */ @@ -267,7 +303,7 @@ export type GetMediaMetaDataPart = { /** * Duration of the part in milliseconds. */ - duration: number; + duration?: number | undefined; /** * File path for the part. */ @@ -276,18 +312,32 @@ export type GetMediaMetaDataPart = { * File size in bytes. */ size: number; + packetLength?: number | undefined; /** * Container format of the part. */ - container: string; + container?: string | undefined; /** * Video profile for the part. */ - videoProfile: string; + videoProfile?: string | undefined; + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + audioProfile?: string | undefined; + has64bitOffsets?: boolean | undefined; + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + optimizedForStreaming?: + | GetMediaMetaDataOptimizedForStreaming1 + | boolean + | undefined; + hasThumbnail?: GetMediaMetaDataHasThumbnail | undefined; /** * An array of streams for this part. */ - stream: Array; + stream?: Array | undefined; }; export type GetMediaMetaDataMedia = { @@ -298,55 +348,67 @@ export type GetMediaMetaDataMedia = { /** * Duration of the media in milliseconds. */ - duration: number; + duration?: number | undefined; /** * Bitrate in bits per second. */ - bitrate: number; + bitrate?: number | undefined; /** * Video width in pixels. */ - width: number; + width?: number | undefined; /** * Video height in pixels. */ - height: number; + height?: number | undefined; /** * Aspect ratio of the video. */ - aspectRatio: number; + aspectRatio?: number | undefined; /** * Number of audio channels. */ - audioChannels: number; + audioChannels?: number | undefined; + displayOffset?: number | undefined; /** * Audio codec used. */ - audioCodec: string; + audioCodec?: string | undefined; /** * Video codec used. */ - videoCodec: string; + videoCodec?: string | undefined; /** * Video resolution (e.g., 4k). */ - videoResolution: string; + videoResolution?: string | undefined; /** * File container type. */ - container: string; + container?: string | undefined; /** - * Frame rate of the video (e.g., 24p). + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + * @remarks */ - videoFrameRate: string; + videoFrameRate?: string | undefined; /** * Video profile (e.g., main 10). */ - videoProfile: string; + videoProfile?: string | undefined; /** * Indicates whether voice activity is detected. */ hasVoiceActivity: boolean; + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + audioProfile?: string | undefined; + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + optimizedForStreaming?: OptimizedForStreaming1 | boolean | undefined; + has64bitOffsets?: boolean | undefined; /** * An array of parts for this media item. */ @@ -417,14 +479,14 @@ export type GetMediaMetaDataCountry = { tag: string; }; -export type Guids = { +export type GetMediaMetaDataGuids = { /** * The GUID value. */ id: string; }; -export type Rating = { +export type Ratings = { /** * The image or reference for the rating. */ @@ -645,7 +707,7 @@ export type GetMediaMetaDataMetadata = { /** * The content rating (e.g., TV-MA). */ - contentRating: string; + contentRating?: string | undefined; /** * A summary of the content. */ @@ -665,7 +727,7 @@ export type GetMediaMetaDataMetadata = { /** * The audience rating for the content. */ - audienceRating: number; + audienceRating?: number | undefined; /** * The number of times the item has been viewed. */ @@ -682,6 +744,14 @@ export type GetMediaMetaDataMetadata = { * The release year. */ year: number; + /** + * The general rating + */ + rating?: number | undefined; + /** + * The URL or identifier for the rating image (e.g., Rotten Tomatoes rating image). + */ + ratingImage?: string | undefined; /** * The tagline of the content. */ @@ -707,7 +777,7 @@ export type GetMediaMetaDataMetadata = { /** * The original release date. */ - originallyAvailableAt: RFCDate; + originallyAvailableAt?: RFCDate | undefined; /** * The total number of episodes (or leaves). */ @@ -720,18 +790,12 @@ export type GetMediaMetaDataMetadata = { * The number of child items. */ childCount?: number | undefined; - /** - * Unix timestamp when the item was added. - */ addedAt: number; - /** - * Unix timestamp when the item was last updated. - */ updatedAt: number; /** * The URL for the audience rating image. */ - audienceRatingImage: string; + audienceRatingImage?: string | undefined; /** * The index number of the parent entity, which could indicate its order or position. */ @@ -765,11 +829,11 @@ export type GetMediaMetaDataMetadata = { /** * An array of GUID objects. */ - guids: Array; + guids?: Array | undefined; /** * An array of rating objects. */ - rating: Array; + ratings?: Array | undefined; /** * An array of Actor roles. */ @@ -797,6 +861,9 @@ export type GetMediaMetaDataMetadata = { }; export type GetMediaMetaDataMediaContainer = { + /** + * Number of media items returned in this response. + */ size: number; /** * Indicates whether syncing is allowed. @@ -951,6 +1018,194 @@ export function getMediaMetaDataRequestFromJSON( ); } +/** @internal */ +export const OptimizedForStreaming1$inboundSchema: z.ZodNativeEnum< + typeof OptimizedForStreaming1 +> = z.nativeEnum(OptimizedForStreaming1); + +/** @internal */ +export const OptimizedForStreaming1$outboundSchema: z.ZodNativeEnum< + typeof OptimizedForStreaming1 +> = OptimizedForStreaming1$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace OptimizedForStreaming1$ { + /** @deprecated use `OptimizedForStreaming1$inboundSchema` instead. */ + export const inboundSchema = OptimizedForStreaming1$inboundSchema; + /** @deprecated use `OptimizedForStreaming1$outboundSchema` instead. */ + export const outboundSchema = OptimizedForStreaming1$outboundSchema; +} + +/** @internal */ +export const GetMediaMetaDataOptimizedForStreaming$inboundSchema: z.ZodType< + GetMediaMetaDataOptimizedForStreaming, + z.ZodTypeDef, + unknown +> = z.union([OptimizedForStreaming1$inboundSchema, z.boolean()]); + +/** @internal */ +export type GetMediaMetaDataOptimizedForStreaming$Outbound = number | boolean; + +/** @internal */ +export const GetMediaMetaDataOptimizedForStreaming$outboundSchema: z.ZodType< + GetMediaMetaDataOptimizedForStreaming$Outbound, + z.ZodTypeDef, + GetMediaMetaDataOptimizedForStreaming +> = z.union([OptimizedForStreaming1$outboundSchema, z.boolean()]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataOptimizedForStreaming$ { + /** @deprecated use `GetMediaMetaDataOptimizedForStreaming$inboundSchema` instead. */ + export const inboundSchema = + GetMediaMetaDataOptimizedForStreaming$inboundSchema; + /** @deprecated use `GetMediaMetaDataOptimizedForStreaming$outboundSchema` instead. */ + export const outboundSchema = + GetMediaMetaDataOptimizedForStreaming$outboundSchema; + /** @deprecated use `GetMediaMetaDataOptimizedForStreaming$Outbound` instead. */ + export type Outbound = GetMediaMetaDataOptimizedForStreaming$Outbound; +} + +export function getMediaMetaDataOptimizedForStreamingToJSON( + getMediaMetaDataOptimizedForStreaming: GetMediaMetaDataOptimizedForStreaming, +): string { + return JSON.stringify( + GetMediaMetaDataOptimizedForStreaming$outboundSchema.parse( + getMediaMetaDataOptimizedForStreaming, + ), + ); +} + +export function getMediaMetaDataOptimizedForStreamingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GetMediaMetaDataOptimizedForStreaming$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataOptimizedForStreaming' from JSON`, + ); +} + +/** @internal */ +export const GetMediaMetaDataOptimizedForStreaming1$inboundSchema: + z.ZodNativeEnum = z.nativeEnum( + GetMediaMetaDataOptimizedForStreaming1, + ); + +/** @internal */ +export const GetMediaMetaDataOptimizedForStreaming1$outboundSchema: + z.ZodNativeEnum = + GetMediaMetaDataOptimizedForStreaming1$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataOptimizedForStreaming1$ { + /** @deprecated use `GetMediaMetaDataOptimizedForStreaming1$inboundSchema` instead. */ + export const inboundSchema = + GetMediaMetaDataOptimizedForStreaming1$inboundSchema; + /** @deprecated use `GetMediaMetaDataOptimizedForStreaming1$outboundSchema` instead. */ + export const outboundSchema = + GetMediaMetaDataOptimizedForStreaming1$outboundSchema; +} + +/** @internal */ +export const GetMediaMetaDataLibraryOptimizedForStreaming$inboundSchema: + z.ZodType< + GetMediaMetaDataLibraryOptimizedForStreaming, + z.ZodTypeDef, + unknown + > = z.union([ + GetMediaMetaDataOptimizedForStreaming1$inboundSchema, + z.boolean(), + ]); + +/** @internal */ +export type GetMediaMetaDataLibraryOptimizedForStreaming$Outbound = + | number + | boolean; + +/** @internal */ +export const GetMediaMetaDataLibraryOptimizedForStreaming$outboundSchema: + z.ZodType< + GetMediaMetaDataLibraryOptimizedForStreaming$Outbound, + z.ZodTypeDef, + GetMediaMetaDataLibraryOptimizedForStreaming + > = z.union([ + GetMediaMetaDataOptimizedForStreaming1$outboundSchema, + z.boolean(), + ]); + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataLibraryOptimizedForStreaming$ { + /** @deprecated use `GetMediaMetaDataLibraryOptimizedForStreaming$inboundSchema` instead. */ + export const inboundSchema = + GetMediaMetaDataLibraryOptimizedForStreaming$inboundSchema; + /** @deprecated use `GetMediaMetaDataLibraryOptimizedForStreaming$outboundSchema` instead. */ + export const outboundSchema = + GetMediaMetaDataLibraryOptimizedForStreaming$outboundSchema; + /** @deprecated use `GetMediaMetaDataLibraryOptimizedForStreaming$Outbound` instead. */ + export type Outbound = GetMediaMetaDataLibraryOptimizedForStreaming$Outbound; +} + +export function getMediaMetaDataLibraryOptimizedForStreamingToJSON( + getMediaMetaDataLibraryOptimizedForStreaming: + GetMediaMetaDataLibraryOptimizedForStreaming, +): string { + return JSON.stringify( + GetMediaMetaDataLibraryOptimizedForStreaming$outboundSchema.parse( + getMediaMetaDataLibraryOptimizedForStreaming, + ), + ); +} + +export function getMediaMetaDataLibraryOptimizedForStreamingFromJSON( + jsonString: string, +): SafeParseResult< + GetMediaMetaDataLibraryOptimizedForStreaming, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + GetMediaMetaDataLibraryOptimizedForStreaming$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'GetMediaMetaDataLibraryOptimizedForStreaming' from JSON`, + ); +} + +/** @internal */ +export const GetMediaMetaDataHasThumbnail$inboundSchema: z.ZodNativeEnum< + typeof GetMediaMetaDataHasThumbnail +> = z.nativeEnum(GetMediaMetaDataHasThumbnail); + +/** @internal */ +export const GetMediaMetaDataHasThumbnail$outboundSchema: z.ZodNativeEnum< + typeof GetMediaMetaDataHasThumbnail +> = GetMediaMetaDataHasThumbnail$inboundSchema; + +/** + * @internal + * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. + */ +export namespace GetMediaMetaDataHasThumbnail$ { + /** @deprecated use `GetMediaMetaDataHasThumbnail$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataHasThumbnail$inboundSchema; + /** @deprecated use `GetMediaMetaDataHasThumbnail$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataHasThumbnail$outboundSchema; +} + /** @internal */ export const GetMediaMetaDataStream$inboundSchema: z.ZodType< GetMediaMetaDataStream, @@ -962,10 +1217,11 @@ export const GetMediaMetaDataStream$inboundSchema: z.ZodType< default: z.boolean().optional(), codec: z.string(), index: z.number().int(), - bitrate: z.number().int(), + bitrate: z.number().int().optional(), language: z.string(), languageTag: z.string(), languageCode: z.string(), + headerCompression: z.boolean().optional(), DOVIBLCompatID: z.number().int().optional(), DOVIBLPresent: z.boolean().optional(), DOVIELPresent: z.boolean().optional(), @@ -1023,10 +1279,11 @@ export type GetMediaMetaDataStream$Outbound = { default?: boolean | undefined; codec: string; index: number; - bitrate: number; + bitrate?: number | undefined; language: string; languageTag: string; languageCode: string; + headerCompression?: boolean | undefined; DOVIBLCompatID?: number | undefined; DOVIBLPresent?: boolean | undefined; DOVIELPresent?: boolean | undefined; @@ -1077,10 +1334,11 @@ export const GetMediaMetaDataStream$outboundSchema: z.ZodType< default: z.boolean().optional(), codec: z.string(), index: z.number().int(), - bitrate: z.number().int(), + bitrate: z.number().int().optional(), language: z.string(), languageTag: z.string(), languageCode: z.string(), + headerCompression: z.boolean().optional(), doviblCompatID: z.number().int().optional(), doviblPresent: z.boolean().optional(), dovielPresent: z.boolean().optional(), @@ -1173,12 +1431,23 @@ export const GetMediaMetaDataPart$inboundSchema: z.ZodType< id: z.number().int(), key: z.string(), indexes: z.string().optional(), - duration: z.number().int(), + duration: z.number().int().optional(), file: z.string(), size: z.number().int(), - container: z.string(), - videoProfile: z.string(), - Stream: z.array(z.lazy(() => GetMediaMetaDataStream$inboundSchema)), + packetLength: z.number().int().optional(), + container: z.string().optional(), + videoProfile: z.string().optional(), + audioProfile: z.string().optional(), + has64bitOffsets: z.boolean().optional(), + optimizedForStreaming: z.union([ + GetMediaMetaDataOptimizedForStreaming1$inboundSchema, + z.boolean(), + ]).optional(), + hasThumbnail: GetMediaMetaDataHasThumbnail$inboundSchema.default( + GetMediaMetaDataHasThumbnail.False, + ), + Stream: z.array(z.lazy(() => GetMediaMetaDataStream$inboundSchema)) + .optional(), }).transform((v) => { return remap$(v, { "Stream": "stream", @@ -1192,12 +1461,17 @@ export type GetMediaMetaDataPart$Outbound = { id: number; key: string; indexes?: string | undefined; - duration: number; + duration?: number | undefined; file: string; size: number; - container: string; - videoProfile: string; - Stream: Array; + packetLength?: number | undefined; + container?: string | undefined; + videoProfile?: string | undefined; + audioProfile?: string | undefined; + has64bitOffsets?: boolean | undefined; + optimizedForStreaming?: number | boolean | undefined; + hasThumbnail: string; + Stream?: Array | undefined; }; /** @internal */ @@ -1211,12 +1485,23 @@ export const GetMediaMetaDataPart$outboundSchema: z.ZodType< id: z.number().int(), key: z.string(), indexes: z.string().optional(), - duration: z.number().int(), + duration: z.number().int().optional(), file: z.string(), size: z.number().int(), - container: z.string(), - videoProfile: z.string(), - stream: z.array(z.lazy(() => GetMediaMetaDataStream$outboundSchema)), + packetLength: z.number().int().optional(), + container: z.string().optional(), + videoProfile: z.string().optional(), + audioProfile: z.string().optional(), + has64bitOffsets: z.boolean().optional(), + optimizedForStreaming: z.union([ + GetMediaMetaDataOptimizedForStreaming1$outboundSchema, + z.boolean(), + ]).optional(), + hasThumbnail: GetMediaMetaDataHasThumbnail$outboundSchema.default( + GetMediaMetaDataHasThumbnail.False, + ), + stream: z.array(z.lazy(() => GetMediaMetaDataStream$outboundSchema)) + .optional(), }).transform((v) => { return remap$(v, { stream: "Stream", @@ -1261,19 +1546,26 @@ export const GetMediaMetaDataMedia$inboundSchema: z.ZodType< unknown > = z.object({ id: z.number().int(), - duration: z.number().int(), - bitrate: z.number().int(), - width: z.number().int(), - height: z.number().int(), - aspectRatio: z.number(), - audioChannels: z.number().int(), - audioCodec: z.string(), - videoCodec: z.string(), - videoResolution: z.string(), - container: z.string(), - videoFrameRate: z.string(), - videoProfile: z.string(), + duration: z.number().int().optional(), + bitrate: z.number().int().optional(), + width: z.number().int().optional(), + height: z.number().int().optional(), + aspectRatio: z.number().optional(), + audioChannels: z.number().int().optional(), + displayOffset: z.number().int().optional(), + audioCodec: z.string().optional(), + videoCodec: z.string().optional(), + videoResolution: z.string().optional(), + container: z.string().optional(), + videoFrameRate: z.string().optional(), + videoProfile: z.string().optional(), hasVoiceActivity: z.boolean(), + audioProfile: z.string().optional(), + optimizedForStreaming: z.union([ + OptimizedForStreaming1$inboundSchema, + z.boolean(), + ]).optional(), + has64bitOffsets: z.boolean().optional(), Part: z.array(z.lazy(() => GetMediaMetaDataPart$inboundSchema)), }).transform((v) => { return remap$(v, { @@ -1284,19 +1576,23 @@ export const GetMediaMetaDataMedia$inboundSchema: z.ZodType< /** @internal */ export type GetMediaMetaDataMedia$Outbound = { id: number; - duration: number; - bitrate: number; - width: number; - height: number; - aspectRatio: number; - audioChannels: number; - audioCodec: string; - videoCodec: string; - videoResolution: string; - container: string; - videoFrameRate: string; - videoProfile: string; + duration?: number | undefined; + bitrate?: number | undefined; + width?: number | undefined; + height?: number | undefined; + aspectRatio?: number | undefined; + audioChannels?: number | undefined; + displayOffset?: number | undefined; + audioCodec?: string | undefined; + videoCodec?: string | undefined; + videoResolution?: string | undefined; + container?: string | undefined; + videoFrameRate?: string | undefined; + videoProfile?: string | undefined; hasVoiceActivity: boolean; + audioProfile?: string | undefined; + optimizedForStreaming?: number | boolean | undefined; + has64bitOffsets?: boolean | undefined; Part: Array; }; @@ -1307,19 +1603,26 @@ export const GetMediaMetaDataMedia$outboundSchema: z.ZodType< GetMediaMetaDataMedia > = z.object({ id: z.number().int(), - duration: z.number().int(), - bitrate: z.number().int(), - width: z.number().int(), - height: z.number().int(), - aspectRatio: z.number(), - audioChannels: z.number().int(), - audioCodec: z.string(), - videoCodec: z.string(), - videoResolution: z.string(), - container: z.string(), - videoFrameRate: z.string(), - videoProfile: z.string(), + duration: z.number().int().optional(), + bitrate: z.number().int().optional(), + width: z.number().int().optional(), + height: z.number().int().optional(), + aspectRatio: z.number().optional(), + audioChannels: z.number().int().optional(), + displayOffset: z.number().int().optional(), + audioCodec: z.string().optional(), + videoCodec: z.string().optional(), + videoResolution: z.string().optional(), + container: z.string().optional(), + videoFrameRate: z.string().optional(), + videoProfile: z.string().optional(), hasVoiceActivity: z.boolean(), + audioProfile: z.string().optional(), + optimizedForStreaming: z.union([ + OptimizedForStreaming1$outboundSchema, + z.boolean(), + ]).optional(), + has64bitOffsets: z.boolean().optional(), part: z.array(z.lazy(() => GetMediaMetaDataPart$outboundSchema)), }).transform((v) => { return remap$(v, { @@ -1604,21 +1907,24 @@ export function getMediaMetaDataCountryFromJSON( } /** @internal */ -export const Guids$inboundSchema: z.ZodType = z - .object({ - id: z.string(), - }); +export const GetMediaMetaDataGuids$inboundSchema: z.ZodType< + GetMediaMetaDataGuids, + z.ZodTypeDef, + unknown +> = z.object({ + id: z.string(), +}); /** @internal */ -export type Guids$Outbound = { +export type GetMediaMetaDataGuids$Outbound = { id: string; }; /** @internal */ -export const Guids$outboundSchema: z.ZodType< - Guids$Outbound, +export const GetMediaMetaDataGuids$outboundSchema: z.ZodType< + GetMediaMetaDataGuids$Outbound, z.ZodTypeDef, - Guids + GetMediaMetaDataGuids > = z.object({ id: z.string(), }); @@ -1627,49 +1933,53 @@ export const Guids$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace Guids$ { - /** @deprecated use `Guids$inboundSchema` instead. */ - export const inboundSchema = Guids$inboundSchema; - /** @deprecated use `Guids$outboundSchema` instead. */ - export const outboundSchema = Guids$outboundSchema; - /** @deprecated use `Guids$Outbound` instead. */ - export type Outbound = Guids$Outbound; +export namespace GetMediaMetaDataGuids$ { + /** @deprecated use `GetMediaMetaDataGuids$inboundSchema` instead. */ + export const inboundSchema = GetMediaMetaDataGuids$inboundSchema; + /** @deprecated use `GetMediaMetaDataGuids$outboundSchema` instead. */ + export const outboundSchema = GetMediaMetaDataGuids$outboundSchema; + /** @deprecated use `GetMediaMetaDataGuids$Outbound` instead. */ + export type Outbound = GetMediaMetaDataGuids$Outbound; } -export function guidsToJSON(guids: Guids): string { - return JSON.stringify(Guids$outboundSchema.parse(guids)); +export function getMediaMetaDataGuidsToJSON( + getMediaMetaDataGuids: GetMediaMetaDataGuids, +): string { + return JSON.stringify( + GetMediaMetaDataGuids$outboundSchema.parse(getMediaMetaDataGuids), + ); } -export function guidsFromJSON( +export function getMediaMetaDataGuidsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Guids$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Guids' from JSON`, + (x) => GetMediaMetaDataGuids$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetMediaMetaDataGuids' from JSON`, ); } /** @internal */ -export const Rating$inboundSchema: z.ZodType = z - .object({ +export const Ratings$inboundSchema: z.ZodType = + z.object({ image: z.string(), value: z.number(), type: z.string(), }); /** @internal */ -export type Rating$Outbound = { +export type Ratings$Outbound = { image: string; value: number; type: string; }; /** @internal */ -export const Rating$outboundSchema: z.ZodType< - Rating$Outbound, +export const Ratings$outboundSchema: z.ZodType< + Ratings$Outbound, z.ZodTypeDef, - Rating + Ratings > = z.object({ image: z.string(), value: z.number(), @@ -1680,26 +1990,26 @@ export const Rating$outboundSchema: z.ZodType< * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace Rating$ { - /** @deprecated use `Rating$inboundSchema` instead. */ - export const inboundSchema = Rating$inboundSchema; - /** @deprecated use `Rating$outboundSchema` instead. */ - export const outboundSchema = Rating$outboundSchema; - /** @deprecated use `Rating$Outbound` instead. */ - export type Outbound = Rating$Outbound; +export namespace Ratings$ { + /** @deprecated use `Ratings$inboundSchema` instead. */ + export const inboundSchema = Ratings$inboundSchema; + /** @deprecated use `Ratings$outboundSchema` instead. */ + export const outboundSchema = Ratings$outboundSchema; + /** @deprecated use `Ratings$Outbound` instead. */ + export type Outbound = Ratings$Outbound; } -export function ratingToJSON(rating: Rating): string { - return JSON.stringify(Rating$outboundSchema.parse(rating)); +export function ratingsToJSON(ratings: Ratings): string { + return JSON.stringify(Ratings$outboundSchema.parse(ratings)); } -export function ratingFromJSON( +export function ratingsFromJSON( jsonString: string, -): SafeParseResult { +): SafeParseResult { return safeParse( jsonString, - (x) => Rating$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Rating' from JSON`, + (x) => Ratings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Ratings' from JSON`, ); } @@ -2106,16 +2416,18 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< librarySectionTitle: z.string(), librarySectionID: z.number().int(), librarySectionKey: z.string(), - contentRating: z.string(), + contentRating: z.string().optional(), summary: z.string(), index: z.number().int().optional(), grandparentTitle: z.string().optional(), parentTitle: z.string().optional(), - audienceRating: z.number(), + audienceRating: z.number().optional(), viewCount: z.number().int().optional(), skipCount: z.number().int().optional(), lastViewedAt: z.number().int().optional(), year: z.number().int(), + rating: z.number().optional(), + ratingImage: z.string().optional(), tagline: z.string().optional(), chapterSource: z.string().optional(), primaryExtraKey: z.string().optional(), @@ -2123,13 +2435,13 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< art: z.string(), theme: z.string().optional(), duration: z.number().int(), - originallyAvailableAt: z.string().transform(v => new RFCDate(v)), + originallyAvailableAt: z.string().transform(v => new RFCDate(v)).optional(), leafCount: z.number().int().optional(), viewedLeafCount: z.number().int().optional(), childCount: z.number().int().optional(), addedAt: z.number().int(), updatedAt: z.number().int(), - audienceRatingImage: z.string(), + audienceRatingImage: z.string().optional(), parentIndex: z.number().int().optional(), parentThumb: z.string().optional(), grandparentThumb: z.string().optional(), @@ -2140,8 +2452,8 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< Genre: z.array(z.lazy(() => GetMediaMetaDataGenre$inboundSchema)).optional(), Country: z.array(z.lazy(() => GetMediaMetaDataCountry$inboundSchema)) .optional(), - Guid: z.array(z.lazy(() => Guids$inboundSchema)), - Rating: z.array(z.lazy(() => Rating$inboundSchema)), + Guid: z.array(z.lazy(() => GetMediaMetaDataGuids$inboundSchema)).optional(), + Rating: z.array(z.lazy(() => Ratings$inboundSchema)).optional(), Role: z.array(z.lazy(() => GetMediaMetaDataRole$inboundSchema)).optional(), Director: z.array(z.lazy(() => GetMediaMetaDataDirector$inboundSchema)) .optional(), @@ -2159,7 +2471,7 @@ export const GetMediaMetaDataMetadata$inboundSchema: z.ZodType< "Genre": "genre", "Country": "country", "Guid": "guids", - "Rating": "rating", + "Rating": "ratings", "Role": "role", "Director": "director", "Writer": "writer", @@ -2189,16 +2501,18 @@ export type GetMediaMetaDataMetadata$Outbound = { librarySectionTitle: string; librarySectionID: number; librarySectionKey: string; - contentRating: string; + contentRating?: string | undefined; summary: string; index?: number | undefined; grandparentTitle?: string | undefined; parentTitle?: string | undefined; - audienceRating: number; + audienceRating?: number | undefined; viewCount?: number | undefined; skipCount?: number | undefined; lastViewedAt?: number | undefined; year: number; + rating?: number | undefined; + ratingImage?: string | undefined; tagline?: string | undefined; chapterSource?: string | undefined; primaryExtraKey?: string | undefined; @@ -2206,13 +2520,13 @@ export type GetMediaMetaDataMetadata$Outbound = { art: string; theme?: string | undefined; duration: number; - originallyAvailableAt: string; + originallyAvailableAt?: string | undefined; leafCount?: number | undefined; viewedLeafCount?: number | undefined; childCount?: number | undefined; addedAt: number; updatedAt: number; - audienceRatingImage: string; + audienceRatingImage?: string | undefined; parentIndex?: number | undefined; parentThumb?: string | undefined; grandparentThumb?: string | undefined; @@ -2222,8 +2536,8 @@ export type GetMediaMetaDataMetadata$Outbound = { UltraBlurColors: GetMediaMetaDataUltraBlurColors$Outbound; Genre?: Array | undefined; Country?: Array | undefined; - Guid: Array; - Rating: Array; + Guid?: Array | undefined; + Rating?: Array | undefined; Role?: Array | undefined; Director?: Array | undefined; Writer?: Array | undefined; @@ -2256,16 +2570,18 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< librarySectionTitle: z.string(), librarySectionID: z.number().int(), librarySectionKey: z.string(), - contentRating: z.string(), + contentRating: z.string().optional(), summary: z.string(), index: z.number().int().optional(), grandparentTitle: z.string().optional(), parentTitle: z.string().optional(), - audienceRating: z.number(), + audienceRating: z.number().optional(), viewCount: z.number().int().optional(), skipCount: z.number().int().optional(), lastViewedAt: z.number().int().optional(), year: z.number().int(), + rating: z.number().optional(), + ratingImage: z.string().optional(), tagline: z.string().optional(), chapterSource: z.string().optional(), primaryExtraKey: z.string().optional(), @@ -2273,13 +2589,14 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< art: z.string(), theme: z.string().optional(), duration: z.number().int(), - originallyAvailableAt: z.instanceof(RFCDate).transform(v => v.toString()), + originallyAvailableAt: z.instanceof(RFCDate).transform(v => v.toString()) + .optional(), leafCount: z.number().int().optional(), viewedLeafCount: z.number().int().optional(), childCount: z.number().int().optional(), addedAt: z.number().int(), updatedAt: z.number().int(), - audienceRatingImage: z.string(), + audienceRatingImage: z.string().optional(), parentIndex: z.number().int().optional(), parentThumb: z.string().optional(), grandparentThumb: z.string().optional(), @@ -2290,8 +2607,8 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< genre: z.array(z.lazy(() => GetMediaMetaDataGenre$outboundSchema)).optional(), country: z.array(z.lazy(() => GetMediaMetaDataCountry$outboundSchema)) .optional(), - guids: z.array(z.lazy(() => Guids$outboundSchema)), - rating: z.array(z.lazy(() => Rating$outboundSchema)), + guids: z.array(z.lazy(() => GetMediaMetaDataGuids$outboundSchema)).optional(), + ratings: z.array(z.lazy(() => Ratings$outboundSchema)).optional(), role: z.array(z.lazy(() => GetMediaMetaDataRole$outboundSchema)).optional(), director: z.array(z.lazy(() => GetMediaMetaDataDirector$outboundSchema)) .optional(), @@ -2309,7 +2626,7 @@ export const GetMediaMetaDataMetadata$outboundSchema: z.ZodType< genre: "Genre", country: "Country", guids: "Guid", - rating: "Rating", + ratings: "Rating", role: "Role", director: "Director", writer: "Writer", @@ -2356,7 +2673,7 @@ export const GetMediaMetaDataMediaContainer$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - size: z.number(), + size: z.number().int(), allowSync: z.boolean(), identifier: z.string(), librarySectionID: z.number().int(), @@ -2390,7 +2707,7 @@ export const GetMediaMetaDataMediaContainer$outboundSchema: z.ZodType< z.ZodTypeDef, GetMediaMetaDataMediaContainer > = z.object({ - size: z.number(), + size: z.number().int(), allowSync: z.boolean(), identifier: z.string(), librarySectionID: z.number().int(), diff --git a/src/sdk/models/operations/getrecentlyadded.ts b/src/sdk/models/operations/getrecentlyadded.ts index a1ee7149..94c250fb 100644 --- a/src/sdk/models/operations/getrecentlyadded.ts +++ b/src/sdk/models/operations/getrecentlyadded.ts @@ -93,6 +93,7 @@ export type GetRecentlyAddedFilter = { key: string; title: string; type: string; + advanced?: boolean | undefined; }; /** @@ -146,6 +147,7 @@ export type GetRecentlyAddedField = { export type GetRecentlyAddedType = { key: string; type: string; + subtype?: string | undefined; title: string; active: boolean; filter?: Array | undefined; @@ -183,6 +185,8 @@ export enum GetRecentlyAddedHubsType { TvShow = "show", Season = "season", Episode = "episode", + Artist = "artist", + Album = "album", } /** @@ -823,6 +827,7 @@ export const GetRecentlyAddedFilter$inboundSchema: z.ZodType< key: z.string(), title: z.string(), type: z.string(), + advanced: z.boolean().optional(), }); /** @internal */ @@ -832,6 +837,7 @@ export type GetRecentlyAddedFilter$Outbound = { key: string; title: string; type: string; + advanced?: boolean | undefined; }; /** @internal */ @@ -845,6 +851,7 @@ export const GetRecentlyAddedFilter$outboundSchema: z.ZodType< key: z.string(), title: z.string(), type: z.string(), + advanced: z.boolean().optional(), }); /** @@ -1074,6 +1081,7 @@ export const GetRecentlyAddedType$inboundSchema: z.ZodType< > = z.object({ key: z.string(), type: z.string(), + subtype: z.string().optional(), title: z.string(), active: z.boolean(), Filter: z.array(z.lazy(() => GetRecentlyAddedFilter$inboundSchema)) @@ -1092,6 +1100,7 @@ export const GetRecentlyAddedType$inboundSchema: z.ZodType< export type GetRecentlyAddedType$Outbound = { key: string; type: string; + subtype?: string | undefined; title: string; active: boolean; Filter?: Array | undefined; @@ -1107,6 +1116,7 @@ export const GetRecentlyAddedType$outboundSchema: z.ZodType< > = z.object({ key: z.string(), type: z.string(), + subtype: z.string().optional(), title: z.string(), active: z.boolean(), filter: z.array(z.lazy(() => GetRecentlyAddedFilter$outboundSchema)) @@ -2745,7 +2755,7 @@ export const GetRecentlyAddedMediaContainer$inboundSchema: z.ZodType< z.ZodTypeDef, unknown > = z.object({ - size: z.number(), + size: z.number().int(), offset: z.number().int().optional(), totalSize: z.number().int().optional(), identifier: z.string().optional(), @@ -2777,7 +2787,7 @@ export const GetRecentlyAddedMediaContainer$outboundSchema: z.ZodType< z.ZodTypeDef, GetRecentlyAddedMediaContainer > = z.object({ - size: z.number(), + size: z.number().int(), offset: z.number().int().optional(), totalSize: z.number().int().optional(), identifier: z.string().optional(), diff --git a/src/sdk/models/operations/getrecentlyaddedlibrary.ts b/src/sdk/models/operations/getrecentlyaddedlibrary.ts index 49e8039d..ef298190 100644 --- a/src/sdk/models/operations/getrecentlyaddedlibrary.ts +++ b/src/sdk/models/operations/getrecentlyaddedlibrary.ts @@ -86,6 +86,7 @@ export type GetRecentlyAddedLibraryFilter = { key: string; title: string; type: string; + advanced?: boolean | undefined; }; /** @@ -139,6 +140,7 @@ export type Field = { export type GetRecentlyAddedLibraryType = { key: string; type: string; + subtype?: string | undefined; title: string; active: boolean; filter?: Array | undefined; @@ -425,6 +427,7 @@ export const GetRecentlyAddedLibraryFilter$inboundSchema: z.ZodType< key: z.string(), title: z.string(), type: z.string(), + advanced: z.boolean().optional(), }); /** @internal */ @@ -434,6 +437,7 @@ export type GetRecentlyAddedLibraryFilter$Outbound = { key: string; title: string; type: string; + advanced?: boolean | undefined; }; /** @internal */ @@ -447,6 +451,7 @@ export const GetRecentlyAddedLibraryFilter$outboundSchema: z.ZodType< key: z.string(), title: z.string(), type: z.string(), + advanced: z.boolean().optional(), }); /** @@ -661,6 +666,7 @@ export const GetRecentlyAddedLibraryType$inboundSchema: z.ZodType< > = z.object({ key: z.string(), type: z.string(), + subtype: z.string().optional(), title: z.string(), active: z.boolean(), Filter: z.array(z.lazy(() => GetRecentlyAddedLibraryFilter$inboundSchema)) @@ -679,6 +685,7 @@ export const GetRecentlyAddedLibraryType$inboundSchema: z.ZodType< export type GetRecentlyAddedLibraryType$Outbound = { key: string; type: string; + subtype?: string | undefined; title: string; active: boolean; Filter?: Array | undefined; @@ -694,6 +701,7 @@ export const GetRecentlyAddedLibraryType$outboundSchema: z.ZodType< > = z.object({ key: z.string(), type: z.string(), + subtype: z.string().optional(), title: z.string(), active: z.boolean(), filter: z.array(z.lazy(() => GetRecentlyAddedLibraryFilter$outboundSchema)) diff --git a/src/sdk/models/operations/getsearchalllibraries.ts b/src/sdk/models/operations/getsearchalllibraries.ts index 1d4d4cb4..d4655a95 100644 --- a/src/sdk/models/operations/getsearchalllibraries.ts +++ b/src/sdk/models/operations/getsearchalllibraries.ts @@ -20,7 +20,7 @@ export enum SearchTypes { /** * Whether to include collections in the search results. */ -export enum QueryParamIncludeCollections { +export enum GetSearchAllLibrariesQueryParamIncludeCollections { Disable = 0, Enable = 1, } @@ -28,7 +28,7 @@ export enum QueryParamIncludeCollections { /** * Whether to include external media in the search results. */ -export enum QueryParamIncludeExternalMedia { +export enum GetSearchAllLibrariesQueryParamIncludeExternalMedia { Disable = 0, Enable = 1, } @@ -55,11 +55,15 @@ export type GetSearchAllLibrariesRequest = { /** * Whether to include collections in the search results. */ - includeCollections?: QueryParamIncludeCollections | undefined; + includeCollections?: + | GetSearchAllLibrariesQueryParamIncludeCollections + | undefined; /** * Whether to include external media in the search results. */ - includeExternalMedia?: QueryParamIncludeExternalMedia | undefined; + includeExternalMedia?: + | GetSearchAllLibrariesQueryParamIncludeExternalMedia + | undefined; }; /** @@ -72,6 +76,8 @@ export enum GetSearchAllLibrariesType { TvShow = "show", Season = "season", Episode = "episode", + Artist = "artist", + Album = "album", } /** @@ -599,45 +605,49 @@ export namespace SearchTypes$ { } /** @internal */ -export const QueryParamIncludeCollections$inboundSchema: z.ZodNativeEnum< - typeof QueryParamIncludeCollections -> = z.nativeEnum(QueryParamIncludeCollections); +export const GetSearchAllLibrariesQueryParamIncludeCollections$inboundSchema: + z.ZodNativeEnum = z + .nativeEnum(GetSearchAllLibrariesQueryParamIncludeCollections); /** @internal */ -export const QueryParamIncludeCollections$outboundSchema: z.ZodNativeEnum< - typeof QueryParamIncludeCollections -> = QueryParamIncludeCollections$inboundSchema; +export const GetSearchAllLibrariesQueryParamIncludeCollections$outboundSchema: + z.ZodNativeEnum = + GetSearchAllLibrariesQueryParamIncludeCollections$inboundSchema; /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace QueryParamIncludeCollections$ { - /** @deprecated use `QueryParamIncludeCollections$inboundSchema` instead. */ - export const inboundSchema = QueryParamIncludeCollections$inboundSchema; - /** @deprecated use `QueryParamIncludeCollections$outboundSchema` instead. */ - export const outboundSchema = QueryParamIncludeCollections$outboundSchema; +export namespace GetSearchAllLibrariesQueryParamIncludeCollections$ { + /** @deprecated use `GetSearchAllLibrariesQueryParamIncludeCollections$inboundSchema` instead. */ + export const inboundSchema = + GetSearchAllLibrariesQueryParamIncludeCollections$inboundSchema; + /** @deprecated use `GetSearchAllLibrariesQueryParamIncludeCollections$outboundSchema` instead. */ + export const outboundSchema = + GetSearchAllLibrariesQueryParamIncludeCollections$outboundSchema; } /** @internal */ -export const QueryParamIncludeExternalMedia$inboundSchema: z.ZodNativeEnum< - typeof QueryParamIncludeExternalMedia -> = z.nativeEnum(QueryParamIncludeExternalMedia); +export const GetSearchAllLibrariesQueryParamIncludeExternalMedia$inboundSchema: + z.ZodNativeEnum = + z.nativeEnum(GetSearchAllLibrariesQueryParamIncludeExternalMedia); /** @internal */ -export const QueryParamIncludeExternalMedia$outboundSchema: z.ZodNativeEnum< - typeof QueryParamIncludeExternalMedia -> = QueryParamIncludeExternalMedia$inboundSchema; +export const GetSearchAllLibrariesQueryParamIncludeExternalMedia$outboundSchema: + z.ZodNativeEnum = + GetSearchAllLibrariesQueryParamIncludeExternalMedia$inboundSchema; /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ -export namespace QueryParamIncludeExternalMedia$ { - /** @deprecated use `QueryParamIncludeExternalMedia$inboundSchema` instead. */ - export const inboundSchema = QueryParamIncludeExternalMedia$inboundSchema; - /** @deprecated use `QueryParamIncludeExternalMedia$outboundSchema` instead. */ - export const outboundSchema = QueryParamIncludeExternalMedia$outboundSchema; +export namespace GetSearchAllLibrariesQueryParamIncludeExternalMedia$ { + /** @deprecated use `GetSearchAllLibrariesQueryParamIncludeExternalMedia$inboundSchema` instead. */ + export const inboundSchema = + GetSearchAllLibrariesQueryParamIncludeExternalMedia$inboundSchema; + /** @deprecated use `GetSearchAllLibrariesQueryParamIncludeExternalMedia$outboundSchema` instead. */ + export const outboundSchema = + GetSearchAllLibrariesQueryParamIncludeExternalMedia$outboundSchema; } /** @internal */ @@ -650,8 +660,10 @@ export const GetSearchAllLibrariesRequest$inboundSchema: z.ZodType< ClientID: z.string(), limit: z.number().int().optional(), searchTypes: z.array(SearchTypes$inboundSchema).optional(), - includeCollections: QueryParamIncludeCollections$inboundSchema, - includeExternalMedia: QueryParamIncludeExternalMedia$inboundSchema, + includeCollections: + GetSearchAllLibrariesQueryParamIncludeCollections$inboundSchema, + includeExternalMedia: + GetSearchAllLibrariesQueryParamIncludeExternalMedia$inboundSchema, }).transform((v) => { return remap$(v, { "ClientID": "clientID", @@ -678,12 +690,14 @@ export const GetSearchAllLibrariesRequest$outboundSchema: z.ZodType< clientID: z.string(), limit: z.number().int().optional(), searchTypes: z.array(SearchTypes$outboundSchema).optional(), - includeCollections: QueryParamIncludeCollections$outboundSchema.default( - QueryParamIncludeCollections.Disable, - ), - includeExternalMedia: QueryParamIncludeExternalMedia$outboundSchema.default( - QueryParamIncludeExternalMedia.Disable, - ), + includeCollections: + GetSearchAllLibrariesQueryParamIncludeCollections$outboundSchema.default( + GetSearchAllLibrariesQueryParamIncludeCollections.Disable, + ), + includeExternalMedia: + GetSearchAllLibrariesQueryParamIncludeExternalMedia$outboundSchema.default( + GetSearchAllLibrariesQueryParamIncludeExternalMedia.Disable, + ), }).transform((v) => { return remap$(v, { clientID: "ClientID", diff --git a/src/sdk/models/operations/index.ts b/src/sdk/models/operations/index.ts index 01d01046..1f669a1f 100644 --- a/src/sdk/models/operations/index.ts +++ b/src/sdk/models/operations/index.ts @@ -13,6 +13,7 @@ export * from "./deleteplaylist.js"; export * from "./enablepapertrail.js"; export * from "./getactorslibrary.js"; export * from "./getalllibraries.js"; +export * from "./getallmedialibrary.js"; export * from "./getavailableclients.js"; export * from "./getbandwidthstatistics.js"; export * from "./getbannerimage.js";