diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index f104c59..cecdea3 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 5a8dbcbc-e0ee-41f0-9d84-b8b50567d1e9 management: - docChecksum: 71aea44b27d124ce7bc7da09090777b5 + docChecksum: 68de03e6e877c4fc50ebfdd47bb117ac docVersion: 0.0.3 - speakeasyVersion: 1.513.2 - generationVersion: 2.545.2 - releaseVersion: 0.14.1 - configChecksum: ef6060c3cfa8c325417af4a065d955ff + speakeasyVersion: 1.513.4 + generationVersion: 2.545.4 + releaseVersion: 0.14.2 + configChecksum: 27f37d72d485936f4b35e0287a3072e1 repoURL: https://github.com/LukeHagar/plexcsharp.git repoSubDirectory: . published: true @@ -170,10 +170,6 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountErrors.cs - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountServerErrors.cs - LukeHagar/PlexAPI/SDK/Models/Errors/GetMyPlexAccountUnauthorized.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckBadRequest.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckLibraryErrors.cs - - LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckUnauthorized.cs - LukeHagar/PlexAPI/SDK/Models/Errors/GetPinBadRequest.cs - LukeHagar/PlexAPI/SDK/Models/Errors/GetPinErrors.cs - LukeHagar/PlexAPI/SDK/Models/Errors/GetPlaylistBadRequest.cs @@ -441,6 +437,7 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryFieldType.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryFilter.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGenre.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGuids.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryHasThumbnail.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryImage.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryLibraryOptimizedForStreaming.cs @@ -534,12 +531,9 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsCountry.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDefaultDirection.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsDirector.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEpisodeSort.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsField.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFieldType.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFilter.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFlattenSeasons.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsGenre.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsHasThumbnail.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsImage.cs @@ -556,9 +550,7 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsLocation.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMedia.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaGuid.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMeta.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetaDataRating.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOperator.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsOptimizedForStreaming.cs @@ -569,7 +561,6 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsResponseBody.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsRole.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsShowOrdering.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsSort.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsStream.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsType.cs @@ -588,11 +579,14 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataPart.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataResponseBody.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataRole.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataUltraBlurColors.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataWriter.cs @@ -609,14 +603,6 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetMetadataChildrenResponseBody.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetMyPlexAccountResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckGuids.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMedia.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMediaContainer.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMetadata.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckPart.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponse.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponseBody.cs - - LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckStream.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetPinAuthPinContainer.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetPinRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetPinResponse.cs @@ -668,6 +654,8 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOperator.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedRequest.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponse.cs - LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedResponseBody.cs @@ -893,6 +881,7 @@ generatedFiles: - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamOnlyTransient.cs - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamSmart.cs - LukeHagar/PlexAPI/SDK/Models/Requests/QueryParamType.cs + - LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Ratings.cs - LukeHagar/PlexAPI/SDK/Models/Requests/Release.cs - LukeHagar/PlexAPI/SDK/Models/Requests/ResponseBody.cs @@ -1103,10 +1092,6 @@ generatedFiles: - docs/Models/Errors/GetMyPlexAccountErrors.md - docs/Models/Errors/GetMyPlexAccountServerErrors.md - docs/Models/Errors/GetMyPlexAccountUnauthorized.md - - docs/Models/Errors/GetOnDeckBadRequest.md - - docs/Models/Errors/GetOnDeckErrors.md - - docs/Models/Errors/GetOnDeckLibraryErrors.md - - docs/Models/Errors/GetOnDeckUnauthorized.md - docs/Models/Errors/GetPinBadRequest.md - docs/Models/Errors/GetPinErrors.md - docs/Models/Errors/GetPlaylistBadRequest.md @@ -1373,6 +1358,7 @@ generatedFiles: - docs/Models/Requests/GetAllMediaLibraryFieldType.md - docs/Models/Requests/GetAllMediaLibraryFilter.md - docs/Models/Requests/GetAllMediaLibraryGenre.md + - docs/Models/Requests/GetAllMediaLibraryGuids.md - docs/Models/Requests/GetAllMediaLibraryHasThumbnail.md - docs/Models/Requests/GetAllMediaLibraryImage.md - docs/Models/Requests/GetAllMediaLibraryLibraryOptimizedForStreaming.md @@ -1466,12 +1452,9 @@ generatedFiles: - docs/Models/Requests/GetLibraryItemsCountry.md - docs/Models/Requests/GetLibraryItemsDefaultDirection.md - docs/Models/Requests/GetLibraryItemsDirector.md - - docs/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.md - - docs/Models/Requests/GetLibraryItemsEpisodeSort.md - docs/Models/Requests/GetLibraryItemsField.md - docs/Models/Requests/GetLibraryItemsFieldType.md - docs/Models/Requests/GetLibraryItemsFilter.md - - docs/Models/Requests/GetLibraryItemsFlattenSeasons.md - docs/Models/Requests/GetLibraryItemsGenre.md - docs/Models/Requests/GetLibraryItemsHasThumbnail.md - docs/Models/Requests/GetLibraryItemsImage.md @@ -1488,9 +1471,7 @@ generatedFiles: - docs/Models/Requests/GetLibraryItemsLocation.md - docs/Models/Requests/GetLibraryItemsMedia.md - docs/Models/Requests/GetLibraryItemsMediaContainer.md - - docs/Models/Requests/GetLibraryItemsMediaGuid.md - docs/Models/Requests/GetLibraryItemsMeta.md - - docs/Models/Requests/GetLibraryItemsMetaDataRating.md - docs/Models/Requests/GetLibraryItemsMetadata.md - docs/Models/Requests/GetLibraryItemsOperator.md - docs/Models/Requests/GetLibraryItemsOptimizedForStreaming.md @@ -1501,7 +1482,6 @@ generatedFiles: - docs/Models/Requests/GetLibraryItemsResponse.md - docs/Models/Requests/GetLibraryItemsResponseBody.md - docs/Models/Requests/GetLibraryItemsRole.md - - docs/Models/Requests/GetLibraryItemsShowOrdering.md - docs/Models/Requests/GetLibraryItemsSort.md - docs/Models/Requests/GetLibraryItemsStream.md - docs/Models/Requests/GetLibraryItemsType.md @@ -1520,11 +1500,14 @@ generatedFiles: - docs/Models/Requests/GetMediaMetaDataMetadata.md - docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md - docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming1.md + - docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md - docs/Models/Requests/GetMediaMetaDataPart.md + - docs/Models/Requests/GetMediaMetaDataProducer.md - docs/Models/Requests/GetMediaMetaDataRequest.md - docs/Models/Requests/GetMediaMetaDataResponse.md - docs/Models/Requests/GetMediaMetaDataResponseBody.md - docs/Models/Requests/GetMediaMetaDataRole.md + - docs/Models/Requests/GetMediaMetaDataSimilar.md - docs/Models/Requests/GetMediaMetaDataStream.md - docs/Models/Requests/GetMediaMetaDataUltraBlurColors.md - docs/Models/Requests/GetMediaMetaDataWriter.md @@ -1541,14 +1524,6 @@ generatedFiles: - docs/Models/Requests/GetMetadataChildrenResponseBody.md - docs/Models/Requests/GetMyPlexAccountResponse.md - docs/Models/Requests/GetMyPlexAccountResponseBody.md - - docs/Models/Requests/GetOnDeckGuids.md - - docs/Models/Requests/GetOnDeckMedia.md - - docs/Models/Requests/GetOnDeckMediaContainer.md - - docs/Models/Requests/GetOnDeckMetadata.md - - docs/Models/Requests/GetOnDeckPart.md - - docs/Models/Requests/GetOnDeckResponse.md - - docs/Models/Requests/GetOnDeckResponseBody.md - - docs/Models/Requests/GetOnDeckStream.md - docs/Models/Requests/GetPinAuthPinContainer.md - docs/Models/Requests/GetPinRequest.md - docs/Models/Requests/GetPinResponse.md @@ -1600,6 +1575,8 @@ generatedFiles: - docs/Models/Requests/GetRecentlyAddedMediaContainer.md - docs/Models/Requests/GetRecentlyAddedMetadata.md - docs/Models/Requests/GetRecentlyAddedOperator.md + - docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md + - docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md - docs/Models/Requests/GetRecentlyAddedRequest.md - docs/Models/Requests/GetRecentlyAddedResponse.md - docs/Models/Requests/GetRecentlyAddedResponseBody.md @@ -1825,6 +1802,7 @@ generatedFiles: - docs/Models/Requests/QueryParamOnlyTransient.md - docs/Models/Requests/QueryParamSmart.md - docs/Models/Requests/QueryParamType.md + - docs/Models/Requests/Rating.md - docs/Models/Requests/Ratings.md - docs/Models/Requests/Release.md - docs/Models/Requests/ResponseBody.md @@ -2267,7 +2245,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "allowSync": false, "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"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, "totalSize": 50, "offset": 0, "allowSync": false, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "optimizedForStreaming": 1, "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, "optimizedForStreaming": 1, "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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": true, "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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}, {"image": "imdb://image.rating", "value": 5.1, "type": "audience"}, {"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}, {"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}]}, {"addedAt": 1556281940, "art": "/library/metadata/58683/art/1703239236", "audienceRatingImage": "rottentomatoes://image.rating.upright", "audienceRating": 9.2, "chapterSource": "media", "childCount": 1, "contentRating": "PG-13", "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "duration": 11558112, "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentRatingKey": "66", "grandparentSlug": "alice-in-borderland-2020", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTitle": "Caprica", "guid": "plex://movie/5d7768ba96b655001fdc0408", "index": 1, "key": "/library/metadata/58683", "lastRatedAt": 1721813113, "lastViewedAt": 1682752242, "leafCount": 14, "librarySectionID": 1, "librarySectionKey": "/library/sections/1", "librarySectionTitle": "Movies", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "originallyAvailableAt": "2022-12-14", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentIndex": 1, "parentKey": "/library/metadata/66", "parentRatingKey": "66", "parentSlug": "alice-in-borderland-2020", "parentStudio": "UCP", "parentTheme": "/library/metadata/66/theme/1705716261", "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTitle": "Caprica", "parentYear": 2010, "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "ratingKey": "58683", "rating": 7.6, "seasonCount": 2022, "skipCount": 1, "slug": "4-for-texas", "studio": "20th Century Studios", "subtype": "clip", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "tagline": "Return to Pandora.", "theme": "/library/metadata/1/theme/1705636920", "thumb": "/library/metadata/58683/thumb/1703239236", "titleSort": "Whale", "title": "Avatar: The Way of Water", "type": "movie", "updatedAt": 1556281940, "userRating": 10, "viewCount": 1, "viewOffset": 5222500, "viewedLeafCount": 0, "year": 2022, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"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", "optimizedForStreaming": 1, "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", "optimizedForStreaming": 1, "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, "optimizedForStreaming": 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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": 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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "optimizedForStreaming": 1, "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, "optimizedForStreaming": 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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": 0, "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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"id": 259, "filter": "genre=19", "tag": "Crime"}], "Country": [{"id": 259, "tag": "United States of America", "filter": "country=19"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"id": 126522, "filter": "writer=126522", "tag": "Jamie P. Hanson", "tagKey": "5d77683d85719b001f3a535e"}], "Role": [{"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}, {"id": 126522, "filter": "actor=126522", "tag": "Teller", "tagKey": "5d77683d85719b001f3a535e", "role": "Self - Judge", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Producer": [{"id": 126522, "filter": "producer=126522", "tag": "Amelia Knapp", "tagKey": "5d77683d85719b001f3a535e", "thumb": "https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg"}], "Rating": [{"image": "imdb://image.rating", "value": 5.1, "type": "audience"}], "Similar": [{"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}, {"id": 259, "filter": "similar=259", "tag": "Criss Angel Mindfreak"}], "Location": [{"path": "/TV Shows/Clarkson's Farm"}], "Guid": [{"id": "tvdb://2337"}, {"id": "tvdb://2337"}], "Collection": [{"tag": "My Awesome Collection"}, {"tag": "My Awesome Collection"}]}]}} getLibraryHubs: speakeasy-default-get-library-hubs: parameters: @@ -2971,7 +2949,7 @@ 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, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "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, "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"}]}]}, {"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": []}, {"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"}]}]}, {"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": []}], "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, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "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, "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"}]}]}, {"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": []}], "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, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "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, "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": []}, {"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"}, {"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"}]}, {"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"}]}]}], "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, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "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, "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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": []}, {"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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}], "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, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "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, "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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}], "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, "rating": 6, "ratingImage": "rottentomatoes://image.rating.ripe", "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, "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": []}, {"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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "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": @@ -2992,7 +2970,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 50, "totalSize": 50, "offset": 0, "allowSync": false, "art": "/:/resources/show-fanart.jpg", "content": "secondary", "identifier": "com.plexapp.plugins.library", "librarySectionID": 2, "librarySectionTitle": "TV Series", "librarySectionUUID": "e69655a2-ef48-4aba-bb19-0cc34d1e7d36", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1734362201, "thumb": "/:/resources/show.png", "nocache": true, "title1": "TV Series", "title2": "By Starring Actor", "viewGroup": "secondary", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "filter", "subtype": "clip", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter", "advanced": true}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "slug": "4-for-texas", "studio": "20th Century Studios", "type": "movie", "title": "Avatar: The Way of Water", "titleSort": "Whale", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.\nOnce a familiar threat returns to finish what was previously started, Jake must\nwork with Neytiri and the army of the Na'vi race to protect their home.\n", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "tagline": "Return to Pandora.", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "theme": "/library/metadata/1/theme/1705636920", "index": 1, "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "seasonCount": 2022, "duration": 11558112, "originallyAvailableAt": "2022-12-14", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "parentRatingKey": "66", "grandparentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentSlug": "alice-in-borderland-2020", "grandparentKey": "/library/metadata/66", "parentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "grandparentArt": "/library/metadata/66/art/1705716261", "parentTitle": "Caprica", "parentIndex": 1, "parentThumb": "/library/metadata/66/thumb/1705716261", "ratingImage": "rottentomatoes://image.rating.ripe", "viewCount": 1, "viewOffset": 5222500, "skipCount": 1, "subtype": "clip", "lastRatedAt": 1721813113, "createdAtAccuracy": "epoch,local", "createdAtTZOffset": "0", "lastViewedAt": 1682752242, "userRating": 10, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Media": [{"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": []}, {"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"}]}]}} + 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, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}, {"id": 387322, "duration": 9610350, "bitrate": 25512, "width": 3840, "height": 1602, "aspectRatio": 2.35, "audioChannels": 6, "displayOffset": 50, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "audioProfile": "dts", "has64bitOffsets": false, "Part": [{"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}, {"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}, {"accessible": true, "exists": true, "id": 418385, "key": "/library/parts/418385/1735864239/file.mkv", "indexes": "sd", "duration": 9610350, "file": "/mnt/Movies_1/W/Wicked (2024).mkv", "size": 30649952104, "packetLength": 188, "container": "mkv", "videoProfile": "main 10", "audioProfile": "dts", "has64bitOffsets": false, "hasThumbnail": "1", "Stream": [{"id": 1002625, "streamType": 1, "default": true, "codec": "hevc", "index": 0, "bitrate": 24743, "language": "English", "languageTag": "en", "languageCode": "eng", "headerCompression": true, "DOVIBLCompatID": 1, "DOVIBLPresent": true, "DOVIELPresent": false, "DOVILevel": 6, "DOVIPresent": true, "DOVIProfile": 8, "DOVIRPUPresent": true, "DOVIVersion": "1.0", "bitDepth": 10, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codedHeight": 1608, "codedWidth": 3840, "closedCaptions": true, "colorPrimaries": "bt2020", "colorRange": "tv", "colorSpace": "bt2020nc", "colorTrc": "smpte2084", "frameRate": 23.976, "height": 1602, "level": 150, "original": true, "hasScalingMatrix": false, "profile": "main 10", "scanType": "progressive", "embeddedInVideo": "progressive", "refFrames": 1, "width": 3840, "displayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "extendedDisplayTitle": "4K DoVi/HDR10 (HEVC Main 10)", "selected": true, "forced": true, "channels": 6, "audioChannelLayout": "5.1(side)", "samplingRate": 48000, "canAutoSync": false, "hearingImpaired": true, "dub": true, "title": "SDH"}]}]}], "Genre": [{"tag": "Crime"}, {"tag": "Crime"}, {"tag": "Crime"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}, {"tag": "Danny Boyle"}], "Writer": [{"tag": "Jamie P. Hanson"}, {"tag": "Jamie P. Hanson"}], "Role": [{"tag": "Teller"}, {"tag": "Teller"}], "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": diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 43f1281..e5f5495 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -15,7 +15,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false csharp: - version: 0.14.1 + version: 0.14.2 additionalDependencies: [] author: LukeHagar clientServerStatusCodesAsErrors: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index dca7525..e3b4e53 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.513.2 +speakeasyVersion: 1.513.4 sources: my-source: sourceNamespace: my-source @@ -16,19 +16,19 @@ sources: - main plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:bf7001af017ce5072c503bfbaf60793f94549163b517489dc53e4f7b685659c0 - sourceBlobDigest: sha256:ed2b29043c84f32d2efa92a126083fd9a81644a7ce9c6ac86d9aeb3493cbd6f8 + sourceRevisionDigest: sha256:2066ba94b55e21d651c79003e3cf402fb77c52a0969fc52310b3383fbed038f4 + sourceBlobDigest: sha256:1737023e29cd9cf36c07ccd8c8c48c47e14f47ce22b4d6ba9ee241afbbd8f351 tags: - latest - - speakeasy-sdk-regen-1741306956 + - speakeasy-sdk-regen-1741479619 targets: plexcsharp: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:bf7001af017ce5072c503bfbaf60793f94549163b517489dc53e4f7b685659c0 - sourceBlobDigest: sha256:ed2b29043c84f32d2efa92a126083fd9a81644a7ce9c6ac86d9aeb3493cbd6f8 + sourceRevisionDigest: sha256:2066ba94b55e21d651c79003e3cf402fb77c52a0969fc52310b3383fbed038f4 + sourceBlobDigest: sha256:1737023e29cd9cf36c07ccd8c8c48c47e14f47ce22b4d6ba9ee241afbbd8f351 codeSamplesNamespace: code-samples-csharp-plexcsharp - codeSamplesRevisionDigest: sha256:f8a84c2b588d4d3575642d7bc169f3d4fd9dc628300661f53492861e41d40b15 + codeSamplesRevisionDigest: sha256:6c2afa1814b37e276f0e8369b50baff64065a76786acbe0a3843972f1f3f60c4 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/LukeHagar/PlexAPI/SDK/Activities.cs b/LukeHagar/PlexAPI/SDK/Activities.cs index 17d4c00..ac4c17f 100644 --- a/LukeHagar/PlexAPI/SDK/Activities.cs +++ b/LukeHagar/PlexAPI/SDK/Activities.cs @@ -74,10 +74,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Authentication.cs b/LukeHagar/PlexAPI/SDK/Authentication.cs index 44f89f8..130221e 100644 --- a/LukeHagar/PlexAPI/SDK/Authentication.cs +++ b/LukeHagar/PlexAPI/SDK/Authentication.cs @@ -95,10 +95,10 @@ namespace LukeHagar.PlexAPI.SDK }; public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Butler.cs b/LukeHagar/PlexAPI/SDK/Butler.cs index c1cf1d6..be4c8d6 100644 --- a/LukeHagar/PlexAPI/SDK/Butler.cs +++ b/LukeHagar/PlexAPI/SDK/Butler.cs @@ -101,10 +101,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Hubs.cs b/LukeHagar/PlexAPI/SDK/Hubs.cs index 02c656c..57926de 100644 --- a/LukeHagar/PlexAPI/SDK/Hubs.cs +++ b/LukeHagar/PlexAPI/SDK/Hubs.cs @@ -73,10 +73,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Library.cs b/LukeHagar/PlexAPI/SDK/Library.cs index dc68f32..06ed7d7 100644 --- a/LukeHagar/PlexAPI/SDK/Library.cs +++ b/LukeHagar/PlexAPI/SDK/Library.cs @@ -269,16 +269,6 @@ namespace LukeHagar.PlexAPI.SDK /// /// Task GetTopWatchedContentAsync(GetTopWatchedContentQueryParamType type, long? includeGuids = null); - - /// - /// Get On Deck - /// - /// - /// This endpoint will return the on deck content.
- /// - ///
- ///
- Task GetOnDeckAsync(); } /// @@ -292,10 +282,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; @@ -1934,106 +1924,5 @@ namespace LukeHagar.PlexAPI.SDK throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); } - - public async Task GetOnDeckAsync() - { - string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - - var urlString = baseUrl + "/library/onDeck"; - - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); - httpRequest.Headers.Add("user-agent", _userAgent); - - if (_securitySource != null) - { - httpRequest = new SecurityMetadata(_securitySource).Apply(httpRequest); - } - - var hookCtx = new HookContext("getOnDeck", null, _securitySource); - - httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); - - HttpResponseMessage httpResponse; - try - { - httpResponse = await _client.SendAsync(httpRequest); - int _statusCode = (int)httpResponse.StatusCode; - - if (_statusCode == 400 || _statusCode == 401 || _statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - } - } - catch (Exception error) - { - var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, error); - if (_httpResponse != null) - { - httpResponse = _httpResponse; - } - else - { - throw; - } - } - - httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); - - var contentType = httpResponse.Content.Headers.ContentType?.MediaType; - int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var obj = ResponseBodyDeserializer.Deserialize(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); - var response = new GetOnDeckResponse() - { - StatusCode = responseStatusCode, - ContentType = contentType, - RawResponse = httpResponse - }; - response.Object = obj; - return response; - } - - throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); - } - else if(responseStatusCode == 400) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var obj = ResponseBodyDeserializer.Deserialize(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); - obj!.RawResponse = httpResponse; - throw obj!; - } - - throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); - } - else if(responseStatusCode == 401) - { - if(Utilities.IsContentTypeMatch("application/json", contentType)) - { - var obj = ResponseBodyDeserializer.Deserialize(await httpResponse.Content.ReadAsStringAsync(), NullValueHandling.Ignore); - obj!.RawResponse = httpResponse; - throw obj!; - } - - throw new Models.Errors.SDKException("Unknown content type received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); - } - else if(responseStatusCode >= 400 && responseStatusCode < 500) - { - throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); - } - else if(responseStatusCode >= 500 && responseStatusCode < 600) - { - throw new Models.Errors.SDKException("API error occurred", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); - } - - throw new Models.Errors.SDKException("Unknown status code received", responseStatusCode, await httpResponse.Content.ReadAsStringAsync(), httpResponse); - } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Log.cs b/LukeHagar/PlexAPI/SDK/Log.cs index 7824fe9..a88e802 100644 --- a/LukeHagar/PlexAPI/SDK/Log.cs +++ b/LukeHagar/PlexAPI/SDK/Log.cs @@ -94,10 +94,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj b/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj index 9bc1f40..b3292bb 100644 --- a/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj +++ b/LukeHagar/PlexAPI/SDK/LukeHagar.PlexAPI.SDK.csproj @@ -3,7 +3,7 @@ true LukeHagar.PlexAPI.SDK - 0.14.1 + 0.14.2 net8.0 LukeHagar Copyright (c) LukeHagar 2025 diff --git a/LukeHagar/PlexAPI/SDK/Media.cs b/LukeHagar/PlexAPI/SDK/Media.cs index 85a4867..486f72e 100644 --- a/LukeHagar/PlexAPI/SDK/Media.cs +++ b/LukeHagar/PlexAPI/SDK/Media.cs @@ -90,10 +90,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckBadRequest.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckBadRequest.cs deleted file mode 100644 index 4c0b626..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckBadRequest.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - /// - /// Bad Request - A parameter was not specified, or was specified incorrectly. - /// - public class GetOnDeckBadRequest : Exception - { - - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckErrors.cs deleted file mode 100644 index 8724b34..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetOnDeckErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckLibraryErrors.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckLibraryErrors.cs deleted file mode 100644 index 2094831..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckLibraryErrors.cs +++ /dev/null @@ -1,27 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetOnDeckLibraryErrors - { - - [JsonProperty("code")] - public int? Code { get; set; } - - [JsonProperty("message")] - public string? Message { get; set; } - - [JsonProperty("status")] - public int? Status { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckUnauthorized.cs b/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckUnauthorized.cs deleted file mode 100644 index 57e12c9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Errors/GetOnDeckUnauthorized.cs +++ /dev/null @@ -1,34 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Errors -{ - using LukeHagar.PlexAPI.SDK.Models.Errors; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - using System.Net.Http; - - /// - /// Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - /// - public class GetOnDeckUnauthorized : Exception - { - - [JsonProperty("errors")] - public List? Errors { get; set; } - - /// - /// Raw HTTP response; suitable for custom response parsing - /// - [JsonProperty("-")] - public HttpResponseMessage? RawResponse { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs index 6a908e9..6adbae6 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Collection.cs @@ -15,7 +15,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Collection { + /// + /// The user-made collection this media item belongs to + /// [JsonProperty("tag")] - public string? Tag { get; set; } + public string Tag { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs index 4a14647..eed1694 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Country.cs @@ -12,10 +12,22 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + /// + /// The filter query string for country media items. + /// public class Country { + [JsonProperty("id")] + public long Id { get; set; } = default!; + + /// + /// The country of origin of this media item + /// [JsonProperty("tag")] - public string? Tag { get; set; } + public string Tag { get; set; } = default!; + + [JsonProperty("filter")] + public string? Filter { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs index eb1ab4f..be5c729 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Director.cs @@ -15,7 +15,10 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Director { + /// + /// The role of Director + /// [JsonProperty("tag")] - public string? Tag { get; set; } + public string Tag { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs index 225d5d4..af72836 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Genre.cs @@ -12,10 +12,26 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + /// + /// The filter query string for similar items. + /// public class Genre { + [JsonProperty("id")] + public long Id { get; set; } = default!; + + [JsonProperty("filter")] + public string Filter { get; set; } = default!; + + /// + /// The genre name of this media-item
+ /// + /// + /// + /// + ///
[JsonProperty("tag")] - public string? Tag { get; set; } + public string Tag { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGenre.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGenre.cs index 5c3a02c..40a4209 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGenre.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGenre.cs @@ -16,7 +16,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { /// - /// The country of origin of this media item + /// The genre name of this media-item
+ /// + /// + /// + /// ///
[JsonProperty("tag")] public string Tag { get; set; } = default!; diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaGuid.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGuids.cs similarity index 76% rename from LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaGuid.cs rename to LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGuids.cs index c8f4f5e..a821ca3 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMediaGuid.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryGuids.cs @@ -12,18 +12,17 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; - public class GetLibraryItemsMediaGuid + public class GetAllMediaLibraryGuids { /// - /// Can be one of the following formats:
+ /// The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
/// /// - /// imdb://tt13015952, tmdb://2434012, tvdb://7945991
/// ///
///
[JsonProperty("id")] - public string Id { get; set; } = default!; + public string? Id { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMedia.cs index c8dbffe..b07fb58 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMedia.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMedia.cs @@ -107,7 +107,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Indicates whether voice activity is detected. ///
[JsonProperty("hasVoiceActivity")] - public bool HasVoiceActivity { get; set; } = default!; + public bool? HasVoiceActivity { get; set; } /// /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). @@ -128,6 +128,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// An array of parts for this media item. /// [JsonProperty("Part")] - public List Part { get; set; } = default!; + public List? Part { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMetadata.cs index b8d656f..00a105b 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMetadata.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryMetadata.cs @@ -98,7 +98,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// The release year of the media item. /// [JsonProperty("year")] - public int Year { get; set; } = default!; + public int? Year { get; set; } /// /// A brief tagline for the media item. @@ -368,7 +368,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public List? Role { get; set; } [JsonProperty("Guid")] - public List? Guids { get; set; } + public List? Guids { get; set; } [JsonProperty("Collection")] public List? Collection { get; set; } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.cs index cd13eb0..6a74ed3 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.cs @@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests private GetAllMediaLibraryOptimizedForStreamingType(string value) { Value = value; } public string Value { get; private set; } - public static GetAllMediaLibraryOptimizedForStreamingType One { get { return new GetAllMediaLibraryOptimizedForStreamingType("1"); } } + public static GetAllMediaLibraryOptimizedForStreamingType OptimizedForStreaming1 { get { return new GetAllMediaLibraryOptimizedForStreamingType("optimizedForStreaming_1"); } } public static GetAllMediaLibraryOptimizedForStreamingType Boolean { get { return new GetAllMediaLibraryOptimizedForStreamingType("boolean"); } } @@ -34,7 +34,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public static implicit operator String(GetAllMediaLibraryOptimizedForStreamingType v) { return v.Value; } public static GetAllMediaLibraryOptimizedForStreamingType FromString(string v) { switch(v) { - case "1": return One; + case "optimizedForStreaming_1": return OptimizedForStreaming1; case "boolean": return Boolean; case "null": return Null; default: throw new ArgumentException("Invalid value for GetAllMediaLibraryOptimizedForStreamingType"); @@ -66,7 +66,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests } [SpeakeasyMetadata("form:explode=true")] - public One? One { get; set; } + public OptimizedForStreaming1? OptimizedForStreaming1 { get; set; } [SpeakeasyMetadata("form:explode=true")] public bool? Boolean { get; set; } @@ -74,11 +74,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public GetAllMediaLibraryOptimizedForStreamingType Type { get; set; } - public static GetAllMediaLibraryOptimizedForStreaming CreateOne(One one) { - GetAllMediaLibraryOptimizedForStreamingType typ = GetAllMediaLibraryOptimizedForStreamingType.One; + public static GetAllMediaLibraryOptimizedForStreaming CreateOptimizedForStreaming1(OptimizedForStreaming1 optimizedForStreaming1) { + GetAllMediaLibraryOptimizedForStreamingType typ = GetAllMediaLibraryOptimizedForStreamingType.OptimizedForStreaming1; GetAllMediaLibraryOptimizedForStreaming res = new GetAllMediaLibraryOptimizedForStreaming(typ); - res.One = one; + res.OptimizedForStreaming1 = optimizedForStreaming1; return res; } @@ -114,14 +114,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests try { - return new GetAllMediaLibraryOptimizedForStreaming(GetAllMediaLibraryOptimizedForStreamingType.One) + return new GetAllMediaLibraryOptimizedForStreaming(GetAllMediaLibraryOptimizedForStreamingType.OptimizedForStreaming1) { - One = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + OptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) }; } catch (ResponseBodyDeserializer.MissingMemberException) { - fallbackCandidates.Add((typeof(One), new GetAllMediaLibraryOptimizedForStreaming(GetAllMediaLibraryOptimizedForStreamingType.One), "One")); + fallbackCandidates.Add((typeof(OptimizedForStreaming1), new GetAllMediaLibraryOptimizedForStreaming(GetAllMediaLibraryOptimizedForStreamingType.OptimizedForStreaming1), "OptimizedForStreaming1")); } catch (ResponseBodyDeserializer.DeserializationException) { @@ -180,9 +180,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests writer.WriteRawValue("null"); return; } - if (res.One != null) + if (res.OptimizedForStreaming1 != null) { - writer.WriteRawValue(Utilities.SerializeJSON(res.One)); + writer.WriteRawValue(Utilities.SerializeJSON(res.OptimizedForStreaming1)); return; } if (res.Boolean != null) diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryRole.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryRole.cs index 7ef82be..0a961dc 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryRole.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryRole.cs @@ -16,7 +16,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { /// - /// The name of the actor for this role + /// The display tag for the actor (typically the actor's name). /// [JsonProperty("tag")] public string Tag { get; set; } = default!; diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryStream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryStream.cs index 99f8475..c63bfba 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryStream.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetAllMediaLibraryStream.cs @@ -55,19 +55,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Language of the stream. /// [JsonProperty("language")] - public string Language { get; set; } = default!; + public string? Language { get; set; } /// /// Language tag (e.g., en). /// [JsonProperty("languageTag")] - public string LanguageTag { get; set; } = default!; + public string? LanguageTag { get; set; } /// /// ISO language code. /// [JsonProperty("languageCode")] - public string LanguageCode { get; set; } = default!; + public string? LanguageCode { get; set; } /// /// Indicates whether header compression is enabled. @@ -153,6 +153,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("codedWidth")] public int? CodedWidth { get; set; } + [JsonProperty("closedCaptions")] + public bool? ClosedCaptions { get; set; } + /// /// Color primaries used. /// @@ -213,6 +216,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("scanType")] public string? ScanType { get; set; } + [JsonProperty("embeddedInVideo")] + public string? EmbeddedInVideo { get; set; } + /// /// Number of reference frames. /// diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.cs deleted file mode 100644 index 2baa846..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.cs +++ /dev/null @@ -1,60 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - /// - public enum GetLibraryItemsEnableCreditsMarkerGeneration - { - [JsonProperty("-1")] - LibraryDefault, - [JsonProperty("0")] - Disabled, - } - - public static class GetLibraryItemsEnableCreditsMarkerGenerationExtension - { - public static string Value(this GetLibraryItemsEnableCreditsMarkerGeneration value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsEnableCreditsMarkerGeneration ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsEnableCreditsMarkerGeneration).GetFields()) - { - var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); - if (attributes.Length == 0) - { - continue; - } - - var attribute = attributes[0] as JsonPropertyAttribute; - if (attribute != null && attribute.PropertyName == value) - { - var enumVal = field.GetValue(null); - - if (enumVal is GetLibraryItemsEnableCreditsMarkerGeneration) - { - return (GetLibraryItemsEnableCreditsMarkerGeneration)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsEnableCreditsMarkerGeneration"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEpisodeSort.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEpisodeSort.cs deleted file mode 100644 index 6405ac2..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsEpisodeSort.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - /// - public enum GetLibraryItemsEpisodeSort - { - [JsonProperty("-1")] - LibraryDefault, - [JsonProperty("0")] - OldestFirst, - [JsonProperty("1")] - NewestFirst, - } - - public static class GetLibraryItemsEpisodeSortExtension - { - public static string Value(this GetLibraryItemsEpisodeSort value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsEpisodeSort ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsEpisodeSort).GetFields()) - { - var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); - if (attributes.Length == 0) - { - continue; - } - - var attribute = attributes[0] as JsonPropertyAttribute; - if (attribute != null && attribute.PropertyName == value) - { - var enumVal = field.GetValue(null); - - if (enumVal is GetLibraryItemsEpisodeSort) - { - return (GetLibraryItemsEpisodeSort)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsEpisodeSort"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFlattenSeasons.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFlattenSeasons.cs deleted file mode 100644 index b150a3d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsFlattenSeasons.cs +++ /dev/null @@ -1,62 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - /// - public enum GetLibraryItemsFlattenSeasons - { - [JsonProperty("-1")] - LibraryDefault, - [JsonProperty("0")] - Hide, - [JsonProperty("1")] - Show, - } - - public static class GetLibraryItemsFlattenSeasonsExtension - { - public static string Value(this GetLibraryItemsFlattenSeasons value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsFlattenSeasons ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsFlattenSeasons).GetFields()) - { - var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); - if (attributes.Length == 0) - { - continue; - } - - var attribute = attributes[0] as JsonPropertyAttribute; - if (attribute != null && attribute.PropertyName == value) - { - var enumVal = field.GetValue(null); - - if (enumVal is GetLibraryItemsFlattenSeasons) - { - return (GetLibraryItemsFlattenSeasons)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsFlattenSeasons"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs index bcc85be..fb860f5 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetadata.cs @@ -91,19 +91,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). /// [JsonProperty("flattenSeasons")] - public GetLibraryItemsFlattenSeasons? FlattenSeasons { get; set; } + public FlattenSeasons? FlattenSeasons { get; set; } /// /// Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). /// [JsonProperty("episodeSort")] - public GetLibraryItemsEpisodeSort? EpisodeSort { get; set; } + public EpisodeSort? EpisodeSort { get; set; } /// /// Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). /// [JsonProperty("enableCreditsMarkerGeneration")] - public GetLibraryItemsEnableCreditsMarkerGeneration? EnableCreditsMarkerGeneration { get; set; } + public EnableCreditsMarkerGeneration? EnableCreditsMarkerGeneration { get; set; } /// /// Setting that indicates the episode ordering for the show.
@@ -118,7 +118,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// ///
[JsonProperty("showOrdering")] - public GetLibraryItemsShowOrdering? ShowOrdering { get; set; } + public ShowOrdering? ShowOrdering { get; set; } [JsonProperty("thumb")] public string? Thumb { get; set; } @@ -225,13 +225,13 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// /// [JsonProperty("Guid")] - public List? MediaGuid { get; set; } + public List? MediaGuid { get; set; } [JsonProperty("UltraBlurColors")] public GetLibraryItemsUltraBlurColors? UltraBlurColors { get; set; } [JsonProperty("Rating")] - public List? MetaDataRating { get; set; } + public List? MetaDataRating { get; set; } [JsonProperty("Image")] public List? Image { get; set; } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsShowOrdering.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsShowOrdering.cs deleted file mode 100644 index 2b40745..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsShowOrdering.cs +++ /dev/null @@ -1,75 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - - /// - /// Setting that indicates the episode ordering for the show.
- /// - /// - /// None = Library default,
- /// tmdbAiring = The Movie Database (Aired),
- /// aired = TheTVDB (Aired),
- /// dvd = TheTVDB (DVD),
- /// absolute = TheTVDB (Absolute)).
- /// - ///
- ///
- public enum GetLibraryItemsShowOrdering - { - [JsonProperty("None")] - None, - [JsonProperty("tmdbAiring")] - TmdbAiring, - [JsonProperty("aired")] - TvdbAired, - [JsonProperty("dvd")] - TvdbDvd, - [JsonProperty("absolute")] - TvdbAbsolute, - } - - public static class GetLibraryItemsShowOrderingExtension - { - public static string Value(this GetLibraryItemsShowOrdering value) - { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); - } - - public static GetLibraryItemsShowOrdering ToEnum(this string value) - { - foreach(var field in typeof(GetLibraryItemsShowOrdering).GetFields()) - { - var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); - if (attributes.Length == 0) - { - continue; - } - - var attribute = attributes[0] as JsonPropertyAttribute; - if (attribute != null && attribute.PropertyName == value) - { - var enumVal = field.GetValue(null); - - if (enumVal is GetLibraryItemsShowOrdering) - { - return (GetLibraryItemsShowOrdering)enumVal; - } - } - } - - throw new Exception($"Unknown value {value} for enum GetLibraryItemsShowOrdering"); - } - } - -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs index 4fce970..ff23ce9 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.cs @@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests private GetMediaMetaDataLibraryOptimizedForStreamingType(string value) { Value = value; } public string Value { get; private set; } - public static GetMediaMetaDataLibraryOptimizedForStreamingType GetMediaMetaDataOptimizedForStreaming1 { get { return new GetMediaMetaDataLibraryOptimizedForStreamingType("get-media-meta-data_optimizedForStreaming_1"); } } + public static GetMediaMetaDataLibraryOptimizedForStreamingType GetMediaMetaDataOptimizedForStreamingLibrary1 { get { return new GetMediaMetaDataLibraryOptimizedForStreamingType("get-media-meta-data_optimizedForStreaming_Library_1"); } } public static GetMediaMetaDataLibraryOptimizedForStreamingType Boolean { get { return new GetMediaMetaDataLibraryOptimizedForStreamingType("boolean"); } } @@ -34,7 +34,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public static implicit operator String(GetMediaMetaDataLibraryOptimizedForStreamingType v) { return v.Value; } public static GetMediaMetaDataLibraryOptimizedForStreamingType FromString(string v) { switch(v) { - case "get-media-meta-data_optimizedForStreaming_1": return GetMediaMetaDataOptimizedForStreaming1; + case "get-media-meta-data_optimizedForStreaming_Library_1": return GetMediaMetaDataOptimizedForStreamingLibrary1; case "boolean": return Boolean; case "null": return Null; default: throw new ArgumentException("Invalid value for GetMediaMetaDataLibraryOptimizedForStreamingType"); @@ -66,7 +66,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests } [SpeakeasyMetadata("form:explode=true")] - public GetMediaMetaDataOptimizedForStreaming1? GetMediaMetaDataOptimizedForStreaming1 { get; set; } + public GetMediaMetaDataOptimizedForStreamingLibrary1? GetMediaMetaDataOptimizedForStreamingLibrary1 { get; set; } [SpeakeasyMetadata("form:explode=true")] public bool? Boolean { get; set; } @@ -74,11 +74,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public GetMediaMetaDataLibraryOptimizedForStreamingType Type { get; set; } - public static GetMediaMetaDataLibraryOptimizedForStreaming CreateGetMediaMetaDataOptimizedForStreaming1(GetMediaMetaDataOptimizedForStreaming1 getMediaMetaDataOptimizedForStreaming1) { - GetMediaMetaDataLibraryOptimizedForStreamingType typ = GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1; + public static GetMediaMetaDataLibraryOptimizedForStreaming CreateGetMediaMetaDataOptimizedForStreamingLibrary1(GetMediaMetaDataOptimizedForStreamingLibrary1 getMediaMetaDataOptimizedForStreamingLibrary1) { + GetMediaMetaDataLibraryOptimizedForStreamingType typ = GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreamingLibrary1; GetMediaMetaDataLibraryOptimizedForStreaming res = new GetMediaMetaDataLibraryOptimizedForStreaming(typ); - res.GetMediaMetaDataOptimizedForStreaming1 = getMediaMetaDataOptimizedForStreaming1; + res.GetMediaMetaDataOptimizedForStreamingLibrary1 = getMediaMetaDataOptimizedForStreamingLibrary1; return res; } @@ -114,14 +114,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests try { - return new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1) + return new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreamingLibrary1) { - GetMediaMetaDataOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + GetMediaMetaDataOptimizedForStreamingLibrary1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) }; } catch (ResponseBodyDeserializer.MissingMemberException) { - fallbackCandidates.Add((typeof(GetMediaMetaDataOptimizedForStreaming1), new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1), "GetMediaMetaDataOptimizedForStreaming1")); + fallbackCandidates.Add((typeof(GetMediaMetaDataOptimizedForStreamingLibrary1), new GetMediaMetaDataLibraryOptimizedForStreaming(GetMediaMetaDataLibraryOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreamingLibrary1), "GetMediaMetaDataOptimizedForStreamingLibrary1")); } catch (ResponseBodyDeserializer.DeserializationException) { @@ -180,9 +180,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests writer.WriteRawValue("null"); return; } - if (res.GetMediaMetaDataOptimizedForStreaming1 != null) + if (res.GetMediaMetaDataOptimizedForStreamingLibrary1 != null) { - writer.WriteRawValue(Utilities.SerializeJSON(res.GetMediaMetaDataOptimizedForStreaming1)); + writer.WriteRawValue(Utilities.SerializeJSON(res.GetMediaMetaDataOptimizedForStreamingLibrary1)); return; } if (res.Boolean != null) diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs index 0b96c1e..560db5e 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMedia.cs @@ -107,7 +107,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Indicates whether voice activity is detected. /// [JsonProperty("hasVoiceActivity")] - public bool HasVoiceActivity { get; set; } = default!; + public bool? HasVoiceActivity { get; set; } /// /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). @@ -128,6 +128,6 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// An array of parts for this media item. /// [JsonProperty("Part")] - public List Part { get; set; } = default!; + public List? Part { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs index b6203e2..981e924 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataMetadata.cs @@ -352,13 +352,13 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// An array of Writer roles. /// [JsonProperty("Producer")] - public List? Producer { get; set; } + public List? Producer { get; set; } /// /// An array of similar content objects. /// [JsonProperty("Similar")] - public List? Similar { get; set; } + public List? Similar { get; set; } /// /// An array of location objects. diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs index fc3e36e..639d5d2 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreaming.cs @@ -24,7 +24,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests private GetMediaMetaDataOptimizedForStreamingType(string value) { Value = value; } public string Value { get; private set; } - public static GetMediaMetaDataOptimizedForStreamingType OptimizedForStreaming1 { get { return new GetMediaMetaDataOptimizedForStreamingType("optimizedForStreaming_1"); } } + public static GetMediaMetaDataOptimizedForStreamingType GetMediaMetaDataOptimizedForStreaming1 { get { return new GetMediaMetaDataOptimizedForStreamingType("get-media-meta-data_optimizedForStreaming_1"); } } public static GetMediaMetaDataOptimizedForStreamingType Boolean { get { return new GetMediaMetaDataOptimizedForStreamingType("boolean"); } } @@ -34,7 +34,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public static implicit operator String(GetMediaMetaDataOptimizedForStreamingType v) { return v.Value; } public static GetMediaMetaDataOptimizedForStreamingType FromString(string v) { switch(v) { - case "optimizedForStreaming_1": return OptimizedForStreaming1; + case "get-media-meta-data_optimizedForStreaming_1": return GetMediaMetaDataOptimizedForStreaming1; case "boolean": return Boolean; case "null": return Null; default: throw new ArgumentException("Invalid value for GetMediaMetaDataOptimizedForStreamingType"); @@ -66,7 +66,7 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests } [SpeakeasyMetadata("form:explode=true")] - public OptimizedForStreaming1? OptimizedForStreaming1 { get; set; } + public GetMediaMetaDataOptimizedForStreaming1? GetMediaMetaDataOptimizedForStreaming1 { get; set; } [SpeakeasyMetadata("form:explode=true")] public bool? Boolean { get; set; } @@ -74,11 +74,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public GetMediaMetaDataOptimizedForStreamingType Type { get; set; } - public static GetMediaMetaDataOptimizedForStreaming CreateOptimizedForStreaming1(OptimizedForStreaming1 optimizedForStreaming1) { - GetMediaMetaDataOptimizedForStreamingType typ = GetMediaMetaDataOptimizedForStreamingType.OptimizedForStreaming1; + public static GetMediaMetaDataOptimizedForStreaming CreateGetMediaMetaDataOptimizedForStreaming1(GetMediaMetaDataOptimizedForStreaming1 getMediaMetaDataOptimizedForStreaming1) { + GetMediaMetaDataOptimizedForStreamingType typ = GetMediaMetaDataOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1; GetMediaMetaDataOptimizedForStreaming res = new GetMediaMetaDataOptimizedForStreaming(typ); - res.OptimizedForStreaming1 = optimizedForStreaming1; + res.GetMediaMetaDataOptimizedForStreaming1 = getMediaMetaDataOptimizedForStreaming1; return res; } @@ -114,14 +114,14 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests try { - return new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.OptimizedForStreaming1) + return new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1) { - OptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + GetMediaMetaDataOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) }; } catch (ResponseBodyDeserializer.MissingMemberException) { - fallbackCandidates.Add((typeof(OptimizedForStreaming1), new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.OptimizedForStreaming1), "OptimizedForStreaming1")); + fallbackCandidates.Add((typeof(GetMediaMetaDataOptimizedForStreaming1), new GetMediaMetaDataOptimizedForStreaming(GetMediaMetaDataOptimizedForStreamingType.GetMediaMetaDataOptimizedForStreaming1), "GetMediaMetaDataOptimizedForStreaming1")); } catch (ResponseBodyDeserializer.DeserializationException) { @@ -180,9 +180,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests writer.WriteRawValue("null"); return; } - if (res.OptimizedForStreaming1 != null) + if (res.GetMediaMetaDataOptimizedForStreaming1 != null) { - writer.WriteRawValue(Utilities.SerializeJSON(res.OptimizedForStreaming1)); + writer.WriteRawValue(Utilities.SerializeJSON(res.GetMediaMetaDataOptimizedForStreaming1)); return; } if (res.Boolean != null) diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckGuids.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs similarity index 80% rename from LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckGuids.cs rename to LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs index 0bc353f..7f665e1 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckGuids.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.cs @@ -10,12 +10,11 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - public class GetOnDeckGuids + public enum GetMediaMetaDataOptimizedForStreamingLibrary1 { - - [JsonProperty("id")] - public string? Id { get; set; } + Zero = 0, + One = 1, } + } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs new file mode 100644 index 0000000..94d72a7 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataProducer.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + + public class GetMediaMetaDataProducer + { + + /// + /// The unique role identifier. + /// + [JsonProperty("id")] + public long Id { get; set; } = default!; + + /// + /// The filter string for the role. + /// + [JsonProperty("filter")] + public string Filter { get; set; } = default!; + + /// + /// The actor's name. + /// + [JsonProperty("tag")] + public string Tag { get; set; } = default!; + + /// + /// A key associated with the actor tag. + /// + [JsonProperty("tagKey")] + public string TagKey { get; set; } = default!; + + /// + /// The character name or role. + /// + [JsonProperty("role")] + public string? Role { get; set; } + + /// + /// URL for the role thumbnail image. + /// + [JsonProperty("thumb")] + public string? Thumb { get; set; } + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponse.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs similarity index 50% rename from LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponse.cs rename to LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs index cba88a8..69a6e6f 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponse.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataSimilar.cs @@ -9,32 +9,28 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; - using System; - using System.Net.Http; + using Newtonsoft.Json; - public class GetOnDeckResponse + public class GetMediaMetaDataSimilar { /// - /// HTTP response content type for this operation + /// The unique similar item identifier. /// - public string? ContentType { get; set; } = default!; + [JsonProperty("id")] + public long Id { get; set; } = default!; /// - /// HTTP response status code for this operation + /// The filter string for similar items. /// - public int StatusCode { get; set; } = default!; + [JsonProperty("filter")] + public string Filter { get; set; } = default!; /// - /// Raw HTTP response; suitable for custom response parsing + /// The tag or title of the similar content. /// - public HttpResponseMessage RawResponse { get; set; } = default!; - - /// - /// The on Deck content - /// - public GetOnDeckResponseBody? Object { get; set; } + [JsonProperty("tag")] + public string Tag { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs index ffdd7a3..7b49165 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetMediaMetaDataStream.cs @@ -55,19 +55,19 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests /// Language of the stream. /// [JsonProperty("language")] - public string Language { get; set; } = default!; + public string? Language { get; set; } /// /// Language tag (e.g., en). /// [JsonProperty("languageTag")] - public string LanguageTag { get; set; } = default!; + public string? LanguageTag { get; set; } /// /// ISO language code. /// [JsonProperty("languageCode")] - public string LanguageCode { get; set; } = default!; + public string? LanguageCode { get; set; } /// /// Indicates whether header compression is enabled. @@ -153,6 +153,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("codedWidth")] public int? CodedWidth { get; set; } + [JsonProperty("closedCaptions")] + public bool? ClosedCaptions { get; set; } + /// /// Color primaries used. /// @@ -213,6 +216,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("scanType")] public string? ScanType { get; set; } + [JsonProperty("embeddedInVideo")] + public string? EmbeddedInVideo { get; set; } + /// /// Number of reference frames. /// diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMedia.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMedia.cs deleted file mode 100644 index 2412da9..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMedia.cs +++ /dev/null @@ -1,65 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetOnDeckMedia - { - - [JsonProperty("id")] - public double? Id { get; set; } - - [JsonProperty("duration")] - public double? Duration { get; set; } - - [JsonProperty("bitrate")] - public double? Bitrate { get; set; } - - [JsonProperty("width")] - public double? Width { get; set; } - - [JsonProperty("height")] - public double? Height { get; set; } - - [JsonProperty("aspectRatio")] - public double? AspectRatio { get; set; } - - [JsonProperty("audioChannels")] - public double? AudioChannels { get; set; } - - [JsonProperty("audioCodec")] - public string? AudioCodec { get; set; } - - [JsonProperty("videoCodec")] - public string? VideoCodec { get; set; } - - [JsonProperty("videoResolution")] - public string? VideoResolution { get; set; } - - [JsonProperty("container")] - public string? Container { get; set; } - - [JsonProperty("videoFrameRate")] - public string? VideoFrameRate { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - [JsonProperty("Part")] - public List? Part { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMediaContainer.cs deleted file mode 100644 index b02d83a..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMediaContainer.cs +++ /dev/null @@ -1,41 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetOnDeckMediaContainer - { - - [JsonProperty("size")] - public double? Size { get; set; } - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("identifier")] - public string? Identifier { get; set; } - - [JsonProperty("mediaTagPrefix")] - public string? MediaTagPrefix { get; set; } - - [JsonProperty("mediaTagVersion")] - public double? MediaTagVersion { get; set; } - - [JsonProperty("mixedParents")] - public bool? MixedParents { get; set; } - - [JsonProperty("Metadata")] - public List? Metadata { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMetadata.cs deleted file mode 100644 index f167d9d..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckMetadata.cs +++ /dev/null @@ -1,129 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System; - using System.Collections.Generic; - - public class GetOnDeckMetadata - { - - [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } - - [JsonProperty("librarySectionID")] - public double? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionUUID")] - public string? LibrarySectionUUID { get; set; } - - [JsonProperty("ratingKey")] - public double? RatingKey { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("parentRatingKey")] - public double? ParentRatingKey { get; set; } - - [JsonProperty("grandparentRatingKey")] - public double? GrandparentRatingKey { get; set; } - - [JsonProperty("guid")] - public string? Guid { get; set; } - - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - [JsonProperty("type")] - public string? Type { get; set; } - - [JsonProperty("title")] - public string? Title { get; set; } - - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } - - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - - [JsonProperty("summary")] - public string? Summary { get; set; } - - [JsonProperty("index")] - public double? Index { get; set; } - - [JsonProperty("parentIndex")] - public double? ParentIndex { get; set; } - - [JsonProperty("lastViewedAt")] - public double? LastViewedAt { get; set; } - - [JsonProperty("year")] - public double? Year { get; set; } - - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } - - [JsonProperty("duration")] - public double? Duration { get; set; } - - [JsonProperty("originallyAvailableAt")] - public DateTime? OriginallyAvailableAt { get; set; } - - [JsonProperty("addedAt")] - public double? AddedAt { get; set; } - - [JsonProperty("updatedAt")] - public double? UpdatedAt { get; set; } - - [JsonProperty("Media")] - public List? Media { get; set; } - - [JsonProperty("Guid")] - public List? Guids { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckPart.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckPart.cs deleted file mode 100644 index f374455..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckPart.cs +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Models.Requests; - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - using System.Collections.Generic; - - public class GetOnDeckPart - { - - [JsonProperty("id")] - public double? Id { get; set; } - - [JsonProperty("key")] - public string? Key { get; set; } - - [JsonProperty("duration")] - public double? Duration { get; set; } - - [JsonProperty("file")] - public string? File { get; set; } - - [JsonProperty("size")] - public double? Size { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } - - [JsonProperty("container")] - public string? Container { get; set; } - - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - [JsonProperty("Stream")] - public List? Stream { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckStream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckStream.cs deleted file mode 100644 index f2f5e72..0000000 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckStream.cs +++ /dev/null @@ -1,87 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. -// -// Changes to this file may cause incorrect behavior and will be lost when -// the code is regenerated. -// -//------------------------------------------------------------------------------ -#nullable enable -namespace LukeHagar.PlexAPI.SDK.Models.Requests -{ - using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - - public class GetOnDeckStream - { - - [JsonProperty("id")] - public double? Id { get; set; } - - [JsonProperty("streamType")] - public double? StreamType { get; set; } - - [JsonProperty("default")] - public bool? Default { get; set; } - - [JsonProperty("codec")] - public string? Codec { get; set; } - - [JsonProperty("index")] - public double? Index { get; set; } - - [JsonProperty("bitrate")] - public double? Bitrate { get; set; } - - [JsonProperty("language")] - public string? Language { get; set; } - - [JsonProperty("languageTag")] - public string? LanguageTag { get; set; } - - [JsonProperty("languageCode")] - public string? LanguageCode { get; set; } - - [JsonProperty("bitDepth")] - public double? BitDepth { get; set; } - - [JsonProperty("chromaLocation")] - public string? ChromaLocation { get; set; } - - [JsonProperty("chromaSubsampling")] - public string? ChromaSubsampling { get; set; } - - [JsonProperty("codedHeight")] - public double? CodedHeight { get; set; } - - [JsonProperty("codedWidth")] - public double? CodedWidth { get; set; } - - [JsonProperty("colorRange")] - public string? ColorRange { get; set; } - - [JsonProperty("frameRate")] - public double? FrameRate { get; set; } - - [JsonProperty("height")] - public double? Height { get; set; } - - [JsonProperty("level")] - public double? Level { get; set; } - - [JsonProperty("profile")] - public string? Profile { get; set; } - - [JsonProperty("refFrames")] - public double? RefFrames { get; set; } - - [JsonProperty("width")] - public double? Width { get; set; } - - [JsonProperty("displayTitle")] - public string? DisplayTitle { get; set; } - - [JsonProperty("extendedDisplayTitle")] - public string? ExtendedDisplayTitle { get; set; } - } -} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs index 5de82d8..142e1a1 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMediaContainer.cs @@ -17,20 +17,35 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class GetRecentlyAddedMediaContainer { + /// + /// Number of media items returned in this response. + /// [JsonProperty("size")] - public long Size { get; set; } = default!; - - [JsonProperty("offset")] - public int? Offset { get; set; } + public int Size { get; set; } = default!; + /// + /// Total number of media items in the library. + /// [JsonProperty("totalSize")] - public int? TotalSize { get; set; } + public int TotalSize { get; set; } = default!; - [JsonProperty("identifier")] - public string? Identifier { get; set; } + /// + /// Offset value for pagination. + /// + [JsonProperty("offset")] + public long Offset { get; set; } = default!; + /// + /// Indicates whether syncing is allowed. + /// [JsonProperty("allowSync")] - public bool? AllowSync { get; set; } + public bool AllowSync { get; set; } = default!; + + /// + /// An plugin identifier for the media container. + /// + [JsonProperty("identifier")] + public string Identifier { get; set; } = default!; /// /// The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
@@ -42,6 +57,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("Meta")] public Meta? Meta { get; set; } + /// + /// An array of metadata items. + /// [JsonProperty("Metadata")] public List? Metadata { get; set; } } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs index ae22861..94cddea 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedMetadata.cs @@ -15,131 +15,339 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using NodaTime; using System.Collections.Generic; + /// + /// Unknown
+ /// + /// + /// + /// + ///
public class GetRecentlyAddedMetadata { + [JsonProperty("addedAt")] + public long AddedAt { get; set; } = default!; + /// - /// The rating key (Media ID) of this media item.
- /// - /// - /// Note: This is always an integer, but is represented as a string in the API.
- /// - ///
+ /// The art image URL for the media item. + ///
+ [JsonProperty("art")] + public string Art { get; set; } = default!; + + /// + /// The URL for the audience rating image. + /// + [JsonProperty("audienceRatingImage")] + public string? AudienceRatingImage { get; set; } + + /// + /// The audience rating for the media item. + /// + [JsonProperty("audienceRating")] + public double AudienceRating { get; set; } = default!; + + /// + /// The source from which chapter data is derived. + /// + [JsonProperty("chapterSource")] + public string? ChapterSource { get; set; } + + /// + /// The number of child items associated with this media item. + /// + [JsonProperty("childCount")] + public int ChildCount { get; set; } = default!; + + /// + /// The content rating for the media item. + /// + [JsonProperty("contentRating")] + public string? ContentRating { get; set; } + + /// + /// 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). + /// + [JsonProperty("createdAtAccuracy")] + public string? CreatedAtAccuracy { get; set; } + + /// + /// The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + /// + [JsonProperty("createdAtTZOffset")] + public string? CreatedAtTZOffset { get; set; } + + /// + /// The duration of the media item in milliseconds. + /// + [JsonProperty("duration")] + public int Duration { get; set; } = default!; + + /// + /// The art URL for the grandparent media item. + /// + [JsonProperty("grandparentArt")] + public string? GrandparentArt { get; set; } + + /// + /// The GUID of the grandparent media item. + /// + [JsonProperty("grandparentGuid")] + public string? GrandparentGuid { get; set; } + + /// + /// The key of the grandparent media item. + /// + [JsonProperty("grandparentKey")] + public string? GrandparentKey { get; set; } + + /// + /// The rating key of the grandparent media item. + /// + [JsonProperty("grandparentRatingKey")] + public string? GrandparentRatingKey { get; set; } + + /// + /// The slug for the grandparent media item. + /// + [JsonProperty("grandparentSlug")] + public string? GrandparentSlug { get; set; } + + /// + /// The theme URL for the grandparent media item. + /// + [JsonProperty("grandparentTheme")] + public string? GrandparentTheme { get; set; } + + /// + /// The thumbnail URL for the grandparent media item. + /// + [JsonProperty("grandparentThumb")] + public string? GrandparentThumb { get; set; } + + /// + /// The title of the grandparent media item. + /// + [JsonProperty("grandparentTitle")] + public string? GrandparentTitle { get; set; } + + /// + /// The globally unique identifier for the media item. + /// + [JsonProperty("guid")] + public string Guid { get; set; } = default!; + + /// + /// The index position of the media item. + /// + [JsonProperty("index")] + public int Index { get; set; } = default!; + + /// + /// The unique key for the media item. + /// + [JsonProperty("key")] + public string Key { get; set; } = default!; + + /// + /// The Unix timestamp representing the last time the item was rated. + /// + [JsonProperty("lastRatedAt")] + public long? LastRatedAt { get; set; } + + /// + /// Unix timestamp for when the media item was last viewed. + /// + [JsonProperty("lastViewedAt")] + public int? LastViewedAt { get; set; } + + /// + /// The number of leaf items (end nodes) under this media item. + /// + [JsonProperty("leafCount")] + public int? LeafCount { get; set; } + + /// + /// The identifier for the library section. + /// + [JsonProperty("librarySectionID")] + public long LibrarySectionID { get; set; } = default!; + + /// + /// The key corresponding to the library section. + /// + [JsonProperty("librarySectionKey")] + public string LibrarySectionKey { get; set; } = default!; + + /// + /// The title of the library section. + /// + [JsonProperty("librarySectionTitle")] + public string LibrarySectionTitle { get; set; } = default!; + + /// + /// The original title of the media item (if different). + /// + [JsonProperty("originalTitle")] + public string? OriginalTitle { get; set; } + + /// + /// The original release date of the media item. + /// + [JsonProperty("originallyAvailableAt")] + public LocalDate OriginallyAvailableAt { get; set; } = default!; + + /// + /// The GUID of the parent media item. + /// + [JsonProperty("parentGuid")] + public string? ParentGuid { get; set; } + + /// + /// The index position of the parent media item. + /// + [JsonProperty("parentIndex")] + public int? ParentIndex { get; set; } + + /// + /// The key of the parent media item. + /// + [JsonProperty("parentKey")] + public string? ParentKey { get; set; } + + /// + /// The rating key of the parent media item. + /// + [JsonProperty("parentRatingKey")] + public string? ParentRatingKey { get; set; } + + /// + /// The slug for the parent media item. + /// + [JsonProperty("parentSlug")] + public string? ParentSlug { get; set; } + + /// + /// The studio of the parent media item. + /// + [JsonProperty("parentStudio")] + public string ParentStudio { get; set; } = default!; + + /// + /// The theme URL for the parent media item. + /// + [JsonProperty("parentTheme")] + public string ParentTheme { get; set; } = default!; + + /// + /// The thumbnail URL for the parent media item. + /// + [JsonProperty("parentThumb")] + public string? ParentThumb { get; set; } + + /// + /// The title of the parent media item. + /// + [JsonProperty("parentTitle")] + public string? ParentTitle { get; set; } + + /// + /// The release year of the parent media item. + /// + [JsonProperty("parentYear")] + public int? ParentYear { get; set; } + + /// + /// The primary extra key associated with this media item. + /// + [JsonProperty("primaryExtraKey")] + public string? PrimaryExtraKey { get; set; } + + /// + /// The URL for the rating image. + /// + [JsonProperty("ratingImage")] + public string? RatingImage { get; set; } + + /// + /// 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. /// [JsonProperty("ratingKey")] public string RatingKey { get; set; } = default!; - [JsonProperty("key")] - public string Key { get; set; } = default!; + /// + /// The critic rating for the media item. + /// + [JsonProperty("rating")] + public float Rating { get; set; } = default!; - [JsonProperty("guid")] - public string Guid { get; set; } = default!; + /// + /// The total number of seasons (for TV shows). + /// + [JsonProperty("seasonCount")] + public int SeasonCount { get; set; } = default!; + /// + /// The number of times this media item has been skipped. + /// + [JsonProperty("skipCount")] + public int? SkipCount { get; set; } + + /// + /// A URL‐friendly version of the media title. + /// + [JsonProperty("slug")] + public string Slug { get; set; } = default!; + + /// + /// The studio that produced the media item. + /// [JsonProperty("studio")] public string? Studio { get; set; } - [JsonProperty("skipChildren")] - public bool? SkipChildren { get; set; } - - [JsonProperty("librarySectionID")] - public long? LibrarySectionID { get; set; } - - [JsonProperty("librarySectionTitle")] - public string? LibrarySectionTitle { get; set; } - - [JsonProperty("librarySectionKey")] - public string? LibrarySectionKey { get; set; } + /// + /// A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + /// + [JsonProperty("subtype")] + public string? Subtype { get; set; } /// - /// The type of media content
- /// - /// - /// - /// + /// A synopsis of the media item. ///
- [JsonProperty("type")] - public GetRecentlyAddedHubsType Type { get; set; } = default!; - - [JsonProperty("title")] - public string Title { get; set; } = default!; - - [JsonProperty("slug")] - public string? Slug { get; set; } - - [JsonProperty("contentRating")] - public string? ContentRating { get; set; } - [JsonProperty("summary")] public string Summary { get; set; } = default!; - [JsonProperty("rating")] - public double? Rating { get; set; } - - [JsonProperty("audienceRating")] - public double? AudienceRating { get; set; } - - [JsonProperty("year")] - public int? Year { get; set; } - - [JsonProperty("seasonCount")] - public int? SeasonCount { get; set; } - + /// + /// A brief tagline for the media item. + /// [JsonProperty("tagline")] - public string? Tagline { get; set; } + public string Tagline { get; set; } = default!; /// - /// Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). + /// The theme URL for the media item. /// - [JsonProperty("flattenSeasons")] - public FlattenSeasons? FlattenSeasons { get; set; } + [JsonProperty("theme")] + public string Theme { get; set; } = default!; /// - /// Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). + /// The thumbnail image URL for the media item. /// - [JsonProperty("episodeSort")] - public EpisodeSort? EpisodeSort { get; set; } - - /// - /// Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - /// - [JsonProperty("enableCreditsMarkerGeneration")] - public EnableCreditsMarkerGeneration? EnableCreditsMarkerGeneration { get; set; } - - /// - /// Setting that indicates the episode ordering for the show.
- /// - /// - /// None = Library default,
- /// tmdbAiring = The Movie Database (Aired),
- /// aired = TheTVDB (Aired),
- /// dvd = TheTVDB (DVD),
- /// absolute = TheTVDB (Absolute)).
- /// - ///
- ///
- [JsonProperty("showOrdering")] - public ShowOrdering? ShowOrdering { get; set; } - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - [JsonProperty("art")] - public string? Art { get; set; } - - [JsonProperty("banner")] - public string? Banner { get; set; } - - [JsonProperty("duration")] - public int? Duration { get; set; } - - [JsonProperty("originallyAvailableAt")] - public LocalDate? OriginallyAvailableAt { get; set; } + public string Thumb { get; set; } = default!; /// - /// Unix epoch datetime in seconds + /// The sort title used for ordering media items. /// - [JsonProperty("addedAt")] - public long AddedAt { get; set; } = default!; + [JsonProperty("titleSort")] + public string TitleSort { get; set; } = default!; + + /// + /// The title of the media item. + /// + [JsonProperty("title")] + public string Title { get; set; } = default!; + + [JsonProperty("type")] + public GetRecentlyAddedHubsType Type { get; set; } = default!; /// /// Unix epoch datetime in seconds @@ -147,52 +355,42 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("updatedAt")] public long? UpdatedAt { get; set; } - [JsonProperty("audienceRatingImage")] - public string? AudienceRatingImage { get; set; } - - [JsonProperty("chapterSource")] - public string? ChapterSource { get; set; } - - [JsonProperty("primaryExtraKey")] - public string? PrimaryExtraKey { get; set; } - - [JsonProperty("ratingImage")] - public string? RatingImage { get; set; } - - [JsonProperty("grandparentRatingKey")] - public string? GrandparentRatingKey { get; set; } - - [JsonProperty("grandparentGuid")] - public string? GrandparentGuid { get; set; } - - [JsonProperty("grandparentKey")] - public string? GrandparentKey { get; set; } - - [JsonProperty("grandparentTitle")] - public string? GrandparentTitle { get; set; } - - [JsonProperty("grandparentThumb")] - public string? GrandparentThumb { get; set; } - - [JsonProperty("parentSlug")] - public string? ParentSlug { get; set; } - - [JsonProperty("grandparentSlug")] - public string? GrandparentSlug { get; set; } - - [JsonProperty("grandparentArt")] - public string? GrandparentArt { get; set; } - - [JsonProperty("grandparentTheme")] - public string? GrandparentTheme { get; set; } + /// + /// The rating provided by a user for the item. This value is expressed as a decimal number. + /// + [JsonProperty("userRating")] + public float? UserRating { get; set; } /// - /// The Media object is only included when type query is `4` or higher.
- /// - /// - /// - /// + /// The number of times this media item has been viewed. ///
+ [JsonProperty("viewCount")] + public int? ViewCount { get; set; } + + /// + /// The current playback offset (in milliseconds). + /// + [JsonProperty("viewOffset")] + public int? ViewOffset { get; set; } + + /// + /// The number of leaf items that have been viewed. + /// + [JsonProperty("viewedLeafCount")] + public int? ViewedLeafCount { get; set; } + + /// + /// The release year of the media item. + /// + [JsonProperty("year")] + public int? Year { get; set; } + + [JsonProperty("Image")] + public List? Image { get; set; } + + [JsonProperty("UltraBlurColors")] + public UltraBlurColors? UltraBlurColors { get; set; } + [JsonProperty("Media")] public List? Media { get; set; } @@ -208,105 +406,25 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests [JsonProperty("Writer")] public List? Writer { get; set; } - [JsonProperty("Collection")] - public List? Collection { get; set; } - [JsonProperty("Role")] public List? Role { get; set; } + [JsonProperty("Producer")] + public List? Producer { get; set; } + + [JsonProperty("Rating")] + public List? Rating1 { get; set; } + + [JsonProperty("Similar")] + public List? Similar { get; set; } + [JsonProperty("Location")] public List? Location { get; set; } - /// - /// The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
- /// - /// - /// - /// - ///
[JsonProperty("Guid")] - public List? MediaGuid { get; set; } + public List? Guids { get; set; } - [JsonProperty("UltraBlurColors")] - public UltraBlurColors? UltraBlurColors { get; set; } - - [JsonProperty("Rating")] - public List? MetaDataRating { get; set; } - - [JsonProperty("Image")] - public List? Image { get; set; } - - [JsonProperty("titleSort")] - public string? TitleSort { get; set; } - - [JsonProperty("viewCount")] - public int? ViewCount { get; set; } - - [JsonProperty("lastViewedAt")] - public int? LastViewedAt { get; set; } - - [JsonProperty("originalTitle")] - public string? OriginalTitle { get; set; } - - [JsonProperty("viewOffset")] - public int? ViewOffset { get; set; } - - [JsonProperty("skipCount")] - public int? SkipCount { get; set; } - - [JsonProperty("index")] - public int? Index { get; set; } - - [JsonProperty("theme")] - public string? Theme { get; set; } - - [JsonProperty("leafCount")] - public int? LeafCount { get; set; } - - [JsonProperty("viewedLeafCount")] - public int? ViewedLeafCount { get; set; } - - [JsonProperty("childCount")] - public int? ChildCount { get; set; } - - [JsonProperty("hasPremiumExtras")] - public string? HasPremiumExtras { get; set; } - - [JsonProperty("hasPremiumPrimaryExtra")] - public string? HasPremiumPrimaryExtra { get; set; } - - /// - /// The rating key of the parent item.
- /// - /// - /// - /// - ///
- [JsonProperty("parentRatingKey")] - public string? ParentRatingKey { get; set; } - - [JsonProperty("parentGuid")] - public string? ParentGuid { get; set; } - - [JsonProperty("parentStudio")] - public string? ParentStudio { get; set; } - - [JsonProperty("parentKey")] - public string? ParentKey { get; set; } - - [JsonProperty("parentTitle")] - public string? ParentTitle { get; set; } - - [JsonProperty("parentIndex")] - public int? ParentIndex { get; set; } - - [JsonProperty("parentYear")] - public int? ParentYear { get; set; } - - [JsonProperty("parentThumb")] - public string? ParentThumb { get; set; } - - [JsonProperty("parentTheme")] - public string? ParentTheme { get; set; } + [JsonProperty("Collection")] + public List? Collection { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs new file mode 100644 index 0000000..2613eb5 --- /dev/null +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming.cs @@ -0,0 +1,199 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace LukeHagar.PlexAPI.SDK.Models.Requests +{ + using LukeHagar.PlexAPI.SDK.Models.Requests; + using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; + + + public class GetRecentlyAddedOptimizedForStreamingType + { + private GetRecentlyAddedOptimizedForStreamingType(string value) { Value = value; } + + public string Value { get; private set; } + public static GetRecentlyAddedOptimizedForStreamingType GetRecentlyAddedOptimizedForStreaming1 { get { return new GetRecentlyAddedOptimizedForStreamingType("get-recently-added_optimizedForStreaming_1"); } } + + public static GetRecentlyAddedOptimizedForStreamingType Boolean { get { return new GetRecentlyAddedOptimizedForStreamingType("boolean"); } } + + public static GetRecentlyAddedOptimizedForStreamingType Null { get { return new GetRecentlyAddedOptimizedForStreamingType("null"); } } + + public override string ToString() { return Value; } + public static implicit operator String(GetRecentlyAddedOptimizedForStreamingType v) { return v.Value; } + public static GetRecentlyAddedOptimizedForStreamingType FromString(string v) { + switch(v) { + case "get-recently-added_optimizedForStreaming_1": return GetRecentlyAddedOptimizedForStreaming1; + case "boolean": return Boolean; + case "null": return Null; + default: throw new ArgumentException("Invalid value for GetRecentlyAddedOptimizedForStreamingType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((GetRecentlyAddedOptimizedForStreamingType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + } + + + /// + /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + /// + [JsonConverter(typeof(GetRecentlyAddedOptimizedForStreaming.GetRecentlyAddedOptimizedForStreamingConverter))] + public class GetRecentlyAddedOptimizedForStreaming { + public GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType type) { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public GetRecentlyAddedOptimizedForStreaming1? GetRecentlyAddedOptimizedForStreaming1 { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public bool? Boolean { get; set; } + + public GetRecentlyAddedOptimizedForStreamingType Type { get; set; } + + + public static GetRecentlyAddedOptimizedForStreaming CreateGetRecentlyAddedOptimizedForStreaming1(GetRecentlyAddedOptimizedForStreaming1 getRecentlyAddedOptimizedForStreaming1) { + GetRecentlyAddedOptimizedForStreamingType typ = GetRecentlyAddedOptimizedForStreamingType.GetRecentlyAddedOptimizedForStreaming1; + + GetRecentlyAddedOptimizedForStreaming res = new GetRecentlyAddedOptimizedForStreaming(typ); + res.GetRecentlyAddedOptimizedForStreaming1 = getRecentlyAddedOptimizedForStreaming1; + return res; + } + + public static GetRecentlyAddedOptimizedForStreaming CreateBoolean(bool boolean) { + GetRecentlyAddedOptimizedForStreamingType typ = GetRecentlyAddedOptimizedForStreamingType.Boolean; + + GetRecentlyAddedOptimizedForStreaming res = new GetRecentlyAddedOptimizedForStreaming(typ); + res.Boolean = boolean; + return res; + } + + public static GetRecentlyAddedOptimizedForStreaming CreateNull() { + GetRecentlyAddedOptimizedForStreamingType typ = GetRecentlyAddedOptimizedForStreamingType.Null; + return new GetRecentlyAddedOptimizedForStreaming(typ); + } + + public class GetRecentlyAddedOptimizedForStreamingConverter : JsonConverter + { + + public override bool CanConvert(System.Type objectType) => objectType == typeof(GetRecentlyAddedOptimizedForStreaming); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + var json = JRaw.Create(reader).ToString(); + if (json == "null") + { + return null; + } + + var fallbackCandidates = new List<(System.Type, object, string)>(); + + try + { + return new GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType.GetRecentlyAddedOptimizedForStreaming1) + { + GetRecentlyAddedOptimizedForStreaming1 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(GetRecentlyAddedOptimizedForStreaming1), new GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType.GetRecentlyAddedOptimizedForStreaming1), "GetRecentlyAddedOptimizedForStreaming1")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + var converted = Convert.ToBoolean(json); + return new GetRecentlyAddedOptimizedForStreaming(GetRecentlyAddedOptimizedForStreamingType.Boolean) + { + Boolean = converted + }; + } + catch (System.FormatException) + { + // try next option + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) { + writer.WriteRawValue("null"); + return; + } + GetRecentlyAddedOptimizedForStreaming res = (GetRecentlyAddedOptimizedForStreaming)value; + if (GetRecentlyAddedOptimizedForStreamingType.FromString(res.Type).Equals(GetRecentlyAddedOptimizedForStreamingType.Null)) + { + writer.WriteRawValue("null"); + return; + } + if (res.GetRecentlyAddedOptimizedForStreaming1 != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.GetRecentlyAddedOptimizedForStreaming1)); + return; + } + if (res.Boolean != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); + return; + } + + } + + } + + } +} \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponseBody.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs similarity index 63% rename from LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponseBody.cs rename to LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs index 9de3e27..5e8d190 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetOnDeckResponseBody.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.cs @@ -9,17 +9,12 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { - using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; - using Newtonsoft.Json; - /// - /// The on Deck content - /// - public class GetOnDeckResponseBody + public enum GetRecentlyAddedOptimizedForStreaming1 { - - [JsonProperty("MediaContainer")] - public GetOnDeckMediaContainer? MediaContainer { get; set; } + Zero = 0, + One = 1, } + } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs index c37f80e..6f4c2b1 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/HasThumbnail.cs @@ -13,6 +13,9 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using Newtonsoft.Json; using System; + /// + /// Indicates if the part has a thumbnail. + /// public enum HasThumbnail { [JsonProperty("0")] diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs index 60eb48d..8672ffb 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Location.cs @@ -12,10 +12,13 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + /// + /// The folder path for the media item. + /// public class Location { [JsonProperty("path")] - public string? Path { get; set; } + public string Path { get; set; } = default!; } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs index 5ed921a..760a39e 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Media.cs @@ -9,6 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; @@ -17,58 +18,116 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Media { + /// + /// Unique media identifier. + /// [JsonProperty("id")] - public int Id { get; set; } = default!; + public long Id { get; set; } = default!; + /// + /// Duration of the media in milliseconds. + /// [JsonProperty("duration")] public int? Duration { get; set; } + /// + /// Bitrate in bits per second. + /// [JsonProperty("bitrate")] public int? Bitrate { get; set; } + /// + /// Video width in pixels. + /// [JsonProperty("width")] public int? Width { get; set; } + /// + /// Video height in pixels. + /// [JsonProperty("height")] public int? Height { get; set; } + /// + /// Aspect ratio of the video. + /// [JsonProperty("aspectRatio")] - public double? AspectRatio { get; set; } - - [JsonProperty("audioProfile")] - public string? AudioProfile { get; set; } + public float? AspectRatio { get; set; } + /// + /// Number of audio channels. + /// [JsonProperty("audioChannels")] public int? AudioChannels { get; set; } + [JsonProperty("displayOffset")] + public int? DisplayOffset { get; set; } + + /// + /// Audio codec used. + /// [JsonProperty("audioCodec")] public string? AudioCodec { get; set; } + /// + /// Video codec used. + /// [JsonProperty("videoCodec")] public string? VideoCodec { get; set; } + /// + /// Video resolution (e.g., 4k). + /// [JsonProperty("videoResolution")] public string? VideoResolution { get; set; } + /// + /// File container type. + /// [JsonProperty("container")] - public string Container { get; set; } = default!; + public string? Container { get; set; } + /// + /// Frame rate of the video. Values found include NTSC, PAL, 24p
+ /// + /// + /// + /// + ///
[JsonProperty("videoFrameRate")] public string? VideoFrameRate { get; set; } + /// + /// Video profile (e.g., main 10). + /// [JsonProperty("videoProfile")] public string? VideoProfile { get; set; } + /// + /// Indicates whether voice activity is detected. + /// [JsonProperty("hasVoiceActivity")] public bool? HasVoiceActivity { get; set; } + /// + /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + /// + [JsonProperty("audioProfile")] + public string? AudioProfile { get; set; } + + /// + /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + /// [JsonProperty("optimizedForStreaming")] - public OptimizedForStreaming? OptimizedForStreaming { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.OptimizedForStreaming.Disable; + public OptimizedForStreaming? OptimizedForStreaming { get; set; } [JsonProperty("has64bitOffsets")] public bool? Has64bitOffsets { get; set; } + /// + /// An array of parts for this media item. + /// [JsonProperty("Part")] - public List Part { get; set; } = default!; + public List? Part { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs index 2a92250..f0b1dfd 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/OptimizedForStreaming.cs @@ -9,12 +9,191 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; - public enum OptimizedForStreaming + + public class OptimizedForStreamingType { - Disable = 0, - Enable = 1, + private OptimizedForStreamingType(string value) { Value = value; } + + public string Value { get; private set; } + public static OptimizedForStreamingType One { get { return new OptimizedForStreamingType("1"); } } + + public static OptimizedForStreamingType Boolean { get { return new OptimizedForStreamingType("boolean"); } } + + public static OptimizedForStreamingType Null { get { return new OptimizedForStreamingType("null"); } } + + public override string ToString() { return Value; } + public static implicit operator String(OptimizedForStreamingType v) { return v.Value; } + public static OptimizedForStreamingType FromString(string v) { + switch(v) { + case "1": return One; + case "boolean": return Boolean; + case "null": return Null; + default: throw new ArgumentException("Invalid value for OptimizedForStreamingType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((OptimizedForStreamingType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } } + + /// + /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + /// + [JsonConverter(typeof(OptimizedForStreaming.OptimizedForStreamingConverter))] + public class OptimizedForStreaming { + public OptimizedForStreaming(OptimizedForStreamingType type) { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public One? One { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public bool? Boolean { get; set; } + + public OptimizedForStreamingType Type { get; set; } + + + public static OptimizedForStreaming CreateOne(One one) { + OptimizedForStreamingType typ = OptimizedForStreamingType.One; + + OptimizedForStreaming res = new OptimizedForStreaming(typ); + res.One = one; + return res; + } + + public static OptimizedForStreaming CreateBoolean(bool boolean) { + OptimizedForStreamingType typ = OptimizedForStreamingType.Boolean; + + OptimizedForStreaming res = new OptimizedForStreaming(typ); + res.Boolean = boolean; + return res; + } + + public static OptimizedForStreaming CreateNull() { + OptimizedForStreamingType typ = OptimizedForStreamingType.Null; + return new OptimizedForStreaming(typ); + } + + public class OptimizedForStreamingConverter : JsonConverter + { + + public override bool CanConvert(System.Type objectType) => objectType == typeof(OptimizedForStreaming); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + var json = JRaw.Create(reader).ToString(); + if (json == "null") + { + return null; + } + + var fallbackCandidates = new List<(System.Type, object, string)>(); + + try + { + return new OptimizedForStreaming(OptimizedForStreamingType.One) + { + One = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(One), new OptimizedForStreaming(OptimizedForStreamingType.One), "One")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + var converted = Convert.ToBoolean(json); + return new OptimizedForStreaming(OptimizedForStreamingType.Boolean) + { + Boolean = converted + }; + } + catch (System.FormatException) + { + // try next option + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) { + writer.WriteRawValue("null"); + return; + } + OptimizedForStreaming res = (OptimizedForStreaming)value; + if (OptimizedForStreamingType.FromString(res.Type).Equals(OptimizedForStreamingType.Null)) + { + writer.WriteRawValue("null"); + return; + } + if (res.One != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.One)); + return; + } + if (res.Boolean != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Boolean)); + return; + } + + } + + } + + } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs index 2e5e9a0..c65a24b 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Part.cs @@ -9,6 +9,7 @@ #nullable enable namespace LukeHagar.PlexAPI.SDK.Models.Requests { + using LukeHagar.PlexAPI.SDK.Models.Components; using LukeHagar.PlexAPI.SDK.Models.Requests; using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; @@ -17,49 +18,87 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Part { - [JsonProperty("id")] - public int Id { get; set; } = default!; + /// + /// Indicates if the part is accessible. + /// + [JsonProperty("accessible")] + public bool? Accessible { get; set; } + /// + /// Indicates if the part exists. + /// + [JsonProperty("exists")] + public bool? Exists { get; set; } + + /// + /// Unique part identifier. + /// + [JsonProperty("id")] + public long Id { get; set; } = default!; + + /// + /// Key to access this part. + /// [JsonProperty("key")] public string Key { get; set; } = default!; + [JsonProperty("indexes")] + public string? Indexes { get; set; } + + /// + /// Duration of the part in milliseconds. + /// [JsonProperty("duration")] public int? Duration { get; set; } + /// + /// File path for the part. + /// [JsonProperty("file")] public string File { get; set; } = default!; + /// + /// File size in bytes. + /// [JsonProperty("size")] public long Size { get; set; } = default!; + [JsonProperty("packetLength")] + public int? PacketLength { get; set; } + /// - /// The container format of the media file.
- /// - /// - /// - /// + /// Container format of the part. ///
[JsonProperty("container")] - public string Container { get; set; } = default!; + public string? Container { get; set; } + /// + /// Video profile for the part. + /// + [JsonProperty("videoProfile")] + public string? VideoProfile { get; set; } + + /// + /// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + /// [JsonProperty("audioProfile")] public string? AudioProfile { get; set; } [JsonProperty("has64bitOffsets")] public bool? Has64bitOffsets { get; set; } + /// + /// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + /// [JsonProperty("optimizedForStreaming")] - public bool? OptimizedForStreaming { get; set; } - - [JsonProperty("videoProfile")] - public string? VideoProfile { get; set; } - - [JsonProperty("indexes")] - public string? Indexes { get; set; } + public GetRecentlyAddedOptimizedForStreaming? OptimizedForStreaming { get; set; } [JsonProperty("hasThumbnail")] public HasThumbnail? HasThumbnail { get; set; } = LukeHagar.PlexAPI.SDK.Models.Requests.HasThumbnail.False; + /// + /// An array of streams for this part. + /// [JsonProperty("Stream")] public List? Stream { get; set; } } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs index 60b8f17..eb7dd81 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Producer.cs @@ -16,37 +16,31 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { /// - /// The unique role identifier. + /// Unique identifier for the producer. /// [JsonProperty("id")] public long Id { get; set; } = default!; /// - /// The filter string for the role. + /// The filter string used to query this producer. /// [JsonProperty("filter")] public string Filter { get; set; } = default!; /// - /// The actor's name. + /// The name of the producer /// [JsonProperty("tag")] public string Tag { get; set; } = default!; /// - /// A key associated with the actor tag. + /// A unique key associated with the producer's tag, used for internal identification. /// [JsonProperty("tagKey")] - public string TagKey { get; set; } = default!; + public string? TagKey { get; set; } /// - /// The character name or role. - /// - [JsonProperty("role")] - public string? Role { get; set; } - - /// - /// URL for the role thumbnail image. + /// The URL of the thumbnail image for the actor. /// [JsonProperty("thumb")] public string? Thumb { get; set; } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetaDataRating.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs similarity index 66% rename from LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetaDataRating.cs rename to LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs index 8c36764..78607f9 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/GetLibraryItemsMetaDataRating.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Rating.cs @@ -12,24 +12,18 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; - public class GetLibraryItemsMetaDataRating + /// + /// The type of rating, for example 'audience' or 'critic'. + /// + public class Rating { - /// - /// A URI or path to the rating image. - /// [JsonProperty("image")] public string Image { get; set; } = default!; - /// - /// The value of the rating. - /// [JsonProperty("value")] - public float Value { get; set; } = default!; + public double Value { get; set; } = default!; - /// - /// The type of rating (e.g., audience, critic). - /// [JsonProperty("type")] public string Type { get; set; } = default!; } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs index 23a2961..de1bace 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Role.cs @@ -16,39 +16,39 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests { /// - /// The ID of the tag or actor. + /// Unique identifier for the actor or role. /// [JsonProperty("id")] - public long? Id { get; set; } + public long Id { get; set; } = default!; /// - /// The filter used to find the actor or tag. + /// The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. /// [JsonProperty("filter")] - public string? Filter { get; set; } + public string Filter { get; set; } = default!; /// - /// The thumbnail of the actor - /// - [JsonProperty("thumb")] - public string? Thumb { get; set; } - - /// - /// The name of the tag or actor. + /// The display tag for the actor (typically the actor's name). /// [JsonProperty("tag")] - public string? Tag { get; set; } + public string Tag { get; set; } = default!; /// - /// Unique identifier for the tag. + /// A unique key associated with the actor's tag, used for internal identification. /// [JsonProperty("tagKey")] public string? TagKey { get; set; } /// - /// The role of the actor or tag in the media. + /// The role played by the actor in the media item. /// [JsonProperty("role")] public string? RoleValue { get; set; } + + /// + /// The URL of the thumbnail image for the actor. + /// + [JsonProperty("thumb")] + public string? Thumb { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs index 87b1916..c6e2213 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Similar.cs @@ -12,24 +12,18 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests using LukeHagar.PlexAPI.SDK.Utils; using Newtonsoft.Json; + /// + /// The display tag for the similar item, typically the title. + /// public class Similar { - /// - /// The unique similar item identifier. - /// [JsonProperty("id")] public long Id { get; set; } = default!; - /// - /// The filter string for similar items. - /// [JsonProperty("filter")] public string Filter { get; set; } = default!; - /// - /// The tag or title of the similar content. - /// [JsonProperty("tag")] public string Tag { get; set; } = default!; } diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs index a512ba6..da6f507 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Stream.cs @@ -15,220 +15,283 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Stream { + /// + /// Unique stream identifier. + /// [JsonProperty("id")] public long Id { get; set; } = default!; /// - /// Type of stream (1 = video, 2 = audio, 3 = subtitle) + /// Stream type (1=video, 2=audio, 3=subtitle). /// [JsonProperty("streamType")] - public long StreamType { get; set; } = default!; + public int StreamType { get; set; } = default!; /// - /// Indicates if this is the default stream + /// Indicates if this stream is default. /// [JsonProperty("default")] public bool? Default { get; set; } /// - /// Indicates if the stream is selected - /// - [JsonProperty("selected")] - public bool? Selected { get; set; } - - /// - /// Codec used by the stream + /// Codec used by the stream. /// [JsonProperty("codec")] public string Codec { get; set; } = default!; /// - /// The index of the stream + /// Index of the stream. /// [JsonProperty("index")] - public long Index { get; set; } = default!; + public int Index { get; set; } = default!; /// - /// The bitrate of the stream in kbps + /// Bitrate of the stream. /// [JsonProperty("bitrate")] - public long? Bitrate { get; set; } + public int? Bitrate { get; set; } /// - /// The color primaries of the video stream - /// - [JsonProperty("colorPrimaries")] - public string? ColorPrimaries { get; set; } - - /// - /// The color range of the video stream - /// - [JsonProperty("colorRange")] - public string? ColorRange { get; set; } - - /// - /// The color space of the video stream - /// - [JsonProperty("colorSpace")] - public string? ColorSpace { get; set; } - - /// - /// The transfer characteristics (TRC) of the video stream - /// - [JsonProperty("colorTrc")] - public string? ColorTrc { get; set; } - - /// - /// The bit depth of the video stream - /// - [JsonProperty("bitDepth")] - public long? BitDepth { get; set; } - - /// - /// The chroma location of the video stream - /// - [JsonProperty("chromaLocation")] - public string? ChromaLocation { get; set; } - - /// - /// The identifier of the video stream - /// - [JsonProperty("streamIdentifier")] - public string? StreamIdentifier { get; set; } - - /// - /// The chroma subsampling format - /// - [JsonProperty("chromaSubsampling")] - public string? ChromaSubsampling { get; set; } - - /// - /// The coded height of the video stream - /// - [JsonProperty("codedHeight")] - public long? CodedHeight { get; set; } - - /// - /// The coded width of the video stream - /// - [JsonProperty("codedWidth")] - public long? CodedWidth { get; set; } - - /// - /// The frame rate of the video stream - /// - [JsonProperty("frameRate")] - public double? FrameRate { get; set; } - - /// - /// Indicates if the stream has a scaling matrix - /// - [JsonProperty("hasScalingMatrix")] - public bool? HasScalingMatrix { get; set; } - - [JsonProperty("hearingImpaired")] - public bool? HearingImpaired { get; set; } - - [JsonProperty("closedCaptions")] - public bool? ClosedCaptions { get; set; } - - [JsonProperty("embeddedInVideo")] - public string? EmbeddedInVideo { get; set; } - - /// - /// The height of the video stream - /// - [JsonProperty("height")] - public long? Height { get; set; } - - /// - /// The level of the video codec - /// - [JsonProperty("level")] - public long? Level { get; set; } - - /// - /// The profile of the video codec - /// - [JsonProperty("profile")] - public string? Profile { get; set; } - - /// - /// Number of reference frames - /// - [JsonProperty("refFrames")] - public long? RefFrames { get; set; } - - /// - /// The scan type (progressive or interlaced) - /// - [JsonProperty("scanType")] - public string? ScanType { get; set; } - - /// - /// The width of the video stream - /// - [JsonProperty("width")] - public long? Width { get; set; } - - /// - /// Display title of the stream - /// - [JsonProperty("displayTitle")] - public string? DisplayTitle { get; set; } - - /// - /// Extended display title of the stream - /// - [JsonProperty("extendedDisplayTitle")] - public string? ExtendedDisplayTitle { get; set; } - - /// - /// Number of audio channels (for audio streams) - /// - [JsonProperty("channels")] - public long? Channels { get; set; } - - /// - /// The language of the stream (for audio/subtitle streams) + /// Language of the stream. /// [JsonProperty("language")] public string? Language { get; set; } /// - /// Language tag of the stream + /// Language tag (e.g., en). /// [JsonProperty("languageTag")] public string? LanguageTag { get; set; } /// - /// Language code of the stream + /// ISO language code. /// [JsonProperty("languageCode")] public string? LanguageCode { get; set; } /// - /// The audio channel layout + /// Indicates whether header compression is enabled. + /// + [JsonProperty("headerCompression")] + public bool? HeaderCompression { get; set; } + + /// + /// Dolby Vision BL compatibility ID. + /// + [JsonProperty("DOVIBLCompatID")] + public int? DOVIBLCompatID { get; set; } + + /// + /// Indicates if Dolby Vision BL is present. + /// + [JsonProperty("DOVIBLPresent")] + public bool? DOVIBLPresent { get; set; } + + /// + /// Indicates if Dolby Vision EL is present. + /// + [JsonProperty("DOVIELPresent")] + public bool? DOVIELPresent { get; set; } + + /// + /// Dolby Vision level. + /// + [JsonProperty("DOVILevel")] + public int? DOVILevel { get; set; } + + /// + /// Indicates if Dolby Vision is present. + /// + [JsonProperty("DOVIPresent")] + public bool? DOVIPresent { get; set; } + + /// + /// Dolby Vision profile. + /// + [JsonProperty("DOVIProfile")] + public int? DOVIProfile { get; set; } + + /// + /// Indicates if Dolby Vision RPU is present. + /// + [JsonProperty("DOVIRPUPresent")] + public bool? DOVIRPUPresent { get; set; } + + /// + /// Dolby Vision version. + /// + [JsonProperty("DOVIVersion")] + public string? DOVIVersion { get; set; } + + /// + /// Bit depth of the video stream. + /// + [JsonProperty("bitDepth")] + public int? BitDepth { get; set; } + + /// + /// Chroma sample location. + /// + [JsonProperty("chromaLocation")] + public string? ChromaLocation { get; set; } + + /// + /// Chroma subsampling format. + /// + [JsonProperty("chromaSubsampling")] + public string? ChromaSubsampling { get; set; } + + /// + /// Coded video height. + /// + [JsonProperty("codedHeight")] + public int? CodedHeight { get; set; } + + /// + /// Coded video width. + /// + [JsonProperty("codedWidth")] + public int? CodedWidth { get; set; } + + [JsonProperty("closedCaptions")] + public bool? ClosedCaptions { get; set; } + + /// + /// Color primaries used. + /// + [JsonProperty("colorPrimaries")] + public string? ColorPrimaries { get; set; } + + /// + /// Color range (e.g., tv). + /// + [JsonProperty("colorRange")] + public string? ColorRange { get; set; } + + /// + /// Color space. + /// + [JsonProperty("colorSpace")] + public string? ColorSpace { get; set; } + + /// + /// Color transfer characteristics. + /// + [JsonProperty("colorTrc")] + public string? ColorTrc { get; set; } + + /// + /// Frame rate of the stream. + /// + [JsonProperty("frameRate")] + public float? FrameRate { get; set; } + + /// + /// Height of the video stream. + /// + [JsonProperty("height")] + public int? Height { get; set; } + + /// + /// Video level. + /// + [JsonProperty("level")] + public int? Level { get; set; } + + /// + /// Indicates if this is the original stream. + /// + [JsonProperty("original")] + public bool? Original { get; set; } + + [JsonProperty("hasScalingMatrix")] + public bool? HasScalingMatrix { get; set; } + + /// + /// Video profile. + /// + [JsonProperty("profile")] + public string? Profile { get; set; } + + [JsonProperty("scanType")] + public string? ScanType { get; set; } + + [JsonProperty("embeddedInVideo")] + public string? EmbeddedInVideo { get; set; } + + /// + /// Number of reference frames. + /// + [JsonProperty("refFrames")] + public int? RefFrames { get; set; } + + /// + /// Width of the video stream. + /// + [JsonProperty("width")] + public int? Width { get; set; } + + /// + /// Display title for the stream. + /// + [JsonProperty("displayTitle")] + public string DisplayTitle { get; set; } = default!; + + /// + /// Extended display title for the stream. + /// + [JsonProperty("extendedDisplayTitle")] + public string ExtendedDisplayTitle { get; set; } = default!; + + /// + /// Indicates if this stream is selected (applicable for audio streams). + /// + [JsonProperty("selected")] + public bool? Selected { get; set; } + + [JsonProperty("forced")] + public bool? Forced { get; set; } + + /// + /// Number of audio channels (for audio streams). + /// + [JsonProperty("channels")] + public int? Channels { get; set; } + + /// + /// Audio channel layout. /// [JsonProperty("audioChannelLayout")] public string? AudioChannelLayout { get; set; } /// - /// Sampling rate of the audio stream in Hz + /// Sampling rate for the audio stream. /// [JsonProperty("samplingRate")] - public long? SamplingRate { get; set; } + public int? SamplingRate { get; set; } /// - /// Title of the subtitle track (for subtitle streams) - /// - [JsonProperty("title")] - public string? Title { get; set; } - - /// - /// Indicates if the subtitle stream can auto-sync + /// Indicates if the stream can auto-sync. /// [JsonProperty("canAutoSync")] public bool? CanAutoSync { get; set; } + + /// + /// Indicates if the stream is for the hearing impaired. + /// + [JsonProperty("hearingImpaired")] + public bool? HearingImpaired { get; set; } + + /// + /// Indicates if the stream is a dub. + /// + [JsonProperty("dub")] + public bool? Dub { get; set; } + + /// + /// Optional title for the stream (e.g., language variant). + /// + [JsonProperty("title")] + public string? Title { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs b/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs index 4bef57b..fc21113 100644 --- a/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs +++ b/LukeHagar/PlexAPI/SDK/Models/Requests/Writer.cs @@ -15,7 +15,28 @@ namespace LukeHagar.PlexAPI.SDK.Models.Requests public class Writer { + /// + /// Unique identifier for the writer. + /// + [JsonProperty("id")] + public long Id { get; set; } = default!; + + /// + /// The filter string used to query this writer. + /// + [JsonProperty("filter")] + public string Filter { get; set; } = default!; + + /// + /// The role of Writer + /// [JsonProperty("tag")] - public string? Tag { get; set; } + public string Tag { get; set; } = default!; + + /// + /// A unique key associated with the writers tag, used for internal identification. + /// + [JsonProperty("tagKey")] + public string? TagKey { get; set; } } } \ No newline at end of file diff --git a/LukeHagar/PlexAPI/SDK/Playlists.cs b/LukeHagar/PlexAPI/SDK/Playlists.cs index cb34cac..6ea2e6b 100644 --- a/LukeHagar/PlexAPI/SDK/Playlists.cs +++ b/LukeHagar/PlexAPI/SDK/Playlists.cs @@ -146,10 +146,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Plex.cs b/LukeHagar/PlexAPI/SDK/Plex.cs index ab2fc91..e28ae11 100644 --- a/LukeHagar/PlexAPI/SDK/Plex.cs +++ b/LukeHagar/PlexAPI/SDK/Plex.cs @@ -143,10 +143,10 @@ namespace LukeHagar.PlexAPI.SDK }; public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/PlexAPI.cs b/LukeHagar/PlexAPI/SDK/PlexAPI.cs index d83962a..34b6dba 100644 --- a/LukeHagar/PlexAPI/SDK/PlexAPI.cs +++ b/LukeHagar/PlexAPI/SDK/PlexAPI.cs @@ -327,10 +327,10 @@ namespace LukeHagar.PlexAPI.SDK public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private int _serverIndex = 0; private ISpeakeasyHttpClient _client; diff --git a/LukeHagar/PlexAPI/SDK/Search.cs b/LukeHagar/PlexAPI/SDK/Search.cs index 3e6fec2..d9bc77f 100644 --- a/LukeHagar/PlexAPI/SDK/Search.cs +++ b/LukeHagar/PlexAPI/SDK/Search.cs @@ -87,10 +87,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Server.cs b/LukeHagar/PlexAPI/SDK/Server.cs index 5163e02..9e28944 100644 --- a/LukeHagar/PlexAPI/SDK/Server.cs +++ b/LukeHagar/PlexAPI/SDK/Server.cs @@ -126,10 +126,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Sessions.cs b/LukeHagar/PlexAPI/SDK/Sessions.cs index f7bea70..9c68a80 100644 --- a/LukeHagar/PlexAPI/SDK/Sessions.cs +++ b/LukeHagar/PlexAPI/SDK/Sessions.cs @@ -80,10 +80,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Statistics.cs b/LukeHagar/PlexAPI/SDK/Statistics.cs index 71c67fd..02c5809 100644 --- a/LukeHagar/PlexAPI/SDK/Statistics.cs +++ b/LukeHagar/PlexAPI/SDK/Statistics.cs @@ -71,10 +71,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Updater.cs b/LukeHagar/PlexAPI/SDK/Updater.cs index 0fc9b4a..d0f1531 100644 --- a/LukeHagar/PlexAPI/SDK/Updater.cs +++ b/LukeHagar/PlexAPI/SDK/Updater.cs @@ -74,10 +74,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Users.cs b/LukeHagar/PlexAPI/SDK/Users.cs index 359f6f8..c4ff5bd 100644 --- a/LukeHagar/PlexAPI/SDK/Users.cs +++ b/LukeHagar/PlexAPI/SDK/Users.cs @@ -45,10 +45,10 @@ namespace LukeHagar.PlexAPI.SDK }; public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Video.cs b/LukeHagar/PlexAPI/SDK/Video.cs index 9d015c8..e8f92ce 100644 --- a/LukeHagar/PlexAPI/SDK/Video.cs +++ b/LukeHagar/PlexAPI/SDK/Video.cs @@ -62,10 +62,10 @@ namespace LukeHagar.PlexAPI.SDK { public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/LukeHagar/PlexAPI/SDK/Watchlist.cs b/LukeHagar/PlexAPI/SDK/Watchlist.cs index 0434ab3..3d15727 100644 --- a/LukeHagar/PlexAPI/SDK/Watchlist.cs +++ b/LukeHagar/PlexAPI/SDK/Watchlist.cs @@ -59,10 +59,10 @@ namespace LukeHagar.PlexAPI.SDK }; public SDKConfig SDKConfiguration { get; private set; } private const string _language = "csharp"; - private const string _sdkVersion = "0.14.1"; - private const string _sdkGenVersion = "2.545.2"; + private const string _sdkVersion = "0.14.2"; + private const string _sdkGenVersion = "2.545.4"; private const string _openapiDocVersion = "0.0.3"; - private const string _userAgent = "speakeasy-sdk/csharp 0.14.1 2.545.2 0.0.3 LukeHagar.PlexAPI.SDK"; + private const string _userAgent = "speakeasy-sdk/csharp 0.14.2 2.545.4 0.0.3 LukeHagar.PlexAPI.SDK"; private string _serverUrl = ""; private ISpeakeasyHttpClient _client; private Func? _securitySource; diff --git a/README.md b/README.md index ec23d38..2343cd8 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,6 @@ var res = await sdk.Server.GetServerCapabilitiesAsync(); * [GetMediaMetaData](docs/sdks/library/README.md#getmediametadata) - Get Media Metadata * [GetMetadataChildren](docs/sdks/library/README.md#getmetadatachildren) - Get Items Children * [GetTopWatchedContent](docs/sdks/library/README.md#gettopwatchedcontent) - Get Top Watched Content -* [GetOnDeck](docs/sdks/library/README.md#getondeck) - Get On Deck ### [Log](docs/sdks/log/README.md) diff --git a/RELEASES.md b/RELEASES.md index b911152..bcbfd6a 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -504,4 +504,14 @@ Based on: ### Generated - [csharp v0.14.1] . ### Releases -- [NuGet v0.14.1] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.14.1 - . \ No newline at end of file +- [NuGet v0.14.1] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.14.1 - . + +## 2025-03-09 00:20:03 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.513.4 (2.545.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [csharp v0.14.2] . +### Releases +- [NuGet v0.14.2] https://www.nuget.org/packages/LukeHagar.PlexAPI.SDK/0.14.2 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index 1125d08..d822811 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -526,20 +526,6 @@ actions: var res = await sdk.Media.GetThumbImageAsync(req); - // handle response - - target: $["paths"]["/library/onDeck"]["get"] - update: - x-codeSamples: - - lang: csharp - label: getOnDeck - source: |- - using LukeHagar.PlexAPI.SDK; - using LukeHagar.PlexAPI.SDK.Models.Components; - - var sdk = new PlexAPI(accessToken: ""); - - var res = await sdk.Library.GetOnDeckAsync(); - // handle response - target: $["paths"]["/library/recentlyAdded"]["get"] update: diff --git a/docs/Models/Errors/GetOnDeckBadRequest.md b/docs/Models/Errors/GetOnDeckBadRequest.md deleted file mode 100644 index f7afbf6..0000000 --- a/docs/Models/Errors/GetOnDeckBadRequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetOnDeckBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetOnDeckErrors](../../Models/Errors/GetOnDeckErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Errors/GetOnDeckErrors.md b/docs/Models/Errors/GetOnDeckErrors.md deleted file mode 100644 index c223516..0000000 --- a/docs/Models/Errors/GetOnDeckErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1000 | -| `Message` | *string* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `Status` | *int* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/Models/Errors/GetOnDeckLibraryErrors.md b/docs/Models/Errors/GetOnDeckLibraryErrors.md deleted file mode 100644 index 133f120..0000000 --- a/docs/Models/Errors/GetOnDeckLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `Code` | *int* | :heavy_minus_sign: | N/A | 1001 | -| `Message` | *string* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `Status` | *int* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/Models/Errors/GetOnDeckUnauthorized.md b/docs/Models/Errors/GetOnDeckUnauthorized.md deleted file mode 100644 index 6bda9eb..0000000 --- a/docs/Models/Errors/GetOnDeckUnauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetOnDeckUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Errors` | List<[GetOnDeckLibraryErrors](../../Models/Errors/GetOnDeckLibraryErrors.md)> | :heavy_minus_sign: | N/A | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/Models/Requests/Collection.md b/docs/Models/Requests/Collection.md index 88b21c4..b58e7d3 100644 --- a/docs/Models/Requests/Collection.md +++ b/docs/Models/Requests/Collection.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Working NL Subs | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/Models/Requests/Country.md b/docs/Models/Requests/Country.md index 0a6e787..0040e08 100644 --- a/docs/Models/Requests/Country.md +++ b/docs/Models/Requests/Country.md @@ -1,8 +1,12 @@ # Country +The filter query string for country media items. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | N/A | 259 | +| `Tag` | *string* | :heavy_check_mark: | The country of origin of this media item | United States of America | +| `Filter` | *string* | :heavy_minus_sign: | N/A | country=19 | \ No newline at end of file diff --git a/docs/Models/Requests/Director.md b/docs/Models/Requests/Director.md index b2c1347..d5bc7ba 100644 --- a/docs/Models/Requests/Director.md +++ b/docs/Models/Requests/Director.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | James Cameron | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | +| `Tag` | *string* | :heavy_check_mark: | The role of Director | Danny Boyle | \ No newline at end of file diff --git a/docs/Models/Requests/Genre.md b/docs/Models/Requests/Genre.md index 91a89d1..a4951ce 100644 --- a/docs/Models/Requests/Genre.md +++ b/docs/Models/Requests/Genre.md @@ -1,8 +1,12 @@ # Genre +The filter query string for similar items. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | Adventure | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `Id` | *long* | :heavy_check_mark: | N/A | 259 | +| `Filter` | *string* | :heavy_check_mark: | N/A | genre=19 | +| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllMediaLibraryGenre.md b/docs/Models/Requests/GetAllMediaLibraryGenre.md index 6e3962c..26739a5 100644 --- a/docs/Models/Requests/GetAllMediaLibraryGenre.md +++ b/docs/Models/Requests/GetAllMediaLibraryGenre.md @@ -3,6 +3,6 @@ ## 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 +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllMediaLibraryGuids.md b/docs/Models/Requests/GetAllMediaLibraryGuids.md new file mode 100644 index 0000000..6e14950 --- /dev/null +++ b/docs/Models/Requests/GetAllMediaLibraryGuids.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryGuids + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_minus_sign: | The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
| tvdb://2337 | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllMediaLibraryMedia.md b/docs/Models/Requests/GetAllMediaLibraryMedia.md index 2c72307..723857d 100644 --- a/docs/Models/Requests/GetAllMediaLibraryMedia.md +++ b/docs/Models/Requests/GetAllMediaLibraryMedia.md @@ -19,8 +19,8 @@ | `Container` | *string* | :heavy_minus_sign: | File container type. | mkv | | `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | | `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | +| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | | `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | | `OptimizedForStreaming` | [GetAllMediaLibraryOptimizedForStreaming](../../Models/Requests/GetAllMediaLibraryOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | | `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `Part` | List<[GetAllMediaLibraryPart](../../Models/Requests/GetAllMediaLibraryPart.md)> | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file +| `Part` | List<[GetAllMediaLibraryPart](../../Models/Requests/GetAllMediaLibraryPart.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllMediaLibraryMetadata.md b/docs/Models/Requests/GetAllMediaLibraryMetadata.md index 4e3e7de..58d711a 100644 --- a/docs/Models/Requests/GetAllMediaLibraryMetadata.md +++ b/docs/Models/Requests/GetAllMediaLibraryMetadata.md @@ -20,7 +20,7 @@ Unknown | `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` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | | `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `Year` | *int* | :heavy_check_mark: | The release year of the media item. | 2022 | +| `Year` | *int* | :heavy_minus_sign: | 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 | @@ -70,5 +70,5 @@ Unknown | `Director` | List<[GetAllMediaLibraryDirector](../../Models/Requests/GetAllMediaLibraryDirector.md)> | :heavy_minus_sign: | N/A | | | `Writer` | List<[GetAllMediaLibraryWriter](../../Models/Requests/GetAllMediaLibraryWriter.md)> | :heavy_minus_sign: | N/A | | | `Role` | List<[GetAllMediaLibraryRole](../../Models/Requests/GetAllMediaLibraryRole.md)> | :heavy_minus_sign: | N/A | | -| `Guids` | List<[Guids](../../Models/Requests/Guids.md)> | :heavy_minus_sign: | N/A | | +| `Guids` | List<[GetAllMediaLibraryGuids](../../Models/Requests/GetAllMediaLibraryGuids.md)> | :heavy_minus_sign: | N/A | | | `Collection` | List<[GetAllMediaLibraryCollection](../../Models/Requests/GetAllMediaLibraryCollection.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.md b/docs/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.md index f724e54..b057e5b 100644 --- a/docs/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.md +++ b/docs/Models/Requests/GetAllMediaLibraryOptimizedForStreaming.md @@ -5,10 +5,10 @@ Has this media been optimized for streaming. NOTE: This can be 0, 1, false or tr ## Supported Types -### One +### OptimizedForStreaming1 ```csharp -GetAllMediaLibraryOptimizedForStreaming.CreateOne(/* values here */); +GetAllMediaLibraryOptimizedForStreaming.CreateOptimizedForStreaming1(/* values here */); ``` ### Boolean diff --git a/docs/Models/Requests/GetAllMediaLibraryRole.md b/docs/Models/Requests/GetAllMediaLibraryRole.md index b82113f..d6837bb 100644 --- a/docs/Models/Requests/GetAllMediaLibraryRole.md +++ b/docs/Models/Requests/GetAllMediaLibraryRole.md @@ -3,6 +3,6 @@ ## 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 +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | \ No newline at end of file diff --git a/docs/Models/Requests/GetAllMediaLibraryStream.md b/docs/Models/Requests/GetAllMediaLibraryStream.md index dc6e382..64929f8 100644 --- a/docs/Models/Requests/GetAllMediaLibraryStream.md +++ b/docs/Models/Requests/GetAllMediaLibraryStream.md @@ -11,9 +11,9 @@ | `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | | `Index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | | `Bitrate` | *int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `Language` | *string* | :heavy_check_mark: | Language of the stream. | English | -| `LanguageTag` | *string* | :heavy_check_mark: | Language tag (e.g., en). | en | -| `LanguageCode` | *string* | :heavy_check_mark: | ISO language code. | eng | +| `Language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `LanguageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | | `HeaderCompression` | *bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `DOVIBLCompatID` | *int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `DOVIBLPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | @@ -28,6 +28,7 @@ | `ChromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | | `CodedHeight` | *int* | :heavy_minus_sign: | Coded video height. | 1608 | | `CodedWidth` | *int* | :heavy_minus_sign: | Coded video width. | 3840 | +| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | true | | `ColorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | | `ColorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | | `ColorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | @@ -39,6 +40,7 @@ | `HasScalingMatrix` | *bool* | :heavy_minus_sign: | N/A | false | | `Profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | | `ScanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | | `RefFrames` | *int* | :heavy_minus_sign: | Number of reference frames. | 1 | | `Width` | *int* | :heavy_minus_sign: | Width of the video stream. | 3840 | | `DisplayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | diff --git a/docs/Models/Requests/GetAllMediaLibraryWriter.md b/docs/Models/Requests/GetAllMediaLibraryWriter.md index 520daef..9c71fcb 100644 --- a/docs/Models/Requests/GetAllMediaLibraryWriter.md +++ b/docs/Models/Requests/GetAllMediaLibraryWriter.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Danny Boyle | \ No newline at end of file +| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.md b/docs/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.md deleted file mode 100644 index 5fa5c36..0000000 --- a/docs/Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsEnableCreditsMarkerGeneration - -Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `LibraryDefault` | -1 | -| `Disabled` | 0 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsEpisodeSort.md b/docs/Models/Requests/GetLibraryItemsEpisodeSort.md deleted file mode 100644 index 5498991..0000000 --- a/docs/Models/Requests/GetLibraryItemsEpisodeSort.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsEpisodeSort - -Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `LibraryDefault` | -1 | -| `OldestFirst` | 0 | -| `NewestFirst` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsFlattenSeasons.md b/docs/Models/Requests/GetLibraryItemsFlattenSeasons.md deleted file mode 100644 index 534d449..0000000 --- a/docs/Models/Requests/GetLibraryItemsFlattenSeasons.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsFlattenSeasons - -Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `LibraryDefault` | -1 | -| `Hide` | 0 | -| `Show` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMediaGuid.md b/docs/Models/Requests/GetLibraryItemsMediaGuid.md deleted file mode 100644 index 25ff910..0000000 --- a/docs/Models/Requests/GetLibraryItemsMediaGuid.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryItemsMediaGuid - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `Id` | *string* | :heavy_check_mark: | Can be one of the following formats:
imdb://tt13015952, tmdb://2434012, tvdb://7945991
| imdb://tt13015952 | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMetaDataRating.md b/docs/Models/Requests/GetLibraryItemsMetaDataRating.md deleted file mode 100644 index 2f6dd9a..0000000 --- a/docs/Models/Requests/GetLibraryItemsMetaDataRating.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsMetaDataRating - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `Image` | *string* | :heavy_check_mark: | A URI or path to the rating image. | themoviedb://image.rating | -| `Value` | *float* | :heavy_check_mark: | The value of the rating. | 3 | -| `Type` | *string* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/Models/Requests/GetLibraryItemsMetadata.md b/docs/Models/Requests/GetLibraryItemsMetadata.md index 7e0180a..b1cd16d 100644 --- a/docs/Models/Requests/GetLibraryItemsMetadata.md +++ b/docs/Models/Requests/GetLibraryItemsMetadata.md @@ -23,10 +23,10 @@ | `Year` | *int* | :heavy_minus_sign: | N/A | 2022 | | `SeasonCount` | *int* | :heavy_minus_sign: | N/A | 2022 | | `Tagline` | *string* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `FlattenSeasons` | [GetLibraryItemsFlattenSeasons](../../Models/Requests/GetLibraryItemsFlattenSeasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 | -| `EpisodeSort` | [GetLibraryItemsEpisodeSort](../../Models/Requests/GetLibraryItemsEpisodeSort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 | -| `EnableCreditsMarkerGeneration` | [GetLibraryItemsEnableCreditsMarkerGeneration](../../Models/Requests/GetLibraryItemsEnableCreditsMarkerGeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | -| `ShowOrdering` | [GetLibraryItemsShowOrdering](../../Models/Requests/GetLibraryItemsShowOrdering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
None = Library default,
tmdbAiring = The Movie Database (Aired),
aired = TheTVDB (Aired),
dvd = TheTVDB (DVD),
absolute = TheTVDB (Absolute)).
| absolute | +| `FlattenSeasons` | [FlattenSeasons](../../Models/Requests/FlattenSeasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 | +| `EpisodeSort` | [EpisodeSort](../../Models/Requests/EpisodeSort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 | +| `EnableCreditsMarkerGeneration` | [EnableCreditsMarkerGeneration](../../Models/Requests/EnableCreditsMarkerGeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | +| `ShowOrdering` | [ShowOrdering](../../Models/Requests/ShowOrdering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
None = Library default,
tmdbAiring = The Movie Database (Aired),
aired = TheTVDB (Aired),
dvd = TheTVDB (DVD),
absolute = TheTVDB (Absolute)).
| absolute | | `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | | `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | | `Banner` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | @@ -55,9 +55,9 @@ | `Collection` | List<[GetLibraryItemsCollection](../../Models/Requests/GetLibraryItemsCollection.md)> | :heavy_minus_sign: | N/A | | | `Role` | List<[GetLibraryItemsRole](../../Models/Requests/GetLibraryItemsRole.md)> | :heavy_minus_sign: | N/A | | | `Location` | List<[GetLibraryItemsLocation](../../Models/Requests/GetLibraryItemsLocation.md)> | :heavy_minus_sign: | N/A | | -| `MediaGuid` | List<[GetLibraryItemsMediaGuid](../../Models/Requests/GetLibraryItemsMediaGuid.md)> | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | +| `MediaGuid` | List<[MediaGuid](../../Models/Requests/MediaGuid.md)> | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | | `UltraBlurColors` | [GetLibraryItemsUltraBlurColors](../../Models/Requests/GetLibraryItemsUltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `MetaDataRating` | List<[GetLibraryItemsMetaDataRating](../../Models/Requests/GetLibraryItemsMetaDataRating.md)> | :heavy_minus_sign: | N/A | | +| `MetaDataRating` | List<[MetaDataRating](../../Models/Requests/MetaDataRating.md)> | :heavy_minus_sign: | N/A | | | `Image` | List<[GetLibraryItemsImage](../../Models/Requests/GetLibraryItemsImage.md)> | :heavy_minus_sign: | N/A | | | `TitleSort` | *string* | :heavy_minus_sign: | N/A | Whale | | `ViewCount` | *int* | :heavy_minus_sign: | N/A | 1 | diff --git a/docs/Models/Requests/GetLibraryItemsShowOrdering.md b/docs/Models/Requests/GetLibraryItemsShowOrdering.md deleted file mode 100644 index b7967f8..0000000 --- a/docs/Models/Requests/GetLibraryItemsShowOrdering.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibraryItemsShowOrdering - -Setting that indicates the episode ordering for the show. -None = Library default, -tmdbAiring = The Movie Database (Aired), -aired = TheTVDB (Aired), -dvd = TheTVDB (DVD), -absolute = TheTVDB (Absolute)). - - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `None` | None | -| `TmdbAiring` | tmdbAiring | -| `TvdbAired` | aired | -| `TvdbDvd` | dvd | -| `TvdbAbsolute` | absolute | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md b/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md index 6e2fbea..2d51150 100644 --- a/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md +++ b/docs/Models/Requests/GetMediaMetaDataLibraryOptimizedForStreaming.md @@ -5,10 +5,10 @@ Has this media been optimized for streaming. NOTE: This can be 0, 1, false or tr ## Supported Types -### GetMediaMetaDataOptimizedForStreaming1 +### GetMediaMetaDataOptimizedForStreamingLibrary1 ```csharp -GetMediaMetaDataLibraryOptimizedForStreaming.CreateGetMediaMetaDataOptimizedForStreaming1(/* values here */); +GetMediaMetaDataLibraryOptimizedForStreaming.CreateGetMediaMetaDataOptimizedForStreamingLibrary1(/* values here */); ``` ### Boolean diff --git a/docs/Models/Requests/GetMediaMetaDataMedia.md b/docs/Models/Requests/GetMediaMetaDataMedia.md index 682fdef..c3e10b2 100644 --- a/docs/Models/Requests/GetMediaMetaDataMedia.md +++ b/docs/Models/Requests/GetMediaMetaDataMedia.md @@ -19,8 +19,8 @@ | `Container` | *string* | :heavy_minus_sign: | File container type. | mkv | | `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | | `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | +| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | | `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | | `OptimizedForStreaming` | [GetMediaMetaDataOptimizedForStreaming](../../Models/Requests/GetMediaMetaDataOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | | `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `Part` | List<[GetMediaMetaDataPart](../../Models/Requests/GetMediaMetaDataPart.md)> | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file +| `Part` | List<[GetMediaMetaDataPart](../../Models/Requests/GetMediaMetaDataPart.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataMetadata.md b/docs/Models/Requests/GetMediaMetaDataMetadata.md index f198a2f..36dfa72 100644 --- a/docs/Models/Requests/GetMediaMetaDataMetadata.md +++ b/docs/Models/Requests/GetMediaMetaDataMetadata.md @@ -63,6 +63,6 @@ | `Role` | List<[GetMediaMetaDataRole](../../Models/Requests/GetMediaMetaDataRole.md)> | :heavy_minus_sign: | An array of Actor roles. | | | `Director` | List<[GetMediaMetaDataDirector](../../Models/Requests/GetMediaMetaDataDirector.md)> | :heavy_minus_sign: | An array of Director roles. | | | `Writer` | List<[GetMediaMetaDataWriter](../../Models/Requests/GetMediaMetaDataWriter.md)> | :heavy_minus_sign: | An array of Writer roles. | | -| `Producer` | List<[Producer](../../Models/Requests/Producer.md)> | :heavy_minus_sign: | An array of Writer roles. | | -| `Similar` | List<[Similar](../../Models/Requests/Similar.md)> | :heavy_minus_sign: | An array of similar content objects. | | +| `Producer` | List<[GetMediaMetaDataProducer](../../Models/Requests/GetMediaMetaDataProducer.md)> | :heavy_minus_sign: | An array of Writer roles. | | +| `Similar` | List<[GetMediaMetaDataSimilar](../../Models/Requests/GetMediaMetaDataSimilar.md)> | :heavy_minus_sign: | An array of similar content objects. | | | `Location` | List<[GetMediaMetaDataLocation](../../Models/Requests/GetMediaMetaDataLocation.md)> | :heavy_minus_sign: | An array of location objects. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md index aae1284..bcb8997 100644 --- a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md +++ b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreaming.md @@ -5,10 +5,10 @@ Has this media been optimized for streaming. NOTE: This can be 0, 1, false or tr ## Supported Types -### OptimizedForStreaming1 +### GetMediaMetaDataOptimizedForStreaming1 ```csharp -GetMediaMetaDataOptimizedForStreaming.CreateOptimizedForStreaming1(/* values here */); +GetMediaMetaDataOptimizedForStreaming.CreateGetMediaMetaDataOptimizedForStreaming1(/* values here */); ``` ### Boolean diff --git a/docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md new file mode 100644 index 0000000..12f0d93 --- /dev/null +++ b/docs/Models/Requests/GetMediaMetaDataOptimizedForStreamingLibrary1.md @@ -0,0 +1,9 @@ +# GetMediaMetaDataOptimizedForStreamingLibrary1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataProducer.md b/docs/Models/Requests/GetMediaMetaDataProducer.md new file mode 100644 index 0000000..5ede098 --- /dev/null +++ b/docs/Models/Requests/GetMediaMetaDataProducer.md @@ -0,0 +1,13 @@ +# GetMediaMetaDataProducer + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | The unique role identifier. | 109501 | +| `Filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | +| `Tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | +| `TagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | +| `Role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | +| `Thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataSimilar.md b/docs/Models/Requests/GetMediaMetaDataSimilar.md new file mode 100644 index 0000000..debad8b --- /dev/null +++ b/docs/Models/Requests/GetMediaMetaDataSimilar.md @@ -0,0 +1,10 @@ +# GetMediaMetaDataSimilar + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | The unique similar item identifier. | 26 | +| `Filter` | *string* | :heavy_check_mark: | The filter string for similar items. | similar=26 | +| `Tag` | *string* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file diff --git a/docs/Models/Requests/GetMediaMetaDataStream.md b/docs/Models/Requests/GetMediaMetaDataStream.md index 83e3c34..430a570 100644 --- a/docs/Models/Requests/GetMediaMetaDataStream.md +++ b/docs/Models/Requests/GetMediaMetaDataStream.md @@ -11,9 +11,9 @@ | `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | | `Index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | | `Bitrate` | *int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `Language` | *string* | :heavy_check_mark: | Language of the stream. | English | -| `LanguageTag` | *string* | :heavy_check_mark: | Language tag (e.g., en). | en | -| `LanguageCode` | *string* | :heavy_check_mark: | ISO language code. | eng | +| `Language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `LanguageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | | `HeaderCompression` | *bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `DOVIBLCompatID` | *int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `DOVIBLPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | @@ -28,6 +28,7 @@ | `ChromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | | `CodedHeight` | *int* | :heavy_minus_sign: | Coded video height. | 1608 | | `CodedWidth` | *int* | :heavy_minus_sign: | Coded video width. | 3840 | +| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | true | | `ColorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | | `ColorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | | `ColorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | @@ -39,6 +40,7 @@ | `HasScalingMatrix` | *bool* | :heavy_minus_sign: | N/A | false | | `Profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | | `ScanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | | `RefFrames` | *int* | :heavy_minus_sign: | Number of reference frames. | 1 | | `Width` | *int* | :heavy_minus_sign: | Width of the video stream. | 3840 | | `DisplayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | diff --git a/docs/Models/Requests/GetOnDeckGuids.md b/docs/Models/Requests/GetOnDeckGuids.md deleted file mode 100644 index 3fac436..0000000 --- a/docs/Models/Requests/GetOnDeckGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetOnDeckGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Id` | *string* | :heavy_minus_sign: | N/A | imdb://tt13303712 | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckMedia.md b/docs/Models/Requests/GetOnDeckMedia.md deleted file mode 100644 index 5972293..0000000 --- a/docs/Models/Requests/GetOnDeckMedia.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetOnDeckMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `Id` | *double* | :heavy_minus_sign: | N/A | 80994 | -| `Duration` | *double* | :heavy_minus_sign: | N/A | 420080 | -| `Bitrate` | *double* | :heavy_minus_sign: | N/A | 1046 | -| `Width` | *double* | :heavy_minus_sign: | N/A | 1920 | -| `Height` | *double* | :heavy_minus_sign: | N/A | 1080 | -| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 1.78 | -| `AudioChannels` | *double* | :heavy_minus_sign: | N/A | 2 | -| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | aac | -| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | N/A | 1080 | -| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | PAL | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main | -| `Part` | List<[GetOnDeckPart](../../Models/Requests/GetOnDeckPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckMediaContainer.md b/docs/Models/Requests/GetOnDeckMediaContainer.md deleted file mode 100644 index 590e1e1..0000000 --- a/docs/Models/Requests/GetOnDeckMediaContainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetOnDeckMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `Size` | *double* | :heavy_minus_sign: | N/A | 16 | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `MediaTagPrefix` | *string* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `MediaTagVersion` | *double* | :heavy_minus_sign: | N/A | 1680021154 | -| `MixedParents` | *bool* | :heavy_minus_sign: | N/A | | -| `Metadata` | List<[GetOnDeckMetadata](../../Models/Requests/GetOnDeckMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckMetadata.md b/docs/Models/Requests/GetOnDeckMetadata.md deleted file mode 100644 index 0f002b2..0000000 --- a/docs/Models/Requests/GetOnDeckMetadata.md +++ /dev/null @@ -1,43 +0,0 @@ -# GetOnDeckMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | | -| `LibrarySectionID` | *double* | :heavy_minus_sign: | N/A | 2 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | TV Shows | -| `LibrarySectionUUID` | *string* | :heavy_minus_sign: | N/A | 4bb2521c-8ba9-459b-aaee-8ab8bc35eabd | -| `RatingKey` | *double* | :heavy_minus_sign: | N/A | 49564 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49564 | -| `ParentRatingKey` | *double* | :heavy_minus_sign: | N/A | 49557 | -| `GrandparentRatingKey` | *double* | :heavy_minus_sign: | N/A | 49556 | -| `Guid` | *string* | :heavy_minus_sign: | N/A | plex://episode/5ea7d7402e7ab10042e74d4f | -| `ParentGuid` | *string* | :heavy_minus_sign: | N/A | plex://season/602e754d67f4c8002ce54b3d | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c090e705e7a001e6e94d8 | -| `Type` | *string* | :heavy_minus_sign: | N/A | episode | -| `Title` | *string* | :heavy_minus_sign: | N/A | Circus | -| `GrandparentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556 | -| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49557 | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/2 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | N/A | Bluey (2018) | -| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Season 2 | -| `ContentRating` | *string* | :heavy_minus_sign: | N/A | TV-Y | -| `Summary` | *string* | :heavy_minus_sign: | N/A | Bluey is the ringmaster in a game of circus with her friends but Hercules wants to play his motorcycle game instead. Luckily Bluey has a solution to keep everyone happy. | -| `Index` | *double* | :heavy_minus_sign: | N/A | 33 | -| `ParentIndex` | *double* | :heavy_minus_sign: | N/A | 2 | -| `LastViewedAt` | *double* | :heavy_minus_sign: | N/A | 1681908352 | -| `Year` | *double* | :heavy_minus_sign: | N/A | 2018 | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49564/thumb/1654258204 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | -| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49557/thumb/1654258204 | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/thumb/1680939546 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/49556/theme/1680939546 | -| `Duration` | *double* | :heavy_minus_sign: | N/A | 420080 | -| `OriginallyAvailableAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | N/A | 2020-10-31 00:00:00 +0000 UTC | -| `AddedAt` | *double* | :heavy_minus_sign: | N/A | 1654258196 | -| `UpdatedAt` | *double* | :heavy_minus_sign: | N/A | 1654258204 | -| `Media` | List<[GetOnDeckMedia](../../Models/Requests/GetOnDeckMedia.md)> | :heavy_minus_sign: | N/A | | -| `Guids` | List<[GetOnDeckGuids](../../Models/Requests/GetOnDeckGuids.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckPart.md b/docs/Models/Requests/GetOnDeckPart.md deleted file mode 100644 index 261128b..0000000 --- a/docs/Models/Requests/GetOnDeckPart.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetOnDeckPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| `Id` | *double* | :heavy_minus_sign: | N/A | 80994 | -| `Key` | *string* | :heavy_minus_sign: | N/A | /library/parts/80994/1655007810/file.mkv | -| `Duration` | *double* | :heavy_minus_sign: | N/A | 420080 | -| `File` | *string* | :heavy_minus_sign: | N/A | /tvshows/Bluey (2018)/Bluey (2018) - S02E33 - Circus.mkv | -| `Size` | *double* | :heavy_minus_sign: | N/A | 55148931 | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | lc | -| `Container` | *string* | :heavy_minus_sign: | N/A | mkv | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main | -| `Stream` | List<[GetOnDeckStream](../../Models/Requests/GetOnDeckStream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckResponse.md b/docs/Models/Requests/GetOnDeckResponse.md deleted file mode 100644 index fa2c41b..0000000 --- a/docs/Models/Requests/GetOnDeckResponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetOnDeckResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `ContentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | -| `StatusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `RawResponse` | [HttpResponseMessage](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpresponsemessage?view=net-5.0) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `Object` | [GetOnDeckResponseBody](../../Models/Requests/GetOnDeckResponseBody.md) | :heavy_minus_sign: | The on Deck content | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckResponseBody.md b/docs/Models/Requests/GetOnDeckResponseBody.md deleted file mode 100644 index 6072c4d..0000000 --- a/docs/Models/Requests/GetOnDeckResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckResponseBody - -The on Deck content - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `MediaContainer` | [GetOnDeckMediaContainer](../../Models/Requests/GetOnDeckMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/GetOnDeckStream.md b/docs/Models/Requests/GetOnDeckStream.md deleted file mode 100644 index 1863bf2..0000000 --- a/docs/Models/Requests/GetOnDeckStream.md +++ /dev/null @@ -1,30 +0,0 @@ -# GetOnDeckStream - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `Id` | *double* | :heavy_minus_sign: | N/A | 211234 | -| `StreamType` | *double* | :heavy_minus_sign: | N/A | 1 | -| `Default` | *bool* | :heavy_minus_sign: | N/A | | -| `Codec` | *string* | :heavy_minus_sign: | N/A | hevc | -| `Index` | *double* | :heavy_minus_sign: | N/A | 0 | -| `Bitrate` | *double* | :heavy_minus_sign: | N/A | 918 | -| `Language` | *string* | :heavy_minus_sign: | N/A | English | -| `LanguageTag` | *string* | :heavy_minus_sign: | N/A | en | -| `LanguageCode` | *string* | :heavy_minus_sign: | N/A | eng | -| `BitDepth` | *double* | :heavy_minus_sign: | N/A | 8 | -| `ChromaLocation` | *string* | :heavy_minus_sign: | N/A | left | -| `ChromaSubsampling` | *string* | :heavy_minus_sign: | N/A | 4:2:0 | -| `CodedHeight` | *double* | :heavy_minus_sign: | N/A | 1080 | -| `CodedWidth` | *double* | :heavy_minus_sign: | N/A | 1920 | -| `ColorRange` | *string* | :heavy_minus_sign: | N/A | tv | -| `FrameRate` | *double* | :heavy_minus_sign: | N/A | 25 | -| `Height` | *double* | :heavy_minus_sign: | N/A | 1080 | -| `Level` | *double* | :heavy_minus_sign: | N/A | 120 | -| `Profile` | *string* | :heavy_minus_sign: | N/A | main | -| `RefFrames` | *double* | :heavy_minus_sign: | N/A | 1 | -| `Width` | *double* | :heavy_minus_sign: | N/A | 1920 | -| `DisplayTitle` | *string* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | -| `ExtendedDisplayTitle` | *string* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedMediaContainer.md b/docs/Models/Requests/GetRecentlyAddedMediaContainer.md index 3d03186..a32183b 100644 --- a/docs/Models/Requests/GetRecentlyAddedMediaContainer.md +++ b/docs/Models/Requests/GetRecentlyAddedMediaContainer.md @@ -5,10 +5,10 @@ | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `Size` | *long* | :heavy_check_mark: | N/A | 50 | -| `Offset` | *int* | :heavy_minus_sign: | N/A | | -| `TotalSize` | *int* | :heavy_minus_sign: | N/A | | -| `Identifier` | *string* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `AllowSync` | *bool* | :heavy_minus_sign: | N/A | false | +| `Size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | +| `TotalSize` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | +| `Offset` | *long* | :heavy_check_mark: | Offset value for pagination. | 0 | +| `AllowSync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `Identifier` | *string* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | | `Meta` | [Meta](../../Models/Requests/Meta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `Metadata` | List<[GetRecentlyAddedMetadata](../../Models/Requests/GetRecentlyAddedMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `Metadata` | List<[GetRecentlyAddedMetadata](../../Models/Requests/GetRecentlyAddedMetadata.md)> | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedMetadata.md b/docs/Models/Requests/GetRecentlyAddedMetadata.md index 2b7563b..5d8d14d 100644 --- a/docs/Models/Requests/GetRecentlyAddedMetadata.md +++ b/docs/Models/Requests/GetRecentlyAddedMetadata.md @@ -1,83 +1,85 @@ # GetRecentlyAddedMetadata +Unknown + + ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `RatingKey` | *string* | :heavy_check_mark: | The rating key (Media ID) of this media item.
Note: This is always an integer, but is represented as a string in the API.
| 58683 | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/metadata/58683 | -| `Guid` | *string* | :heavy_check_mark: | N/A | plex://movie/5d7768ba96b655001fdc0408 | -| `Studio` | *string* | :heavy_minus_sign: | N/A | 20th Century Studios | -| `SkipChildren` | *bool* | :heavy_minus_sign: | N/A | false | -| `LibrarySectionID` | *long* | :heavy_minus_sign: | N/A | 1 | -| `LibrarySectionTitle` | *string* | :heavy_minus_sign: | N/A | Movies | -| `LibrarySectionKey` | *string* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `Type` | [GetRecentlyAddedHubsType](../../Models/Requests/GetRecentlyAddedHubsType.md) | :heavy_check_mark: | The type of media content
| movie | -| `Title` | *string* | :heavy_check_mark: | N/A | Avatar: The Way of Water | -| `Slug` | *string* | :heavy_minus_sign: | N/A | 4-for-texas | -| `ContentRating` | *string* | :heavy_minus_sign: | N/A | PG-13 | -| `Summary` | *string* | :heavy_check_mark: | N/A | 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` | *double* | :heavy_minus_sign: | N/A | 7.6 | -| `AudienceRating` | *double* | :heavy_minus_sign: | N/A | 9.2 | -| `Year` | *int* | :heavy_minus_sign: | N/A | 2022 | -| `SeasonCount` | *int* | :heavy_minus_sign: | N/A | 2022 | -| `Tagline` | *string* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `FlattenSeasons` | [FlattenSeasons](../../Models/Requests/FlattenSeasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). | 1 | -| `EpisodeSort` | [EpisodeSort](../../Models/Requests/EpisodeSort.md) | :heavy_minus_sign: | Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). | 0 | -| `EnableCreditsMarkerGeneration` | [EnableCreditsMarkerGeneration](../../Models/Requests/EnableCreditsMarkerGeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | -| `ShowOrdering` | [ShowOrdering](../../Models/Requests/ShowOrdering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
None = Library default,
tmdbAiring = The Movie Database (Aired),
aired = TheTVDB (Aired),
dvd = TheTVDB (DVD),
absolute = TheTVDB (Absolute)).
| absolute | -| `Thumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | -| `Art` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | -| `Banner` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 11558112 | -| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_minus_sign: | N/A | 2022-12-14 00:00:00 +0000 UTC | -| `AddedAt` | *long* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `AudienceRatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `ChapterSource` | *string* | :heavy_minus_sign: | N/A | media | -| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/58684 | -| `RatingImage` | *string* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | N/A | 66 | -| `GrandparentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | -| `GrandparentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66 | -| `GrandparentTitle` | *string* | :heavy_minus_sign: | N/A | Caprica | -| `GrandparentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | -| `ParentSlug` | *string* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | -| `GrandparentSlug` | *string* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | -| `GrandparentArt` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/art/1705716261 | -| `GrandparentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | -| `Media` | List<[Models.Requests.Media](../../Models/Requests/Media.md)> | :heavy_minus_sign: | The Media object is only included when type query is `4` or higher.
| | -| `Genre` | List<[Genre](../../Models/Requests/Genre.md)> | :heavy_minus_sign: | N/A | | -| `Country` | List<[Country](../../Models/Requests/Country.md)> | :heavy_minus_sign: | N/A | | -| `Director` | List<[Director](../../Models/Requests/Director.md)> | :heavy_minus_sign: | N/A | | -| `Writer` | List<[Writer](../../Models/Requests/Writer.md)> | :heavy_minus_sign: | N/A | | -| `Collection` | List<[Collection](../../Models/Requests/Collection.md)> | :heavy_minus_sign: | N/A | | -| `Role` | List<[Role](../../Models/Requests/Role.md)> | :heavy_minus_sign: | N/A | | -| `Location` | List<[Location](../../Models/Requests/Location.md)> | :heavy_minus_sign: | N/A | | -| `MediaGuid` | List<[MediaGuid](../../Models/Requests/MediaGuid.md)> | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | -| `UltraBlurColors` | [UltraBlurColors](../../Models/Requests/UltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `MetaDataRating` | List<[MetaDataRating](../../Models/Requests/MetaDataRating.md)> | :heavy_minus_sign: | N/A | | -| `Image` | List<[GetRecentlyAddedImage](../../Models/Requests/GetRecentlyAddedImage.md)> | :heavy_minus_sign: | N/A | | -| `TitleSort` | *string* | :heavy_minus_sign: | N/A | Whale | -| `ViewCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `LastViewedAt` | *int* | :heavy_minus_sign: | N/A | 1682752242 | -| `OriginalTitle` | *string* | :heavy_minus_sign: | N/A | 映画 ブラッククローバー 魔法帝の剣 | -| `ViewOffset` | *int* | :heavy_minus_sign: | N/A | 5222500 | -| `SkipCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Index` | *int* | :heavy_minus_sign: | N/A | 1 | -| `Theme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 | -| `LeafCount` | *int* | :heavy_minus_sign: | N/A | 14 | -| `ViewedLeafCount` | *int* | :heavy_minus_sign: | N/A | 0 | -| `ChildCount` | *int* | :heavy_minus_sign: | N/A | 1 | -| `HasPremiumExtras` | *string* | :heavy_minus_sign: | N/A | 1 | -| `HasPremiumPrimaryExtra` | *string* | :heavy_minus_sign: | N/A | 1 | -| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent item.
| 66 | -| `ParentGuid` | *string* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | -| `ParentStudio` | *string* | :heavy_minus_sign: | N/A | UCP | -| `ParentKey` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66 | -| `ParentTitle` | *string* | :heavy_minus_sign: | N/A | Caprica | -| `ParentIndex` | *int* | :heavy_minus_sign: | N/A | 1 | -| `ParentYear` | *int* | :heavy_minus_sign: | N/A | 2010 | -| `ParentThumb` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | -| `ParentTheme` | *string* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `AddedAt` | *long* | :heavy_check_mark: | N/A | 1556281940 | +| `Art` | *string* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | +| `AudienceRatingImage` | *string* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | +| `AudienceRating` | *double* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | +| `ChapterSource` | *string* | :heavy_minus_sign: | The source from which chapter data is derived. | media | +| `ChildCount` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | +| `ContentRating` | *string* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | +| `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 | +| `Duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | +| `GrandparentArt` | *string* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | +| `GrandparentGuid` | *string* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `GrandparentKey` | *string* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | +| `GrandparentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | +| `GrandparentSlug` | *string* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | +| `GrandparentTheme` | *string* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | +| `GrandparentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | +| `GrandparentTitle` | *string* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | +| `Guid` | *string* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | +| `Index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | +| `Key` | *string* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | +| `LastRatedAt` | *long* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | +| `LastViewedAt` | *int* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `LeafCount` | *int* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | +| `LibrarySectionID` | *long* | :heavy_check_mark: | The identifier for the library section. | 1 | +| `LibrarySectionKey` | *string* | :heavy_check_mark: | The key corresponding to the library section. | /library/sections/1 | +| `LibrarySectionTitle` | *string* | :heavy_check_mark: | The title of the library section. | Movies | +| `OriginalTitle` | *string* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | +| `OriginallyAvailableAt` | [LocalDate](https://nodatime.org/3.1.x/api/NodaTime.LocalDate.html) | :heavy_check_mark: | The original release date of the media item. | 2022-12-14 | +| `ParentGuid` | *string* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `ParentIndex` | *int* | :heavy_minus_sign: | The index position of the parent media item. | 1 | +| `ParentKey` | *string* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | +| `ParentRatingKey` | *string* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | +| `ParentSlug` | *string* | :heavy_minus_sign: | The slug for the parent media item. | alice-in-borderland-2020 | +| `ParentStudio` | *string* | :heavy_check_mark: | The studio of the parent media item. | UCP | +| `ParentTheme` | *string* | :heavy_check_mark: | The theme URL for the parent media item. | /library/metadata/66/theme/1705716261 | +| `ParentThumb` | *string* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | +| `ParentTitle` | *string* | :heavy_minus_sign: | The title of the parent media item. | Caprica | +| `ParentYear` | *int* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | +| `PrimaryExtraKey` | *string* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | +| `RatingImage` | *string* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | +| `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 | +| `Rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | +| `SeasonCount` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | +| `SkipCount` | *int* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | +| `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 | +| `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 | +| `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.
| +| `Tagline` | *string* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | +| `Theme` | *string* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | +| `Thumb` | *string* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | +| `TitleSort` | *string* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | +| `Title` | *string* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | +| `Type` | [GetRecentlyAddedHubsType](../../Models/Requests/GetRecentlyAddedHubsType.md) | :heavy_check_mark: | N/A | movie | +| `UpdatedAt` | *long* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `UserRating` | *float* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | +| `ViewCount` | *int* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | +| `ViewOffset` | *int* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | +| `ViewedLeafCount` | *int* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | +| `Year` | *int* | :heavy_minus_sign: | The release year of the media item. | 2022 | +| `Image` | List<[GetRecentlyAddedImage](../../Models/Requests/GetRecentlyAddedImage.md)> | :heavy_minus_sign: | N/A | | +| `UltraBlurColors` | [UltraBlurColors](../../Models/Requests/UltraBlurColors.md) | :heavy_minus_sign: | N/A | | +| `Media` | List<[Models.Requests.Media](../../Models/Requests/Media.md)> | :heavy_minus_sign: | N/A | | +| `Genre` | List<[Genre](../../Models/Requests/Genre.md)> | :heavy_minus_sign: | N/A | | +| `Country` | List<[Country](../../Models/Requests/Country.md)> | :heavy_minus_sign: | N/A | | +| `Director` | List<[Director](../../Models/Requests/Director.md)> | :heavy_minus_sign: | N/A | | +| `Writer` | List<[Writer](../../Models/Requests/Writer.md)> | :heavy_minus_sign: | N/A | | +| `Role` | List<[Role](../../Models/Requests/Role.md)> | :heavy_minus_sign: | N/A | | +| `Producer` | List<[Producer](../../Models/Requests/Producer.md)> | :heavy_minus_sign: | N/A | | +| `Rating1` | List<[Rating](../../Models/Requests/Rating.md)> | :heavy_minus_sign: | N/A | | +| `Similar` | List<[Similar](../../Models/Requests/Similar.md)> | :heavy_minus_sign: | N/A | | +| `Location` | List<[Location](../../Models/Requests/Location.md)> | :heavy_minus_sign: | N/A | | +| `Guids` | List<[Guids](../../Models/Requests/Guids.md)> | :heavy_minus_sign: | N/A | | +| `Collection` | List<[Collection](../../Models/Requests/Collection.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md b/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md new file mode 100644 index 0000000..47aaa9f --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming.md @@ -0,0 +1,18 @@ +# GetRecentlyAddedOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + + +## Supported Types + +### GetRecentlyAddedOptimizedForStreaming1 + +```csharp +GetRecentlyAddedOptimizedForStreaming.CreateGetRecentlyAddedOptimizedForStreaming1(/* values here */); +``` + +### Boolean + +```csharp +GetRecentlyAddedOptimizedForStreaming.CreateBoolean(/* values here */); +``` diff --git a/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md b/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md new file mode 100644 index 0000000..0fd6f93 --- /dev/null +++ b/docs/Models/Requests/GetRecentlyAddedOptimizedForStreaming1.md @@ -0,0 +1,9 @@ +# GetRecentlyAddedOptimizedForStreaming1 + + +## Values + +| Name | Value | +| ------ | ------ | +| `Zero` | 0 | +| `One` | 1 | \ No newline at end of file diff --git a/docs/Models/Requests/HasThumbnail.md b/docs/Models/Requests/HasThumbnail.md index a676daf..7a4a122 100644 --- a/docs/Models/Requests/HasThumbnail.md +++ b/docs/Models/Requests/HasThumbnail.md @@ -1,5 +1,7 @@ # HasThumbnail +Indicates if the part has a thumbnail. + ## Values diff --git a/docs/Models/Requests/Location.md b/docs/Models/Requests/Location.md index 1fab80f..d8aa98a 100644 --- a/docs/Models/Requests/Location.md +++ b/docs/Models/Requests/Location.md @@ -1,8 +1,10 @@ # Location +The folder path for the media item. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Path` | *string* | :heavy_minus_sign: | N/A | /TV Shows/House | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `Path` | *string* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file diff --git a/docs/Models/Requests/Media.md b/docs/Models/Requests/Media.md index 123efa1..e945cc0 100644 --- a/docs/Models/Requests/Media.md +++ b/docs/Models/Requests/Media.md @@ -3,23 +3,24 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | N/A | 119534 | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 11558112 | -| `Bitrate` | *int* | :heavy_minus_sign: | N/A | 25025 | -| `Width` | *int* | :heavy_minus_sign: | N/A | 3840 | -| `Height` | *int* | :heavy_minus_sign: | N/A | 2072 | -| `AspectRatio` | *double* | :heavy_minus_sign: | N/A | 1.85 | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | dts | -| `AudioChannels` | *int* | :heavy_minus_sign: | N/A | 6 | -| `AudioCodec` | *string* | :heavy_minus_sign: | N/A | eac3 | -| `VideoCodec` | *string* | :heavy_minus_sign: | N/A | hevc | -| `VideoResolution` | *string* | :heavy_minus_sign: | N/A | 4k | -| `Container` | *string* | :heavy_check_mark: | N/A | mkv | -| `VideoFrameRate` | *string* | :heavy_minus_sign: | N/A | 24p | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main 10 | -| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | [OptimizedForStreaming](../../Models/Requests/OptimizedForStreaming.md) | :heavy_minus_sign: | N/A | 1 | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `Part` | List<[Part](../../Models/Requests/Part.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `Duration` | *int* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `Width` | *int* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `Height` | *int* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `AspectRatio` | *float* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `AudioChannels` | *int* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `DisplayOffset` | *int* | :heavy_minus_sign: | N/A | 50 | +| `AudioCodec` | *string* | :heavy_minus_sign: | Audio codec used. | eac3 | +| `VideoCodec` | *string* | :heavy_minus_sign: | Video codec used. | hevc | +| `VideoResolution` | *string* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | +| `Container` | *string* | :heavy_minus_sign: | File container type. | mkv | +| `VideoFrameRate` | *string* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | +| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `HasVoiceActivity` | *bool* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | +| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `OptimizedForStreaming` | [OptimizedForStreaming](../../Models/Requests/OptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | +| `Part` | List<[Part](../../Models/Requests/Part.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/Models/Requests/OptimizedForStreaming.md b/docs/Models/Requests/OptimizedForStreaming.md index 6485ce7..0226023 100644 --- a/docs/Models/Requests/OptimizedForStreaming.md +++ b/docs/Models/Requests/OptimizedForStreaming.md @@ -1,9 +1,18 @@ # OptimizedForStreaming +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true -## Values -| Name | Value | -| --------- | --------- | -| `Disable` | 0 | -| `Enable` | 1 | \ No newline at end of file +## Supported Types + +### One + +```csharp +OptimizedForStreaming.CreateOne(/* values here */); +``` + +### Boolean + +```csharp +OptimizedForStreaming.CreateBoolean(/* values here */); +``` diff --git a/docs/Models/Requests/Part.md b/docs/Models/Requests/Part.md index 0cfa253..2d70180 100644 --- a/docs/Models/Requests/Part.md +++ b/docs/Models/Requests/Part.md @@ -3,18 +3,21 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `Id` | *int* | :heavy_check_mark: | N/A | 119542 | -| `Key` | *string* | :heavy_check_mark: | N/A | /library/parts/119542/1680457526/file.mkv | -| `Duration` | *int* | :heavy_minus_sign: | N/A | 11558112 | -| `File` | *string* | :heavy_check_mark: | N/A | /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` | *long* | :heavy_check_mark: | N/A | 36158371307 | -| `Container` | *string* | :heavy_check_mark: | The container format of the media file.
| mkv | -| `AudioProfile` | *string* | :heavy_minus_sign: | N/A | dts | -| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | -| `OptimizedForStreaming` | *bool* | :heavy_minus_sign: | N/A | false | -| `VideoProfile` | *string* | :heavy_minus_sign: | N/A | main 10 | -| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | -| `HasThumbnail` | [HasThumbnail](../../Models/Requests/HasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `Stream` | List<[Stream](../../Models/Requests/Stream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `Accessible` | *bool* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `Exists` | *bool* | :heavy_minus_sign: | Indicates if the part exists. | true | +| `Id` | *long* | :heavy_check_mark: | Unique part identifier. | 418385 | +| `Key` | *string* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | +| `Indexes` | *string* | :heavy_minus_sign: | N/A | sd | +| `Duration` | *int* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | +| `File` | *string* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | +| `Size` | *long* | :heavy_check_mark: | File size in bytes. | 30649952104 | +| `PacketLength` | *int* | :heavy_minus_sign: | N/A | 188 | +| `Container` | *string* | :heavy_minus_sign: | Container format of the part. | mkv | +| `VideoProfile` | *string* | :heavy_minus_sign: | Video profile for the part. | main 10 | +| `AudioProfile` | *string* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `Has64bitOffsets` | *bool* | :heavy_minus_sign: | N/A | false | +| `OptimizedForStreaming` | [GetRecentlyAddedOptimizedForStreaming](../../Models/Requests/GetRecentlyAddedOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | +| `HasThumbnail` | [HasThumbnail](../../Models/Requests/HasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `Stream` | List<[Stream](../../Models/Requests/Stream.md)> | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/Models/Requests/Producer.md b/docs/Models/Requests/Producer.md index 744b8b8..21d55b0 100644 --- a/docs/Models/Requests/Producer.md +++ b/docs/Models/Requests/Producer.md @@ -3,11 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `Filter` | *string* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `Tag` | *string* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `TagKey` | *string* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `Role` | *string* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `Thumb` | *string* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | Unique identifier for the producer. | 126522 | +| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this producer. | producer=126522 | +| `Tag` | *string* | :heavy_check_mark: | The name of the producer | Amelia Knapp | +| `TagKey` | *string* | :heavy_minus_sign: | A unique key associated with the producer's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `Thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/Rating.md b/docs/Models/Requests/Rating.md new file mode 100644 index 0000000..a3fc891 --- /dev/null +++ b/docs/Models/Requests/Rating.md @@ -0,0 +1,12 @@ +# Rating + +The type of rating, for example 'audience' or 'critic'. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | +| `Image` | *string* | :heavy_check_mark: | N/A | imdb://image.rating | +| `Value` | *double* | :heavy_check_mark: | N/A | 5.1 | +| `Type` | *string* | :heavy_check_mark: | N/A | audience | \ No newline at end of file diff --git a/docs/Models/Requests/Role.md b/docs/Models/Requests/Role.md index 3468620..10caad9 100644 --- a/docs/Models/Requests/Role.md +++ b/docs/Models/Requests/Role.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `Id` | *long* | :heavy_minus_sign: | The ID of the tag or actor. | 294129 | -| `Filter` | *string* | :heavy_minus_sign: | The filter used to find the actor or tag. | actor=294129 | -| `Thumb` | *string* | :heavy_minus_sign: | The thumbnail of the actor | https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg | -| `Tag` | *string* | :heavy_minus_sign: | The name of the tag or actor. | Mike Smith | -| `TagKey` | *string* | :heavy_minus_sign: | Unique identifier for the tag. | 668e7e7b22bcad9064350c91 | -| `Role` | *string* | :heavy_minus_sign: | The role of the actor or tag in the media. | Self | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | Unique identifier for the actor or role. | 126522 | +| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | +| `Tag` | *string* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | +| `TagKey` | *string* | :heavy_minus_sign: | A unique key associated with the actor's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `Role` | *string* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | +| `Thumb` | *string* | :heavy_minus_sign: | The URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/Models/Requests/Similar.md b/docs/Models/Requests/Similar.md index 033c5d4..523fabb 100644 --- a/docs/Models/Requests/Similar.md +++ b/docs/Models/Requests/Similar.md @@ -1,10 +1,12 @@ # Similar +The display tag for the similar item, typically the title. + ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | The unique similar item identifier. | 26 | -| `Filter` | *string* | :heavy_check_mark: | The filter string for similar items. | similar=26 | -| `Tag` | *string* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------- | --------------------- | --------------------- | --------------------- | --------------------- | +| `Id` | *long* | :heavy_check_mark: | N/A | 259 | +| `Filter` | *string* | :heavy_check_mark: | N/A | similar=259 | +| `Tag` | *string* | :heavy_check_mark: | N/A | Criss Angel Mindfreak | \ No newline at end of file diff --git a/docs/Models/Requests/Stream.md b/docs/Models/Requests/Stream.md index 6ad6df7..f221156 100644 --- a/docs/Models/Requests/Stream.md +++ b/docs/Models/Requests/Stream.md @@ -3,43 +3,54 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `Id` | *long* | :heavy_check_mark: | N/A | 272796 | -| `StreamType` | *long* | :heavy_check_mark: | Type of stream (1 = video, 2 = audio, 3 = subtitle) | 1 | -| `Default` | *bool* | :heavy_minus_sign: | Indicates if this is the default stream | true | -| `Selected` | *bool* | :heavy_minus_sign: | Indicates if the stream is selected | true | -| `Codec` | *string* | :heavy_check_mark: | Codec used by the stream | h264 | -| `Index` | *long* | :heavy_check_mark: | The index of the stream | 0 | -| `Bitrate` | *long* | :heavy_minus_sign: | The bitrate of the stream in kbps | 6273 | -| `ColorPrimaries` | *string* | :heavy_minus_sign: | The color primaries of the video stream | bt709 | -| `ColorRange` | *string* | :heavy_minus_sign: | The color range of the video stream | tv | -| `ColorSpace` | *string* | :heavy_minus_sign: | The color space of the video stream | bt709 | -| `ColorTrc` | *string* | :heavy_minus_sign: | The transfer characteristics (TRC) of the video stream | bt709 | -| `BitDepth` | *long* | :heavy_minus_sign: | The bit depth of the video stream | 8 | -| `ChromaLocation` | *string* | :heavy_minus_sign: | The chroma location of the video stream | left | -| `StreamIdentifier` | *string* | :heavy_minus_sign: | The identifier of the video stream | 2 | -| `ChromaSubsampling` | *string* | :heavy_minus_sign: | The chroma subsampling format | 4:2:0 | -| `CodedHeight` | *long* | :heavy_minus_sign: | The coded height of the video stream | 1088 | -| `CodedWidth` | *long* | :heavy_minus_sign: | The coded width of the video stream | 1920 | -| `FrameRate` | *double* | :heavy_minus_sign: | The frame rate of the video stream | 29.97 | -| `HasScalingMatrix` | *bool* | :heavy_minus_sign: | Indicates if the stream has a scaling matrix | false | -| `HearingImpaired` | *bool* | :heavy_minus_sign: | N/A | false | -| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | false | -| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | 1 | -| `Height` | *long* | :heavy_minus_sign: | The height of the video stream | 1080 | -| `Level` | *long* | :heavy_minus_sign: | The level of the video codec | 40 | -| `Profile` | *string* | :heavy_minus_sign: | The profile of the video codec | main | -| `RefFrames` | *long* | :heavy_minus_sign: | Number of reference frames | 4 | -| `ScanType` | *string* | :heavy_minus_sign: | The scan type (progressive or interlaced) | progressive | -| `Width` | *long* | :heavy_minus_sign: | The width of the video stream | 1920 | -| `DisplayTitle` | *string* | :heavy_minus_sign: | Display title of the stream | 1080p (H.264) | -| `ExtendedDisplayTitle` | *string* | :heavy_minus_sign: | Extended display title of the stream | 1080p (H.264) | -| `Channels` | *long* | :heavy_minus_sign: | Number of audio channels (for audio streams) | 2 | -| `Language` | *string* | :heavy_minus_sign: | The language of the stream (for audio/subtitle streams) | English | -| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag of the stream | en | -| `LanguageCode` | *string* | :heavy_minus_sign: | Language code of the stream | eng | -| `AudioChannelLayout` | *string* | :heavy_minus_sign: | The audio channel layout | stereo | -| `SamplingRate` | *long* | :heavy_minus_sign: | Sampling rate of the audio stream in Hz | 48000 | -| `Title` | *string* | :heavy_minus_sign: | Title of the subtitle track (for subtitle streams) | English | -| `CanAutoSync` | *bool* | :heavy_minus_sign: | Indicates if the subtitle stream can auto-sync | false | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | Unique stream identifier. | 1002625 | +| `StreamType` | *int* | :heavy_check_mark: | Stream type (1=video, 2=audio, 3=subtitle). | 1 | +| `Default` | *bool* | :heavy_minus_sign: | Indicates if this stream is default. | true | +| `Codec` | *string* | :heavy_check_mark: | Codec used by the stream. | hevc | +| `Index` | *int* | :heavy_check_mark: | Index of the stream. | 0 | +| `Bitrate` | *int* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `Language` | *string* | :heavy_minus_sign: | Language of the stream. | English | +| `LanguageTag` | *string* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `LanguageCode` | *string* | :heavy_minus_sign: | ISO language code. | eng | +| `HeaderCompression` | *bool* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `DOVIBLCompatID` | *int* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `DOVIBLPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `DOVIELPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `DOVILevel` | *int* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `DOVIPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `DOVIProfile` | *int* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `DOVIRPUPresent` | *bool* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `DOVIVersion` | *string* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `BitDepth` | *int* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `ChromaLocation` | *string* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `ChromaSubsampling` | *string* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `CodedHeight` | *int* | :heavy_minus_sign: | Coded video height. | 1608 | +| `CodedWidth` | *int* | :heavy_minus_sign: | Coded video width. | 3840 | +| `ClosedCaptions` | *bool* | :heavy_minus_sign: | N/A | true | +| `ColorPrimaries` | *string* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `ColorRange` | *string* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `ColorSpace` | *string* | :heavy_minus_sign: | Color space. | bt2020nc | +| `ColorTrc` | *string* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `FrameRate` | *float* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `Height` | *int* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `Level` | *int* | :heavy_minus_sign: | Video level. | 150 | +| `Original` | *bool* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `HasScalingMatrix` | *bool* | :heavy_minus_sign: | N/A | false | +| `Profile` | *string* | :heavy_minus_sign: | Video profile. | main 10 | +| `ScanType` | *string* | :heavy_minus_sign: | N/A | progressive | +| `EmbeddedInVideo` | *string* | :heavy_minus_sign: | N/A | progressive | +| `RefFrames` | *int* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `Width` | *int* | :heavy_minus_sign: | Width of the video stream. | 3840 | +| `DisplayTitle` | *string* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `ExtendedDisplayTitle` | *string* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | +| `Selected` | *bool* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `Forced` | *bool* | :heavy_minus_sign: | N/A | true | +| `Channels` | *int* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `AudioChannelLayout` | *string* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `SamplingRate` | *int* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `CanAutoSync` | *bool* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `HearingImpaired` | *bool* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `Dub` | *bool* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `Title` | *string* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/Models/Requests/Writer.md b/docs/Models/Requests/Writer.md index c2d51d6..9e6c72b 100644 --- a/docs/Models/Requests/Writer.md +++ b/docs/Models/Requests/Writer.md @@ -3,6 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `Tag` | *string* | :heavy_minus_sign: | N/A | James Cameron | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `Id` | *long* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | +| `Filter` | *string* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | +| `Tag` | *string* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | +| `TagKey` | *string* | :heavy_minus_sign: | A unique key associated with the writers tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 9df4a4e..884398c 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -24,7 +24,6 @@ API Calls interacting with Plex Media Server Libraries * [GetMediaMetaData](#getmediametadata) - Get Media Metadata * [GetMetadataChildren](#getmetadatachildren) - Get Items Children * [GetTopWatchedContent](#gettopwatchedcontent) - Get Top Watched Content -* [GetOnDeck](#getondeck) - Get On Deck ## GetFileHash @@ -778,34 +777,4 @@ var res = await sdk.Library.GetTopWatchedContentAsync( | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | | LukeHagar.PlexAPI.SDK.Models.Errors.GetTopWatchedContentBadRequest | 400 | application/json | | LukeHagar.PlexAPI.SDK.Models.Errors.GetTopWatchedContentUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | - -## GetOnDeck - -This endpoint will return the on deck content. - - -### Example Usage - -```csharp -using LukeHagar.PlexAPI.SDK; -using LukeHagar.PlexAPI.SDK.Models.Components; - -var sdk = new PlexAPI(accessToken: ""); - -var res = await sdk.Library.GetOnDeckAsync(); - -// handle response -``` - -### Response - -**[GetOnDeckResponse](../../Models/Requests/GetOnDeckResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetOnDeckBadRequest | 400 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.GetOnDeckUnauthorized | 401 | application/json | -| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file +| LukeHagar.PlexAPI.SDK.Models.Errors.SDKException | 4XX, 5XX | \*/\* | \ No newline at end of file