diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 6f710040..130585cb 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 1732900d-e173-47c1-a90d-d45182eb35d9 management: - docChecksum: 71aea44b27d124ce7bc7da09090777b5 + docChecksum: 68de03e6e877c4fc50ebfdd47bb117ac docVersion: 0.0.3 - speakeasyVersion: 1.513.2 - generationVersion: 2.545.2 - releaseVersion: 0.13.0 - configChecksum: 5da46ccadfa63f2205769c82ca615a12 + speakeasyVersion: 1.513.4 + generationVersion: 2.545.4 + releaseVersion: 0.13.1 + configChecksum: 39e28952431ec2bd258ad0fc42723ccf repoURL: https://github.com/LukeHagar/plexjava.git published: true features: @@ -157,10 +157,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 @@ -427,6 +423,7 @@ generatedFiles: - docs/models/operations/GetAllMediaLibraryFieldType.md - docs/models/operations/GetAllMediaLibraryFilter.md - docs/models/operations/GetAllMediaLibraryGenre.md + - docs/models/operations/GetAllMediaLibraryGuids.md - docs/models/operations/GetAllMediaLibraryHasThumbnail.md - docs/models/operations/GetAllMediaLibraryImage.md - docs/models/operations/GetAllMediaLibraryLibraryOptimizedForStreaming.md @@ -520,12 +517,9 @@ generatedFiles: - docs/models/operations/GetLibraryItemsCountry.md - docs/models/operations/GetLibraryItemsDefaultDirection.md - docs/models/operations/GetLibraryItemsDirector.md - - docs/models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.md - - docs/models/operations/GetLibraryItemsEpisodeSort.md - docs/models/operations/GetLibraryItemsField.md - docs/models/operations/GetLibraryItemsFieldType.md - docs/models/operations/GetLibraryItemsFilter.md - - docs/models/operations/GetLibraryItemsFlattenSeasons.md - docs/models/operations/GetLibraryItemsGenre.md - docs/models/operations/GetLibraryItemsHasThumbnail.md - docs/models/operations/GetLibraryItemsImage.md @@ -542,9 +536,7 @@ generatedFiles: - docs/models/operations/GetLibraryItemsLocation.md - docs/models/operations/GetLibraryItemsMedia.md - docs/models/operations/GetLibraryItemsMediaContainer.md - - docs/models/operations/GetLibraryItemsMediaGuid.md - docs/models/operations/GetLibraryItemsMeta.md - - docs/models/operations/GetLibraryItemsMetaDataRating.md - docs/models/operations/GetLibraryItemsMetadata.md - docs/models/operations/GetLibraryItemsOperator.md - docs/models/operations/GetLibraryItemsOptimizedForStreaming.md @@ -555,7 +547,6 @@ generatedFiles: - docs/models/operations/GetLibraryItemsResponse.md - docs/models/operations/GetLibraryItemsResponseBody.md - docs/models/operations/GetLibraryItemsRole.md - - docs/models/operations/GetLibraryItemsShowOrdering.md - docs/models/operations/GetLibraryItemsSort.md - docs/models/operations/GetLibraryItemsStream.md - docs/models/operations/GetLibraryItemsType.md @@ -574,11 +565,14 @@ generatedFiles: - docs/models/operations/GetMediaMetaDataMetadata.md - docs/models/operations/GetMediaMetaDataOptimizedForStreaming.md - docs/models/operations/GetMediaMetaDataOptimizedForStreaming1.md + - docs/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.md - docs/models/operations/GetMediaMetaDataPart.md + - docs/models/operations/GetMediaMetaDataProducer.md - docs/models/operations/GetMediaMetaDataRequest.md - docs/models/operations/GetMediaMetaDataResponse.md - docs/models/operations/GetMediaMetaDataResponseBody.md - docs/models/operations/GetMediaMetaDataRole.md + - docs/models/operations/GetMediaMetaDataSimilar.md - docs/models/operations/GetMediaMetaDataStream.md - docs/models/operations/GetMediaMetaDataUltraBlurColors.md - docs/models/operations/GetMediaMetaDataWriter.md @@ -595,14 +589,6 @@ generatedFiles: - docs/models/operations/GetMetadataChildrenResponseBody.md - docs/models/operations/GetMyPlexAccountResponse.md - docs/models/operations/GetMyPlexAccountResponseBody.md - - docs/models/operations/GetOnDeckGuids.md - - docs/models/operations/GetOnDeckMedia.md - - docs/models/operations/GetOnDeckMediaContainer.md - - docs/models/operations/GetOnDeckMetadata.md - - docs/models/operations/GetOnDeckPart.md - - docs/models/operations/GetOnDeckResponse.md - - docs/models/operations/GetOnDeckResponseBody.md - - docs/models/operations/GetOnDeckStream.md - docs/models/operations/GetPinAuthPinContainer.md - docs/models/operations/GetPinRequest.md - docs/models/operations/GetPinResponse.md @@ -654,6 +640,8 @@ generatedFiles: - docs/models/operations/GetRecentlyAddedMediaContainer.md - docs/models/operations/GetRecentlyAddedMetadata.md - docs/models/operations/GetRecentlyAddedOperator.md + - docs/models/operations/GetRecentlyAddedOptimizedForStreaming.md + - docs/models/operations/GetRecentlyAddedOptimizedForStreaming1.md - docs/models/operations/GetRecentlyAddedRequest.md - docs/models/operations/GetRecentlyAddedResponse.md - docs/models/operations/GetRecentlyAddedResponseBody.md @@ -879,6 +867,7 @@ generatedFiles: - docs/models/operations/QueryParamOnlyTransient.md - docs/models/operations/QueryParamSmart.md - docs/models/operations/QueryParamType.md + - docs/models/operations/Rating.md - docs/models/operations/Ratings.md - docs/models/operations/Release.md - docs/models/operations/ResponseBody.md @@ -1103,10 +1092,6 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/errors/GetMyPlexAccountErrors.java - src/main/java/dev/plexapi/sdk/models/errors/GetMyPlexAccountServerErrors.java - src/main/java/dev/plexapi/sdk/models/errors/GetMyPlexAccountUnauthorized.java - - src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckBadRequest.java - - src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckErrors.java - - src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckLibraryErrors.java - - src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckUnauthorized.java - src/main/java/dev/plexapi/sdk/models/errors/GetPinBadRequest.java - src/main/java/dev/plexapi/sdk/models/errors/GetPinErrors.java - src/main/java/dev/plexapi/sdk/models/errors/GetPlaylistBadRequest.java @@ -1385,6 +1370,7 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryFieldType.java - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryFilter.java - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGenre.java + - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGuids.java - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryHasThumbnail.java - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryImage.java - src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryLibraryOptimizedForStreaming.java @@ -1493,12 +1479,9 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsCountry.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsDefaultDirection.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsDirector.java - - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.java - - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEpisodeSort.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsField.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsFieldType.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsFilter.java - - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsFlattenSeasons.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsGenre.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsHasThumbnail.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsImage.java @@ -1515,9 +1498,7 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsLocation.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMedia.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMediaContainer.java - - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMediaGuid.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMeta.java - - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetaDataRating.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetadata.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsOperator.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsOptimizedForStreaming.java @@ -1529,7 +1510,6 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsResponse.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsResponseBody.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsRole.java - - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsShowOrdering.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsSort.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsStream.java - src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsType.java @@ -1548,12 +1528,15 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMetadata.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreaming.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreaming1.java + - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataPart.java + - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataProducer.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataRequest.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataRequestBuilder.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataResponse.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataResponseBody.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataRole.java + - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataSimilar.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataStream.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataUltraBlurColors.java - src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataWriter.java @@ -1573,15 +1556,6 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetMyPlexAccountRequestBuilder.java - src/main/java/dev/plexapi/sdk/models/operations/GetMyPlexAccountResponse.java - src/main/java/dev/plexapi/sdk/models/operations/GetMyPlexAccountResponseBody.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckGuids.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMedia.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMediaContainer.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMetadata.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckPart.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckRequestBuilder.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponse.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponseBody.java - - src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckStream.java - src/main/java/dev/plexapi/sdk/models/operations/GetPinAuthPinContainer.java - src/main/java/dev/plexapi/sdk/models/operations/GetPinRequest.java - src/main/java/dev/plexapi/sdk/models/operations/GetPinRequestBuilder.java @@ -1638,6 +1612,8 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMediaContainer.java - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMetadata.java - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOperator.java + - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming.java + - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming1.java - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedRequest.java - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedRequestBuilder.java - src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedResponse.java @@ -1898,6 +1874,7 @@ generatedFiles: - src/main/java/dev/plexapi/sdk/models/operations/QueryParamOnlyTransient.java - src/main/java/dev/plexapi/sdk/models/operations/QueryParamSmart.java - src/main/java/dev/plexapi/sdk/models/operations/QueryParamType.java + - src/main/java/dev/plexapi/sdk/models/operations/Rating.java - src/main/java/dev/plexapi/sdk/models/operations/Ratings.java - src/main/java/dev/plexapi/sdk/models/operations/Release.java - src/main/java/dev/plexapi/sdk/models/operations/ResponseBody.java @@ -2376,7 +2353,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: @@ -3080,7 +3057,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": @@ -3101,7 +3078,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 b62f23b4..21ec7269 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -15,7 +15,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: false java: - version: 0.13.0 + version: 0.13.1 additionalDependencies: [] additionalPlugins: [] artifactID: plexapi diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 16c7024f..bf3806b9 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 @@ -8,19 +8,19 @@ sources: - latest plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:bf7001af017ce5072c503bfbaf60793f94549163b517489dc53e4f7b685659c0 - sourceBlobDigest: sha256:ed2b29043c84f32d2efa92a126083fd9a81644a7ce9c6ac86d9aeb3493cbd6f8 + sourceRevisionDigest: sha256:2066ba94b55e21d651c79003e3cf402fb77c52a0969fc52310b3383fbed038f4 + sourceBlobDigest: sha256:1737023e29cd9cf36c07ccd8c8c48c47e14f47ce22b4d6ba9ee241afbbd8f351 tags: - latest - - speakeasy-sdk-regen-1741307253 + - speakeasy-sdk-regen-1741479884 targets: plexjava: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:bf7001af017ce5072c503bfbaf60793f94549163b517489dc53e4f7b685659c0 - sourceBlobDigest: sha256:ed2b29043c84f32d2efa92a126083fd9a81644a7ce9c6ac86d9aeb3493cbd6f8 + sourceRevisionDigest: sha256:2066ba94b55e21d651c79003e3cf402fb77c52a0969fc52310b3383fbed038f4 + sourceBlobDigest: sha256:1737023e29cd9cf36c07ccd8c8c48c47e14f47ce22b4d6ba9ee241afbbd8f351 codeSamplesNamespace: code-samples-java-plexjava - codeSamplesRevisionDigest: sha256:867c2c5221857129302871ef35dc9c448a467474c29768830e2d291749d164c1 + codeSamplesRevisionDigest: sha256:4064f5ad7cfcedb8f9c65f1154bc2cdf5c92ebf8c60ba752d5537bb5692305e7 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index b51166e8..6296be00 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ The samples below show how a published SDK artifact is used: Gradle: ```groovy -implementation 'dev.plexapi:plexapi:0.13.0' +implementation 'dev.plexapi:plexapi:0.13.1' ``` Maven: @@ -77,7 +77,7 @@ Maven: dev.plexapi plexapi - 0.13.0 + 0.13.1 ``` @@ -179,7 +179,6 @@ public class Application { * [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 a7a0d99a..a0d83153 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -268,4 +268,14 @@ Based on: ### Generated - [java v0.13.0] . ### Releases -- [Maven Central v0.13.0] https://central.sonatype.com/artifact/dev.plexapi/plexapi/0.13.0 - . \ No newline at end of file +- [Maven Central v0.13.0] https://central.sonatype.com/artifact/dev.plexapi/plexapi/0.13.0 - . + +## 2025-03-09 00:24:27 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.513.4 (2.545.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [java v0.13.1] . +### Releases +- [Maven Central v0.13.1] https://central.sonatype.com/artifact/dev.plexapi/plexapi/0.13.1 - . \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2a4374f6..51df87c2 100644 --- a/build.gradle +++ b/build.gradle @@ -63,7 +63,7 @@ tasks.withType(Javadoc) { } group = "dev.plexapi" -version = "0.13.0" +version = "0.13.1" sourcesJar { archiveBaseName = "plexapi" @@ -101,7 +101,7 @@ publishing { maven(MavenPublication) { groupId = 'dev.plexapi' artifactId = 'plexapi' - version = '0.13.0' + version = '0.13.1' from components.java diff --git a/codeSamples.yaml b/codeSamples.yaml index 124660f4..71e028db 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -1000,36 +1000,6 @@ actions: } } } - - target: $["paths"]["/library/onDeck"]["get"] - update: - x-codeSamples: - - lang: java - label: getOnDeck - source: |- - package hello.world; - - import dev.plexapi.plexapi.PlexAPI; - import dev.plexapi.plexapi.models.errors.GetOnDeckBadRequest; - import dev.plexapi.plexapi.models.errors.GetOnDeckUnauthorized; - import dev.plexapi.plexapi.models.operations.GetOnDeckResponse; - import java.lang.Exception; - - public class Application { - - public static void main(String[] args) throws GetOnDeckBadRequest, GetOnDeckUnauthorized, Exception { - - PlexAPI sdk = PlexAPI.builder() - .accessToken("") - .build(); - - GetOnDeckResponse res = sdk.library().getOnDeck() - .call(); - - if (res.object().isPresent()) { - // handle response - } - } - } - target: $["paths"]["/library/recentlyAdded"]["get"] update: x-codeSamples: diff --git a/docs/models/errors/GetOnDeckBadRequest.md b/docs/models/errors/GetOnDeckBadRequest.md deleted file mode 100644 index 869434c6..00000000 --- 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` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :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 ff02cff1..00000000 --- a/docs/models/errors/GetOnDeckErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional\* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional\* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional\* | :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 29114a4c..00000000 --- a/docs/models/errors/GetOnDeckLibraryErrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional\* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional\* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional\* | :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 088d66bd..00000000 --- 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` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/Collection.md b/docs/models/operations/Collection.md index 0a57ea72..2966fa47 100644 --- a/docs/models/operations/Collection.md +++ b/docs/models/operations/Collection.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `tag` | *Optional\* | :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/operations/Country.md b/docs/models/operations/Country.md index b09b1e8d..c1c85739 100644 --- a/docs/models/operations/Country.md +++ b/docs/models/operations/Country.md @@ -1,8 +1,12 @@ # Country +The filter query string for country media items. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `tag` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | N/A | country=19 | \ No newline at end of file diff --git a/docs/models/operations/Director.md b/docs/models/operations/Director.md index b446561a..151f575d 100644 --- a/docs/models/operations/Director.md +++ b/docs/models/operations/Director.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `tag` | *Optional\* | :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/operations/Genre.md b/docs/models/operations/Genre.md index db0e5b16..69d2d297 100644 --- a/docs/models/operations/Genre.md +++ b/docs/models/operations/Genre.md @@ -1,8 +1,12 @@ # Genre +The filter query string for similar items. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `tag` | *Optional\* | :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/operations/GetAllMediaLibraryGenre.md b/docs/models/operations/GetAllMediaLibraryGenre.md index f85fb6a2..574bd588 100644 --- a/docs/models/operations/GetAllMediaLibraryGenre.md +++ b/docs/models/operations/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/operations/GetAllMediaLibraryGuids.md b/docs/models/operations/GetAllMediaLibraryGuids.md new file mode 100644 index 00000000..12e35011 --- /dev/null +++ b/docs/models/operations/GetAllMediaLibraryGuids.md @@ -0,0 +1,8 @@ +# GetAllMediaLibraryGuids + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `id` | *Optional\* | :heavy_minus_sign: | The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337
| tvdb://2337 | \ No newline at end of file diff --git a/docs/models/operations/GetAllMediaLibraryMedia.md b/docs/models/operations/GetAllMediaLibraryMedia.md index 91995676..d403e15a 100644 --- a/docs/models/operations/GetAllMediaLibraryMedia.md +++ b/docs/models/operations/GetAllMediaLibraryMedia.md @@ -19,8 +19,8 @@ | `container` | *Optional\* | :heavy_minus_sign: | File container type. | mkv | | `videoFrameRate` | *Optional\* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | | `videoProfile` | *Optional\* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `hasVoiceActivity` | *boolean* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | +| `hasVoiceActivity` | *Optional\* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | | `audioProfile` | *Optional\* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | | `optimizedForStreaming` | [Optional\](../../models/operations/GetAllMediaLibraryOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | | `has64bitOffsets` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `part` | List\<[GetAllMediaLibraryPart](../../models/operations/GetAllMediaLibraryPart.md)> | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file +| `part` | List\<[GetAllMediaLibraryPart](../../models/operations/GetAllMediaLibraryPart.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/GetAllMediaLibraryMetadata.md b/docs/models/operations/GetAllMediaLibraryMetadata.md index a2069bd4..9314b09f 100644 --- a/docs/models/operations/GetAllMediaLibraryMetadata.md +++ b/docs/models/operations/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` | *Optional\* | :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/operations/GetAllMediaLibraryDirector.md)> | :heavy_minus_sign: | N/A | | | `writer` | List\<[GetAllMediaLibraryWriter](../../models/operations/GetAllMediaLibraryWriter.md)> | :heavy_minus_sign: | N/A | | | `role` | List\<[GetAllMediaLibraryRole](../../models/operations/GetAllMediaLibraryRole.md)> | :heavy_minus_sign: | N/A | | -| `guids` | List\<[Guids](../../models/operations/Guids.md)> | :heavy_minus_sign: | N/A | | +| `guids` | List\<[GetAllMediaLibraryGuids](../../models/operations/GetAllMediaLibraryGuids.md)> | :heavy_minus_sign: | N/A | | | `collection` | List\<[GetAllMediaLibraryCollection](../../models/operations/GetAllMediaLibraryCollection.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/GetAllMediaLibraryRole.md b/docs/models/operations/GetAllMediaLibraryRole.md index 8d17f2a5..967a66af 100644 --- a/docs/models/operations/GetAllMediaLibraryRole.md +++ b/docs/models/operations/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/operations/GetAllMediaLibraryStream.md b/docs/models/operations/GetAllMediaLibraryStream.md index 9f010ef7..4975b045 100644 --- a/docs/models/operations/GetAllMediaLibraryStream.md +++ b/docs/models/operations/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` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *Optional\* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *Optional\* | :heavy_minus_sign: | ISO language code. | eng | | `headerCompression` | *Optional\* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `doviblCompatID` | *Optional\* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `doviblPresent` | *Optional\* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | @@ -28,6 +28,7 @@ | `chromaSubsampling` | *Optional\* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | | `codedHeight` | *Optional\* | :heavy_minus_sign: | Coded video height. | 1608 | | `codedWidth` | *Optional\* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *Optional\* | :heavy_minus_sign: | N/A | true | | `colorPrimaries` | *Optional\* | :heavy_minus_sign: | Color primaries used. | bt2020 | | `colorRange` | *Optional\* | :heavy_minus_sign: | Color range (e.g., tv). | tv | | `colorSpace` | *Optional\* | :heavy_minus_sign: | Color space. | bt2020nc | @@ -39,6 +40,7 @@ | `hasScalingMatrix` | *Optional\* | :heavy_minus_sign: | N/A | false | | `profile` | *Optional\* | :heavy_minus_sign: | Video profile. | main 10 | | `scanType` | *Optional\* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *Optional\* | :heavy_minus_sign: | N/A | progressive | | `refFrames` | *Optional\* | :heavy_minus_sign: | Number of reference frames. | 1 | | `width` | *Optional\* | :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/operations/GetAllMediaLibraryWriter.md b/docs/models/operations/GetAllMediaLibraryWriter.md index 5bda09a1..86b344ee 100644 --- a/docs/models/operations/GetAllMediaLibraryWriter.md +++ b/docs/models/operations/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/operations/GetLibraryItemsEnableCreditsMarkerGeneration.md b/docs/models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.md deleted file mode 100644 index 5fa5c365..00000000 --- a/docs/models/operations/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/operations/GetLibraryItemsEpisodeSort.md b/docs/models/operations/GetLibraryItemsEpisodeSort.md deleted file mode 100644 index 54989911..00000000 --- a/docs/models/operations/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/operations/GetLibraryItemsFlattenSeasons.md b/docs/models/operations/GetLibraryItemsFlattenSeasons.md deleted file mode 100644 index 534d4499..00000000 --- a/docs/models/operations/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/operations/GetLibraryItemsMediaGuid.md b/docs/models/operations/GetLibraryItemsMediaGuid.md deleted file mode 100644 index 9095284d..00000000 --- a/docs/models/operations/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/operations/GetLibraryItemsMetaDataRating.md b/docs/models/operations/GetLibraryItemsMetaDataRating.md deleted file mode 100644 index 74528639..00000000 --- a/docs/models/operations/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/operations/GetLibraryItemsMetadata.md b/docs/models/operations/GetLibraryItemsMetadata.md index 4b2e4f78..04fe9dc4 100644 --- a/docs/models/operations/GetLibraryItemsMetadata.md +++ b/docs/models/operations/GetLibraryItemsMetadata.md @@ -23,10 +23,10 @@ | `year` | *Optional\* | :heavy_minus_sign: | N/A | 2022 | | `seasonCount` | *Optional\* | :heavy_minus_sign: | N/A | 2022 | | `tagline` | *Optional\* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `flattenSeasons` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | -| `showOrdering` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/EnableCreditsMarkerGeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | +| `showOrdering` | [Optional\](../../models/operations/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` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | | `art` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | | `banner` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | @@ -55,9 +55,9 @@ | `collection` | List\<[GetLibraryItemsCollection](../../models/operations/GetLibraryItemsCollection.md)> | :heavy_minus_sign: | N/A | | | `role` | List\<[GetLibraryItemsRole](../../models/operations/GetLibraryItemsRole.md)> | :heavy_minus_sign: | N/A | | | `location` | List\<[GetLibraryItemsLocation](../../models/operations/GetLibraryItemsLocation.md)> | :heavy_minus_sign: | N/A | | -| `mediaGuid` | List\<[GetLibraryItemsMediaGuid](../../models/operations/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/operations/MediaGuid.md)> | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | | `ultraBlurColors` | [Optional\](../../models/operations/GetLibraryItemsUltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `metaDataRating` | List\<[GetLibraryItemsMetaDataRating](../../models/operations/GetLibraryItemsMetaDataRating.md)> | :heavy_minus_sign: | N/A | | +| `metaDataRating` | List\<[MetaDataRating](../../models/operations/MetaDataRating.md)> | :heavy_minus_sign: | N/A | | | `image` | List\<[GetLibraryItemsImage](../../models/operations/GetLibraryItemsImage.md)> | :heavy_minus_sign: | N/A | | | `titleSort` | *Optional\* | :heavy_minus_sign: | N/A | Whale | | `viewCount` | *Optional\* | :heavy_minus_sign: | N/A | 1 | diff --git a/docs/models/operations/GetLibraryItemsShowOrdering.md b/docs/models/operations/GetLibraryItemsShowOrdering.md deleted file mode 100644 index b7967f8d..00000000 --- a/docs/models/operations/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/operations/GetMediaMetaDataMedia.md b/docs/models/operations/GetMediaMetaDataMedia.md index 95a1e721..6ab5bb91 100644 --- a/docs/models/operations/GetMediaMetaDataMedia.md +++ b/docs/models/operations/GetMediaMetaDataMedia.md @@ -19,8 +19,8 @@ | `container` | *Optional\* | :heavy_minus_sign: | File container type. | mkv | | `videoFrameRate` | *Optional\* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | | `videoProfile` | *Optional\* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `hasVoiceActivity` | *boolean* | :heavy_check_mark: | Indicates whether voice activity is detected. | false | +| `hasVoiceActivity` | *Optional\* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | | `audioProfile` | *Optional\* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | | `optimizedForStreaming` | [Optional\](../../models/operations/GetMediaMetaDataOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | | `has64bitOffsets` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `part` | List\<[GetMediaMetaDataPart](../../models/operations/GetMediaMetaDataPart.md)> | :heavy_check_mark: | An array of parts for this media item. | | \ No newline at end of file +| `part` | List\<[GetMediaMetaDataPart](../../models/operations/GetMediaMetaDataPart.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/GetMediaMetaDataMetadata.md b/docs/models/operations/GetMediaMetaDataMetadata.md index c65b82b4..7d7e12a9 100644 --- a/docs/models/operations/GetMediaMetaDataMetadata.md +++ b/docs/models/operations/GetMediaMetaDataMetadata.md @@ -63,6 +63,6 @@ | `role` | List\<[GetMediaMetaDataRole](../../models/operations/GetMediaMetaDataRole.md)> | :heavy_minus_sign: | An array of Actor roles. | | | `director` | List\<[GetMediaMetaDataDirector](../../models/operations/GetMediaMetaDataDirector.md)> | :heavy_minus_sign: | An array of Director roles. | | | `writer` | List\<[GetMediaMetaDataWriter](../../models/operations/GetMediaMetaDataWriter.md)> | :heavy_minus_sign: | An array of Writer roles. | | -| `producer` | List\<[Producer](../../models/operations/Producer.md)> | :heavy_minus_sign: | An array of Writer roles. | | -| `similar` | List\<[Similar](../../models/operations/Similar.md)> | :heavy_minus_sign: | An array of similar content objects. | | +| `producer` | List\<[GetMediaMetaDataProducer](../../models/operations/GetMediaMetaDataProducer.md)> | :heavy_minus_sign: | An array of Writer roles. | | +| `similar` | List\<[GetMediaMetaDataSimilar](../../models/operations/GetMediaMetaDataSimilar.md)> | :heavy_minus_sign: | An array of similar content objects. | | | `location` | List\<[GetMediaMetaDataLocation](../../models/operations/GetMediaMetaDataLocation.md)> | :heavy_minus_sign: | An array of location objects. | | \ No newline at end of file diff --git a/docs/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.md b/docs/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.md new file mode 100644 index 00000000..82871591 --- /dev/null +++ b/docs/models/operations/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/operations/GetMediaMetaDataProducer.md b/docs/models/operations/GetMediaMetaDataProducer.md new file mode 100644 index 00000000..cd10ffe6 --- /dev/null +++ b/docs/models/operations/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` | *Optional\* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | +| `thumb` | *Optional\* | :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/operations/GetMediaMetaDataSimilar.md b/docs/models/operations/GetMediaMetaDataSimilar.md new file mode 100644 index 00000000..8ca229d0 --- /dev/null +++ b/docs/models/operations/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/operations/GetMediaMetaDataStream.md b/docs/models/operations/GetMediaMetaDataStream.md index 88362813..8297211c 100644 --- a/docs/models/operations/GetMediaMetaDataStream.md +++ b/docs/models/operations/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` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *Optional\* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *Optional\* | :heavy_minus_sign: | ISO language code. | eng | | `headerCompression` | *Optional\* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | | `doviblCompatID` | *Optional\* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | | `doviblPresent` | *Optional\* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | @@ -28,6 +28,7 @@ | `chromaSubsampling` | *Optional\* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | | `codedHeight` | *Optional\* | :heavy_minus_sign: | Coded video height. | 1608 | | `codedWidth` | *Optional\* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *Optional\* | :heavy_minus_sign: | N/A | true | | `colorPrimaries` | *Optional\* | :heavy_minus_sign: | Color primaries used. | bt2020 | | `colorRange` | *Optional\* | :heavy_minus_sign: | Color range (e.g., tv). | tv | | `colorSpace` | *Optional\* | :heavy_minus_sign: | Color space. | bt2020nc | @@ -39,6 +40,7 @@ | `hasScalingMatrix` | *Optional\* | :heavy_minus_sign: | N/A | false | | `profile` | *Optional\* | :heavy_minus_sign: | Video profile. | main 10 | | `scanType` | *Optional\* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *Optional\* | :heavy_minus_sign: | N/A | progressive | | `refFrames` | *Optional\* | :heavy_minus_sign: | Number of reference frames. | 1 | | `width` | *Optional\* | :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/operations/GetOnDeckGuids.md b/docs/models/operations/GetOnDeckGuids.md deleted file mode 100644 index df38d346..00000000 --- a/docs/models/operations/GetOnDeckGuids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetOnDeckGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `id` | *Optional\* | :heavy_minus_sign: | N/A | imdb://tt13303712 | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckMedia.md b/docs/models/operations/GetOnDeckMedia.md deleted file mode 100644 index d57aa73d..00000000 --- a/docs/models/operations/GetOnDeckMedia.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetOnDeckMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `id` | *Optional\* | :heavy_minus_sign: | N/A | 80994 | -| `duration` | *Optional\* | :heavy_minus_sign: | N/A | 420080 | -| `bitrate` | *Optional\* | :heavy_minus_sign: | N/A | 1046 | -| `width` | *Optional\* | :heavy_minus_sign: | N/A | 1920 | -| `height` | *Optional\* | :heavy_minus_sign: | N/A | 1080 | -| `aspectRatio` | *Optional\* | :heavy_minus_sign: | N/A | 1.78 | -| `audioChannels` | *Optional\* | :heavy_minus_sign: | N/A | 2 | -| `audioCodec` | *Optional\* | :heavy_minus_sign: | N/A | aac | -| `videoCodec` | *Optional\* | :heavy_minus_sign: | N/A | hevc | -| `videoResolution` | *Optional\* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional\* | :heavy_minus_sign: | N/A | mkv | -| `videoFrameRate` | *Optional\* | :heavy_minus_sign: | N/A | PAL | -| `audioProfile` | *Optional\* | :heavy_minus_sign: | N/A | lc | -| `videoProfile` | *Optional\* | :heavy_minus_sign: | N/A | main | -| `part` | List\<[GetOnDeckPart](../../models/operations/GetOnDeckPart.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckMediaContainer.md b/docs/models/operations/GetOnDeckMediaContainer.md deleted file mode 100644 index 6471453c..00000000 --- a/docs/models/operations/GetOnDeckMediaContainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetOnDeckMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `size` | *Optional\* | :heavy_minus_sign: | N/A | 16 | -| `allowSync` | *Optional\* | :heavy_minus_sign: | N/A | | -| `identifier` | *Optional\* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `mediaTagPrefix` | *Optional\* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `mediaTagVersion` | *Optional\* | :heavy_minus_sign: | N/A | 1680021154 | -| `mixedParents` | *Optional\* | :heavy_minus_sign: | N/A | | -| `metadata` | List\<[GetOnDeckMetadata](../../models/operations/GetOnDeckMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckMetadata.md b/docs/models/operations/GetOnDeckMetadata.md deleted file mode 100644 index f71ef470..00000000 --- a/docs/models/operations/GetOnDeckMetadata.md +++ /dev/null @@ -1,43 +0,0 @@ -# GetOnDeckMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allowSync` | *Optional\* | :heavy_minus_sign: | N/A | | -| `librarySectionID` | *Optional\* | :heavy_minus_sign: | N/A | 2 | -| `librarySectionTitle` | *Optional\* | :heavy_minus_sign: | N/A | TV Shows | -| `librarySectionUUID` | *Optional\* | :heavy_minus_sign: | N/A | 4bb2521c-8ba9-459b-aaee-8ab8bc35eabd | -| `ratingKey` | *Optional\* | :heavy_minus_sign: | N/A | 49564 | -| `key` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49564 | -| `parentRatingKey` | *Optional\* | :heavy_minus_sign: | N/A | 49557 | -| `grandparentRatingKey` | *Optional\* | :heavy_minus_sign: | N/A | 49556 | -| `guid` | *Optional\* | :heavy_minus_sign: | N/A | plex://episode/5ea7d7402e7ab10042e74d4f | -| `parentGuid` | *Optional\* | :heavy_minus_sign: | N/A | plex://season/602e754d67f4c8002ce54b3d | -| `grandparentGuid` | *Optional\* | :heavy_minus_sign: | N/A | plex://show/5d9c090e705e7a001e6e94d8 | -| `type` | *Optional\* | :heavy_minus_sign: | N/A | episode | -| `title` | *Optional\* | :heavy_minus_sign: | N/A | Circus | -| `grandparentKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49556 | -| `parentKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49557 | -| `librarySectionKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/sections/2 | -| `grandparentTitle` | *Optional\* | :heavy_minus_sign: | N/A | Bluey (2018) | -| `parentTitle` | *Optional\* | :heavy_minus_sign: | N/A | Season 2 | -| `contentRating` | *Optional\* | :heavy_minus_sign: | N/A | TV-Y | -| `summary` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | N/A | 33 | -| `parentIndex` | *Optional\* | :heavy_minus_sign: | N/A | 2 | -| `lastViewedAt` | *Optional\* | :heavy_minus_sign: | N/A | 1681908352 | -| `year` | *Optional\* | :heavy_minus_sign: | N/A | 2018 | -| `thumb` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49564/thumb/1654258204 | -| `art` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | -| `parentThumb` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49557/thumb/1654258204 | -| `grandparentThumb` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49556/thumb/1680939546 | -| `grandparentArt` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49556/art/1680939546 | -| `grandparentTheme` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/49556/theme/1680939546 | -| `duration` | *Optional\* | :heavy_minus_sign: | N/A | 420080 | -| `originallyAvailableAt` | [OffsetDateTime](https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html) | :heavy_minus_sign: | N/A | 2020-10-31 00:00:00 +0000 UTC | -| `addedAt` | *Optional\* | :heavy_minus_sign: | N/A | 1654258196 | -| `updatedAt` | *Optional\* | :heavy_minus_sign: | N/A | 1654258204 | -| `media` | List\<[GetOnDeckMedia](../../models/operations/GetOnDeckMedia.md)> | :heavy_minus_sign: | N/A | | -| `guids` | List\<[GetOnDeckGuids](../../models/operations/GetOnDeckGuids.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckPart.md b/docs/models/operations/GetOnDeckPart.md deleted file mode 100644 index be95d75b..00000000 --- a/docs/models/operations/GetOnDeckPart.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetOnDeckPart - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *Optional\* | :heavy_minus_sign: | N/A | 80994 | -| `key` | *Optional\* | :heavy_minus_sign: | N/A | /library/parts/80994/1655007810/file.mkv | -| `duration` | *Optional\* | :heavy_minus_sign: | N/A | 420080 | -| `file` | *Optional\* | :heavy_minus_sign: | N/A | /tvshows/Bluey (2018)/Bluey (2018) - S02E33 - Circus.mkv | -| `size` | *Optional\* | :heavy_minus_sign: | N/A | 55148931 | -| `audioProfile` | *Optional\* | :heavy_minus_sign: | N/A | lc | -| `container` | *Optional\* | :heavy_minus_sign: | N/A | mkv | -| `videoProfile` | *Optional\* | :heavy_minus_sign: | N/A | main | -| `stream` | List\<[GetOnDeckStream](../../models/operations/GetOnDeckStream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckResponse.md b/docs/models/operations/GetOnDeckResponse.md deleted file mode 100644 index 409dd5d0..00000000 --- a/docs/models/operations/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` | [HttpResponse\](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.html) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional\](../../models/operations/GetOnDeckResponseBody.md) | :heavy_minus_sign: | The on Deck content | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckResponseBody.md b/docs/models/operations/GetOnDeckResponseBody.md deleted file mode 100644 index 2cf54688..00000000 --- a/docs/models/operations/GetOnDeckResponseBody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetOnDeckResponseBody - -The on Deck content - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `mediaContainer` | [Optional\](../../models/operations/GetOnDeckMediaContainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/GetOnDeckStream.md b/docs/models/operations/GetOnDeckStream.md deleted file mode 100644 index e5687868..00000000 --- a/docs/models/operations/GetOnDeckStream.md +++ /dev/null @@ -1,30 +0,0 @@ -# GetOnDeckStream - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `id` | *Optional\* | :heavy_minus_sign: | N/A | 211234 | -| `streamType` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `default_` | *Optional\* | :heavy_minus_sign: | N/A | | -| `codec` | *Optional\* | :heavy_minus_sign: | N/A | hevc | -| `index` | *Optional\* | :heavy_minus_sign: | N/A | 0 | -| `bitrate` | *Optional\* | :heavy_minus_sign: | N/A | 918 | -| `language` | *Optional\* | :heavy_minus_sign: | N/A | English | -| `languageTag` | *Optional\* | :heavy_minus_sign: | N/A | en | -| `languageCode` | *Optional\* | :heavy_minus_sign: | N/A | eng | -| `bitDepth` | *Optional\* | :heavy_minus_sign: | N/A | 8 | -| `chromaLocation` | *Optional\* | :heavy_minus_sign: | N/A | left | -| `chromaSubsampling` | *Optional\* | :heavy_minus_sign: | N/A | 4:2:0 | -| `codedHeight` | *Optional\* | :heavy_minus_sign: | N/A | 1080 | -| `codedWidth` | *Optional\* | :heavy_minus_sign: | N/A | 1920 | -| `colorRange` | *Optional\* | :heavy_minus_sign: | N/A | tv | -| `frameRate` | *Optional\* | :heavy_minus_sign: | N/A | 25 | -| `height` | *Optional\* | :heavy_minus_sign: | N/A | 1080 | -| `level` | *Optional\* | :heavy_minus_sign: | N/A | 120 | -| `profile` | *Optional\* | :heavy_minus_sign: | N/A | main | -| `refFrames` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `width` | *Optional\* | :heavy_minus_sign: | N/A | 1920 | -| `displayTitle` | *Optional\* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | -| `extendedDisplayTitle` | *Optional\* | :heavy_minus_sign: | N/A | 1080p (HEVC Main) | \ No newline at end of file diff --git a/docs/models/operations/GetRecentlyAddedMediaContainer.md b/docs/models/operations/GetRecentlyAddedMediaContainer.md index e64948b7..f2a779b0 100644 --- a/docs/models/operations/GetRecentlyAddedMediaContainer.md +++ b/docs/models/operations/GetRecentlyAddedMediaContainer.md @@ -5,10 +5,10 @@ | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `size` | *long* | :heavy_check_mark: | N/A | 50 | -| `offset` | *Optional\* | :heavy_minus_sign: | N/A | | -| `totalSize` | *Optional\* | :heavy_minus_sign: | N/A | | -| `identifier` | *Optional\* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `allowSync` | *Optional\* | :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` | *boolean* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | +| `identifier` | *String* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | | `meta` | [Optional\](../../models/operations/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/operations/GetRecentlyAddedMetadata.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `metadata` | List\<[GetRecentlyAddedMetadata](../../models/operations/GetRecentlyAddedMetadata.md)> | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/GetRecentlyAddedMetadata.md b/docs/models/operations/GetRecentlyAddedMetadata.md index 0f001dd7..cdde6a5d 100644 --- a/docs/models/operations/GetRecentlyAddedMetadata.md +++ b/docs/models/operations/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` | *Optional\* | :heavy_minus_sign: | N/A | 20th Century Studios | -| `skipChildren` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `librarySectionID` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `librarySectionTitle` | *Optional\* | :heavy_minus_sign: | N/A | Movies | -| `librarySectionKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `type` | [GetRecentlyAddedHubsType](../../models/operations/GetRecentlyAddedHubsType.md) | :heavy_check_mark: | The type of media content
| movie | -| `title` | *String* | :heavy_check_mark: | N/A | Avatar: The Way of Water | -| `slug` | *Optional\* | :heavy_minus_sign: | N/A | 4-for-texas | -| `contentRating` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | N/A | 7.6 | -| `audienceRating` | *Optional\* | :heavy_minus_sign: | N/A | 9.2 | -| `year` | *Optional\* | :heavy_minus_sign: | N/A | 2022 | -| `seasonCount` | *Optional\* | :heavy_minus_sign: | N/A | 2022 | -| `tagline` | *Optional\* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `flattenSeasons` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/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` | [Optional\](../../models/operations/EnableCreditsMarkerGeneration.md) | :heavy_minus_sign: | Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). | -1 | -| `showOrdering` | [Optional\](../../models/operations/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` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | -| `art` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | -| `banner` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | -| `duration` | *Optional\* | :heavy_minus_sign: | N/A | 11558112 | -| `originallyAvailableAt` | [LocalDate](https://docs.oracle.com/javase/8/docs/api/java/time/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` | *Optional\* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `audienceRatingImage` | *Optional\* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `chapterSource` | *Optional\* | :heavy_minus_sign: | N/A | media | -| `primaryExtraKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/58684 | -| `ratingImage` | *Optional\* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `grandparentRatingKey` | *Optional\* | :heavy_minus_sign: | N/A | 66 | -| `grandparentGuid` | *Optional\* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparentKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/66 | -| `grandparentTitle` | *Optional\* | :heavy_minus_sign: | N/A | Caprica | -| `grandparentThumb` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | -| `parentSlug` | *Optional\* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | -| `grandparentSlug` | *Optional\* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | -| `grandparentArt` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/66/art/1705716261 | -| `grandparentTheme` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | -| `media` | List\<[Media](../../models/operations/Media.md)> | :heavy_minus_sign: | The Media object is only included when type query is `4` or higher.
| | -| `genre` | List\<[Genre](../../models/operations/Genre.md)> | :heavy_minus_sign: | N/A | | -| `country` | List\<[Country](../../models/operations/Country.md)> | :heavy_minus_sign: | N/A | | -| `director` | List\<[Director](../../models/operations/Director.md)> | :heavy_minus_sign: | N/A | | -| `writer` | List\<[Writer](../../models/operations/Writer.md)> | :heavy_minus_sign: | N/A | | -| `collection` | List\<[Collection](../../models/operations/Collection.md)> | :heavy_minus_sign: | N/A | | -| `role` | List\<[Role](../../models/operations/Role.md)> | :heavy_minus_sign: | N/A | | -| `location` | List\<[Location](../../models/operations/Location.md)> | :heavy_minus_sign: | N/A | | -| `mediaGuid` | List\<[MediaGuid](../../models/operations/MediaGuid.md)> | :heavy_minus_sign: | The Guid object is only included in the response if the `includeGuids` parameter is set to `1`.
| | -| `ultraBlurColors` | [Optional\](../../models/operations/UltraBlurColors.md) | :heavy_minus_sign: | N/A | | -| `metaDataRating` | List\<[MetaDataRating](../../models/operations/MetaDataRating.md)> | :heavy_minus_sign: | N/A | | -| `image` | List\<[GetRecentlyAddedImage](../../models/operations/GetRecentlyAddedImage.md)> | :heavy_minus_sign: | N/A | | -| `titleSort` | *Optional\* | :heavy_minus_sign: | N/A | Whale | -| `viewCount` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `lastViewedAt` | *Optional\* | :heavy_minus_sign: | N/A | 1682752242 | -| `originalTitle` | *Optional\* | :heavy_minus_sign: | N/A | 映画 ブラッククローバー 魔法帝の剣 | -| `viewOffset` | *Optional\* | :heavy_minus_sign: | N/A | 5222500 | -| `skipCount` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `index` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `theme` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 | -| `leafCount` | *Optional\* | :heavy_minus_sign: | N/A | 14 | -| `viewedLeafCount` | *Optional\* | :heavy_minus_sign: | N/A | 0 | -| `childCount` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `hasPremiumExtras` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `hasPremiumPrimaryExtra` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `parentRatingKey` | *Optional\* | :heavy_minus_sign: | The rating key of the parent item.
| 66 | -| `parentGuid` | *Optional\* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | -| `parentStudio` | *Optional\* | :heavy_minus_sign: | N/A | UCP | -| `parentKey` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/66 | -| `parentTitle` | *Optional\* | :heavy_minus_sign: | N/A | Caprica | -| `parentIndex` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `parentYear` | *Optional\* | :heavy_minus_sign: | N/A | 2010 | -| `parentThumb` | *Optional\* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | -| `parentTheme` | *Optional\* | :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` | *Optional\* | :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` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | +| `createdAtAccuracy` | *Optional\* | :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` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | +| `grandparentGuid` | *Optional\* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparentKey` | *Optional\* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | +| `grandparentRatingKey` | *Optional\* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | +| `grandparentSlug` | *Optional\* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | +| `grandparentTheme` | *Optional\* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | +| `grandparentThumb` | *Optional\* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | +| `grandparentTitle` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | +| `lastViewedAt` | *Optional\* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | +| `leafCount` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | +| `originallyAvailableAt` | [LocalDate](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html) | :heavy_check_mark: | The original release date of the media item. | 2022-12-14 | +| `parentGuid` | *Optional\* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | +| `parentIndex` | *Optional\* | :heavy_minus_sign: | The index position of the parent media item. | 1 | +| `parentKey` | *Optional\* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | +| `parentRatingKey` | *Optional\* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | +| `parentSlug` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | +| `parentTitle` | *Optional\* | :heavy_minus_sign: | The title of the parent media item. | Caprica | +| `parentYear` | *Optional\* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | +| `primaryExtraKey` | *Optional\* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | +| `ratingImage` | *Optional\* | :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` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | +| `subtype` | *Optional\* | :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/operations/GetRecentlyAddedHubsType.md) | :heavy_check_mark: | N/A | movie | +| `updatedAt` | *Optional\* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `userRating` | *Optional\* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | +| `viewCount` | *Optional\* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | +| `viewOffset` | *Optional\* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | +| `viewedLeafCount` | *Optional\* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | +| `year` | *Optional\* | :heavy_minus_sign: | The release year of the media item. | 2022 | +| `image` | List\<[GetRecentlyAddedImage](../../models/operations/GetRecentlyAddedImage.md)> | :heavy_minus_sign: | N/A | | +| `ultraBlurColors` | [Optional\](../../models/operations/UltraBlurColors.md) | :heavy_minus_sign: | N/A | | +| `media` | List\<[Media](../../models/operations/Media.md)> | :heavy_minus_sign: | N/A | | +| `genre` | List\<[Genre](../../models/operations/Genre.md)> | :heavy_minus_sign: | N/A | | +| `country` | List\<[Country](../../models/operations/Country.md)> | :heavy_minus_sign: | N/A | | +| `director` | List\<[Director](../../models/operations/Director.md)> | :heavy_minus_sign: | N/A | | +| `writer` | List\<[Writer](../../models/operations/Writer.md)> | :heavy_minus_sign: | N/A | | +| `role` | List\<[Role](../../models/operations/Role.md)> | :heavy_minus_sign: | N/A | | +| `producer` | List\<[Producer](../../models/operations/Producer.md)> | :heavy_minus_sign: | N/A | | +| `rating1` | List\<[Rating](../../models/operations/Rating.md)> | :heavy_minus_sign: | N/A | | +| `similar` | List\<[Similar](../../models/operations/Similar.md)> | :heavy_minus_sign: | N/A | | +| `location` | List\<[Location](../../models/operations/Location.md)> | :heavy_minus_sign: | N/A | | +| `guids` | List\<[Guids](../../models/operations/Guids.md)> | :heavy_minus_sign: | N/A | | +| `collection` | List\<[Collection](../../models/operations/Collection.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/GetRecentlyAddedOptimizedForStreaming.md b/docs/models/operations/GetRecentlyAddedOptimizedForStreaming.md new file mode 100644 index 00000000..d9b438a0 --- /dev/null +++ b/docs/models/operations/GetRecentlyAddedOptimizedForStreaming.md @@ -0,0 +1,4 @@ +# GetRecentlyAddedOptimizedForStreaming + +Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + diff --git a/docs/models/operations/GetRecentlyAddedOptimizedForStreaming1.md b/docs/models/operations/GetRecentlyAddedOptimizedForStreaming1.md new file mode 100644 index 00000000..0f8e9535 --- /dev/null +++ b/docs/models/operations/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/operations/HasThumbnail.md b/docs/models/operations/HasThumbnail.md index a676daf8..7a4a122d 100644 --- a/docs/models/operations/HasThumbnail.md +++ b/docs/models/operations/HasThumbnail.md @@ -1,5 +1,7 @@ # HasThumbnail +Indicates if the part has a thumbnail. + ## Values diff --git a/docs/models/operations/Location.md b/docs/models/operations/Location.md index 9f6e86a5..af4b8ab8 100644 --- a/docs/models/operations/Location.md +++ b/docs/models/operations/Location.md @@ -1,8 +1,10 @@ # Location +The folder path for the media item. + ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `path` | *Optional\* | :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/operations/Media.md b/docs/models/operations/Media.md index c3e475b4..f3afe28f 100644 --- a/docs/models/operations/Media.md +++ b/docs/models/operations/Media.md @@ -5,21 +5,22 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `id` | *int* | :heavy_check_mark: | N/A | 119534 | -| `duration` | *Optional\* | :heavy_minus_sign: | N/A | 11558112 | -| `bitrate` | *Optional\* | :heavy_minus_sign: | N/A | 25025 | -| `width` | *Optional\* | :heavy_minus_sign: | N/A | 3840 | -| `height` | *Optional\* | :heavy_minus_sign: | N/A | 2072 | -| `aspectRatio` | *Optional\* | :heavy_minus_sign: | N/A | 1.85 | -| `audioProfile` | *Optional\* | :heavy_minus_sign: | N/A | dts | -| `audioChannels` | *Optional\* | :heavy_minus_sign: | N/A | 6 | -| `audioCodec` | *Optional\* | :heavy_minus_sign: | N/A | eac3 | -| `videoCodec` | *Optional\* | :heavy_minus_sign: | N/A | hevc | -| `videoResolution` | *Optional\* | :heavy_minus_sign: | N/A | 4k | -| `container` | *String* | :heavy_check_mark: | N/A | mkv | -| `videoFrameRate` | *Optional\* | :heavy_minus_sign: | N/A | 24p | -| `videoProfile` | *Optional\* | :heavy_minus_sign: | N/A | main 10 | -| `hasVoiceActivity` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `optimizedForStreaming` | [Optional\](../../models/operations/OptimizedForStreaming.md) | :heavy_minus_sign: | N/A | 1 | +| `id` | *long* | :heavy_check_mark: | Unique media identifier. | 387322 | +| `duration` | *Optional\* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | +| `bitrate` | *Optional\* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | +| `width` | *Optional\* | :heavy_minus_sign: | Video width in pixels. | 3840 | +| `height` | *Optional\* | :heavy_minus_sign: | Video height in pixels. | 1602 | +| `aspectRatio` | *Optional\* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | +| `audioChannels` | *Optional\* | :heavy_minus_sign: | Number of audio channels. | 6 | +| `displayOffset` | *Optional\* | :heavy_minus_sign: | N/A | 50 | +| `audioCodec` | *Optional\* | :heavy_minus_sign: | Audio codec used. | eac3 | +| `videoCodec` | *Optional\* | :heavy_minus_sign: | Video codec used. | hevc | +| `videoResolution` | *Optional\* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | +| `container` | *Optional\* | :heavy_minus_sign: | File container type. | mkv | +| `videoFrameRate` | *Optional\* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | +| `videoProfile` | *Optional\* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | +| `hasVoiceActivity` | *Optional\* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | +| `audioProfile` | *Optional\* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `optimizedForStreaming` | [Optional\](../../models/operations/OptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | | `has64bitOffsets` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `part` | List\<[Part](../../models/operations/Part.md)> | :heavy_check_mark: | N/A | | \ No newline at end of file +| `part` | List\<[Part](../../models/operations/Part.md)> | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/OptimizedForStreaming.md b/docs/models/operations/OptimizedForStreaming.md index 6485ce7f..f50065f1 100644 --- a/docs/models/operations/OptimizedForStreaming.md +++ b/docs/models/operations/OptimizedForStreaming.md @@ -1,9 +1,4 @@ # 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 diff --git a/docs/models/operations/Part.md b/docs/models/operations/Part.md index 9c676462..57c655e9 100644 --- a/docs/models/operations/Part.md +++ b/docs/models/operations/Part.md @@ -5,16 +5,19 @@ | 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` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | N/A | dts | -| `has64bitOffsets` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `optimizedForStreaming` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `videoProfile` | *Optional\* | :heavy_minus_sign: | N/A | main 10 | +| `accessible` | *Optional\* | :heavy_minus_sign: | Indicates if the part is accessible. | true | +| `exists` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | N/A | sd | +| `duration` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | N/A | 188 | +| `container` | *Optional\* | :heavy_minus_sign: | Container format of the part. | mkv | +| `videoProfile` | *Optional\* | :heavy_minus_sign: | Video profile for the part. | main 10 | +| `audioProfile` | *Optional\* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | +| `has64bitOffsets` | *Optional\* | :heavy_minus_sign: | N/A | false | +| `optimizedForStreaming` | [Optional\](../../models/operations/GetRecentlyAddedOptimizedForStreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | | `hasThumbnail` | [Optional\](../../models/operations/HasThumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `stream` | List\<[Stream](../../models/operations/Stream.md)> | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `stream` | List\<[Stream](../../models/operations/Stream.md)> | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/Producer.md b/docs/models/operations/Producer.md index 81b77f5e..0140e97f 100644 --- a/docs/models/operations/Producer.md +++ b/docs/models/operations/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` | *Optional\* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | A unique key associated with the producer's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `thumb` | *Optional\* | :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/operations/Rating.md b/docs/models/operations/Rating.md new file mode 100644 index 00000000..6086c732 --- /dev/null +++ b/docs/models/operations/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/operations/Role.md b/docs/models/operations/Role.md index f581ad96..e14588cb 100644 --- a/docs/models/operations/Role.md +++ b/docs/models/operations/Role.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *Optional\* | :heavy_minus_sign: | The ID of the tag or actor. | 294129 | -| `filter` | *Optional\* | :heavy_minus_sign: | The filter used to find the actor or tag. | actor=294129 | -| `thumb` | *Optional\* | :heavy_minus_sign: | The thumbnail of the actor | https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg | -| `tag` | *Optional\* | :heavy_minus_sign: | The name of the tag or actor. | Mike Smith | -| `tagKey` | *Optional\* | :heavy_minus_sign: | Unique identifier for the tag. | 668e7e7b22bcad9064350c91 | -| `role` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | A unique key associated with the actor's tag, used for internal identification. | 5d77683d85719b001f3a535e | +| `role` | *Optional\* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | +| `thumb` | *Optional\* | :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/operations/Similar.md b/docs/models/operations/Similar.md index f25759a2..b7673023 100644 --- a/docs/models/operations/Similar.md +++ b/docs/models/operations/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/operations/Stream.md b/docs/models/operations/Stream.md index 2554c056..96098ce1 100644 --- a/docs/models/operations/Stream.md +++ b/docs/models/operations/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_` | *Optional\* | :heavy_minus_sign: | Indicates if this is the default stream | true | -| `selected` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | The bitrate of the stream in kbps | 6273 | -| `colorPrimaries` | *Optional\* | :heavy_minus_sign: | The color primaries of the video stream | bt709 | -| `colorRange` | *Optional\* | :heavy_minus_sign: | The color range of the video stream | tv | -| `colorSpace` | *Optional\* | :heavy_minus_sign: | The color space of the video stream | bt709 | -| `colorTrc` | *Optional\* | :heavy_minus_sign: | The transfer characteristics (TRC) of the video stream | bt709 | -| `bitDepth` | *Optional\* | :heavy_minus_sign: | The bit depth of the video stream | 8 | -| `chromaLocation` | *Optional\* | :heavy_minus_sign: | The chroma location of the video stream | left | -| `streamIdentifier` | *Optional\* | :heavy_minus_sign: | The identifier of the video stream | 2 | -| `chromaSubsampling` | *Optional\* | :heavy_minus_sign: | The chroma subsampling format | 4:2:0 | -| `codedHeight` | *Optional\* | :heavy_minus_sign: | The coded height of the video stream | 1088 | -| `codedWidth` | *Optional\* | :heavy_minus_sign: | The coded width of the video stream | 1920 | -| `frameRate` | *Optional\* | :heavy_minus_sign: | The frame rate of the video stream | 29.97 | -| `hasScalingMatrix` | *Optional\* | :heavy_minus_sign: | Indicates if the stream has a scaling matrix | false | -| `hearingImpaired` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `closedCaptions` | *Optional\* | :heavy_minus_sign: | N/A | false | -| `embeddedInVideo` | *Optional\* | :heavy_minus_sign: | N/A | 1 | -| `height` | *Optional\* | :heavy_minus_sign: | The height of the video stream | 1080 | -| `level` | *Optional\* | :heavy_minus_sign: | The level of the video codec | 40 | -| `profile` | *Optional\* | :heavy_minus_sign: | The profile of the video codec | main | -| `refFrames` | *Optional\* | :heavy_minus_sign: | Number of reference frames | 4 | -| `scanType` | *Optional\* | :heavy_minus_sign: | The scan type (progressive or interlaced) | progressive | -| `width` | *Optional\* | :heavy_minus_sign: | The width of the video stream | 1920 | -| `displayTitle` | *Optional\* | :heavy_minus_sign: | Display title of the stream | 1080p (H.264) | -| `extendedDisplayTitle` | *Optional\* | :heavy_minus_sign: | Extended display title of the stream | 1080p (H.264) | -| `channels` | *Optional\* | :heavy_minus_sign: | Number of audio channels (for audio streams) | 2 | -| `language` | *Optional\* | :heavy_minus_sign: | The language of the stream (for audio/subtitle streams) | English | -| `languageTag` | *Optional\* | :heavy_minus_sign: | Language tag of the stream | en | -| `languageCode` | *Optional\* | :heavy_minus_sign: | Language code of the stream | eng | -| `audioChannelLayout` | *Optional\* | :heavy_minus_sign: | The audio channel layout | stereo | -| `samplingRate` | *Optional\* | :heavy_minus_sign: | Sampling rate of the audio stream in Hz | 48000 | -| `title` | *Optional\* | :heavy_minus_sign: | Title of the subtitle track (for subtitle streams) | English | -| `canAutoSync` | *Optional\* | :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_` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | +| `language` | *Optional\* | :heavy_minus_sign: | Language of the stream. | English | +| `languageTag` | *Optional\* | :heavy_minus_sign: | Language tag (e.g., en). | en | +| `languageCode` | *Optional\* | :heavy_minus_sign: | ISO language code. | eng | +| `headerCompression` | *Optional\* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | +| `doviblCompatID` | *Optional\* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | +| `doviblPresent` | *Optional\* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | +| `dovielPresent` | *Optional\* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | +| `doviLevel` | *Optional\* | :heavy_minus_sign: | Dolby Vision level. | 6 | +| `doviPresent` | *Optional\* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | +| `doviProfile` | *Optional\* | :heavy_minus_sign: | Dolby Vision profile. | 8 | +| `dovirpuPresent` | *Optional\* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | +| `doviVersion` | *Optional\* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | +| `bitDepth` | *Optional\* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | +| `chromaLocation` | *Optional\* | :heavy_minus_sign: | Chroma sample location. | topleft | +| `chromaSubsampling` | *Optional\* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | +| `codedHeight` | *Optional\* | :heavy_minus_sign: | Coded video height. | 1608 | +| `codedWidth` | *Optional\* | :heavy_minus_sign: | Coded video width. | 3840 | +| `closedCaptions` | *Optional\* | :heavy_minus_sign: | N/A | true | +| `colorPrimaries` | *Optional\* | :heavy_minus_sign: | Color primaries used. | bt2020 | +| `colorRange` | *Optional\* | :heavy_minus_sign: | Color range (e.g., tv). | tv | +| `colorSpace` | *Optional\* | :heavy_minus_sign: | Color space. | bt2020nc | +| `colorTrc` | *Optional\* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | +| `frameRate` | *Optional\* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | +| `height` | *Optional\* | :heavy_minus_sign: | Height of the video stream. | 1602 | +| `level` | *Optional\* | :heavy_minus_sign: | Video level. | 150 | +| `original` | *Optional\* | :heavy_minus_sign: | Indicates if this is the original stream. | true | +| `hasScalingMatrix` | *Optional\* | :heavy_minus_sign: | N/A | false | +| `profile` | *Optional\* | :heavy_minus_sign: | Video profile. | main 10 | +| `scanType` | *Optional\* | :heavy_minus_sign: | N/A | progressive | +| `embeddedInVideo` | *Optional\* | :heavy_minus_sign: | N/A | progressive | +| `refFrames` | *Optional\* | :heavy_minus_sign: | Number of reference frames. | 1 | +| `width` | *Optional\* | :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` | *Optional\* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | +| `forced` | *Optional\* | :heavy_minus_sign: | N/A | true | +| `channels` | *Optional\* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | +| `audioChannelLayout` | *Optional\* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | +| `samplingRate` | *Optional\* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | +| `canAutoSync` | *Optional\* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | +| `hearingImpaired` | *Optional\* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | +| `dub` | *Optional\* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | +| `title` | *Optional\* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/models/operations/Writer.md b/docs/models/operations/Writer.md index 51feb7c7..6033e4e5 100644 --- a/docs/models/operations/Writer.md +++ b/docs/models/operations/Writer.md @@ -3,6 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `tag` | *Optional\* | :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` | *Optional\* | :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 18cd531c..227aa718 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 @@ -1028,50 +1027,4 @@ public class Application { | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | | models/errors/GetTopWatchedContentBadRequest | 400 | application/json | | models/errors/GetTopWatchedContentUnauthorized | 401 | application/json | -| models/errors/SDKError | 4XX, 5XX | \*/\* | - -## getOnDeck - -This endpoint will return the on deck content. - - -### Example Usage - -```java -package hello.world; - -import dev.plexapi.sdk.PlexAPI; -import dev.plexapi.sdk.models.errors.GetOnDeckBadRequest; -import dev.plexapi.sdk.models.errors.GetOnDeckUnauthorized; -import dev.plexapi.sdk.models.operations.GetOnDeckResponse; -import java.lang.Exception; - -public class Application { - - public static void main(String[] args) throws GetOnDeckBadRequest, GetOnDeckUnauthorized, Exception { - - PlexAPI sdk = PlexAPI.builder() - .accessToken("") - .build(); - - GetOnDeckResponse res = sdk.library().getOnDeck() - .call(); - - if (res.object().isPresent()) { - // handle response - } - } -} -``` - -### Response - -**[GetOnDeckResponse](../../models/operations/GetOnDeckResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| models/errors/GetOnDeckBadRequest | 400 | application/json | -| models/errors/GetOnDeckUnauthorized | 401 | application/json | -| models/errors/SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| models/errors/SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/src/main/java/dev/plexapi/sdk/Library.java b/src/main/java/dev/plexapi/sdk/Library.java index 831ac81e..1bb3b5da 100644 --- a/src/main/java/dev/plexapi/sdk/Library.java +++ b/src/main/java/dev/plexapi/sdk/Library.java @@ -27,8 +27,6 @@ import dev.plexapi.sdk.models.errors.GetMediaMetaDataBadRequest; import dev.plexapi.sdk.models.errors.GetMediaMetaDataUnauthorized; import dev.plexapi.sdk.models.errors.GetMetadataChildrenBadRequest; import dev.plexapi.sdk.models.errors.GetMetadataChildrenUnauthorized; -import dev.plexapi.sdk.models.errors.GetOnDeckBadRequest; -import dev.plexapi.sdk.models.errors.GetOnDeckUnauthorized; import dev.plexapi.sdk.models.errors.GetRecentlyAddedLibraryBadRequest; import dev.plexapi.sdk.models.errors.GetRecentlyAddedLibraryUnauthorized; import dev.plexapi.sdk.models.errors.GetRefreshLibraryMetadataBadRequest; @@ -85,9 +83,6 @@ import dev.plexapi.sdk.models.operations.GetMetadataChildrenRequest; import dev.plexapi.sdk.models.operations.GetMetadataChildrenRequestBuilder; import dev.plexapi.sdk.models.operations.GetMetadataChildrenResponse; import dev.plexapi.sdk.models.operations.GetMetadataChildrenResponseBody; -import dev.plexapi.sdk.models.operations.GetOnDeckRequestBuilder; -import dev.plexapi.sdk.models.operations.GetOnDeckResponse; -import dev.plexapi.sdk.models.operations.GetOnDeckResponseBody; import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryRequest; import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryRequestBuilder; import dev.plexapi.sdk.models.operations.GetRecentlyAddedLibraryResponse; @@ -147,8 +142,7 @@ public class Library implements MethodCallGetSearchAllLibraries, MethodCallGetMediaMetaData, MethodCallGetMetadataChildren, - MethodCallGetTopWatchedContent, - MethodCallGetOnDeck { + MethodCallGetTopWatchedContent { private final SDKConfiguration sdkConfiguration; @@ -3160,161 +3154,4 @@ public class Library implements Utils.extractByteArrayFromBody(_httpRes)); } - - - /** - * Get On Deck - * This endpoint will return the on deck content. - * - * @return The call builder - */ - public GetOnDeckRequestBuilder getOnDeck() { - return new GetOnDeckRequestBuilder(this); - } - - /** - * Get On Deck - * This endpoint will return the on deck content. - * - * @return The response from the API call - * @throws Exception if the API call fails - */ - public GetOnDeckResponse getOnDeckDirect() throws Exception { - String _baseUrl = Utils.templateUrl( - this.sdkConfiguration.serverUrl, this.sdkConfiguration.getServerVariableDefaults()); - String _url = Utils.generateURL( - _baseUrl, - "/library/onDeck"); - - HTTPRequest _req = new HTTPRequest(_url, "GET"); - _req.addHeader("Accept", "application/json") - .addHeader("user-agent", - SDKConfiguration.USER_AGENT); - - Optional _hookSecuritySource = this.sdkConfiguration.securitySource(); - Utils.configureSecurity(_req, - this.sdkConfiguration.securitySource.getSecurity()); - HTTPClient _client = this.sdkConfiguration.defaultClient; - HttpRequest _r = - sdkConfiguration.hooks() - .beforeRequest( - new BeforeRequestContextImpl( - "getOnDeck", - Optional.of(List.of()), - _hookSecuritySource), - _req.build()); - HttpResponse _httpRes; - try { - _httpRes = _client.send(_r); - if (Utils.statusCodeMatches(_httpRes.statusCode(), "400", "401", "4XX", "5XX")) { - _httpRes = sdkConfiguration.hooks() - .afterError( - new AfterErrorContextImpl( - "getOnDeck", - Optional.of(List.of()), - _hookSecuritySource), - Optional.of(_httpRes), - Optional.empty()); - } else { - _httpRes = sdkConfiguration.hooks() - .afterSuccess( - new AfterSuccessContextImpl( - "getOnDeck", - Optional.of(List.of()), - _hookSecuritySource), - _httpRes); - } - } catch (Exception _e) { - _httpRes = sdkConfiguration.hooks() - .afterError( - new AfterErrorContextImpl( - "getOnDeck", - Optional.of(List.of()), - _hookSecuritySource), - Optional.empty(), - Optional.of(_e)); - } - String _contentType = _httpRes - .headers() - .firstValue("Content-Type") - .orElse("application/octet-stream"); - GetOnDeckResponse.Builder _resBuilder = - GetOnDeckResponse - .builder() - .contentType(_contentType) - .statusCode(_httpRes.statusCode()) - .rawResponse(_httpRes); - - GetOnDeckResponse _res = _resBuilder.build(); - - if (Utils.statusCodeMatches(_httpRes.statusCode(), "200")) { - if (Utils.contentTypeMatches(_contentType, "application/json")) { - GetOnDeckResponseBody _out = Utils.mapper().readValue( - Utils.toUtf8AndClose(_httpRes.body()), - new TypeReference() {}); - _res.withObject(Optional.ofNullable(_out)); - return _res; - } else { - throw new SDKError( - _httpRes, - _httpRes.statusCode(), - "Unexpected content-type received: " + _contentType, - Utils.extractByteArrayFromBody(_httpRes)); - } - } - if (Utils.statusCodeMatches(_httpRes.statusCode(), "400")) { - if (Utils.contentTypeMatches(_contentType, "application/json")) { - GetOnDeckBadRequest _out = Utils.mapper().readValue( - Utils.toUtf8AndClose(_httpRes.body()), - new TypeReference() {}); - _out.withRawResponse(Optional.ofNullable(_httpRes)); - - throw _out; - } else { - throw new SDKError( - _httpRes, - _httpRes.statusCode(), - "Unexpected content-type received: " + _contentType, - Utils.extractByteArrayFromBody(_httpRes)); - } - } - if (Utils.statusCodeMatches(_httpRes.statusCode(), "401")) { - if (Utils.contentTypeMatches(_contentType, "application/json")) { - GetOnDeckUnauthorized _out = Utils.mapper().readValue( - Utils.toUtf8AndClose(_httpRes.body()), - new TypeReference() {}); - _out.withRawResponse(Optional.ofNullable(_httpRes)); - - throw _out; - } else { - throw new SDKError( - _httpRes, - _httpRes.statusCode(), - "Unexpected content-type received: " + _contentType, - Utils.extractByteArrayFromBody(_httpRes)); - } - } - if (Utils.statusCodeMatches(_httpRes.statusCode(), "4XX")) { - // no content - throw new SDKError( - _httpRes, - _httpRes.statusCode(), - "API error occurred", - Utils.extractByteArrayFromBody(_httpRes)); - } - if (Utils.statusCodeMatches(_httpRes.statusCode(), "5XX")) { - // no content - throw new SDKError( - _httpRes, - _httpRes.statusCode(), - "API error occurred", - Utils.extractByteArrayFromBody(_httpRes)); - } - throw new SDKError( - _httpRes, - _httpRes.statusCode(), - "Unexpected status code received: " + _httpRes.statusCode(), - Utils.extractByteArrayFromBody(_httpRes)); - } - } diff --git a/src/main/java/dev/plexapi/sdk/SDKConfiguration.java b/src/main/java/dev/plexapi/sdk/SDKConfiguration.java index 455a00eb..5f8fecae 100644 --- a/src/main/java/dev/plexapi/sdk/SDKConfiguration.java +++ b/src/main/java/dev/plexapi/sdk/SDKConfiguration.java @@ -43,8 +43,8 @@ class SDKConfiguration { } }; private static final String LANGUAGE = "java"; public static final String OPENAPI_DOC_VERSION = "0.0.3"; - public static final String SDK_VERSION = "0.13.0"; - public static final String GEN_VERSION = "2.545.2"; + public static final String SDK_VERSION = "0.13.1"; + public static final String GEN_VERSION = "2.545.4"; private static final String BASE_PACKAGE = "dev.plexapi.sdk"; public static final String USER_AGENT = String.format("speakeasy-sdk/%s %s %s %s %s", diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckBadRequest.java b/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckBadRequest.java deleted file mode 100644 index c56e1419..00000000 --- a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckBadRequest.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.errors; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.io.InputStream; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.net.http.HttpResponse; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -/** - * GetOnDeckBadRequest - Bad Request - A parameter was not specified, or was specified incorrectly. - */ -@SuppressWarnings("serial") -public class GetOnDeckBadRequest extends RuntimeException { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("errors") - private Optional> errors; - - /** - * Raw HTTP response; suitable for custom response parsing - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("RawResponse") - private Optional> rawResponse; - - @JsonCreator - public GetOnDeckBadRequest( - @JsonProperty("errors") Optional> errors, - @JsonProperty("RawResponse") Optional> rawResponse) { - Utils.checkNotNull(errors, "errors"); - Utils.checkNotNull(rawResponse, "rawResponse"); - this.errors = errors; - this.rawResponse = rawResponse; - } - - public GetOnDeckBadRequest() { - this(Optional.empty(), Optional.empty()); - } - - @SuppressWarnings("unchecked") - public Optional> errors(){ - return (Optional>) errors; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - @SuppressWarnings("unchecked") - public Optional> rawResponse(){ - return (Optional>) rawResponse; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckBadRequest withErrors(List errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = Optional.ofNullable(errors); - return this; - } - - public GetOnDeckBadRequest withErrors(Optional> errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = errors; - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public GetOnDeckBadRequest withRawResponse(HttpResponse rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = Optional.ofNullable(rawResponse); - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public GetOnDeckBadRequest withRawResponse(Optional> rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = rawResponse; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckBadRequest other = (GetOnDeckBadRequest) o; - return - Objects.deepEquals(this.errors, other.errors) && - Objects.deepEquals(this.rawResponse, other.rawResponse); - } - - @Override - public int hashCode() { - return java.util.Objects.hash( - errors, - rawResponse); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckBadRequest.class, - "errors", errors, - "rawResponse", rawResponse); - } - - public final static class Builder { - - private Optional> errors = Optional.empty(); - - private Optional> rawResponse; - - private Builder() { - // force use of static builder() method - } - - public Builder errors(List errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = Optional.ofNullable(errors); - return this; - } - - public Builder errors(Optional> errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = errors; - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public Builder rawResponse(HttpResponse rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = Optional.ofNullable(rawResponse); - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public Builder rawResponse(Optional> rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = rawResponse; - return this; - } - - public GetOnDeckBadRequest build() { - return new GetOnDeckBadRequest( - errors, - rawResponse); - } - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckErrors.java b/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckErrors.java deleted file mode 100644 index cc52a556..00000000 --- a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckErrors.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.errors; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Integer; -import java.lang.Override; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckErrors { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("code") - private Optional code; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("message") - private Optional message; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("status") - private Optional status; - - @JsonCreator - public GetOnDeckErrors( - @JsonProperty("code") Optional code, - @JsonProperty("message") Optional message, - @JsonProperty("status") Optional status) { - Utils.checkNotNull(code, "code"); - Utils.checkNotNull(message, "message"); - Utils.checkNotNull(status, "status"); - this.code = code; - this.message = message; - this.status = status; - } - - public GetOnDeckErrors() { - this(Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional code() { - return code; - } - - @JsonIgnore - public Optional message() { - return message; - } - - @JsonIgnore - public Optional status() { - return status; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckErrors withCode(int code) { - Utils.checkNotNull(code, "code"); - this.code = Optional.ofNullable(code); - return this; - } - - public GetOnDeckErrors withCode(Optional code) { - Utils.checkNotNull(code, "code"); - this.code = code; - return this; - } - - public GetOnDeckErrors withMessage(String message) { - Utils.checkNotNull(message, "message"); - this.message = Optional.ofNullable(message); - return this; - } - - public GetOnDeckErrors withMessage(Optional message) { - Utils.checkNotNull(message, "message"); - this.message = message; - return this; - } - - public GetOnDeckErrors withStatus(int status) { - Utils.checkNotNull(status, "status"); - this.status = Optional.ofNullable(status); - return this; - } - - public GetOnDeckErrors withStatus(Optional status) { - Utils.checkNotNull(status, "status"); - this.status = status; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckErrors other = (GetOnDeckErrors) o; - return - Objects.deepEquals(this.code, other.code) && - Objects.deepEquals(this.message, other.message) && - Objects.deepEquals(this.status, other.status); - } - - @Override - public int hashCode() { - return Objects.hash( - code, - message, - status); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckErrors.class, - "code", code, - "message", message, - "status", status); - } - - public final static class Builder { - - private Optional code = Optional.empty(); - - private Optional message = Optional.empty(); - - private Optional status = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder code(int code) { - Utils.checkNotNull(code, "code"); - this.code = Optional.ofNullable(code); - return this; - } - - public Builder code(Optional code) { - Utils.checkNotNull(code, "code"); - this.code = code; - return this; - } - - public Builder message(String message) { - Utils.checkNotNull(message, "message"); - this.message = Optional.ofNullable(message); - return this; - } - - public Builder message(Optional message) { - Utils.checkNotNull(message, "message"); - this.message = message; - return this; - } - - public Builder status(int status) { - Utils.checkNotNull(status, "status"); - this.status = Optional.ofNullable(status); - return this; - } - - public Builder status(Optional status) { - Utils.checkNotNull(status, "status"); - this.status = status; - return this; - } - - public GetOnDeckErrors build() { - return new GetOnDeckErrors( - code, - message, - status); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckLibraryErrors.java b/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckLibraryErrors.java deleted file mode 100644 index b25d516e..00000000 --- a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckLibraryErrors.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.errors; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Integer; -import java.lang.Override; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckLibraryErrors { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("code") - private Optional code; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("message") - private Optional message; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("status") - private Optional status; - - @JsonCreator - public GetOnDeckLibraryErrors( - @JsonProperty("code") Optional code, - @JsonProperty("message") Optional message, - @JsonProperty("status") Optional status) { - Utils.checkNotNull(code, "code"); - Utils.checkNotNull(message, "message"); - Utils.checkNotNull(status, "status"); - this.code = code; - this.message = message; - this.status = status; - } - - public GetOnDeckLibraryErrors() { - this(Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional code() { - return code; - } - - @JsonIgnore - public Optional message() { - return message; - } - - @JsonIgnore - public Optional status() { - return status; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckLibraryErrors withCode(int code) { - Utils.checkNotNull(code, "code"); - this.code = Optional.ofNullable(code); - return this; - } - - public GetOnDeckLibraryErrors withCode(Optional code) { - Utils.checkNotNull(code, "code"); - this.code = code; - return this; - } - - public GetOnDeckLibraryErrors withMessage(String message) { - Utils.checkNotNull(message, "message"); - this.message = Optional.ofNullable(message); - return this; - } - - public GetOnDeckLibraryErrors withMessage(Optional message) { - Utils.checkNotNull(message, "message"); - this.message = message; - return this; - } - - public GetOnDeckLibraryErrors withStatus(int status) { - Utils.checkNotNull(status, "status"); - this.status = Optional.ofNullable(status); - return this; - } - - public GetOnDeckLibraryErrors withStatus(Optional status) { - Utils.checkNotNull(status, "status"); - this.status = status; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckLibraryErrors other = (GetOnDeckLibraryErrors) o; - return - Objects.deepEquals(this.code, other.code) && - Objects.deepEquals(this.message, other.message) && - Objects.deepEquals(this.status, other.status); - } - - @Override - public int hashCode() { - return Objects.hash( - code, - message, - status); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckLibraryErrors.class, - "code", code, - "message", message, - "status", status); - } - - public final static class Builder { - - private Optional code = Optional.empty(); - - private Optional message = Optional.empty(); - - private Optional status = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder code(int code) { - Utils.checkNotNull(code, "code"); - this.code = Optional.ofNullable(code); - return this; - } - - public Builder code(Optional code) { - Utils.checkNotNull(code, "code"); - this.code = code; - return this; - } - - public Builder message(String message) { - Utils.checkNotNull(message, "message"); - this.message = Optional.ofNullable(message); - return this; - } - - public Builder message(Optional message) { - Utils.checkNotNull(message, "message"); - this.message = message; - return this; - } - - public Builder status(int status) { - Utils.checkNotNull(status, "status"); - this.status = Optional.ofNullable(status); - return this; - } - - public Builder status(Optional status) { - Utils.checkNotNull(status, "status"); - this.status = status; - return this; - } - - public GetOnDeckLibraryErrors build() { - return new GetOnDeckLibraryErrors( - code, - message, - status); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckUnauthorized.java b/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckUnauthorized.java deleted file mode 100644 index 09f9e39c..00000000 --- a/src/main/java/dev/plexapi/sdk/models/errors/GetOnDeckUnauthorized.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.errors; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.io.InputStream; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.net.http.HttpResponse; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -/** - * GetOnDeckUnauthorized - Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - */ -@SuppressWarnings("serial") -public class GetOnDeckUnauthorized extends RuntimeException { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("errors") - private Optional> errors; - - /** - * Raw HTTP response; suitable for custom response parsing - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("RawResponse") - private Optional> rawResponse; - - @JsonCreator - public GetOnDeckUnauthorized( - @JsonProperty("errors") Optional> errors, - @JsonProperty("RawResponse") Optional> rawResponse) { - Utils.checkNotNull(errors, "errors"); - Utils.checkNotNull(rawResponse, "rawResponse"); - this.errors = errors; - this.rawResponse = rawResponse; - } - - public GetOnDeckUnauthorized() { - this(Optional.empty(), Optional.empty()); - } - - @SuppressWarnings("unchecked") - public Optional> errors(){ - return (Optional>) errors; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - @SuppressWarnings("unchecked") - public Optional> rawResponse(){ - return (Optional>) rawResponse; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckUnauthorized withErrors(List errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = Optional.ofNullable(errors); - return this; - } - - public GetOnDeckUnauthorized withErrors(Optional> errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = errors; - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public GetOnDeckUnauthorized withRawResponse(HttpResponse rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = Optional.ofNullable(rawResponse); - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public GetOnDeckUnauthorized withRawResponse(Optional> rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = rawResponse; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckUnauthorized other = (GetOnDeckUnauthorized) o; - return - Objects.deepEquals(this.errors, other.errors) && - Objects.deepEquals(this.rawResponse, other.rawResponse); - } - - @Override - public int hashCode() { - return java.util.Objects.hash( - errors, - rawResponse); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckUnauthorized.class, - "errors", errors, - "rawResponse", rawResponse); - } - - public final static class Builder { - - private Optional> errors = Optional.empty(); - - private Optional> rawResponse; - - private Builder() { - // force use of static builder() method - } - - public Builder errors(List errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = Optional.ofNullable(errors); - return this; - } - - public Builder errors(Optional> errors) { - Utils.checkNotNull(errors, "errors"); - this.errors = errors; - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public Builder rawResponse(HttpResponse rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = Optional.ofNullable(rawResponse); - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public Builder rawResponse(Optional> rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = rawResponse; - return this; - } - - public GetOnDeckUnauthorized build() { - return new GetOnDeckUnauthorized( - errors, - rawResponse); - } - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Collection.java b/src/main/java/dev/plexapi/sdk/models/operations/Collection.java index 02073562..92778e2c 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Collection.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Collection.java @@ -6,34 +6,32 @@ package dev.plexapi.sdk.models.operations; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; import java.lang.Override; import java.lang.String; import java.util.Objects; -import java.util.Optional; public class Collection { - @JsonInclude(Include.NON_ABSENT) + /** + * The user-made collection this media item belongs to + */ @JsonProperty("tag") - private Optional tag; + private String tag; @JsonCreator public Collection( - @JsonProperty("tag") Optional tag) { + @JsonProperty("tag") String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; } - - public Collection() { - this(Optional.empty()); - } + /** + * The user-made collection this media item belongs to + */ @JsonIgnore - public Optional tag() { + public String tag() { return tag; } @@ -41,13 +39,10 @@ public class Collection { return new Builder(); } + /** + * The user-made collection this media item belongs to + */ public Collection withTag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); - return this; - } - - public Collection withTag(Optional tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; @@ -80,19 +75,16 @@ public class Collection { public final static class Builder { - private Optional tag = Optional.empty(); + private String tag; private Builder() { // force use of static builder() method } + /** + * The user-made collection this media item belongs to + */ public Builder tag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); - return this; - } - - public Builder tag(Optional tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Country.java b/src/main/java/dev/plexapi/sdk/models/operations/Country.java index b4057706..dd011d48 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Country.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Country.java @@ -10,48 +10,97 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; +import java.lang.Long; import java.lang.Override; import java.lang.String; import java.util.Objects; import java.util.Optional; +/** + * Country - The filter query string for country media items. + */ public class Country { - @JsonInclude(Include.NON_ABSENT) + @JsonProperty("id") + private long id; + + /** + * The country of origin of this media item + */ @JsonProperty("tag") - private Optional tag; + private String tag; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("filter") + private Optional filter; @JsonCreator public Country( - @JsonProperty("tag") Optional tag) { + @JsonProperty("id") long id, + @JsonProperty("tag") String tag, + @JsonProperty("filter") Optional filter) { + Utils.checkNotNull(id, "id"); Utils.checkNotNull(tag, "tag"); + Utils.checkNotNull(filter, "filter"); + this.id = id; this.tag = tag; + this.filter = filter; } - public Country() { - this(Optional.empty()); + public Country( + long id, + String tag) { + this(id, tag, Optional.empty()); } @JsonIgnore - public Optional tag() { + public long id() { + return id; + } + + /** + * The country of origin of this media item + */ + @JsonIgnore + public String tag() { return tag; } + @JsonIgnore + public Optional filter() { + return filter; + } + public final static Builder builder() { return new Builder(); } - public Country withTag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); + public Country withId(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; return this; } - public Country withTag(Optional tag) { + /** + * The country of origin of this media item + */ + public Country withTag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; } + + public Country withFilter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = Optional.ofNullable(filter); + return this; + } + + public Country withFilter(Optional filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } @Override public boolean equals(java.lang.Object o) { @@ -63,44 +112,71 @@ public class Country { } Country other = (Country) o; return - Objects.deepEquals(this.tag, other.tag); + Objects.deepEquals(this.id, other.id) && + Objects.deepEquals(this.tag, other.tag) && + Objects.deepEquals(this.filter, other.filter); } @Override public int hashCode() { return Objects.hash( - tag); + id, + tag, + filter); } @Override public String toString() { return Utils.toString(Country.class, - "tag", tag); + "id", id, + "tag", tag, + "filter", filter); } public final static class Builder { - private Optional tag = Optional.empty(); + private Long id; + + private String tag; + + private Optional filter = Optional.empty(); private Builder() { // force use of static builder() method } - public Builder tag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); + public Builder id(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; return this; } - public Builder tag(Optional tag) { + /** + * The country of origin of this media item + */ + public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; } + + public Builder filter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = Optional.ofNullable(filter); + return this; + } + + public Builder filter(Optional filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } public Country build() { return new Country( - tag); + id, + tag, + filter); } } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Director.java b/src/main/java/dev/plexapi/sdk/models/operations/Director.java index b35cde37..7a6aa16d 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Director.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Director.java @@ -6,34 +6,32 @@ package dev.plexapi.sdk.models.operations; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; import java.lang.Override; import java.lang.String; import java.util.Objects; -import java.util.Optional; public class Director { - @JsonInclude(Include.NON_ABSENT) + /** + * The role of Director + */ @JsonProperty("tag") - private Optional tag; + private String tag; @JsonCreator public Director( - @JsonProperty("tag") Optional tag) { + @JsonProperty("tag") String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; } - - public Director() { - this(Optional.empty()); - } + /** + * The role of Director + */ @JsonIgnore - public Optional tag() { + public String tag() { return tag; } @@ -41,13 +39,10 @@ public class Director { return new Builder(); } + /** + * The role of Director + */ public Director withTag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); - return this; - } - - public Director withTag(Optional tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; @@ -80,19 +75,16 @@ public class Director { public final static class Builder { - private Optional tag = Optional.empty(); + private String tag; private Builder() { // force use of static builder() method } + /** + * The role of Director + */ public Builder tag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); - return this; - } - - public Builder tag(Optional tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Genre.java b/src/main/java/dev/plexapi/sdk/models/operations/Genre.java index f3607ce8..c63ffee8 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Genre.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Genre.java @@ -6,34 +6,60 @@ package dev.plexapi.sdk.models.operations; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; +import java.lang.Long; import java.lang.Override; import java.lang.String; import java.util.Objects; -import java.util.Optional; +/** + * Genre - The filter query string for similar items. + */ public class Genre { - @JsonInclude(Include.NON_ABSENT) + @JsonProperty("id") + private long id; + + @JsonProperty("filter") + private String filter; + + /** + * The genre name of this media-item + * + */ @JsonProperty("tag") - private Optional tag; + private String tag; @JsonCreator public Genre( - @JsonProperty("tag") Optional tag) { + @JsonProperty("id") long id, + @JsonProperty("filter") String filter, + @JsonProperty("tag") String tag) { + Utils.checkNotNull(id, "id"); + Utils.checkNotNull(filter, "filter"); Utils.checkNotNull(tag, "tag"); + this.id = id; + this.filter = filter; this.tag = tag; } - - public Genre() { - this(Optional.empty()); - } @JsonIgnore - public Optional tag() { + public long id() { + return id; + } + + @JsonIgnore + public String filter() { + return filter; + } + + /** + * The genre name of this media-item + * + */ + @JsonIgnore + public String tag() { return tag; } @@ -41,13 +67,23 @@ public class Genre { return new Builder(); } - public Genre withTag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); + public Genre withId(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; return this; } - public Genre withTag(Optional tag) { + public Genre withFilter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The genre name of this media-item + * + */ + public Genre withTag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; @@ -63,36 +99,56 @@ public class Genre { } Genre other = (Genre) o; return + Objects.deepEquals(this.id, other.id) && + Objects.deepEquals(this.filter, other.filter) && Objects.deepEquals(this.tag, other.tag); } @Override public int hashCode() { return Objects.hash( + id, + filter, tag); } @Override public String toString() { return Utils.toString(Genre.class, + "id", id, + "filter", filter, "tag", tag); } public final static class Builder { - private Optional tag = Optional.empty(); + private Long id; + + private String filter; + + private String tag; private Builder() { // force use of static builder() method } - public Builder tag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); + public Builder id(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; return this; } - public Builder tag(Optional tag) { + public Builder filter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The genre name of this media-item + * + */ + public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; @@ -100,6 +156,8 @@ public class Genre { public Genre build() { return new Genre( + id, + filter, tag); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGenre.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGenre.java index 9eb24623..98128996 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGenre.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGenre.java @@ -15,7 +15,8 @@ import java.util.Objects; public class GetAllMediaLibraryGenre { /** - * The country of origin of this media item + * The genre name of this media-item + * */ @JsonProperty("tag") private String tag; @@ -28,7 +29,8 @@ public class GetAllMediaLibraryGenre { } /** - * The country of origin of this media item + * The genre name of this media-item + * */ @JsonIgnore public String tag() { @@ -40,7 +42,8 @@ public class GetAllMediaLibraryGenre { } /** - * The country of origin of this media item + * The genre name of this media-item + * */ public GetAllMediaLibraryGenre withTag(String tag) { Utils.checkNotNull(tag, "tag"); @@ -82,7 +85,8 @@ public class GetAllMediaLibraryGenre { } /** - * The country of origin of this media item + * The genre name of this media-item + * */ public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckGuids.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGuids.java similarity index 64% rename from src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckGuids.java rename to src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGuids.java index fb7b6a5c..5b8361fe 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckGuids.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryGuids.java @@ -15,23 +15,31 @@ import java.lang.String; import java.util.Objects; import java.util.Optional; -public class GetOnDeckGuids { +public class GetAllMediaLibraryGuids { + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("id") private Optional id; @JsonCreator - public GetOnDeckGuids( + public GetAllMediaLibraryGuids( @JsonProperty("id") Optional id) { Utils.checkNotNull(id, "id"); this.id = id; } - public GetOnDeckGuids() { + public GetAllMediaLibraryGuids() { this(Optional.empty()); } + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + */ @JsonIgnore public Optional id() { return id; @@ -41,13 +49,21 @@ public class GetOnDeckGuids { return new Builder(); } - public GetOnDeckGuids withId(String id) { + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + */ + public GetAllMediaLibraryGuids withId(String id) { Utils.checkNotNull(id, "id"); this.id = Optional.ofNullable(id); return this; } - public GetOnDeckGuids withId(Optional id) { + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + */ + public GetAllMediaLibraryGuids withId(Optional id) { Utils.checkNotNull(id, "id"); this.id = id; return this; @@ -61,7 +77,7 @@ public class GetOnDeckGuids { if (o == null || getClass() != o.getClass()) { return false; } - GetOnDeckGuids other = (GetOnDeckGuids) o; + GetAllMediaLibraryGuids other = (GetAllMediaLibraryGuids) o; return Objects.deepEquals(this.id, other.id); } @@ -74,7 +90,7 @@ public class GetOnDeckGuids { @Override public String toString() { - return Utils.toString(GetOnDeckGuids.class, + return Utils.toString(GetAllMediaLibraryGuids.class, "id", id); } @@ -86,20 +102,28 @@ public class GetOnDeckGuids { // force use of static builder() method } + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + */ public Builder id(String id) { Utils.checkNotNull(id, "id"); this.id = Optional.ofNullable(id); return this; } + /** + * The unique identifier for the Guid. Can be imdb://tt0286347, tmdb://1763, tvdb://2337 + * + */ public Builder id(Optional id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } - public GetOnDeckGuids build() { - return new GetOnDeckGuids( + public GetAllMediaLibraryGuids build() { + return new GetAllMediaLibraryGuids( id); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMedia.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMedia.java index a08ffd17..3da96527 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMedia.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMedia.java @@ -121,8 +121,9 @@ public class GetAllMediaLibraryMedia { /** * Indicates whether voice activity is detected. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("hasVoiceActivity") - private boolean hasVoiceActivity; + private Optional hasVoiceActivity; /** * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). @@ -145,8 +146,9 @@ public class GetAllMediaLibraryMedia { /** * An array of parts for this media item. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("Part") - private List part; + private Optional> part; @JsonCreator public GetAllMediaLibraryMedia( @@ -164,11 +166,11 @@ public class GetAllMediaLibraryMedia { @JsonProperty("container") Optional container, @JsonProperty("videoFrameRate") Optional videoFrameRate, @JsonProperty("videoProfile") Optional videoProfile, - @JsonProperty("hasVoiceActivity") boolean hasVoiceActivity, + @JsonProperty("hasVoiceActivity") Optional hasVoiceActivity, @JsonProperty("audioProfile") Optional audioProfile, @JsonProperty("optimizedForStreaming") Optional optimizedForStreaming, @JsonProperty("has64bitOffsets") Optional has64bitOffsets, - @JsonProperty("Part") List part) { + @JsonProperty("Part") Optional> part) { Utils.checkNotNull(id, "id"); Utils.checkNotNull(duration, "duration"); Utils.checkNotNull(bitrate, "bitrate"); @@ -210,10 +212,8 @@ public class GetAllMediaLibraryMedia { } public GetAllMediaLibraryMedia( - long id, - boolean hasVoiceActivity, - List part) { - this(id, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), hasVoiceActivity, Optional.empty(), Optional.empty(), Optional.empty(), part); + long id) { + this(id, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } /** @@ -330,7 +330,7 @@ public class GetAllMediaLibraryMedia { * Indicates whether voice activity is detected. */ @JsonIgnore - public boolean hasVoiceActivity() { + public Optional hasVoiceActivity() { return hasVoiceActivity; } @@ -359,9 +359,10 @@ public class GetAllMediaLibraryMedia { /** * An array of parts for this media item. */ + @SuppressWarnings("unchecked") @JsonIgnore - public List part() { - return part; + public Optional> part() { + return (Optional>) part; } public final static Builder builder() { @@ -611,6 +612,15 @@ public class GetAllMediaLibraryMedia { * Indicates whether voice activity is detected. */ public GetAllMediaLibraryMedia withHasVoiceActivity(boolean hasVoiceActivity) { + Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); + this.hasVoiceActivity = Optional.ofNullable(hasVoiceActivity); + return this; + } + + /** + * Indicates whether voice activity is detected. + */ + public GetAllMediaLibraryMedia withHasVoiceActivity(Optional hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = hasVoiceActivity; return this; @@ -668,6 +678,15 @@ public class GetAllMediaLibraryMedia { * An array of parts for this media item. */ public GetAllMediaLibraryMedia withPart(List part) { + Utils.checkNotNull(part, "part"); + this.part = Optional.ofNullable(part); + return this; + } + + /** + * An array of parts for this media item. + */ + public GetAllMediaLibraryMedia withPart(Optional> part) { Utils.checkNotNull(part, "part"); this.part = part; return this; @@ -782,7 +801,7 @@ public class GetAllMediaLibraryMedia { private Optional videoProfile = Optional.empty(); - private Boolean hasVoiceActivity; + private Optional hasVoiceActivity = Optional.empty(); private Optional audioProfile = Optional.empty(); @@ -790,7 +809,7 @@ public class GetAllMediaLibraryMedia { private Optional has64bitOffsets = Optional.empty(); - private List part; + private Optional> part = Optional.empty(); private Builder() { // force use of static builder() method @@ -1039,6 +1058,15 @@ public class GetAllMediaLibraryMedia { * Indicates whether voice activity is detected. */ public Builder hasVoiceActivity(boolean hasVoiceActivity) { + Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); + this.hasVoiceActivity = Optional.ofNullable(hasVoiceActivity); + return this; + } + + /** + * Indicates whether voice activity is detected. + */ + public Builder hasVoiceActivity(Optional hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = hasVoiceActivity; return this; @@ -1096,6 +1124,15 @@ public class GetAllMediaLibraryMedia { * An array of parts for this media item. */ public Builder part(List part) { + Utils.checkNotNull(part, "part"); + this.part = Optional.ofNullable(part); + return this; + } + + /** + * An array of parts for this media item. + */ + public Builder part(Optional> part) { Utils.checkNotNull(part, "part"); this.part = part; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMetadata.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMetadata.java index 4bdc74f3..8f222d89 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMetadata.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryMetadata.java @@ -102,8 +102,9 @@ public class GetAllMediaLibraryMetadata { /** * The release year of the media item. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("year") - private int year; + private Optional year; /** * A brief tagline for the media item. @@ -413,7 +414,7 @@ public class GetAllMediaLibraryMetadata { @JsonInclude(Include.NON_ABSENT) @JsonProperty("Guid") - private Optional> guids; + private Optional> guids; @JsonInclude(Include.NON_ABSENT) @JsonProperty("Collection") @@ -433,7 +434,7 @@ public class GetAllMediaLibraryMetadata { @JsonProperty("summary") String summary, @JsonProperty("rating") float rating, @JsonProperty("audienceRating") double audienceRating, - @JsonProperty("year") int year, + @JsonProperty("year") Optional year, @JsonProperty("tagline") String tagline, @JsonProperty("thumb") String thumb, @JsonProperty("art") String art, @@ -483,7 +484,7 @@ public class GetAllMediaLibraryMetadata { @JsonProperty("Director") Optional> director, @JsonProperty("Writer") Optional> writer, @JsonProperty("Role") Optional> role, - @JsonProperty("Guid") Optional> guids, + @JsonProperty("Guid") Optional> guids, @JsonProperty("Collection") Optional> collection) { Utils.checkNotNull(ratingKey, "ratingKey"); Utils.checkNotNull(key, "key"); @@ -626,7 +627,6 @@ public class GetAllMediaLibraryMetadata { String summary, float rating, double audienceRating, - int year, String tagline, String thumb, String art, @@ -637,7 +637,7 @@ public class GetAllMediaLibraryMetadata { int duration, LocalDate originallyAvailableAt, long addedAt) { - this(ratingKey, key, guid, slug, Optional.empty(), type, title, titleSort, Optional.empty(), summary, rating, audienceRating, year, tagline, thumb, art, theme, index, Optional.empty(), Optional.empty(), childCount, seasonCount, duration, originallyAvailableAt, addedAt, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + this(ratingKey, key, guid, slug, Optional.empty(), type, title, titleSort, Optional.empty(), summary, rating, audienceRating, Optional.empty(), tagline, thumb, art, theme, index, Optional.empty(), Optional.empty(), childCount, seasonCount, duration, originallyAvailableAt, addedAt, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } /** @@ -737,7 +737,7 @@ public class GetAllMediaLibraryMetadata { * The release year of the media item. */ @JsonIgnore - public int year() { + public Optional year() { return year; } @@ -1116,8 +1116,8 @@ public class GetAllMediaLibraryMetadata { @SuppressWarnings("unchecked") @JsonIgnore - public Optional> guids() { - return (Optional>) guids; + public Optional> guids() { + return (Optional>) guids; } @SuppressWarnings("unchecked") @@ -1257,6 +1257,15 @@ public class GetAllMediaLibraryMetadata { * The release year of the media item. */ public GetAllMediaLibraryMetadata withYear(int year) { + Utils.checkNotNull(year, "year"); + this.year = Optional.ofNullable(year); + return this; + } + + /** + * The release year of the media item. + */ + public GetAllMediaLibraryMetadata withYear(Optional year) { Utils.checkNotNull(year, "year"); this.year = year; return this; @@ -2003,13 +2012,13 @@ public class GetAllMediaLibraryMetadata { return this; } - public GetAllMediaLibraryMetadata withGuids(List guids) { + public GetAllMediaLibraryMetadata withGuids(List guids) { Utils.checkNotNull(guids, "guids"); this.guids = Optional.ofNullable(guids); return this; } - public GetAllMediaLibraryMetadata withGuids(Optional> guids) { + public GetAllMediaLibraryMetadata withGuids(Optional> guids) { Utils.checkNotNull(guids, "guids"); this.guids = guids; return this; @@ -2267,7 +2276,7 @@ public class GetAllMediaLibraryMetadata { private Double audienceRating; - private Integer year; + private Optional year = Optional.empty(); private String tagline; @@ -2367,7 +2376,7 @@ public class GetAllMediaLibraryMetadata { private Optional> role = Optional.empty(); - private Optional> guids = Optional.empty(); + private Optional> guids = Optional.empty(); private Optional> collection = Optional.empty(); @@ -2502,6 +2511,15 @@ public class GetAllMediaLibraryMetadata { * The release year of the media item. */ public Builder year(int year) { + Utils.checkNotNull(year, "year"); + this.year = Optional.ofNullable(year); + return this; + } + + /** + * The release year of the media item. + */ + public Builder year(Optional year) { Utils.checkNotNull(year, "year"); this.year = year; return this; @@ -3248,13 +3266,13 @@ public class GetAllMediaLibraryMetadata { return this; } - public Builder guids(List guids) { + public Builder guids(List guids) { Utils.checkNotNull(guids, "guids"); this.guids = Optional.ofNullable(guids); return this; } - public Builder guids(Optional> guids) { + public Builder guids(Optional> guids) { Utils.checkNotNull(guids, "guids"); this.guids = guids; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryOptimizedForStreaming.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryOptimizedForStreaming.java index aa104bd7..18bea1ab 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryOptimizedForStreaming.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryOptimizedForStreaming.java @@ -31,9 +31,9 @@ public class GetAllMediaLibraryOptimizedForStreaming { this.value = value; } - public static GetAllMediaLibraryOptimizedForStreaming of(One value) { + public static GetAllMediaLibraryOptimizedForStreaming of(OptimizedForStreaming1 value) { Utils.checkNotNull(value, "value"); - return new GetAllMediaLibraryOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); + return new GetAllMediaLibraryOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); } public static GetAllMediaLibraryOptimizedForStreaming of(boolean value) { @@ -44,7 +44,7 @@ public class GetAllMediaLibraryOptimizedForStreaming { /** * Returns an instance of one of these types: *
    - *
  • {@code dev.plexapi.sdk.models.operations.One}
  • + *
  • {@code dev.plexapi.sdk.models.operations.OptimizedForStreaming1}
  • *
  • {@code boolean}
  • *
* @@ -86,7 +86,7 @@ public class GetAllMediaLibraryOptimizedForStreaming { public _Deserializer() { super(GetAllMediaLibraryOptimizedForStreaming.class, false, TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT), - TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryRole.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryRole.java index db92585e..bb8e7b79 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryRole.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryRole.java @@ -15,7 +15,7 @@ import java.util.Objects; public class GetAllMediaLibraryRole { /** - * The name of the actor for this role + * The display tag for the actor (typically the actor's name). */ @JsonProperty("tag") private String tag; @@ -28,7 +28,7 @@ public class GetAllMediaLibraryRole { } /** - * The name of the actor for this role + * The display tag for the actor (typically the actor's name). */ @JsonIgnore public String tag() { @@ -40,7 +40,7 @@ public class GetAllMediaLibraryRole { } /** - * The name of the actor for this role + * The display tag for the actor (typically the actor's name). */ public GetAllMediaLibraryRole withTag(String tag) { Utils.checkNotNull(tag, "tag"); @@ -82,7 +82,7 @@ public class GetAllMediaLibraryRole { } /** - * The name of the actor for this role + * The display tag for the actor (typically the actor's name). */ public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryStream.java b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryStream.java index 7fc6e07c..692904bc 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryStream.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetAllMediaLibraryStream.java @@ -62,20 +62,23 @@ public class GetAllMediaLibraryStream { /** * Language of the stream. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("language") - private String language; + private Optional language; /** * Language tag (e.g., en). */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("languageTag") - private String languageTag; + private Optional languageTag; /** * ISO language code. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("languageCode") - private String languageCode; + private Optional languageCode; /** * Indicates whether header compression is enabled. @@ -175,6 +178,10 @@ public class GetAllMediaLibraryStream { @JsonProperty("codedWidth") private Optional codedWidth; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("closedCaptions") + private Optional closedCaptions; + /** * Color primaries used. */ @@ -246,6 +253,10 @@ public class GetAllMediaLibraryStream { @JsonProperty("scanType") private Optional scanType; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("embeddedInVideo") + private Optional embeddedInVideo; + /** * Number of reference frames. */ @@ -340,9 +351,9 @@ public class GetAllMediaLibraryStream { @JsonProperty("codec") String codec, @JsonProperty("index") int index, @JsonProperty("bitrate") Optional bitrate, - @JsonProperty("language") String language, - @JsonProperty("languageTag") String languageTag, - @JsonProperty("languageCode") String languageCode, + @JsonProperty("language") Optional language, + @JsonProperty("languageTag") Optional languageTag, + @JsonProperty("languageCode") Optional languageCode, @JsonProperty("headerCompression") Optional headerCompression, @JsonProperty("DOVIBLCompatID") Optional doviblCompatID, @JsonProperty("DOVIBLPresent") Optional doviblPresent, @@ -357,6 +368,7 @@ public class GetAllMediaLibraryStream { @JsonProperty("chromaSubsampling") Optional chromaSubsampling, @JsonProperty("codedHeight") Optional codedHeight, @JsonProperty("codedWidth") Optional codedWidth, + @JsonProperty("closedCaptions") Optional closedCaptions, @JsonProperty("colorPrimaries") Optional colorPrimaries, @JsonProperty("colorRange") Optional colorRange, @JsonProperty("colorSpace") Optional colorSpace, @@ -368,6 +380,7 @@ public class GetAllMediaLibraryStream { @JsonProperty("hasScalingMatrix") Optional hasScalingMatrix, @JsonProperty("profile") Optional profile, @JsonProperty("scanType") Optional scanType, + @JsonProperty("embeddedInVideo") Optional embeddedInVideo, @JsonProperty("refFrames") Optional refFrames, @JsonProperty("width") Optional width, @JsonProperty("displayTitle") String displayTitle, @@ -404,6 +417,7 @@ public class GetAllMediaLibraryStream { Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); Utils.checkNotNull(codedHeight, "codedHeight"); Utils.checkNotNull(codedWidth, "codedWidth"); + Utils.checkNotNull(closedCaptions, "closedCaptions"); Utils.checkNotNull(colorPrimaries, "colorPrimaries"); Utils.checkNotNull(colorRange, "colorRange"); Utils.checkNotNull(colorSpace, "colorSpace"); @@ -415,6 +429,7 @@ public class GetAllMediaLibraryStream { Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); Utils.checkNotNull(profile, "profile"); Utils.checkNotNull(scanType, "scanType"); + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); Utils.checkNotNull(refFrames, "refFrames"); Utils.checkNotNull(width, "width"); Utils.checkNotNull(displayTitle, "displayTitle"); @@ -451,6 +466,7 @@ public class GetAllMediaLibraryStream { this.chromaSubsampling = chromaSubsampling; this.codedHeight = codedHeight; this.codedWidth = codedWidth; + this.closedCaptions = closedCaptions; this.colorPrimaries = colorPrimaries; this.colorRange = colorRange; this.colorSpace = colorSpace; @@ -462,6 +478,7 @@ public class GetAllMediaLibraryStream { this.hasScalingMatrix = hasScalingMatrix; this.profile = profile; this.scanType = scanType; + this.embeddedInVideo = embeddedInVideo; this.refFrames = refFrames; this.width = width; this.displayTitle = displayTitle; @@ -482,12 +499,9 @@ public class GetAllMediaLibraryStream { int streamType, String codec, int index, - String language, - String languageTag, - String languageCode, String displayTitle, String extendedDisplayTitle) { - this(id, streamType, Optional.empty(), codec, index, Optional.empty(), language, languageTag, languageCode, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), displayTitle, extendedDisplayTitle, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + this(id, streamType, Optional.empty(), codec, index, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), displayTitle, extendedDisplayTitle, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } /** @@ -542,7 +556,7 @@ public class GetAllMediaLibraryStream { * Language of the stream. */ @JsonIgnore - public String language() { + public Optional language() { return language; } @@ -550,7 +564,7 @@ public class GetAllMediaLibraryStream { * Language tag (e.g., en). */ @JsonIgnore - public String languageTag() { + public Optional languageTag() { return languageTag; } @@ -558,7 +572,7 @@ public class GetAllMediaLibraryStream { * ISO language code. */ @JsonIgnore - public String languageCode() { + public Optional languageCode() { return languageCode; } @@ -674,6 +688,11 @@ public class GetAllMediaLibraryStream { return codedWidth; } + @JsonIgnore + public Optional closedCaptions() { + return closedCaptions; + } + /** * Color primaries used. */ @@ -756,6 +775,11 @@ public class GetAllMediaLibraryStream { return scanType; } + @JsonIgnore + public Optional embeddedInVideo() { + return embeddedInVideo; + } + /** * Number of reference frames. */ @@ -937,6 +961,15 @@ public class GetAllMediaLibraryStream { * Language of the stream. */ public GetAllMediaLibraryStream withLanguage(String language) { + Utils.checkNotNull(language, "language"); + this.language = Optional.ofNullable(language); + return this; + } + + /** + * Language of the stream. + */ + public GetAllMediaLibraryStream withLanguage(Optional language) { Utils.checkNotNull(language, "language"); this.language = language; return this; @@ -946,6 +979,15 @@ public class GetAllMediaLibraryStream { * Language tag (e.g., en). */ public GetAllMediaLibraryStream withLanguageTag(String languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = Optional.ofNullable(languageTag); + return this; + } + + /** + * Language tag (e.g., en). + */ + public GetAllMediaLibraryStream withLanguageTag(Optional languageTag) { Utils.checkNotNull(languageTag, "languageTag"); this.languageTag = languageTag; return this; @@ -955,6 +997,15 @@ public class GetAllMediaLibraryStream { * ISO language code. */ public GetAllMediaLibraryStream withLanguageCode(String languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = Optional.ofNullable(languageCode); + return this; + } + + /** + * ISO language code. + */ + public GetAllMediaLibraryStream withLanguageCode(Optional languageCode) { Utils.checkNotNull(languageCode, "languageCode"); this.languageCode = languageCode; return this; @@ -1212,6 +1263,18 @@ public class GetAllMediaLibraryStream { return this; } + public GetAllMediaLibraryStream withClosedCaptions(boolean closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = Optional.ofNullable(closedCaptions); + return this; + } + + public GetAllMediaLibraryStream withClosedCaptions(Optional closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = closedCaptions; + return this; + } + /** * Color primaries used. */ @@ -1398,6 +1461,18 @@ public class GetAllMediaLibraryStream { return this; } + public GetAllMediaLibraryStream withEmbeddedInVideo(String embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = Optional.ofNullable(embeddedInVideo); + return this; + } + + public GetAllMediaLibraryStream withEmbeddedInVideo(Optional embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = embeddedInVideo; + return this; + } + /** * Number of reference frames. */ @@ -1641,6 +1716,7 @@ public class GetAllMediaLibraryStream { Objects.deepEquals(this.chromaSubsampling, other.chromaSubsampling) && Objects.deepEquals(this.codedHeight, other.codedHeight) && Objects.deepEquals(this.codedWidth, other.codedWidth) && + Objects.deepEquals(this.closedCaptions, other.closedCaptions) && Objects.deepEquals(this.colorPrimaries, other.colorPrimaries) && Objects.deepEquals(this.colorRange, other.colorRange) && Objects.deepEquals(this.colorSpace, other.colorSpace) && @@ -1652,6 +1728,7 @@ public class GetAllMediaLibraryStream { Objects.deepEquals(this.hasScalingMatrix, other.hasScalingMatrix) && Objects.deepEquals(this.profile, other.profile) && Objects.deepEquals(this.scanType, other.scanType) && + Objects.deepEquals(this.embeddedInVideo, other.embeddedInVideo) && Objects.deepEquals(this.refFrames, other.refFrames) && Objects.deepEquals(this.width, other.width) && Objects.deepEquals(this.displayTitle, other.displayTitle) && @@ -1693,6 +1770,7 @@ public class GetAllMediaLibraryStream { chromaSubsampling, codedHeight, codedWidth, + closedCaptions, colorPrimaries, colorRange, colorSpace, @@ -1704,6 +1782,7 @@ public class GetAllMediaLibraryStream { hasScalingMatrix, profile, scanType, + embeddedInVideo, refFrames, width, displayTitle, @@ -1745,6 +1824,7 @@ public class GetAllMediaLibraryStream { "chromaSubsampling", chromaSubsampling, "codedHeight", codedHeight, "codedWidth", codedWidth, + "closedCaptions", closedCaptions, "colorPrimaries", colorPrimaries, "colorRange", colorRange, "colorSpace", colorSpace, @@ -1756,6 +1836,7 @@ public class GetAllMediaLibraryStream { "hasScalingMatrix", hasScalingMatrix, "profile", profile, "scanType", scanType, + "embeddedInVideo", embeddedInVideo, "refFrames", refFrames, "width", width, "displayTitle", displayTitle, @@ -1785,11 +1866,11 @@ public class GetAllMediaLibraryStream { private Optional bitrate = Optional.empty(); - private String language; + private Optional language = Optional.empty(); - private String languageTag; + private Optional languageTag = Optional.empty(); - private String languageCode; + private Optional languageCode = Optional.empty(); private Optional headerCompression = Optional.empty(); @@ -1819,6 +1900,8 @@ public class GetAllMediaLibraryStream { private Optional codedWidth = Optional.empty(); + private Optional closedCaptions = Optional.empty(); + private Optional colorPrimaries = Optional.empty(); private Optional colorRange = Optional.empty(); @@ -1841,6 +1924,8 @@ public class GetAllMediaLibraryStream { private Optional scanType = Optional.empty(); + private Optional embeddedInVideo = Optional.empty(); + private Optional refFrames = Optional.empty(); private Optional width = Optional.empty(); @@ -1947,6 +2032,15 @@ public class GetAllMediaLibraryStream { * Language of the stream. */ public Builder language(String language) { + Utils.checkNotNull(language, "language"); + this.language = Optional.ofNullable(language); + return this; + } + + /** + * Language of the stream. + */ + public Builder language(Optional language) { Utils.checkNotNull(language, "language"); this.language = language; return this; @@ -1956,6 +2050,15 @@ public class GetAllMediaLibraryStream { * Language tag (e.g., en). */ public Builder languageTag(String languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = Optional.ofNullable(languageTag); + return this; + } + + /** + * Language tag (e.g., en). + */ + public Builder languageTag(Optional languageTag) { Utils.checkNotNull(languageTag, "languageTag"); this.languageTag = languageTag; return this; @@ -1965,6 +2068,15 @@ public class GetAllMediaLibraryStream { * ISO language code. */ public Builder languageCode(String languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = Optional.ofNullable(languageCode); + return this; + } + + /** + * ISO language code. + */ + public Builder languageCode(Optional languageCode) { Utils.checkNotNull(languageCode, "languageCode"); this.languageCode = languageCode; return this; @@ -2222,6 +2334,18 @@ public class GetAllMediaLibraryStream { return this; } + public Builder closedCaptions(boolean closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = Optional.ofNullable(closedCaptions); + return this; + } + + public Builder closedCaptions(Optional closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = closedCaptions; + return this; + } + /** * Color primaries used. */ @@ -2408,6 +2532,18 @@ public class GetAllMediaLibraryStream { return this; } + public Builder embeddedInVideo(String embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = Optional.ofNullable(embeddedInVideo); + return this; + } + + public Builder embeddedInVideo(Optional embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = embeddedInVideo; + return this; + } + /** * Number of reference frames. */ @@ -2643,6 +2779,7 @@ public class GetAllMediaLibraryStream { chromaSubsampling, codedHeight, codedWidth, + closedCaptions, colorPrimaries, colorRange, colorSpace, @@ -2654,6 +2791,7 @@ public class GetAllMediaLibraryStream { hasScalingMatrix, profile, scanType, + embeddedInVideo, refFrames, width, displayTitle, diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.java b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.java deleted file mode 100644 index 97e1ca78..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEnableCreditsMarkerGeneration.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonValue; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -/** - * GetLibraryItemsEnableCreditsMarkerGeneration - Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ -public enum GetLibraryItemsEnableCreditsMarkerGeneration { - LibraryDefault("-1"), - Disabled("0"); - - @JsonValue - private final String value; - - private GetLibraryItemsEnableCreditsMarkerGeneration(String value) { - this.value = value; - } - - public String value() { - return value; - } - - public static Optional fromValue(String value) { - for (GetLibraryItemsEnableCreditsMarkerGeneration o: GetLibraryItemsEnableCreditsMarkerGeneration.values()) { - if (Objects.deepEquals(o.value, value)) { - return Optional.of(o); - } - } - return Optional.empty(); - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEpisodeSort.java b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEpisodeSort.java deleted file mode 100644 index 38f22195..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsEpisodeSort.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonValue; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -/** - * GetLibraryItemsEpisodeSort - Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - */ -public enum GetLibraryItemsEpisodeSort { - LibraryDefault("-1"), - OldestFirst("0"), - NewestFirst("1"); - - @JsonValue - private final String value; - - private GetLibraryItemsEpisodeSort(String value) { - this.value = value; - } - - public String value() { - return value; - } - - public static Optional fromValue(String value) { - for (GetLibraryItemsEpisodeSort o: GetLibraryItemsEpisodeSort.values()) { - if (Objects.deepEquals(o.value, value)) { - return Optional.of(o); - } - } - return Optional.empty(); - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsFlattenSeasons.java b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsFlattenSeasons.java deleted file mode 100644 index a9c4bdf1..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsFlattenSeasons.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonValue; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -/** - * GetLibraryItemsFlattenSeasons - Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - */ -public enum GetLibraryItemsFlattenSeasons { - LibraryDefault("-1"), - Hide("0"), - Show("1"); - - @JsonValue - private final String value; - - private GetLibraryItemsFlattenSeasons(String value) { - this.value = value; - } - - public String value() { - return value; - } - - public static Optional fromValue(String value) { - for (GetLibraryItemsFlattenSeasons o: GetLibraryItemsFlattenSeasons.values()) { - if (Objects.deepEquals(o.value, value)) { - return Optional.of(o); - } - } - return Optional.empty(); - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMediaGuid.java b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMediaGuid.java deleted file mode 100644 index ab4108f9..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMediaGuid.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Override; -import java.lang.String; -import java.util.Objects; - -public class GetLibraryItemsMediaGuid { - - /** - * Can be one of the following formats: - * imdb://tt13015952, tmdb://2434012, tvdb://7945991 - * - */ - @JsonProperty("id") - private String id; - - @JsonCreator - public GetLibraryItemsMediaGuid( - @JsonProperty("id") String id) { - Utils.checkNotNull(id, "id"); - this.id = id; - } - - /** - * Can be one of the following formats: - * imdb://tt13015952, tmdb://2434012, tvdb://7945991 - * - */ - @JsonIgnore - public String id() { - return id; - } - - public final static Builder builder() { - return new Builder(); - } - - /** - * Can be one of the following formats: - * imdb://tt13015952, tmdb://2434012, tvdb://7945991 - * - */ - public GetLibraryItemsMediaGuid withId(String id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetLibraryItemsMediaGuid other = (GetLibraryItemsMediaGuid) o; - return - Objects.deepEquals(this.id, other.id); - } - - @Override - public int hashCode() { - return Objects.hash( - id); - } - - @Override - public String toString() { - return Utils.toString(GetLibraryItemsMediaGuid.class, - "id", id); - } - - public final static class Builder { - - private String id; - - private Builder() { - // force use of static builder() method - } - - /** - * Can be one of the following formats: - * imdb://tt13015952, tmdb://2434012, tvdb://7945991 - * - */ - public Builder id(String id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public GetLibraryItemsMediaGuid build() { - return new GetLibraryItemsMediaGuid( - id); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetadata.java b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetadata.java index 7713c15c..077ba168 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetadata.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetadata.java @@ -104,21 +104,21 @@ public class GetLibraryItemsMetadata { */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("flattenSeasons") - private Optional flattenSeasons; + private Optional flattenSeasons; /** * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("episodeSort") - private Optional episodeSort; + private Optional episodeSort; /** * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("enableCreditsMarkerGeneration") - private Optional enableCreditsMarkerGeneration; + private Optional enableCreditsMarkerGeneration; /** * Setting that indicates the episode ordering for the show. @@ -131,7 +131,7 @@ public class GetLibraryItemsMetadata { */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("showOrdering") - private Optional showOrdering; + private Optional showOrdering; @JsonInclude(Include.NON_ABSENT) @JsonProperty("thumb") @@ -260,7 +260,7 @@ public class GetLibraryItemsMetadata { */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("Guid") - private Optional> mediaGuid; + private Optional> mediaGuid; @JsonInclude(Include.NON_ABSENT) @JsonProperty("UltraBlurColors") @@ -268,7 +268,7 @@ public class GetLibraryItemsMetadata { @JsonInclude(Include.NON_ABSENT) @JsonProperty("Rating") - private Optional> metaDataRating; + private Optional> metaDataRating; @JsonInclude(Include.NON_ABSENT) @JsonProperty("Image") @@ -386,10 +386,10 @@ public class GetLibraryItemsMetadata { @JsonProperty("year") Optional year, @JsonProperty("seasonCount") Optional seasonCount, @JsonProperty("tagline") Optional tagline, - @JsonProperty("flattenSeasons") Optional flattenSeasons, - @JsonProperty("episodeSort") Optional episodeSort, - @JsonProperty("enableCreditsMarkerGeneration") Optional enableCreditsMarkerGeneration, - @JsonProperty("showOrdering") Optional showOrdering, + @JsonProperty("flattenSeasons") Optional flattenSeasons, + @JsonProperty("episodeSort") Optional episodeSort, + @JsonProperty("enableCreditsMarkerGeneration") Optional enableCreditsMarkerGeneration, + @JsonProperty("showOrdering") Optional showOrdering, @JsonProperty("thumb") Optional thumb, @JsonProperty("art") Optional art, @JsonProperty("banner") Optional banner, @@ -418,9 +418,9 @@ public class GetLibraryItemsMetadata { @JsonProperty("Collection") Optional> collection, @JsonProperty("Role") Optional> role, @JsonProperty("Location") Optional> location, - @JsonProperty("Guid") Optional> mediaGuid, + @JsonProperty("Guid") Optional> mediaGuid, @JsonProperty("UltraBlurColors") Optional ultraBlurColors, - @JsonProperty("Rating") Optional> metaDataRating, + @JsonProperty("Rating") Optional> metaDataRating, @JsonProperty("Image") Optional> image, @JsonProperty("titleSort") Optional titleSort, @JsonProperty("viewCount") Optional viewCount, @@ -713,8 +713,8 @@ public class GetLibraryItemsMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional flattenSeasons() { - return (Optional) flattenSeasons; + public Optional flattenSeasons() { + return (Optional) flattenSeasons; } /** @@ -722,8 +722,8 @@ public class GetLibraryItemsMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional episodeSort() { - return (Optional) episodeSort; + public Optional episodeSort() { + return (Optional) episodeSort; } /** @@ -731,8 +731,8 @@ public class GetLibraryItemsMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional enableCreditsMarkerGeneration() { - return (Optional) enableCreditsMarkerGeneration; + public Optional enableCreditsMarkerGeneration() { + return (Optional) enableCreditsMarkerGeneration; } /** @@ -746,8 +746,8 @@ public class GetLibraryItemsMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional showOrdering() { - return (Optional) showOrdering; + public Optional showOrdering() { + return (Optional) showOrdering; } @JsonIgnore @@ -914,8 +914,8 @@ public class GetLibraryItemsMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional> mediaGuid() { - return (Optional>) mediaGuid; + public Optional> mediaGuid() { + return (Optional>) mediaGuid; } @SuppressWarnings("unchecked") @@ -926,8 +926,8 @@ public class GetLibraryItemsMetadata { @SuppressWarnings("unchecked") @JsonIgnore - public Optional> metaDataRating() { - return (Optional>) metaDataRating; + public Optional> metaDataRating() { + return (Optional>) metaDataRating; } @SuppressWarnings("unchecked") @@ -1246,7 +1246,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). */ - public GetLibraryItemsMetadata withFlattenSeasons(GetLibraryItemsFlattenSeasons flattenSeasons) { + public GetLibraryItemsMetadata withFlattenSeasons(FlattenSeasons flattenSeasons) { Utils.checkNotNull(flattenSeasons, "flattenSeasons"); this.flattenSeasons = Optional.ofNullable(flattenSeasons); return this; @@ -1255,7 +1255,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). */ - public GetLibraryItemsMetadata withFlattenSeasons(Optional flattenSeasons) { + public GetLibraryItemsMetadata withFlattenSeasons(Optional flattenSeasons) { Utils.checkNotNull(flattenSeasons, "flattenSeasons"); this.flattenSeasons = flattenSeasons; return this; @@ -1264,7 +1264,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). */ - public GetLibraryItemsMetadata withEpisodeSort(GetLibraryItemsEpisodeSort episodeSort) { + public GetLibraryItemsMetadata withEpisodeSort(EpisodeSort episodeSort) { Utils.checkNotNull(episodeSort, "episodeSort"); this.episodeSort = Optional.ofNullable(episodeSort); return this; @@ -1273,7 +1273,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). */ - public GetLibraryItemsMetadata withEpisodeSort(Optional episodeSort) { + public GetLibraryItemsMetadata withEpisodeSort(Optional episodeSort) { Utils.checkNotNull(episodeSort, "episodeSort"); this.episodeSort = episodeSort; return this; @@ -1282,7 +1282,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). */ - public GetLibraryItemsMetadata withEnableCreditsMarkerGeneration(GetLibraryItemsEnableCreditsMarkerGeneration enableCreditsMarkerGeneration) { + public GetLibraryItemsMetadata withEnableCreditsMarkerGeneration(EnableCreditsMarkerGeneration enableCreditsMarkerGeneration) { Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); this.enableCreditsMarkerGeneration = Optional.ofNullable(enableCreditsMarkerGeneration); return this; @@ -1291,7 +1291,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). */ - public GetLibraryItemsMetadata withEnableCreditsMarkerGeneration(Optional enableCreditsMarkerGeneration) { + public GetLibraryItemsMetadata withEnableCreditsMarkerGeneration(Optional enableCreditsMarkerGeneration) { Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); this.enableCreditsMarkerGeneration = enableCreditsMarkerGeneration; return this; @@ -1306,7 +1306,7 @@ public class GetLibraryItemsMetadata { * absolute = TheTVDB (Absolute)). * */ - public GetLibraryItemsMetadata withShowOrdering(GetLibraryItemsShowOrdering showOrdering) { + public GetLibraryItemsMetadata withShowOrdering(ShowOrdering showOrdering) { Utils.checkNotNull(showOrdering, "showOrdering"); this.showOrdering = Optional.ofNullable(showOrdering); return this; @@ -1321,7 +1321,7 @@ public class GetLibraryItemsMetadata { * absolute = TheTVDB (Absolute)). * */ - public GetLibraryItemsMetadata withShowOrdering(Optional showOrdering) { + public GetLibraryItemsMetadata withShowOrdering(Optional showOrdering) { Utils.checkNotNull(showOrdering, "showOrdering"); this.showOrdering = showOrdering; return this; @@ -1678,7 +1678,7 @@ public class GetLibraryItemsMetadata { * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. * */ - public GetLibraryItemsMetadata withMediaGuid(List mediaGuid) { + public GetLibraryItemsMetadata withMediaGuid(List mediaGuid) { Utils.checkNotNull(mediaGuid, "mediaGuid"); this.mediaGuid = Optional.ofNullable(mediaGuid); return this; @@ -1688,7 +1688,7 @@ public class GetLibraryItemsMetadata { * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. * */ - public GetLibraryItemsMetadata withMediaGuid(Optional> mediaGuid) { + public GetLibraryItemsMetadata withMediaGuid(Optional> mediaGuid) { Utils.checkNotNull(mediaGuid, "mediaGuid"); this.mediaGuid = mediaGuid; return this; @@ -1706,13 +1706,13 @@ public class GetLibraryItemsMetadata { return this; } - public GetLibraryItemsMetadata withMetaDataRating(List metaDataRating) { + public GetLibraryItemsMetadata withMetaDataRating(List metaDataRating) { Utils.checkNotNull(metaDataRating, "metaDataRating"); this.metaDataRating = Optional.ofNullable(metaDataRating); return this; } - public GetLibraryItemsMetadata withMetaDataRating(Optional> metaDataRating) { + public GetLibraryItemsMetadata withMetaDataRating(Optional> metaDataRating) { Utils.checkNotNull(metaDataRating, "metaDataRating"); this.metaDataRating = metaDataRating; return this; @@ -2290,13 +2290,13 @@ public class GetLibraryItemsMetadata { private Optional tagline = Optional.empty(); - private Optional flattenSeasons = Optional.empty(); + private Optional flattenSeasons = Optional.empty(); - private Optional episodeSort = Optional.empty(); + private Optional episodeSort = Optional.empty(); - private Optional enableCreditsMarkerGeneration = Optional.empty(); + private Optional enableCreditsMarkerGeneration = Optional.empty(); - private Optional showOrdering = Optional.empty(); + private Optional showOrdering = Optional.empty(); private Optional thumb = Optional.empty(); @@ -2354,11 +2354,11 @@ public class GetLibraryItemsMetadata { private Optional> location = Optional.empty(); - private Optional> mediaGuid = Optional.empty(); + private Optional> mediaGuid = Optional.empty(); private Optional ultraBlurColors = Optional.empty(); - private Optional> metaDataRating = Optional.empty(); + private Optional> metaDataRating = Optional.empty(); private Optional> image = Optional.empty(); @@ -2602,7 +2602,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). */ - public Builder flattenSeasons(GetLibraryItemsFlattenSeasons flattenSeasons) { + public Builder flattenSeasons(FlattenSeasons flattenSeasons) { Utils.checkNotNull(flattenSeasons, "flattenSeasons"); this.flattenSeasons = Optional.ofNullable(flattenSeasons); return this; @@ -2611,7 +2611,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). */ - public Builder flattenSeasons(Optional flattenSeasons) { + public Builder flattenSeasons(Optional flattenSeasons) { Utils.checkNotNull(flattenSeasons, "flattenSeasons"); this.flattenSeasons = flattenSeasons; return this; @@ -2620,7 +2620,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). */ - public Builder episodeSort(GetLibraryItemsEpisodeSort episodeSort) { + public Builder episodeSort(EpisodeSort episodeSort) { Utils.checkNotNull(episodeSort, "episodeSort"); this.episodeSort = Optional.ofNullable(episodeSort); return this; @@ -2629,7 +2629,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). */ - public Builder episodeSort(Optional episodeSort) { + public Builder episodeSort(Optional episodeSort) { Utils.checkNotNull(episodeSort, "episodeSort"); this.episodeSort = episodeSort; return this; @@ -2638,7 +2638,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). */ - public Builder enableCreditsMarkerGeneration(GetLibraryItemsEnableCreditsMarkerGeneration enableCreditsMarkerGeneration) { + public Builder enableCreditsMarkerGeneration(EnableCreditsMarkerGeneration enableCreditsMarkerGeneration) { Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); this.enableCreditsMarkerGeneration = Optional.ofNullable(enableCreditsMarkerGeneration); return this; @@ -2647,7 +2647,7 @@ public class GetLibraryItemsMetadata { /** * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). */ - public Builder enableCreditsMarkerGeneration(Optional enableCreditsMarkerGeneration) { + public Builder enableCreditsMarkerGeneration(Optional enableCreditsMarkerGeneration) { Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); this.enableCreditsMarkerGeneration = enableCreditsMarkerGeneration; return this; @@ -2662,7 +2662,7 @@ public class GetLibraryItemsMetadata { * absolute = TheTVDB (Absolute)). * */ - public Builder showOrdering(GetLibraryItemsShowOrdering showOrdering) { + public Builder showOrdering(ShowOrdering showOrdering) { Utils.checkNotNull(showOrdering, "showOrdering"); this.showOrdering = Optional.ofNullable(showOrdering); return this; @@ -2677,7 +2677,7 @@ public class GetLibraryItemsMetadata { * absolute = TheTVDB (Absolute)). * */ - public Builder showOrdering(Optional showOrdering) { + public Builder showOrdering(Optional showOrdering) { Utils.checkNotNull(showOrdering, "showOrdering"); this.showOrdering = showOrdering; return this; @@ -3034,7 +3034,7 @@ public class GetLibraryItemsMetadata { * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. * */ - public Builder mediaGuid(List mediaGuid) { + public Builder mediaGuid(List mediaGuid) { Utils.checkNotNull(mediaGuid, "mediaGuid"); this.mediaGuid = Optional.ofNullable(mediaGuid); return this; @@ -3044,7 +3044,7 @@ public class GetLibraryItemsMetadata { * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. * */ - public Builder mediaGuid(Optional> mediaGuid) { + public Builder mediaGuid(Optional> mediaGuid) { Utils.checkNotNull(mediaGuid, "mediaGuid"); this.mediaGuid = mediaGuid; return this; @@ -3062,13 +3062,13 @@ public class GetLibraryItemsMetadata { return this; } - public Builder metaDataRating(List metaDataRating) { + public Builder metaDataRating(List metaDataRating) { Utils.checkNotNull(metaDataRating, "metaDataRating"); this.metaDataRating = Optional.ofNullable(metaDataRating); return this; } - public Builder metaDataRating(Optional> metaDataRating) { + public Builder metaDataRating(Optional> metaDataRating) { Utils.checkNotNull(metaDataRating, "metaDataRating"); this.metaDataRating = metaDataRating; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsShowOrdering.java b/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsShowOrdering.java deleted file mode 100644 index b4531a6a..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsShowOrdering.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonValue; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; -/** - * 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)). - * - */ -public enum GetLibraryItemsShowOrdering { - None("None"), - TmdbAiring("tmdbAiring"), - TvdbAired("aired"), - TvdbDvd("dvd"), - TvdbAbsolute("absolute"); - - @JsonValue - private final String value; - - private GetLibraryItemsShowOrdering(String value) { - this.value = value; - } - - public String value() { - return value; - } - - public static Optional fromValue(String value) { - for (GetLibraryItemsShowOrdering o: GetLibraryItemsShowOrdering.values()) { - if (Objects.deepEquals(o.value, value)) { - return Optional.of(o); - } - } - return Optional.empty(); - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataLibraryOptimizedForStreaming.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataLibraryOptimizedForStreaming.java index f7bac7d1..d0d5b815 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataLibraryOptimizedForStreaming.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataLibraryOptimizedForStreaming.java @@ -31,9 +31,9 @@ public class GetMediaMetaDataLibraryOptimizedForStreaming { this.value = value; } - public static GetMediaMetaDataLibraryOptimizedForStreaming of(GetMediaMetaDataOptimizedForStreaming1 value) { + public static GetMediaMetaDataLibraryOptimizedForStreaming of(GetMediaMetaDataOptimizedForStreamingLibrary1 value) { Utils.checkNotNull(value, "value"); - return new GetMediaMetaDataLibraryOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); + return new GetMediaMetaDataLibraryOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); } public static GetMediaMetaDataLibraryOptimizedForStreaming of(boolean value) { @@ -44,7 +44,7 @@ public class GetMediaMetaDataLibraryOptimizedForStreaming { /** * Returns an instance of one of these types: *
    - *
  • {@code dev.plexapi.sdk.models.operations.GetMediaMetaDataOptimizedForStreaming1}
  • + *
  • {@code dev.plexapi.sdk.models.operations.GetMediaMetaDataOptimizedForStreamingLibrary1}
  • *
  • {@code boolean}
  • *
* @@ -86,7 +86,7 @@ public class GetMediaMetaDataLibraryOptimizedForStreaming { public _Deserializer() { super(GetMediaMetaDataLibraryOptimizedForStreaming.class, false, TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT), - TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMedia.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMedia.java index bd01fa3e..21c97046 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMedia.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMedia.java @@ -121,8 +121,9 @@ public class GetMediaMetaDataMedia { /** * Indicates whether voice activity is detected. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("hasVoiceActivity") - private boolean hasVoiceActivity; + private Optional hasVoiceActivity; /** * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). @@ -145,8 +146,9 @@ public class GetMediaMetaDataMedia { /** * An array of parts for this media item. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("Part") - private List part; + private Optional> part; @JsonCreator public GetMediaMetaDataMedia( @@ -164,11 +166,11 @@ public class GetMediaMetaDataMedia { @JsonProperty("container") Optional container, @JsonProperty("videoFrameRate") Optional videoFrameRate, @JsonProperty("videoProfile") Optional videoProfile, - @JsonProperty("hasVoiceActivity") boolean hasVoiceActivity, + @JsonProperty("hasVoiceActivity") Optional hasVoiceActivity, @JsonProperty("audioProfile") Optional audioProfile, @JsonProperty("optimizedForStreaming") Optional optimizedForStreaming, @JsonProperty("has64bitOffsets") Optional has64bitOffsets, - @JsonProperty("Part") List part) { + @JsonProperty("Part") Optional> part) { Utils.checkNotNull(id, "id"); Utils.checkNotNull(duration, "duration"); Utils.checkNotNull(bitrate, "bitrate"); @@ -210,10 +212,8 @@ public class GetMediaMetaDataMedia { } public GetMediaMetaDataMedia( - long id, - boolean hasVoiceActivity, - List part) { - this(id, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), hasVoiceActivity, Optional.empty(), Optional.empty(), Optional.empty(), part); + long id) { + this(id, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } /** @@ -330,7 +330,7 @@ public class GetMediaMetaDataMedia { * Indicates whether voice activity is detected. */ @JsonIgnore - public boolean hasVoiceActivity() { + public Optional hasVoiceActivity() { return hasVoiceActivity; } @@ -359,9 +359,10 @@ public class GetMediaMetaDataMedia { /** * An array of parts for this media item. */ + @SuppressWarnings("unchecked") @JsonIgnore - public List part() { - return part; + public Optional> part() { + return (Optional>) part; } public final static Builder builder() { @@ -611,6 +612,15 @@ public class GetMediaMetaDataMedia { * Indicates whether voice activity is detected. */ public GetMediaMetaDataMedia withHasVoiceActivity(boolean hasVoiceActivity) { + Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); + this.hasVoiceActivity = Optional.ofNullable(hasVoiceActivity); + return this; + } + + /** + * Indicates whether voice activity is detected. + */ + public GetMediaMetaDataMedia withHasVoiceActivity(Optional hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = hasVoiceActivity; return this; @@ -668,6 +678,15 @@ public class GetMediaMetaDataMedia { * An array of parts for this media item. */ public GetMediaMetaDataMedia withPart(List part) { + Utils.checkNotNull(part, "part"); + this.part = Optional.ofNullable(part); + return this; + } + + /** + * An array of parts for this media item. + */ + public GetMediaMetaDataMedia withPart(Optional> part) { Utils.checkNotNull(part, "part"); this.part = part; return this; @@ -782,7 +801,7 @@ public class GetMediaMetaDataMedia { private Optional videoProfile = Optional.empty(); - private Boolean hasVoiceActivity; + private Optional hasVoiceActivity = Optional.empty(); private Optional audioProfile = Optional.empty(); @@ -790,7 +809,7 @@ public class GetMediaMetaDataMedia { private Optional has64bitOffsets = Optional.empty(); - private List part; + private Optional> part = Optional.empty(); private Builder() { // force use of static builder() method @@ -1039,6 +1058,15 @@ public class GetMediaMetaDataMedia { * Indicates whether voice activity is detected. */ public Builder hasVoiceActivity(boolean hasVoiceActivity) { + Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); + this.hasVoiceActivity = Optional.ofNullable(hasVoiceActivity); + return this; + } + + /** + * Indicates whether voice activity is detected. + */ + public Builder hasVoiceActivity(Optional hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = hasVoiceActivity; return this; @@ -1096,6 +1124,15 @@ public class GetMediaMetaDataMedia { * An array of parts for this media item. */ public Builder part(List part) { + Utils.checkNotNull(part, "part"); + this.part = Optional.ofNullable(part); + return this; + } + + /** + * An array of parts for this media item. + */ + public Builder part(Optional> part) { Utils.checkNotNull(part, "part"); this.part = part; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMetadata.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMetadata.java index 792367a8..ab815827 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMetadata.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataMetadata.java @@ -399,14 +399,14 @@ public class GetMediaMetaDataMetadata { */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("Producer") - private Optional> producer; + private Optional> producer; /** * An array of similar content objects. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("Similar") - private Optional> similar; + private Optional> similar; /** * An array of location objects. @@ -475,8 +475,8 @@ public class GetMediaMetaDataMetadata { @JsonProperty("Role") Optional> role, @JsonProperty("Director") Optional> director, @JsonProperty("Writer") Optional> writer, - @JsonProperty("Producer") Optional> producer, - @JsonProperty("Similar") Optional> similar, + @JsonProperty("Producer") Optional> producer, + @JsonProperty("Similar") Optional> similar, @JsonProperty("Location") Optional> location) { Utils.checkNotNull(ratingKey, "ratingKey"); Utils.checkNotNull(parentRatingKey, "parentRatingKey"); @@ -1082,8 +1082,8 @@ public class GetMediaMetaDataMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional> producer() { - return (Optional>) producer; + public Optional> producer() { + return (Optional>) producer; } /** @@ -1091,8 +1091,8 @@ public class GetMediaMetaDataMetadata { */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional> similar() { - return (Optional>) similar; + public Optional> similar() { + return (Optional>) similar; } /** @@ -1975,7 +1975,7 @@ public class GetMediaMetaDataMetadata { /** * An array of Writer roles. */ - public GetMediaMetaDataMetadata withProducer(List producer) { + public GetMediaMetaDataMetadata withProducer(List producer) { Utils.checkNotNull(producer, "producer"); this.producer = Optional.ofNullable(producer); return this; @@ -1984,7 +1984,7 @@ public class GetMediaMetaDataMetadata { /** * An array of Writer roles. */ - public GetMediaMetaDataMetadata withProducer(Optional> producer) { + public GetMediaMetaDataMetadata withProducer(Optional> producer) { Utils.checkNotNull(producer, "producer"); this.producer = producer; return this; @@ -1993,7 +1993,7 @@ public class GetMediaMetaDataMetadata { /** * An array of similar content objects. */ - public GetMediaMetaDataMetadata withSimilar(List similar) { + public GetMediaMetaDataMetadata withSimilar(List similar) { Utils.checkNotNull(similar, "similar"); this.similar = Optional.ofNullable(similar); return this; @@ -2002,7 +2002,7 @@ public class GetMediaMetaDataMetadata { /** * An array of similar content objects. */ - public GetMediaMetaDataMetadata withSimilar(Optional> similar) { + public GetMediaMetaDataMetadata withSimilar(Optional> similar) { Utils.checkNotNull(similar, "similar"); this.similar = similar; return this; @@ -2349,9 +2349,9 @@ public class GetMediaMetaDataMetadata { private Optional> writer = Optional.empty(); - private Optional> producer = Optional.empty(); + private Optional> producer = Optional.empty(); - private Optional> similar = Optional.empty(); + private Optional> similar = Optional.empty(); private Optional> location = Optional.empty(); @@ -3226,7 +3226,7 @@ public class GetMediaMetaDataMetadata { /** * An array of Writer roles. */ - public Builder producer(List producer) { + public Builder producer(List producer) { Utils.checkNotNull(producer, "producer"); this.producer = Optional.ofNullable(producer); return this; @@ -3235,7 +3235,7 @@ public class GetMediaMetaDataMetadata { /** * An array of Writer roles. */ - public Builder producer(Optional> producer) { + public Builder producer(Optional> producer) { Utils.checkNotNull(producer, "producer"); this.producer = producer; return this; @@ -3244,7 +3244,7 @@ public class GetMediaMetaDataMetadata { /** * An array of similar content objects. */ - public Builder similar(List similar) { + public Builder similar(List similar) { Utils.checkNotNull(similar, "similar"); this.similar = Optional.ofNullable(similar); return this; @@ -3253,7 +3253,7 @@ public class GetMediaMetaDataMetadata { /** * An array of similar content objects. */ - public Builder similar(Optional> similar) { + public Builder similar(Optional> similar) { Utils.checkNotNull(similar, "similar"); this.similar = similar; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreaming.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreaming.java index 56a294dd..296f1bce 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreaming.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreaming.java @@ -31,9 +31,9 @@ public class GetMediaMetaDataOptimizedForStreaming { this.value = value; } - public static GetMediaMetaDataOptimizedForStreaming of(OptimizedForStreaming1 value) { + public static GetMediaMetaDataOptimizedForStreaming of(GetMediaMetaDataOptimizedForStreaming1 value) { Utils.checkNotNull(value, "value"); - return new GetMediaMetaDataOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); + return new GetMediaMetaDataOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); } public static GetMediaMetaDataOptimizedForStreaming of(boolean value) { @@ -44,7 +44,7 @@ public class GetMediaMetaDataOptimizedForStreaming { /** * Returns an instance of one of these types: *
    - *
  • {@code dev.plexapi.sdk.models.operations.OptimizedForStreaming1}
  • + *
  • {@code dev.plexapi.sdk.models.operations.GetMediaMetaDataOptimizedForStreaming1}
  • *
  • {@code boolean}
  • *
* @@ -86,7 +86,7 @@ public class GetMediaMetaDataOptimizedForStreaming { public _Deserializer() { super(GetMediaMetaDataOptimizedForStreaming.class, false, TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT), - TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.java new file mode 100644 index 00000000..50ab8a75 --- /dev/null +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataOptimizedForStreamingLibrary1.java @@ -0,0 +1,33 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + + +package dev.plexapi.sdk.models.operations; +import com.fasterxml.jackson.annotation.JsonValue; +import java.util.Objects; +import java.util.Optional; +public enum GetMediaMetaDataOptimizedForStreamingLibrary1 { + ZERO(0), + ONE(1); + + @JsonValue + private final int value; + + private GetMediaMetaDataOptimizedForStreamingLibrary1(int value) { + this.value = value; + } + + public int value() { + return value; + } + + public static Optional fromValue(int value) { + for (GetMediaMetaDataOptimizedForStreamingLibrary1 o: GetMediaMetaDataOptimizedForStreamingLibrary1.values()) { + if (Objects.deepEquals(o.value, value)) { + return Optional.of(o); + } + } + return Optional.empty(); + } +} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataProducer.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataProducer.java new file mode 100644 index 00000000..4ab32043 --- /dev/null +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataProducer.java @@ -0,0 +1,354 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + + +package dev.plexapi.sdk.models.operations; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.plexapi.sdk.utils.Utils; +import java.lang.Long; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; +import java.util.Optional; + +public class GetMediaMetaDataProducer { + + /** + * The unique role identifier. + */ + @JsonProperty("id") + private long id; + + /** + * The filter string for the role. + */ + @JsonProperty("filter") + private String filter; + + /** + * The actor's name. + */ + @JsonProperty("tag") + private String tag; + + /** + * A key associated with the actor tag. + */ + @JsonProperty("tagKey") + private String tagKey; + + /** + * The character name or role. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("role") + private Optional role; + + /** + * URL for the role thumbnail image. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("thumb") + private Optional thumb; + + @JsonCreator + public GetMediaMetaDataProducer( + @JsonProperty("id") long id, + @JsonProperty("filter") String filter, + @JsonProperty("tag") String tag, + @JsonProperty("tagKey") String tagKey, + @JsonProperty("role") Optional role, + @JsonProperty("thumb") Optional thumb) { + Utils.checkNotNull(id, "id"); + Utils.checkNotNull(filter, "filter"); + Utils.checkNotNull(tag, "tag"); + Utils.checkNotNull(tagKey, "tagKey"); + Utils.checkNotNull(role, "role"); + Utils.checkNotNull(thumb, "thumb"); + this.id = id; + this.filter = filter; + this.tag = tag; + this.tagKey = tagKey; + this.role = role; + this.thumb = thumb; + } + + public GetMediaMetaDataProducer( + long id, + String filter, + String tag, + String tagKey) { + this(id, filter, tag, tagKey, Optional.empty(), Optional.empty()); + } + + /** + * The unique role identifier. + */ + @JsonIgnore + public long id() { + return id; + } + + /** + * The filter string for the role. + */ + @JsonIgnore + public String filter() { + return filter; + } + + /** + * The actor's name. + */ + @JsonIgnore + public String tag() { + return tag; + } + + /** + * A key associated with the actor tag. + */ + @JsonIgnore + public String tagKey() { + return tagKey; + } + + /** + * The character name or role. + */ + @JsonIgnore + public Optional role() { + return role; + } + + /** + * URL for the role thumbnail image. + */ + @JsonIgnore + public Optional thumb() { + return thumb; + } + + public final static Builder builder() { + return new Builder(); + } + + /** + * The unique role identifier. + */ + public GetMediaMetaDataProducer withId(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; + return this; + } + + /** + * The filter string for the role. + */ + public GetMediaMetaDataProducer withFilter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The actor's name. + */ + public GetMediaMetaDataProducer withTag(String tag) { + Utils.checkNotNull(tag, "tag"); + this.tag = tag; + return this; + } + + /** + * A key associated with the actor tag. + */ + public GetMediaMetaDataProducer withTagKey(String tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = tagKey; + return this; + } + + /** + * The character name or role. + */ + public GetMediaMetaDataProducer withRole(String role) { + Utils.checkNotNull(role, "role"); + this.role = Optional.ofNullable(role); + return this; + } + + /** + * The character name or role. + */ + public GetMediaMetaDataProducer withRole(Optional role) { + Utils.checkNotNull(role, "role"); + this.role = role; + return this; + } + + /** + * URL for the role thumbnail image. + */ + public GetMediaMetaDataProducer withThumb(String thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = Optional.ofNullable(thumb); + return this; + } + + /** + * URL for the role thumbnail image. + */ + public GetMediaMetaDataProducer withThumb(Optional thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = thumb; + return this; + } + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetMediaMetaDataProducer other = (GetMediaMetaDataProducer) o; + return + Objects.deepEquals(this.id, other.id) && + Objects.deepEquals(this.filter, other.filter) && + Objects.deepEquals(this.tag, other.tag) && + Objects.deepEquals(this.tagKey, other.tagKey) && + Objects.deepEquals(this.role, other.role) && + Objects.deepEquals(this.thumb, other.thumb); + } + + @Override + public int hashCode() { + return Objects.hash( + id, + filter, + tag, + tagKey, + role, + thumb); + } + + @Override + public String toString() { + return Utils.toString(GetMediaMetaDataProducer.class, + "id", id, + "filter", filter, + "tag", tag, + "tagKey", tagKey, + "role", role, + "thumb", thumb); + } + + public final static class Builder { + + private Long id; + + private String filter; + + private String tag; + + private String tagKey; + + private Optional role = Optional.empty(); + + private Optional thumb = Optional.empty(); + + private Builder() { + // force use of static builder() method + } + + /** + * The unique role identifier. + */ + public Builder id(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; + return this; + } + + /** + * The filter string for the role. + */ + public Builder filter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The actor's name. + */ + public Builder tag(String tag) { + Utils.checkNotNull(tag, "tag"); + this.tag = tag; + return this; + } + + /** + * A key associated with the actor tag. + */ + public Builder tagKey(String tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = tagKey; + return this; + } + + /** + * The character name or role. + */ + public Builder role(String role) { + Utils.checkNotNull(role, "role"); + this.role = Optional.ofNullable(role); + return this; + } + + /** + * The character name or role. + */ + public Builder role(Optional role) { + Utils.checkNotNull(role, "role"); + this.role = role; + return this; + } + + /** + * URL for the role thumbnail image. + */ + public Builder thumb(String thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = Optional.ofNullable(thumb); + return this; + } + + /** + * URL for the role thumbnail image. + */ + public Builder thumb(Optional thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = thumb; + return this; + } + + public GetMediaMetaDataProducer build() { + return new GetMediaMetaDataProducer( + id, + filter, + tag, + tagKey, + role, + thumb); + } + } +} + diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataSimilar.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataSimilar.java new file mode 100644 index 00000000..31604f4d --- /dev/null +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataSimilar.java @@ -0,0 +1,182 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + + +package dev.plexapi.sdk.models.operations; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import dev.plexapi.sdk.utils.Utils; +import java.lang.Long; +import java.lang.Override; +import java.lang.String; +import java.util.Objects; + +public class GetMediaMetaDataSimilar { + + /** + * The unique similar item identifier. + */ + @JsonProperty("id") + private long id; + + /** + * The filter string for similar items. + */ + @JsonProperty("filter") + private String filter; + + /** + * The tag or title of the similar content. + */ + @JsonProperty("tag") + private String tag; + + @JsonCreator + public GetMediaMetaDataSimilar( + @JsonProperty("id") long id, + @JsonProperty("filter") String filter, + @JsonProperty("tag") String tag) { + Utils.checkNotNull(id, "id"); + Utils.checkNotNull(filter, "filter"); + Utils.checkNotNull(tag, "tag"); + this.id = id; + this.filter = filter; + this.tag = tag; + } + + /** + * The unique similar item identifier. + */ + @JsonIgnore + public long id() { + return id; + } + + /** + * The filter string for similar items. + */ + @JsonIgnore + public String filter() { + return filter; + } + + /** + * The tag or title of the similar content. + */ + @JsonIgnore + public String tag() { + return tag; + } + + public final static Builder builder() { + return new Builder(); + } + + /** + * The unique similar item identifier. + */ + public GetMediaMetaDataSimilar withId(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; + return this; + } + + /** + * The filter string for similar items. + */ + public GetMediaMetaDataSimilar withFilter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The tag or title of the similar content. + */ + public GetMediaMetaDataSimilar withTag(String tag) { + Utils.checkNotNull(tag, "tag"); + this.tag = tag; + return this; + } + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetMediaMetaDataSimilar other = (GetMediaMetaDataSimilar) o; + return + Objects.deepEquals(this.id, other.id) && + Objects.deepEquals(this.filter, other.filter) && + Objects.deepEquals(this.tag, other.tag); + } + + @Override + public int hashCode() { + return Objects.hash( + id, + filter, + tag); + } + + @Override + public String toString() { + return Utils.toString(GetMediaMetaDataSimilar.class, + "id", id, + "filter", filter, + "tag", tag); + } + + public final static class Builder { + + private Long id; + + private String filter; + + private String tag; + + private Builder() { + // force use of static builder() method + } + + /** + * The unique similar item identifier. + */ + public Builder id(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; + return this; + } + + /** + * The filter string for similar items. + */ + public Builder filter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The tag or title of the similar content. + */ + public Builder tag(String tag) { + Utils.checkNotNull(tag, "tag"); + this.tag = tag; + return this; + } + + public GetMediaMetaDataSimilar build() { + return new GetMediaMetaDataSimilar( + id, + filter, + tag); + } + } +} + diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataStream.java b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataStream.java index 98a08c48..7a604453 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataStream.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetMediaMetaDataStream.java @@ -62,20 +62,23 @@ public class GetMediaMetaDataStream { /** * Language of the stream. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("language") - private String language; + private Optional language; /** * Language tag (e.g., en). */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("languageTag") - private String languageTag; + private Optional languageTag; /** * ISO language code. */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("languageCode") - private String languageCode; + private Optional languageCode; /** * Indicates whether header compression is enabled. @@ -175,6 +178,10 @@ public class GetMediaMetaDataStream { @JsonProperty("codedWidth") private Optional codedWidth; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("closedCaptions") + private Optional closedCaptions; + /** * Color primaries used. */ @@ -246,6 +253,10 @@ public class GetMediaMetaDataStream { @JsonProperty("scanType") private Optional scanType; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("embeddedInVideo") + private Optional embeddedInVideo; + /** * Number of reference frames. */ @@ -340,9 +351,9 @@ public class GetMediaMetaDataStream { @JsonProperty("codec") String codec, @JsonProperty("index") int index, @JsonProperty("bitrate") Optional bitrate, - @JsonProperty("language") String language, - @JsonProperty("languageTag") String languageTag, - @JsonProperty("languageCode") String languageCode, + @JsonProperty("language") Optional language, + @JsonProperty("languageTag") Optional languageTag, + @JsonProperty("languageCode") Optional languageCode, @JsonProperty("headerCompression") Optional headerCompression, @JsonProperty("DOVIBLCompatID") Optional doviblCompatID, @JsonProperty("DOVIBLPresent") Optional doviblPresent, @@ -357,6 +368,7 @@ public class GetMediaMetaDataStream { @JsonProperty("chromaSubsampling") Optional chromaSubsampling, @JsonProperty("codedHeight") Optional codedHeight, @JsonProperty("codedWidth") Optional codedWidth, + @JsonProperty("closedCaptions") Optional closedCaptions, @JsonProperty("colorPrimaries") Optional colorPrimaries, @JsonProperty("colorRange") Optional colorRange, @JsonProperty("colorSpace") Optional colorSpace, @@ -368,6 +380,7 @@ public class GetMediaMetaDataStream { @JsonProperty("hasScalingMatrix") Optional hasScalingMatrix, @JsonProperty("profile") Optional profile, @JsonProperty("scanType") Optional scanType, + @JsonProperty("embeddedInVideo") Optional embeddedInVideo, @JsonProperty("refFrames") Optional refFrames, @JsonProperty("width") Optional width, @JsonProperty("displayTitle") String displayTitle, @@ -404,6 +417,7 @@ public class GetMediaMetaDataStream { Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); Utils.checkNotNull(codedHeight, "codedHeight"); Utils.checkNotNull(codedWidth, "codedWidth"); + Utils.checkNotNull(closedCaptions, "closedCaptions"); Utils.checkNotNull(colorPrimaries, "colorPrimaries"); Utils.checkNotNull(colorRange, "colorRange"); Utils.checkNotNull(colorSpace, "colorSpace"); @@ -415,6 +429,7 @@ public class GetMediaMetaDataStream { Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); Utils.checkNotNull(profile, "profile"); Utils.checkNotNull(scanType, "scanType"); + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); Utils.checkNotNull(refFrames, "refFrames"); Utils.checkNotNull(width, "width"); Utils.checkNotNull(displayTitle, "displayTitle"); @@ -451,6 +466,7 @@ public class GetMediaMetaDataStream { this.chromaSubsampling = chromaSubsampling; this.codedHeight = codedHeight; this.codedWidth = codedWidth; + this.closedCaptions = closedCaptions; this.colorPrimaries = colorPrimaries; this.colorRange = colorRange; this.colorSpace = colorSpace; @@ -462,6 +478,7 @@ public class GetMediaMetaDataStream { this.hasScalingMatrix = hasScalingMatrix; this.profile = profile; this.scanType = scanType; + this.embeddedInVideo = embeddedInVideo; this.refFrames = refFrames; this.width = width; this.displayTitle = displayTitle; @@ -482,12 +499,9 @@ public class GetMediaMetaDataStream { int streamType, String codec, int index, - String language, - String languageTag, - String languageCode, String displayTitle, String extendedDisplayTitle) { - this(id, streamType, Optional.empty(), codec, index, Optional.empty(), language, languageTag, languageCode, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), displayTitle, extendedDisplayTitle, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + this(id, streamType, Optional.empty(), codec, index, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), displayTitle, extendedDisplayTitle, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } /** @@ -542,7 +556,7 @@ public class GetMediaMetaDataStream { * Language of the stream. */ @JsonIgnore - public String language() { + public Optional language() { return language; } @@ -550,7 +564,7 @@ public class GetMediaMetaDataStream { * Language tag (e.g., en). */ @JsonIgnore - public String languageTag() { + public Optional languageTag() { return languageTag; } @@ -558,7 +572,7 @@ public class GetMediaMetaDataStream { * ISO language code. */ @JsonIgnore - public String languageCode() { + public Optional languageCode() { return languageCode; } @@ -674,6 +688,11 @@ public class GetMediaMetaDataStream { return codedWidth; } + @JsonIgnore + public Optional closedCaptions() { + return closedCaptions; + } + /** * Color primaries used. */ @@ -756,6 +775,11 @@ public class GetMediaMetaDataStream { return scanType; } + @JsonIgnore + public Optional embeddedInVideo() { + return embeddedInVideo; + } + /** * Number of reference frames. */ @@ -937,6 +961,15 @@ public class GetMediaMetaDataStream { * Language of the stream. */ public GetMediaMetaDataStream withLanguage(String language) { + Utils.checkNotNull(language, "language"); + this.language = Optional.ofNullable(language); + return this; + } + + /** + * Language of the stream. + */ + public GetMediaMetaDataStream withLanguage(Optional language) { Utils.checkNotNull(language, "language"); this.language = language; return this; @@ -946,6 +979,15 @@ public class GetMediaMetaDataStream { * Language tag (e.g., en). */ public GetMediaMetaDataStream withLanguageTag(String languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = Optional.ofNullable(languageTag); + return this; + } + + /** + * Language tag (e.g., en). + */ + public GetMediaMetaDataStream withLanguageTag(Optional languageTag) { Utils.checkNotNull(languageTag, "languageTag"); this.languageTag = languageTag; return this; @@ -955,6 +997,15 @@ public class GetMediaMetaDataStream { * ISO language code. */ public GetMediaMetaDataStream withLanguageCode(String languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = Optional.ofNullable(languageCode); + return this; + } + + /** + * ISO language code. + */ + public GetMediaMetaDataStream withLanguageCode(Optional languageCode) { Utils.checkNotNull(languageCode, "languageCode"); this.languageCode = languageCode; return this; @@ -1212,6 +1263,18 @@ public class GetMediaMetaDataStream { return this; } + public GetMediaMetaDataStream withClosedCaptions(boolean closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = Optional.ofNullable(closedCaptions); + return this; + } + + public GetMediaMetaDataStream withClosedCaptions(Optional closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = closedCaptions; + return this; + } + /** * Color primaries used. */ @@ -1398,6 +1461,18 @@ public class GetMediaMetaDataStream { return this; } + public GetMediaMetaDataStream withEmbeddedInVideo(String embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = Optional.ofNullable(embeddedInVideo); + return this; + } + + public GetMediaMetaDataStream withEmbeddedInVideo(Optional embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = embeddedInVideo; + return this; + } + /** * Number of reference frames. */ @@ -1641,6 +1716,7 @@ public class GetMediaMetaDataStream { Objects.deepEquals(this.chromaSubsampling, other.chromaSubsampling) && Objects.deepEquals(this.codedHeight, other.codedHeight) && Objects.deepEquals(this.codedWidth, other.codedWidth) && + Objects.deepEquals(this.closedCaptions, other.closedCaptions) && Objects.deepEquals(this.colorPrimaries, other.colorPrimaries) && Objects.deepEquals(this.colorRange, other.colorRange) && Objects.deepEquals(this.colorSpace, other.colorSpace) && @@ -1652,6 +1728,7 @@ public class GetMediaMetaDataStream { Objects.deepEquals(this.hasScalingMatrix, other.hasScalingMatrix) && Objects.deepEquals(this.profile, other.profile) && Objects.deepEquals(this.scanType, other.scanType) && + Objects.deepEquals(this.embeddedInVideo, other.embeddedInVideo) && Objects.deepEquals(this.refFrames, other.refFrames) && Objects.deepEquals(this.width, other.width) && Objects.deepEquals(this.displayTitle, other.displayTitle) && @@ -1693,6 +1770,7 @@ public class GetMediaMetaDataStream { chromaSubsampling, codedHeight, codedWidth, + closedCaptions, colorPrimaries, colorRange, colorSpace, @@ -1704,6 +1782,7 @@ public class GetMediaMetaDataStream { hasScalingMatrix, profile, scanType, + embeddedInVideo, refFrames, width, displayTitle, @@ -1745,6 +1824,7 @@ public class GetMediaMetaDataStream { "chromaSubsampling", chromaSubsampling, "codedHeight", codedHeight, "codedWidth", codedWidth, + "closedCaptions", closedCaptions, "colorPrimaries", colorPrimaries, "colorRange", colorRange, "colorSpace", colorSpace, @@ -1756,6 +1836,7 @@ public class GetMediaMetaDataStream { "hasScalingMatrix", hasScalingMatrix, "profile", profile, "scanType", scanType, + "embeddedInVideo", embeddedInVideo, "refFrames", refFrames, "width", width, "displayTitle", displayTitle, @@ -1785,11 +1866,11 @@ public class GetMediaMetaDataStream { private Optional bitrate = Optional.empty(); - private String language; + private Optional language = Optional.empty(); - private String languageTag; + private Optional languageTag = Optional.empty(); - private String languageCode; + private Optional languageCode = Optional.empty(); private Optional headerCompression = Optional.empty(); @@ -1819,6 +1900,8 @@ public class GetMediaMetaDataStream { private Optional codedWidth = Optional.empty(); + private Optional closedCaptions = Optional.empty(); + private Optional colorPrimaries = Optional.empty(); private Optional colorRange = Optional.empty(); @@ -1841,6 +1924,8 @@ public class GetMediaMetaDataStream { private Optional scanType = Optional.empty(); + private Optional embeddedInVideo = Optional.empty(); + private Optional refFrames = Optional.empty(); private Optional width = Optional.empty(); @@ -1947,6 +2032,15 @@ public class GetMediaMetaDataStream { * Language of the stream. */ public Builder language(String language) { + Utils.checkNotNull(language, "language"); + this.language = Optional.ofNullable(language); + return this; + } + + /** + * Language of the stream. + */ + public Builder language(Optional language) { Utils.checkNotNull(language, "language"); this.language = language; return this; @@ -1956,6 +2050,15 @@ public class GetMediaMetaDataStream { * Language tag (e.g., en). */ public Builder languageTag(String languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = Optional.ofNullable(languageTag); + return this; + } + + /** + * Language tag (e.g., en). + */ + public Builder languageTag(Optional languageTag) { Utils.checkNotNull(languageTag, "languageTag"); this.languageTag = languageTag; return this; @@ -1965,6 +2068,15 @@ public class GetMediaMetaDataStream { * ISO language code. */ public Builder languageCode(String languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = Optional.ofNullable(languageCode); + return this; + } + + /** + * ISO language code. + */ + public Builder languageCode(Optional languageCode) { Utils.checkNotNull(languageCode, "languageCode"); this.languageCode = languageCode; return this; @@ -2222,6 +2334,18 @@ public class GetMediaMetaDataStream { return this; } + public Builder closedCaptions(boolean closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = Optional.ofNullable(closedCaptions); + return this; + } + + public Builder closedCaptions(Optional closedCaptions) { + Utils.checkNotNull(closedCaptions, "closedCaptions"); + this.closedCaptions = closedCaptions; + return this; + } + /** * Color primaries used. */ @@ -2408,6 +2532,18 @@ public class GetMediaMetaDataStream { return this; } + public Builder embeddedInVideo(String embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = Optional.ofNullable(embeddedInVideo); + return this; + } + + public Builder embeddedInVideo(Optional embeddedInVideo) { + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + this.embeddedInVideo = embeddedInVideo; + return this; + } + /** * Number of reference frames. */ @@ -2643,6 +2779,7 @@ public class GetMediaMetaDataStream { chromaSubsampling, codedHeight, codedWidth, + closedCaptions, colorPrimaries, colorRange, colorSpace, @@ -2654,6 +2791,7 @@ public class GetMediaMetaDataStream { hasScalingMatrix, profile, scanType, + embeddedInVideo, refFrames, width, displayTitle, diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMedia.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMedia.java deleted file mode 100644 index edd8666b..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMedia.java +++ /dev/null @@ -1,699 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Double; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckMedia { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("id") - private Optional id; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("duration") - private Optional duration; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("bitrate") - private Optional bitrate; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("width") - private Optional width; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("height") - private Optional height; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("aspectRatio") - private Optional aspectRatio; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audioChannels") - private Optional audioChannels; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audioCodec") - private Optional audioCodec; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("videoCodec") - private Optional videoCodec; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("videoResolution") - private Optional videoResolution; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("container") - private Optional container; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("videoFrameRate") - private Optional videoFrameRate; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audioProfile") - private Optional audioProfile; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("videoProfile") - private Optional videoProfile; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Part") - private Optional> part; - - @JsonCreator - public GetOnDeckMedia( - @JsonProperty("id") Optional id, - @JsonProperty("duration") Optional duration, - @JsonProperty("bitrate") Optional bitrate, - @JsonProperty("width") Optional width, - @JsonProperty("height") Optional height, - @JsonProperty("aspectRatio") Optional aspectRatio, - @JsonProperty("audioChannels") Optional audioChannels, - @JsonProperty("audioCodec") Optional audioCodec, - @JsonProperty("videoCodec") Optional videoCodec, - @JsonProperty("videoResolution") Optional videoResolution, - @JsonProperty("container") Optional container, - @JsonProperty("videoFrameRate") Optional videoFrameRate, - @JsonProperty("audioProfile") Optional audioProfile, - @JsonProperty("videoProfile") Optional videoProfile, - @JsonProperty("Part") Optional> part) { - Utils.checkNotNull(id, "id"); - Utils.checkNotNull(duration, "duration"); - Utils.checkNotNull(bitrate, "bitrate"); - Utils.checkNotNull(width, "width"); - Utils.checkNotNull(height, "height"); - Utils.checkNotNull(aspectRatio, "aspectRatio"); - Utils.checkNotNull(audioChannels, "audioChannels"); - Utils.checkNotNull(audioCodec, "audioCodec"); - Utils.checkNotNull(videoCodec, "videoCodec"); - Utils.checkNotNull(videoResolution, "videoResolution"); - Utils.checkNotNull(container, "container"); - Utils.checkNotNull(videoFrameRate, "videoFrameRate"); - Utils.checkNotNull(audioProfile, "audioProfile"); - Utils.checkNotNull(videoProfile, "videoProfile"); - Utils.checkNotNull(part, "part"); - this.id = id; - this.duration = duration; - this.bitrate = bitrate; - this.width = width; - this.height = height; - this.aspectRatio = aspectRatio; - this.audioChannels = audioChannels; - this.audioCodec = audioCodec; - this.videoCodec = videoCodec; - this.videoResolution = videoResolution; - this.container = container; - this.videoFrameRate = videoFrameRate; - this.audioProfile = audioProfile; - this.videoProfile = videoProfile; - this.part = part; - } - - public GetOnDeckMedia() { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional id() { - return id; - } - - @JsonIgnore - public Optional duration() { - return duration; - } - - @JsonIgnore - public Optional bitrate() { - return bitrate; - } - - @JsonIgnore - public Optional width() { - return width; - } - - @JsonIgnore - public Optional height() { - return height; - } - - @JsonIgnore - public Optional aspectRatio() { - return aspectRatio; - } - - @JsonIgnore - public Optional audioChannels() { - return audioChannels; - } - - @JsonIgnore - public Optional audioCodec() { - return audioCodec; - } - - @JsonIgnore - public Optional videoCodec() { - return videoCodec; - } - - @JsonIgnore - public Optional videoResolution() { - return videoResolution; - } - - @JsonIgnore - public Optional container() { - return container; - } - - @JsonIgnore - public Optional videoFrameRate() { - return videoFrameRate; - } - - @JsonIgnore - public Optional audioProfile() { - return audioProfile; - } - - @JsonIgnore - public Optional videoProfile() { - return videoProfile; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> part() { - return (Optional>) part; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckMedia withId(double id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - public GetOnDeckMedia withId(Optional id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public GetOnDeckMedia withDuration(double duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public GetOnDeckMedia withDuration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public GetOnDeckMedia withBitrate(double bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = Optional.ofNullable(bitrate); - return this; - } - - public GetOnDeckMedia withBitrate(Optional bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = bitrate; - return this; - } - - public GetOnDeckMedia withWidth(double width) { - Utils.checkNotNull(width, "width"); - this.width = Optional.ofNullable(width); - return this; - } - - public GetOnDeckMedia withWidth(Optional width) { - Utils.checkNotNull(width, "width"); - this.width = width; - return this; - } - - public GetOnDeckMedia withHeight(double height) { - Utils.checkNotNull(height, "height"); - this.height = Optional.ofNullable(height); - return this; - } - - public GetOnDeckMedia withHeight(Optional height) { - Utils.checkNotNull(height, "height"); - this.height = height; - return this; - } - - public GetOnDeckMedia withAspectRatio(double aspectRatio) { - Utils.checkNotNull(aspectRatio, "aspectRatio"); - this.aspectRatio = Optional.ofNullable(aspectRatio); - return this; - } - - public GetOnDeckMedia withAspectRatio(Optional aspectRatio) { - Utils.checkNotNull(aspectRatio, "aspectRatio"); - this.aspectRatio = aspectRatio; - return this; - } - - public GetOnDeckMedia withAudioChannels(double audioChannels) { - Utils.checkNotNull(audioChannels, "audioChannels"); - this.audioChannels = Optional.ofNullable(audioChannels); - return this; - } - - public GetOnDeckMedia withAudioChannels(Optional audioChannels) { - Utils.checkNotNull(audioChannels, "audioChannels"); - this.audioChannels = audioChannels; - return this; - } - - public GetOnDeckMedia withAudioCodec(String audioCodec) { - Utils.checkNotNull(audioCodec, "audioCodec"); - this.audioCodec = Optional.ofNullable(audioCodec); - return this; - } - - public GetOnDeckMedia withAudioCodec(Optional audioCodec) { - Utils.checkNotNull(audioCodec, "audioCodec"); - this.audioCodec = audioCodec; - return this; - } - - public GetOnDeckMedia withVideoCodec(String videoCodec) { - Utils.checkNotNull(videoCodec, "videoCodec"); - this.videoCodec = Optional.ofNullable(videoCodec); - return this; - } - - public GetOnDeckMedia withVideoCodec(Optional videoCodec) { - Utils.checkNotNull(videoCodec, "videoCodec"); - this.videoCodec = videoCodec; - return this; - } - - public GetOnDeckMedia withVideoResolution(String videoResolution) { - Utils.checkNotNull(videoResolution, "videoResolution"); - this.videoResolution = Optional.ofNullable(videoResolution); - return this; - } - - public GetOnDeckMedia withVideoResolution(Optional videoResolution) { - Utils.checkNotNull(videoResolution, "videoResolution"); - this.videoResolution = videoResolution; - return this; - } - - public GetOnDeckMedia withContainer(String container) { - Utils.checkNotNull(container, "container"); - this.container = Optional.ofNullable(container); - return this; - } - - public GetOnDeckMedia withContainer(Optional container) { - Utils.checkNotNull(container, "container"); - this.container = container; - return this; - } - - public GetOnDeckMedia withVideoFrameRate(String videoFrameRate) { - Utils.checkNotNull(videoFrameRate, "videoFrameRate"); - this.videoFrameRate = Optional.ofNullable(videoFrameRate); - return this; - } - - public GetOnDeckMedia withVideoFrameRate(Optional videoFrameRate) { - Utils.checkNotNull(videoFrameRate, "videoFrameRate"); - this.videoFrameRate = videoFrameRate; - return this; - } - - public GetOnDeckMedia withAudioProfile(String audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = Optional.ofNullable(audioProfile); - return this; - } - - public GetOnDeckMedia withAudioProfile(Optional audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = audioProfile; - return this; - } - - public GetOnDeckMedia withVideoProfile(String videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = Optional.ofNullable(videoProfile); - return this; - } - - public GetOnDeckMedia withVideoProfile(Optional videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = videoProfile; - return this; - } - - public GetOnDeckMedia withPart(List part) { - Utils.checkNotNull(part, "part"); - this.part = Optional.ofNullable(part); - return this; - } - - public GetOnDeckMedia withPart(Optional> part) { - Utils.checkNotNull(part, "part"); - this.part = part; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckMedia other = (GetOnDeckMedia) o; - return - Objects.deepEquals(this.id, other.id) && - Objects.deepEquals(this.duration, other.duration) && - Objects.deepEquals(this.bitrate, other.bitrate) && - Objects.deepEquals(this.width, other.width) && - Objects.deepEquals(this.height, other.height) && - Objects.deepEquals(this.aspectRatio, other.aspectRatio) && - Objects.deepEquals(this.audioChannels, other.audioChannels) && - Objects.deepEquals(this.audioCodec, other.audioCodec) && - Objects.deepEquals(this.videoCodec, other.videoCodec) && - Objects.deepEquals(this.videoResolution, other.videoResolution) && - Objects.deepEquals(this.container, other.container) && - Objects.deepEquals(this.videoFrameRate, other.videoFrameRate) && - Objects.deepEquals(this.audioProfile, other.audioProfile) && - Objects.deepEquals(this.videoProfile, other.videoProfile) && - Objects.deepEquals(this.part, other.part); - } - - @Override - public int hashCode() { - return Objects.hash( - id, - duration, - bitrate, - width, - height, - aspectRatio, - audioChannels, - audioCodec, - videoCodec, - videoResolution, - container, - videoFrameRate, - audioProfile, - videoProfile, - part); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckMedia.class, - "id", id, - "duration", duration, - "bitrate", bitrate, - "width", width, - "height", height, - "aspectRatio", aspectRatio, - "audioChannels", audioChannels, - "audioCodec", audioCodec, - "videoCodec", videoCodec, - "videoResolution", videoResolution, - "container", container, - "videoFrameRate", videoFrameRate, - "audioProfile", audioProfile, - "videoProfile", videoProfile, - "part", part); - } - - public final static class Builder { - - private Optional id = Optional.empty(); - - private Optional duration = Optional.empty(); - - private Optional bitrate = Optional.empty(); - - private Optional width = Optional.empty(); - - private Optional height = Optional.empty(); - - private Optional aspectRatio = Optional.empty(); - - private Optional audioChannels = Optional.empty(); - - private Optional audioCodec = Optional.empty(); - - private Optional videoCodec = Optional.empty(); - - private Optional videoResolution = Optional.empty(); - - private Optional container = Optional.empty(); - - private Optional videoFrameRate = Optional.empty(); - - private Optional audioProfile = Optional.empty(); - - private Optional videoProfile = Optional.empty(); - - private Optional> part = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder id(double id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - public Builder id(Optional id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public Builder duration(double duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public Builder duration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public Builder bitrate(double bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = Optional.ofNullable(bitrate); - return this; - } - - public Builder bitrate(Optional bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = bitrate; - return this; - } - - public Builder width(double width) { - Utils.checkNotNull(width, "width"); - this.width = Optional.ofNullable(width); - return this; - } - - public Builder width(Optional width) { - Utils.checkNotNull(width, "width"); - this.width = width; - return this; - } - - public Builder height(double height) { - Utils.checkNotNull(height, "height"); - this.height = Optional.ofNullable(height); - return this; - } - - public Builder height(Optional height) { - Utils.checkNotNull(height, "height"); - this.height = height; - return this; - } - - public Builder aspectRatio(double aspectRatio) { - Utils.checkNotNull(aspectRatio, "aspectRatio"); - this.aspectRatio = Optional.ofNullable(aspectRatio); - return this; - } - - public Builder aspectRatio(Optional aspectRatio) { - Utils.checkNotNull(aspectRatio, "aspectRatio"); - this.aspectRatio = aspectRatio; - return this; - } - - public Builder audioChannels(double audioChannels) { - Utils.checkNotNull(audioChannels, "audioChannels"); - this.audioChannels = Optional.ofNullable(audioChannels); - return this; - } - - public Builder audioChannels(Optional audioChannels) { - Utils.checkNotNull(audioChannels, "audioChannels"); - this.audioChannels = audioChannels; - return this; - } - - public Builder audioCodec(String audioCodec) { - Utils.checkNotNull(audioCodec, "audioCodec"); - this.audioCodec = Optional.ofNullable(audioCodec); - return this; - } - - public Builder audioCodec(Optional audioCodec) { - Utils.checkNotNull(audioCodec, "audioCodec"); - this.audioCodec = audioCodec; - return this; - } - - public Builder videoCodec(String videoCodec) { - Utils.checkNotNull(videoCodec, "videoCodec"); - this.videoCodec = Optional.ofNullable(videoCodec); - return this; - } - - public Builder videoCodec(Optional videoCodec) { - Utils.checkNotNull(videoCodec, "videoCodec"); - this.videoCodec = videoCodec; - return this; - } - - public Builder videoResolution(String videoResolution) { - Utils.checkNotNull(videoResolution, "videoResolution"); - this.videoResolution = Optional.ofNullable(videoResolution); - return this; - } - - public Builder videoResolution(Optional videoResolution) { - Utils.checkNotNull(videoResolution, "videoResolution"); - this.videoResolution = videoResolution; - return this; - } - - public Builder container(String container) { - Utils.checkNotNull(container, "container"); - this.container = Optional.ofNullable(container); - return this; - } - - public Builder container(Optional container) { - Utils.checkNotNull(container, "container"); - this.container = container; - return this; - } - - public Builder videoFrameRate(String videoFrameRate) { - Utils.checkNotNull(videoFrameRate, "videoFrameRate"); - this.videoFrameRate = Optional.ofNullable(videoFrameRate); - return this; - } - - public Builder videoFrameRate(Optional videoFrameRate) { - Utils.checkNotNull(videoFrameRate, "videoFrameRate"); - this.videoFrameRate = videoFrameRate; - return this; - } - - public Builder audioProfile(String audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = Optional.ofNullable(audioProfile); - return this; - } - - public Builder audioProfile(Optional audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = audioProfile; - return this; - } - - public Builder videoProfile(String videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = Optional.ofNullable(videoProfile); - return this; - } - - public Builder videoProfile(Optional videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = videoProfile; - return this; - } - - public Builder part(List part) { - Utils.checkNotNull(part, "part"); - this.part = Optional.ofNullable(part); - return this; - } - - public Builder part(Optional> part) { - Utils.checkNotNull(part, "part"); - this.part = part; - return this; - } - - public GetOnDeckMedia build() { - return new GetOnDeckMedia( - id, - duration, - bitrate, - width, - height, - aspectRatio, - audioChannels, - audioCodec, - videoCodec, - videoResolution, - container, - videoFrameRate, - audioProfile, - videoProfile, - part); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMediaContainer.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMediaContainer.java deleted file mode 100644 index c6eb82a8..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMediaContainer.java +++ /dev/null @@ -1,364 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Boolean; -import java.lang.Double; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckMediaContainer { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("size") - private Optional size; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("allowSync") - private Optional allowSync; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("identifier") - private Optional identifier; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("mediaTagPrefix") - private Optional mediaTagPrefix; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("mediaTagVersion") - private Optional mediaTagVersion; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("mixedParents") - private Optional mixedParents; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Metadata") - private Optional> metadata; - - @JsonCreator - public GetOnDeckMediaContainer( - @JsonProperty("size") Optional size, - @JsonProperty("allowSync") Optional allowSync, - @JsonProperty("identifier") Optional identifier, - @JsonProperty("mediaTagPrefix") Optional mediaTagPrefix, - @JsonProperty("mediaTagVersion") Optional mediaTagVersion, - @JsonProperty("mixedParents") Optional mixedParents, - @JsonProperty("Metadata") Optional> metadata) { - Utils.checkNotNull(size, "size"); - Utils.checkNotNull(allowSync, "allowSync"); - Utils.checkNotNull(identifier, "identifier"); - Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix"); - Utils.checkNotNull(mediaTagVersion, "mediaTagVersion"); - Utils.checkNotNull(mixedParents, "mixedParents"); - Utils.checkNotNull(metadata, "metadata"); - this.size = size; - this.allowSync = allowSync; - this.identifier = identifier; - this.mediaTagPrefix = mediaTagPrefix; - this.mediaTagVersion = mediaTagVersion; - this.mixedParents = mixedParents; - this.metadata = metadata; - } - - public GetOnDeckMediaContainer() { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional size() { - return size; - } - - @JsonIgnore - public Optional allowSync() { - return allowSync; - } - - @JsonIgnore - public Optional identifier() { - return identifier; - } - - @JsonIgnore - public Optional mediaTagPrefix() { - return mediaTagPrefix; - } - - @JsonIgnore - public Optional mediaTagVersion() { - return mediaTagVersion; - } - - @JsonIgnore - public Optional mixedParents() { - return mixedParents; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> metadata() { - return (Optional>) metadata; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckMediaContainer withSize(double size) { - Utils.checkNotNull(size, "size"); - this.size = Optional.ofNullable(size); - return this; - } - - public GetOnDeckMediaContainer withSize(Optional size) { - Utils.checkNotNull(size, "size"); - this.size = size; - return this; - } - - public GetOnDeckMediaContainer withAllowSync(boolean allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = Optional.ofNullable(allowSync); - return this; - } - - public GetOnDeckMediaContainer withAllowSync(Optional allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = allowSync; - return this; - } - - public GetOnDeckMediaContainer withIdentifier(String identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = Optional.ofNullable(identifier); - return this; - } - - public GetOnDeckMediaContainer withIdentifier(Optional identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = identifier; - return this; - } - - public GetOnDeckMediaContainer withMediaTagPrefix(String mediaTagPrefix) { - Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix"); - this.mediaTagPrefix = Optional.ofNullable(mediaTagPrefix); - return this; - } - - public GetOnDeckMediaContainer withMediaTagPrefix(Optional mediaTagPrefix) { - Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix"); - this.mediaTagPrefix = mediaTagPrefix; - return this; - } - - public GetOnDeckMediaContainer withMediaTagVersion(double mediaTagVersion) { - Utils.checkNotNull(mediaTagVersion, "mediaTagVersion"); - this.mediaTagVersion = Optional.ofNullable(mediaTagVersion); - return this; - } - - public GetOnDeckMediaContainer withMediaTagVersion(Optional mediaTagVersion) { - Utils.checkNotNull(mediaTagVersion, "mediaTagVersion"); - this.mediaTagVersion = mediaTagVersion; - return this; - } - - public GetOnDeckMediaContainer withMixedParents(boolean mixedParents) { - Utils.checkNotNull(mixedParents, "mixedParents"); - this.mixedParents = Optional.ofNullable(mixedParents); - return this; - } - - public GetOnDeckMediaContainer withMixedParents(Optional mixedParents) { - Utils.checkNotNull(mixedParents, "mixedParents"); - this.mixedParents = mixedParents; - return this; - } - - public GetOnDeckMediaContainer withMetadata(List metadata) { - Utils.checkNotNull(metadata, "metadata"); - this.metadata = Optional.ofNullable(metadata); - return this; - } - - public GetOnDeckMediaContainer withMetadata(Optional> metadata) { - Utils.checkNotNull(metadata, "metadata"); - this.metadata = metadata; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckMediaContainer other = (GetOnDeckMediaContainer) o; - return - Objects.deepEquals(this.size, other.size) && - Objects.deepEquals(this.allowSync, other.allowSync) && - Objects.deepEquals(this.identifier, other.identifier) && - Objects.deepEquals(this.mediaTagPrefix, other.mediaTagPrefix) && - Objects.deepEquals(this.mediaTagVersion, other.mediaTagVersion) && - Objects.deepEquals(this.mixedParents, other.mixedParents) && - Objects.deepEquals(this.metadata, other.metadata); - } - - @Override - public int hashCode() { - return Objects.hash( - size, - allowSync, - identifier, - mediaTagPrefix, - mediaTagVersion, - mixedParents, - metadata); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckMediaContainer.class, - "size", size, - "allowSync", allowSync, - "identifier", identifier, - "mediaTagPrefix", mediaTagPrefix, - "mediaTagVersion", mediaTagVersion, - "mixedParents", mixedParents, - "metadata", metadata); - } - - public final static class Builder { - - private Optional size = Optional.empty(); - - private Optional allowSync = Optional.empty(); - - private Optional identifier = Optional.empty(); - - private Optional mediaTagPrefix = Optional.empty(); - - private Optional mediaTagVersion = Optional.empty(); - - private Optional mixedParents = Optional.empty(); - - private Optional> metadata = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder size(double size) { - Utils.checkNotNull(size, "size"); - this.size = Optional.ofNullable(size); - return this; - } - - public Builder size(Optional size) { - Utils.checkNotNull(size, "size"); - this.size = size; - return this; - } - - public Builder allowSync(boolean allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = Optional.ofNullable(allowSync); - return this; - } - - public Builder allowSync(Optional allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = allowSync; - return this; - } - - public Builder identifier(String identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = Optional.ofNullable(identifier); - return this; - } - - public Builder identifier(Optional identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = identifier; - return this; - } - - public Builder mediaTagPrefix(String mediaTagPrefix) { - Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix"); - this.mediaTagPrefix = Optional.ofNullable(mediaTagPrefix); - return this; - } - - public Builder mediaTagPrefix(Optional mediaTagPrefix) { - Utils.checkNotNull(mediaTagPrefix, "mediaTagPrefix"); - this.mediaTagPrefix = mediaTagPrefix; - return this; - } - - public Builder mediaTagVersion(double mediaTagVersion) { - Utils.checkNotNull(mediaTagVersion, "mediaTagVersion"); - this.mediaTagVersion = Optional.ofNullable(mediaTagVersion); - return this; - } - - public Builder mediaTagVersion(Optional mediaTagVersion) { - Utils.checkNotNull(mediaTagVersion, "mediaTagVersion"); - this.mediaTagVersion = mediaTagVersion; - return this; - } - - public Builder mixedParents(boolean mixedParents) { - Utils.checkNotNull(mixedParents, "mixedParents"); - this.mixedParents = Optional.ofNullable(mixedParents); - return this; - } - - public Builder mixedParents(Optional mixedParents) { - Utils.checkNotNull(mixedParents, "mixedParents"); - this.mixedParents = mixedParents; - return this; - } - - public Builder metadata(List metadata) { - Utils.checkNotNull(metadata, "metadata"); - this.metadata = Optional.ofNullable(metadata); - return this; - } - - public Builder metadata(Optional> metadata) { - Utils.checkNotNull(metadata, "metadata"); - this.metadata = metadata; - return this; - } - - public GetOnDeckMediaContainer build() { - return new GetOnDeckMediaContainer( - size, - allowSync, - identifier, - mediaTagPrefix, - mediaTagVersion, - mixedParents, - metadata); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMetadata.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMetadata.java deleted file mode 100644 index 6469de35..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckMetadata.java +++ /dev/null @@ -1,1584 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Boolean; -import java.lang.Double; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.time.OffsetDateTime; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckMetadata { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("allowSync") - private Optional allowSync; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionID") - private Optional librarySectionID; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionTitle") - private Optional librarySectionTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionUUID") - private Optional librarySectionUUID; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("ratingKey") - private Optional ratingKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("key") - private Optional key; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentRatingKey") - private Optional parentRatingKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentRatingKey") - private Optional grandparentRatingKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("guid") - private Optional guid; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentGuid") - private Optional parentGuid; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentGuid") - private Optional grandparentGuid; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("type") - private Optional type; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("title") - private Optional title; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentKey") - private Optional grandparentKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentKey") - private Optional parentKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionKey") - private Optional librarySectionKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentTitle") - private Optional grandparentTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentTitle") - private Optional parentTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("contentRating") - private Optional contentRating; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("summary") - private Optional summary; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("index") - private Optional index; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentIndex") - private Optional parentIndex; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("lastViewedAt") - private Optional lastViewedAt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("year") - private Optional year; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("thumb") - private Optional thumb; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("art") - private Optional art; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentThumb") - private Optional parentThumb; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentThumb") - private Optional grandparentThumb; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentArt") - private Optional grandparentArt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentTheme") - private Optional grandparentTheme; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("duration") - private Optional duration; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("originallyAvailableAt") - private Optional originallyAvailableAt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("addedAt") - private Optional addedAt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("updatedAt") - private Optional updatedAt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Media") - private Optional> media; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Guid") - private Optional> guids; - - @JsonCreator - public GetOnDeckMetadata( - @JsonProperty("allowSync") Optional allowSync, - @JsonProperty("librarySectionID") Optional librarySectionID, - @JsonProperty("librarySectionTitle") Optional librarySectionTitle, - @JsonProperty("librarySectionUUID") Optional librarySectionUUID, - @JsonProperty("ratingKey") Optional ratingKey, - @JsonProperty("key") Optional key, - @JsonProperty("parentRatingKey") Optional parentRatingKey, - @JsonProperty("grandparentRatingKey") Optional grandparentRatingKey, - @JsonProperty("guid") Optional guid, - @JsonProperty("parentGuid") Optional parentGuid, - @JsonProperty("grandparentGuid") Optional grandparentGuid, - @JsonProperty("type") Optional type, - @JsonProperty("title") Optional title, - @JsonProperty("grandparentKey") Optional grandparentKey, - @JsonProperty("parentKey") Optional parentKey, - @JsonProperty("librarySectionKey") Optional librarySectionKey, - @JsonProperty("grandparentTitle") Optional grandparentTitle, - @JsonProperty("parentTitle") Optional parentTitle, - @JsonProperty("contentRating") Optional contentRating, - @JsonProperty("summary") Optional summary, - @JsonProperty("index") Optional index, - @JsonProperty("parentIndex") Optional parentIndex, - @JsonProperty("lastViewedAt") Optional lastViewedAt, - @JsonProperty("year") Optional year, - @JsonProperty("thumb") Optional thumb, - @JsonProperty("art") Optional art, - @JsonProperty("parentThumb") Optional parentThumb, - @JsonProperty("grandparentThumb") Optional grandparentThumb, - @JsonProperty("grandparentArt") Optional grandparentArt, - @JsonProperty("grandparentTheme") Optional grandparentTheme, - @JsonProperty("duration") Optional duration, - @JsonProperty("originallyAvailableAt") Optional originallyAvailableAt, - @JsonProperty("addedAt") Optional addedAt, - @JsonProperty("updatedAt") Optional updatedAt, - @JsonProperty("Media") Optional> media, - @JsonProperty("Guid") Optional> guids) { - Utils.checkNotNull(allowSync, "allowSync"); - Utils.checkNotNull(librarySectionID, "librarySectionID"); - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - Utils.checkNotNull(librarySectionUUID, "librarySectionUUID"); - Utils.checkNotNull(ratingKey, "ratingKey"); - Utils.checkNotNull(key, "key"); - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - Utils.checkNotNull(guid, "guid"); - Utils.checkNotNull(parentGuid, "parentGuid"); - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - Utils.checkNotNull(type, "type"); - Utils.checkNotNull(title, "title"); - Utils.checkNotNull(grandparentKey, "grandparentKey"); - Utils.checkNotNull(parentKey, "parentKey"); - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - Utils.checkNotNull(parentTitle, "parentTitle"); - Utils.checkNotNull(contentRating, "contentRating"); - Utils.checkNotNull(summary, "summary"); - Utils.checkNotNull(index, "index"); - Utils.checkNotNull(parentIndex, "parentIndex"); - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - Utils.checkNotNull(year, "year"); - Utils.checkNotNull(thumb, "thumb"); - Utils.checkNotNull(art, "art"); - Utils.checkNotNull(parentThumb, "parentThumb"); - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - Utils.checkNotNull(grandparentArt, "grandparentArt"); - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - Utils.checkNotNull(duration, "duration"); - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - Utils.checkNotNull(addedAt, "addedAt"); - Utils.checkNotNull(updatedAt, "updatedAt"); - Utils.checkNotNull(media, "media"); - Utils.checkNotNull(guids, "guids"); - this.allowSync = allowSync; - this.librarySectionID = librarySectionID; - this.librarySectionTitle = librarySectionTitle; - this.librarySectionUUID = librarySectionUUID; - this.ratingKey = ratingKey; - this.key = key; - this.parentRatingKey = parentRatingKey; - this.grandparentRatingKey = grandparentRatingKey; - this.guid = guid; - this.parentGuid = parentGuid; - this.grandparentGuid = grandparentGuid; - this.type = type; - this.title = title; - this.grandparentKey = grandparentKey; - this.parentKey = parentKey; - this.librarySectionKey = librarySectionKey; - this.grandparentTitle = grandparentTitle; - this.parentTitle = parentTitle; - this.contentRating = contentRating; - this.summary = summary; - this.index = index; - this.parentIndex = parentIndex; - this.lastViewedAt = lastViewedAt; - this.year = year; - this.thumb = thumb; - this.art = art; - this.parentThumb = parentThumb; - this.grandparentThumb = grandparentThumb; - this.grandparentArt = grandparentArt; - this.grandparentTheme = grandparentTheme; - this.duration = duration; - this.originallyAvailableAt = originallyAvailableAt; - this.addedAt = addedAt; - this.updatedAt = updatedAt; - this.media = media; - this.guids = guids; - } - - public GetOnDeckMetadata() { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional allowSync() { - return allowSync; - } - - @JsonIgnore - public Optional librarySectionID() { - return librarySectionID; - } - - @JsonIgnore - public Optional librarySectionTitle() { - return librarySectionTitle; - } - - @JsonIgnore - public Optional librarySectionUUID() { - return librarySectionUUID; - } - - @JsonIgnore - public Optional ratingKey() { - return ratingKey; - } - - @JsonIgnore - public Optional key() { - return key; - } - - @JsonIgnore - public Optional parentRatingKey() { - return parentRatingKey; - } - - @JsonIgnore - public Optional grandparentRatingKey() { - return grandparentRatingKey; - } - - @JsonIgnore - public Optional guid() { - return guid; - } - - @JsonIgnore - public Optional parentGuid() { - return parentGuid; - } - - @JsonIgnore - public Optional grandparentGuid() { - return grandparentGuid; - } - - @JsonIgnore - public Optional type() { - return type; - } - - @JsonIgnore - public Optional title() { - return title; - } - - @JsonIgnore - public Optional grandparentKey() { - return grandparentKey; - } - - @JsonIgnore - public Optional parentKey() { - return parentKey; - } - - @JsonIgnore - public Optional librarySectionKey() { - return librarySectionKey; - } - - @JsonIgnore - public Optional grandparentTitle() { - return grandparentTitle; - } - - @JsonIgnore - public Optional parentTitle() { - return parentTitle; - } - - @JsonIgnore - public Optional contentRating() { - return contentRating; - } - - @JsonIgnore - public Optional summary() { - return summary; - } - - @JsonIgnore - public Optional index() { - return index; - } - - @JsonIgnore - public Optional parentIndex() { - return parentIndex; - } - - @JsonIgnore - public Optional lastViewedAt() { - return lastViewedAt; - } - - @JsonIgnore - public Optional year() { - return year; - } - - @JsonIgnore - public Optional thumb() { - return thumb; - } - - @JsonIgnore - public Optional art() { - return art; - } - - @JsonIgnore - public Optional parentThumb() { - return parentThumb; - } - - @JsonIgnore - public Optional grandparentThumb() { - return grandparentThumb; - } - - @JsonIgnore - public Optional grandparentArt() { - return grandparentArt; - } - - @JsonIgnore - public Optional grandparentTheme() { - return grandparentTheme; - } - - @JsonIgnore - public Optional duration() { - return duration; - } - - @JsonIgnore - public Optional originallyAvailableAt() { - return originallyAvailableAt; - } - - @JsonIgnore - public Optional addedAt() { - return addedAt; - } - - @JsonIgnore - public Optional updatedAt() { - return updatedAt; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> media() { - return (Optional>) media; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> guids() { - return (Optional>) guids; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckMetadata withAllowSync(boolean allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = Optional.ofNullable(allowSync); - return this; - } - - public GetOnDeckMetadata withAllowSync(Optional allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = allowSync; - return this; - } - - public GetOnDeckMetadata withLibrarySectionID(double librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = Optional.ofNullable(librarySectionID); - return this; - } - - public GetOnDeckMetadata withLibrarySectionID(Optional librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = librarySectionID; - return this; - } - - public GetOnDeckMetadata withLibrarySectionTitle(String librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = Optional.ofNullable(librarySectionTitle); - return this; - } - - public GetOnDeckMetadata withLibrarySectionTitle(Optional librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = librarySectionTitle; - return this; - } - - public GetOnDeckMetadata withLibrarySectionUUID(String librarySectionUUID) { - Utils.checkNotNull(librarySectionUUID, "librarySectionUUID"); - this.librarySectionUUID = Optional.ofNullable(librarySectionUUID); - return this; - } - - public GetOnDeckMetadata withLibrarySectionUUID(Optional librarySectionUUID) { - Utils.checkNotNull(librarySectionUUID, "librarySectionUUID"); - this.librarySectionUUID = librarySectionUUID; - return this; - } - - public GetOnDeckMetadata withRatingKey(double ratingKey) { - Utils.checkNotNull(ratingKey, "ratingKey"); - this.ratingKey = Optional.ofNullable(ratingKey); - return this; - } - - public GetOnDeckMetadata withRatingKey(Optional ratingKey) { - Utils.checkNotNull(ratingKey, "ratingKey"); - this.ratingKey = ratingKey; - return this; - } - - public GetOnDeckMetadata withKey(String key) { - Utils.checkNotNull(key, "key"); - this.key = Optional.ofNullable(key); - return this; - } - - public GetOnDeckMetadata withKey(Optional key) { - Utils.checkNotNull(key, "key"); - this.key = key; - return this; - } - - public GetOnDeckMetadata withParentRatingKey(double parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = Optional.ofNullable(parentRatingKey); - return this; - } - - public GetOnDeckMetadata withParentRatingKey(Optional parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = parentRatingKey; - return this; - } - - public GetOnDeckMetadata withGrandparentRatingKey(double grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = Optional.ofNullable(grandparentRatingKey); - return this; - } - - public GetOnDeckMetadata withGrandparentRatingKey(Optional grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = grandparentRatingKey; - return this; - } - - public GetOnDeckMetadata withGuid(String guid) { - Utils.checkNotNull(guid, "guid"); - this.guid = Optional.ofNullable(guid); - return this; - } - - public GetOnDeckMetadata withGuid(Optional guid) { - Utils.checkNotNull(guid, "guid"); - this.guid = guid; - return this; - } - - public GetOnDeckMetadata withParentGuid(String parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = Optional.ofNullable(parentGuid); - return this; - } - - public GetOnDeckMetadata withParentGuid(Optional parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = parentGuid; - return this; - } - - public GetOnDeckMetadata withGrandparentGuid(String grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = Optional.ofNullable(grandparentGuid); - return this; - } - - public GetOnDeckMetadata withGrandparentGuid(Optional grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = grandparentGuid; - return this; - } - - public GetOnDeckMetadata withType(String type) { - Utils.checkNotNull(type, "type"); - this.type = Optional.ofNullable(type); - return this; - } - - public GetOnDeckMetadata withType(Optional type) { - Utils.checkNotNull(type, "type"); - this.type = type; - return this; - } - - public GetOnDeckMetadata withTitle(String title) { - Utils.checkNotNull(title, "title"); - this.title = Optional.ofNullable(title); - return this; - } - - public GetOnDeckMetadata withTitle(Optional title) { - Utils.checkNotNull(title, "title"); - this.title = title; - return this; - } - - public GetOnDeckMetadata withGrandparentKey(String grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = Optional.ofNullable(grandparentKey); - return this; - } - - public GetOnDeckMetadata withGrandparentKey(Optional grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = grandparentKey; - return this; - } - - public GetOnDeckMetadata withParentKey(String parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = Optional.ofNullable(parentKey); - return this; - } - - public GetOnDeckMetadata withParentKey(Optional parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = parentKey; - return this; - } - - public GetOnDeckMetadata withLibrarySectionKey(String librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = Optional.ofNullable(librarySectionKey); - return this; - } - - public GetOnDeckMetadata withLibrarySectionKey(Optional librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = librarySectionKey; - return this; - } - - public GetOnDeckMetadata withGrandparentTitle(String grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = Optional.ofNullable(grandparentTitle); - return this; - } - - public GetOnDeckMetadata withGrandparentTitle(Optional grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = grandparentTitle; - return this; - } - - public GetOnDeckMetadata withParentTitle(String parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = Optional.ofNullable(parentTitle); - return this; - } - - public GetOnDeckMetadata withParentTitle(Optional parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = parentTitle; - return this; - } - - public GetOnDeckMetadata withContentRating(String contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = Optional.ofNullable(contentRating); - return this; - } - - public GetOnDeckMetadata withContentRating(Optional contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = contentRating; - return this; - } - - public GetOnDeckMetadata withSummary(String summary) { - Utils.checkNotNull(summary, "summary"); - this.summary = Optional.ofNullable(summary); - return this; - } - - public GetOnDeckMetadata withSummary(Optional summary) { - Utils.checkNotNull(summary, "summary"); - this.summary = summary; - return this; - } - - public GetOnDeckMetadata withIndex(double index) { - Utils.checkNotNull(index, "index"); - this.index = Optional.ofNullable(index); - return this; - } - - public GetOnDeckMetadata withIndex(Optional index) { - Utils.checkNotNull(index, "index"); - this.index = index; - return this; - } - - public GetOnDeckMetadata withParentIndex(double parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = Optional.ofNullable(parentIndex); - return this; - } - - public GetOnDeckMetadata withParentIndex(Optional parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = parentIndex; - return this; - } - - public GetOnDeckMetadata withLastViewedAt(double lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = Optional.ofNullable(lastViewedAt); - return this; - } - - public GetOnDeckMetadata withLastViewedAt(Optional lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = lastViewedAt; - return this; - } - - public GetOnDeckMetadata withYear(double year) { - Utils.checkNotNull(year, "year"); - this.year = Optional.ofNullable(year); - return this; - } - - public GetOnDeckMetadata withYear(Optional year) { - Utils.checkNotNull(year, "year"); - this.year = year; - return this; - } - - public GetOnDeckMetadata withThumb(String thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = Optional.ofNullable(thumb); - return this; - } - - public GetOnDeckMetadata withThumb(Optional thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = thumb; - return this; - } - - public GetOnDeckMetadata withArt(String art) { - Utils.checkNotNull(art, "art"); - this.art = Optional.ofNullable(art); - return this; - } - - public GetOnDeckMetadata withArt(Optional art) { - Utils.checkNotNull(art, "art"); - this.art = art; - return this; - } - - public GetOnDeckMetadata withParentThumb(String parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = Optional.ofNullable(parentThumb); - return this; - } - - public GetOnDeckMetadata withParentThumb(Optional parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = parentThumb; - return this; - } - - public GetOnDeckMetadata withGrandparentThumb(String grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = Optional.ofNullable(grandparentThumb); - return this; - } - - public GetOnDeckMetadata withGrandparentThumb(Optional grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = grandparentThumb; - return this; - } - - public GetOnDeckMetadata withGrandparentArt(String grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = Optional.ofNullable(grandparentArt); - return this; - } - - public GetOnDeckMetadata withGrandparentArt(Optional grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = grandparentArt; - return this; - } - - public GetOnDeckMetadata withGrandparentTheme(String grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = Optional.ofNullable(grandparentTheme); - return this; - } - - public GetOnDeckMetadata withGrandparentTheme(Optional grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = grandparentTheme; - return this; - } - - public GetOnDeckMetadata withDuration(double duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public GetOnDeckMetadata withDuration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public GetOnDeckMetadata withOriginallyAvailableAt(OffsetDateTime originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = Optional.ofNullable(originallyAvailableAt); - return this; - } - - public GetOnDeckMetadata withOriginallyAvailableAt(Optional originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = originallyAvailableAt; - return this; - } - - public GetOnDeckMetadata withAddedAt(double addedAt) { - Utils.checkNotNull(addedAt, "addedAt"); - this.addedAt = Optional.ofNullable(addedAt); - return this; - } - - public GetOnDeckMetadata withAddedAt(Optional addedAt) { - Utils.checkNotNull(addedAt, "addedAt"); - this.addedAt = addedAt; - return this; - } - - public GetOnDeckMetadata withUpdatedAt(double updatedAt) { - Utils.checkNotNull(updatedAt, "updatedAt"); - this.updatedAt = Optional.ofNullable(updatedAt); - return this; - } - - public GetOnDeckMetadata withUpdatedAt(Optional updatedAt) { - Utils.checkNotNull(updatedAt, "updatedAt"); - this.updatedAt = updatedAt; - return this; - } - - public GetOnDeckMetadata withMedia(List media) { - Utils.checkNotNull(media, "media"); - this.media = Optional.ofNullable(media); - return this; - } - - public GetOnDeckMetadata withMedia(Optional> media) { - Utils.checkNotNull(media, "media"); - this.media = media; - return this; - } - - public GetOnDeckMetadata withGuids(List guids) { - Utils.checkNotNull(guids, "guids"); - this.guids = Optional.ofNullable(guids); - return this; - } - - public GetOnDeckMetadata withGuids(Optional> guids) { - Utils.checkNotNull(guids, "guids"); - this.guids = guids; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckMetadata other = (GetOnDeckMetadata) o; - return - Objects.deepEquals(this.allowSync, other.allowSync) && - Objects.deepEquals(this.librarySectionID, other.librarySectionID) && - Objects.deepEquals(this.librarySectionTitle, other.librarySectionTitle) && - Objects.deepEquals(this.librarySectionUUID, other.librarySectionUUID) && - Objects.deepEquals(this.ratingKey, other.ratingKey) && - Objects.deepEquals(this.key, other.key) && - Objects.deepEquals(this.parentRatingKey, other.parentRatingKey) && - Objects.deepEquals(this.grandparentRatingKey, other.grandparentRatingKey) && - Objects.deepEquals(this.guid, other.guid) && - Objects.deepEquals(this.parentGuid, other.parentGuid) && - Objects.deepEquals(this.grandparentGuid, other.grandparentGuid) && - Objects.deepEquals(this.type, other.type) && - Objects.deepEquals(this.title, other.title) && - Objects.deepEquals(this.grandparentKey, other.grandparentKey) && - Objects.deepEquals(this.parentKey, other.parentKey) && - Objects.deepEquals(this.librarySectionKey, other.librarySectionKey) && - Objects.deepEquals(this.grandparentTitle, other.grandparentTitle) && - Objects.deepEquals(this.parentTitle, other.parentTitle) && - Objects.deepEquals(this.contentRating, other.contentRating) && - Objects.deepEquals(this.summary, other.summary) && - Objects.deepEquals(this.index, other.index) && - Objects.deepEquals(this.parentIndex, other.parentIndex) && - Objects.deepEquals(this.lastViewedAt, other.lastViewedAt) && - Objects.deepEquals(this.year, other.year) && - Objects.deepEquals(this.thumb, other.thumb) && - Objects.deepEquals(this.art, other.art) && - Objects.deepEquals(this.parentThumb, other.parentThumb) && - Objects.deepEquals(this.grandparentThumb, other.grandparentThumb) && - Objects.deepEquals(this.grandparentArt, other.grandparentArt) && - Objects.deepEquals(this.grandparentTheme, other.grandparentTheme) && - Objects.deepEquals(this.duration, other.duration) && - Objects.deepEquals(this.originallyAvailableAt, other.originallyAvailableAt) && - Objects.deepEquals(this.addedAt, other.addedAt) && - Objects.deepEquals(this.updatedAt, other.updatedAt) && - Objects.deepEquals(this.media, other.media) && - Objects.deepEquals(this.guids, other.guids); - } - - @Override - public int hashCode() { - return Objects.hash( - allowSync, - librarySectionID, - librarySectionTitle, - librarySectionUUID, - ratingKey, - key, - parentRatingKey, - grandparentRatingKey, - guid, - parentGuid, - grandparentGuid, - type, - title, - grandparentKey, - parentKey, - librarySectionKey, - grandparentTitle, - parentTitle, - contentRating, - summary, - index, - parentIndex, - lastViewedAt, - year, - thumb, - art, - parentThumb, - grandparentThumb, - grandparentArt, - grandparentTheme, - duration, - originallyAvailableAt, - addedAt, - updatedAt, - media, - guids); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckMetadata.class, - "allowSync", allowSync, - "librarySectionID", librarySectionID, - "librarySectionTitle", librarySectionTitle, - "librarySectionUUID", librarySectionUUID, - "ratingKey", ratingKey, - "key", key, - "parentRatingKey", parentRatingKey, - "grandparentRatingKey", grandparentRatingKey, - "guid", guid, - "parentGuid", parentGuid, - "grandparentGuid", grandparentGuid, - "type", type, - "title", title, - "grandparentKey", grandparentKey, - "parentKey", parentKey, - "librarySectionKey", librarySectionKey, - "grandparentTitle", grandparentTitle, - "parentTitle", parentTitle, - "contentRating", contentRating, - "summary", summary, - "index", index, - "parentIndex", parentIndex, - "lastViewedAt", lastViewedAt, - "year", year, - "thumb", thumb, - "art", art, - "parentThumb", parentThumb, - "grandparentThumb", grandparentThumb, - "grandparentArt", grandparentArt, - "grandparentTheme", grandparentTheme, - "duration", duration, - "originallyAvailableAt", originallyAvailableAt, - "addedAt", addedAt, - "updatedAt", updatedAt, - "media", media, - "guids", guids); - } - - public final static class Builder { - - private Optional allowSync = Optional.empty(); - - private Optional librarySectionID = Optional.empty(); - - private Optional librarySectionTitle = Optional.empty(); - - private Optional librarySectionUUID = Optional.empty(); - - private Optional ratingKey = Optional.empty(); - - private Optional key = Optional.empty(); - - private Optional parentRatingKey = Optional.empty(); - - private Optional grandparentRatingKey = Optional.empty(); - - private Optional guid = Optional.empty(); - - private Optional parentGuid = Optional.empty(); - - private Optional grandparentGuid = Optional.empty(); - - private Optional type = Optional.empty(); - - private Optional title = Optional.empty(); - - private Optional grandparentKey = Optional.empty(); - - private Optional parentKey = Optional.empty(); - - private Optional librarySectionKey = Optional.empty(); - - private Optional grandparentTitle = Optional.empty(); - - private Optional parentTitle = Optional.empty(); - - private Optional contentRating = Optional.empty(); - - private Optional summary = Optional.empty(); - - private Optional index = Optional.empty(); - - private Optional parentIndex = Optional.empty(); - - private Optional lastViewedAt = Optional.empty(); - - private Optional year = Optional.empty(); - - private Optional thumb = Optional.empty(); - - private Optional art = Optional.empty(); - - private Optional parentThumb = Optional.empty(); - - private Optional grandparentThumb = Optional.empty(); - - private Optional grandparentArt = Optional.empty(); - - private Optional grandparentTheme = Optional.empty(); - - private Optional duration = Optional.empty(); - - private Optional originallyAvailableAt = Optional.empty(); - - private Optional addedAt = Optional.empty(); - - private Optional updatedAt = Optional.empty(); - - private Optional> media = Optional.empty(); - - private Optional> guids = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder allowSync(boolean allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = Optional.ofNullable(allowSync); - return this; - } - - public Builder allowSync(Optional allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = allowSync; - return this; - } - - public Builder librarySectionID(double librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = Optional.ofNullable(librarySectionID); - return this; - } - - public Builder librarySectionID(Optional librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = librarySectionID; - return this; - } - - public Builder librarySectionTitle(String librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = Optional.ofNullable(librarySectionTitle); - return this; - } - - public Builder librarySectionTitle(Optional librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = librarySectionTitle; - return this; - } - - public Builder librarySectionUUID(String librarySectionUUID) { - Utils.checkNotNull(librarySectionUUID, "librarySectionUUID"); - this.librarySectionUUID = Optional.ofNullable(librarySectionUUID); - return this; - } - - public Builder librarySectionUUID(Optional librarySectionUUID) { - Utils.checkNotNull(librarySectionUUID, "librarySectionUUID"); - this.librarySectionUUID = librarySectionUUID; - return this; - } - - public Builder ratingKey(double ratingKey) { - Utils.checkNotNull(ratingKey, "ratingKey"); - this.ratingKey = Optional.ofNullable(ratingKey); - return this; - } - - public Builder ratingKey(Optional ratingKey) { - Utils.checkNotNull(ratingKey, "ratingKey"); - this.ratingKey = ratingKey; - return this; - } - - public Builder key(String key) { - Utils.checkNotNull(key, "key"); - this.key = Optional.ofNullable(key); - return this; - } - - public Builder key(Optional key) { - Utils.checkNotNull(key, "key"); - this.key = key; - return this; - } - - public Builder parentRatingKey(double parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = Optional.ofNullable(parentRatingKey); - return this; - } - - public Builder parentRatingKey(Optional parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = parentRatingKey; - return this; - } - - public Builder grandparentRatingKey(double grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = Optional.ofNullable(grandparentRatingKey); - return this; - } - - public Builder grandparentRatingKey(Optional grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = grandparentRatingKey; - return this; - } - - public Builder guid(String guid) { - Utils.checkNotNull(guid, "guid"); - this.guid = Optional.ofNullable(guid); - return this; - } - - public Builder guid(Optional guid) { - Utils.checkNotNull(guid, "guid"); - this.guid = guid; - return this; - } - - public Builder parentGuid(String parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = Optional.ofNullable(parentGuid); - return this; - } - - public Builder parentGuid(Optional parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = parentGuid; - return this; - } - - public Builder grandparentGuid(String grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = Optional.ofNullable(grandparentGuid); - return this; - } - - public Builder grandparentGuid(Optional grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = grandparentGuid; - return this; - } - - public Builder type(String type) { - Utils.checkNotNull(type, "type"); - this.type = Optional.ofNullable(type); - return this; - } - - public Builder type(Optional type) { - Utils.checkNotNull(type, "type"); - this.type = type; - return this; - } - - public Builder title(String title) { - Utils.checkNotNull(title, "title"); - this.title = Optional.ofNullable(title); - return this; - } - - public Builder title(Optional title) { - Utils.checkNotNull(title, "title"); - this.title = title; - return this; - } - - public Builder grandparentKey(String grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = Optional.ofNullable(grandparentKey); - return this; - } - - public Builder grandparentKey(Optional grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = grandparentKey; - return this; - } - - public Builder parentKey(String parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = Optional.ofNullable(parentKey); - return this; - } - - public Builder parentKey(Optional parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = parentKey; - return this; - } - - public Builder librarySectionKey(String librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = Optional.ofNullable(librarySectionKey); - return this; - } - - public Builder librarySectionKey(Optional librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = librarySectionKey; - return this; - } - - public Builder grandparentTitle(String grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = Optional.ofNullable(grandparentTitle); - return this; - } - - public Builder grandparentTitle(Optional grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = grandparentTitle; - return this; - } - - public Builder parentTitle(String parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = Optional.ofNullable(parentTitle); - return this; - } - - public Builder parentTitle(Optional parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = parentTitle; - return this; - } - - public Builder contentRating(String contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = Optional.ofNullable(contentRating); - return this; - } - - public Builder contentRating(Optional contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = contentRating; - return this; - } - - public Builder summary(String summary) { - Utils.checkNotNull(summary, "summary"); - this.summary = Optional.ofNullable(summary); - return this; - } - - public Builder summary(Optional summary) { - Utils.checkNotNull(summary, "summary"); - this.summary = summary; - return this; - } - - public Builder index(double index) { - Utils.checkNotNull(index, "index"); - this.index = Optional.ofNullable(index); - return this; - } - - public Builder index(Optional index) { - Utils.checkNotNull(index, "index"); - this.index = index; - return this; - } - - public Builder parentIndex(double parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = Optional.ofNullable(parentIndex); - return this; - } - - public Builder parentIndex(Optional parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = parentIndex; - return this; - } - - public Builder lastViewedAt(double lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = Optional.ofNullable(lastViewedAt); - return this; - } - - public Builder lastViewedAt(Optional lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = lastViewedAt; - return this; - } - - public Builder year(double year) { - Utils.checkNotNull(year, "year"); - this.year = Optional.ofNullable(year); - return this; - } - - public Builder year(Optional year) { - Utils.checkNotNull(year, "year"); - this.year = year; - return this; - } - - public Builder thumb(String thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = Optional.ofNullable(thumb); - return this; - } - - public Builder thumb(Optional thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = thumb; - return this; - } - - public Builder art(String art) { - Utils.checkNotNull(art, "art"); - this.art = Optional.ofNullable(art); - return this; - } - - public Builder art(Optional art) { - Utils.checkNotNull(art, "art"); - this.art = art; - return this; - } - - public Builder parentThumb(String parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = Optional.ofNullable(parentThumb); - return this; - } - - public Builder parentThumb(Optional parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = parentThumb; - return this; - } - - public Builder grandparentThumb(String grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = Optional.ofNullable(grandparentThumb); - return this; - } - - public Builder grandparentThumb(Optional grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = grandparentThumb; - return this; - } - - public Builder grandparentArt(String grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = Optional.ofNullable(grandparentArt); - return this; - } - - public Builder grandparentArt(Optional grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = grandparentArt; - return this; - } - - public Builder grandparentTheme(String grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = Optional.ofNullable(grandparentTheme); - return this; - } - - public Builder grandparentTheme(Optional grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = grandparentTheme; - return this; - } - - public Builder duration(double duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public Builder duration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public Builder originallyAvailableAt(OffsetDateTime originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = Optional.ofNullable(originallyAvailableAt); - return this; - } - - public Builder originallyAvailableAt(Optional originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = originallyAvailableAt; - return this; - } - - public Builder addedAt(double addedAt) { - Utils.checkNotNull(addedAt, "addedAt"); - this.addedAt = Optional.ofNullable(addedAt); - return this; - } - - public Builder addedAt(Optional addedAt) { - Utils.checkNotNull(addedAt, "addedAt"); - this.addedAt = addedAt; - return this; - } - - public Builder updatedAt(double updatedAt) { - Utils.checkNotNull(updatedAt, "updatedAt"); - this.updatedAt = Optional.ofNullable(updatedAt); - return this; - } - - public Builder updatedAt(Optional updatedAt) { - Utils.checkNotNull(updatedAt, "updatedAt"); - this.updatedAt = updatedAt; - return this; - } - - public Builder media(List media) { - Utils.checkNotNull(media, "media"); - this.media = Optional.ofNullable(media); - return this; - } - - public Builder media(Optional> media) { - Utils.checkNotNull(media, "media"); - this.media = media; - return this; - } - - public Builder guids(List guids) { - Utils.checkNotNull(guids, "guids"); - this.guids = Optional.ofNullable(guids); - return this; - } - - public Builder guids(Optional> guids) { - Utils.checkNotNull(guids, "guids"); - this.guids = guids; - return this; - } - - public GetOnDeckMetadata build() { - return new GetOnDeckMetadata( - allowSync, - librarySectionID, - librarySectionTitle, - librarySectionUUID, - ratingKey, - key, - parentRatingKey, - grandparentRatingKey, - guid, - parentGuid, - grandparentGuid, - type, - title, - grandparentKey, - parentKey, - librarySectionKey, - grandparentTitle, - parentTitle, - contentRating, - summary, - index, - parentIndex, - lastViewedAt, - year, - thumb, - art, - parentThumb, - grandparentThumb, - grandparentArt, - grandparentTheme, - duration, - originallyAvailableAt, - addedAt, - updatedAt, - media, - guids); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckPart.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckPart.java deleted file mode 100644 index f106cdd0..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckPart.java +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Double; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.util.List; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckPart { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("id") - private Optional id; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("key") - private Optional key; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("duration") - private Optional duration; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("file") - private Optional file; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("size") - private Optional size; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audioProfile") - private Optional audioProfile; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("container") - private Optional container; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("videoProfile") - private Optional videoProfile; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Stream") - private Optional> stream; - - @JsonCreator - public GetOnDeckPart( - @JsonProperty("id") Optional id, - @JsonProperty("key") Optional key, - @JsonProperty("duration") Optional duration, - @JsonProperty("file") Optional file, - @JsonProperty("size") Optional size, - @JsonProperty("audioProfile") Optional audioProfile, - @JsonProperty("container") Optional container, - @JsonProperty("videoProfile") Optional videoProfile, - @JsonProperty("Stream") Optional> stream) { - Utils.checkNotNull(id, "id"); - Utils.checkNotNull(key, "key"); - Utils.checkNotNull(duration, "duration"); - Utils.checkNotNull(file, "file"); - Utils.checkNotNull(size, "size"); - Utils.checkNotNull(audioProfile, "audioProfile"); - Utils.checkNotNull(container, "container"); - Utils.checkNotNull(videoProfile, "videoProfile"); - Utils.checkNotNull(stream, "stream"); - this.id = id; - this.key = key; - this.duration = duration; - this.file = file; - this.size = size; - this.audioProfile = audioProfile; - this.container = container; - this.videoProfile = videoProfile; - this.stream = stream; - } - - public GetOnDeckPart() { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional id() { - return id; - } - - @JsonIgnore - public Optional key() { - return key; - } - - @JsonIgnore - public Optional duration() { - return duration; - } - - @JsonIgnore - public Optional file() { - return file; - } - - @JsonIgnore - public Optional size() { - return size; - } - - @JsonIgnore - public Optional audioProfile() { - return audioProfile; - } - - @JsonIgnore - public Optional container() { - return container; - } - - @JsonIgnore - public Optional videoProfile() { - return videoProfile; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> stream() { - return (Optional>) stream; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckPart withId(double id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - public GetOnDeckPart withId(Optional id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public GetOnDeckPart withKey(String key) { - Utils.checkNotNull(key, "key"); - this.key = Optional.ofNullable(key); - return this; - } - - public GetOnDeckPart withKey(Optional key) { - Utils.checkNotNull(key, "key"); - this.key = key; - return this; - } - - public GetOnDeckPart withDuration(double duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public GetOnDeckPart withDuration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public GetOnDeckPart withFile(String file) { - Utils.checkNotNull(file, "file"); - this.file = Optional.ofNullable(file); - return this; - } - - public GetOnDeckPart withFile(Optional file) { - Utils.checkNotNull(file, "file"); - this.file = file; - return this; - } - - public GetOnDeckPart withSize(double size) { - Utils.checkNotNull(size, "size"); - this.size = Optional.ofNullable(size); - return this; - } - - public GetOnDeckPart withSize(Optional size) { - Utils.checkNotNull(size, "size"); - this.size = size; - return this; - } - - public GetOnDeckPart withAudioProfile(String audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = Optional.ofNullable(audioProfile); - return this; - } - - public GetOnDeckPart withAudioProfile(Optional audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = audioProfile; - return this; - } - - public GetOnDeckPart withContainer(String container) { - Utils.checkNotNull(container, "container"); - this.container = Optional.ofNullable(container); - return this; - } - - public GetOnDeckPart withContainer(Optional container) { - Utils.checkNotNull(container, "container"); - this.container = container; - return this; - } - - public GetOnDeckPart withVideoProfile(String videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = Optional.ofNullable(videoProfile); - return this; - } - - public GetOnDeckPart withVideoProfile(Optional videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = videoProfile; - return this; - } - - public GetOnDeckPart withStream(List stream) { - Utils.checkNotNull(stream, "stream"); - this.stream = Optional.ofNullable(stream); - return this; - } - - public GetOnDeckPart withStream(Optional> stream) { - Utils.checkNotNull(stream, "stream"); - this.stream = stream; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckPart other = (GetOnDeckPart) o; - return - Objects.deepEquals(this.id, other.id) && - Objects.deepEquals(this.key, other.key) && - Objects.deepEquals(this.duration, other.duration) && - Objects.deepEquals(this.file, other.file) && - Objects.deepEquals(this.size, other.size) && - Objects.deepEquals(this.audioProfile, other.audioProfile) && - Objects.deepEquals(this.container, other.container) && - Objects.deepEquals(this.videoProfile, other.videoProfile) && - Objects.deepEquals(this.stream, other.stream); - } - - @Override - public int hashCode() { - return Objects.hash( - id, - key, - duration, - file, - size, - audioProfile, - container, - videoProfile, - stream); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckPart.class, - "id", id, - "key", key, - "duration", duration, - "file", file, - "size", size, - "audioProfile", audioProfile, - "container", container, - "videoProfile", videoProfile, - "stream", stream); - } - - public final static class Builder { - - private Optional id = Optional.empty(); - - private Optional key = Optional.empty(); - - private Optional duration = Optional.empty(); - - private Optional file = Optional.empty(); - - private Optional size = Optional.empty(); - - private Optional audioProfile = Optional.empty(); - - private Optional container = Optional.empty(); - - private Optional videoProfile = Optional.empty(); - - private Optional> stream = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder id(double id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - public Builder id(Optional id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public Builder key(String key) { - Utils.checkNotNull(key, "key"); - this.key = Optional.ofNullable(key); - return this; - } - - public Builder key(Optional key) { - Utils.checkNotNull(key, "key"); - this.key = key; - return this; - } - - public Builder duration(double duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public Builder duration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public Builder file(String file) { - Utils.checkNotNull(file, "file"); - this.file = Optional.ofNullable(file); - return this; - } - - public Builder file(Optional file) { - Utils.checkNotNull(file, "file"); - this.file = file; - return this; - } - - public Builder size(double size) { - Utils.checkNotNull(size, "size"); - this.size = Optional.ofNullable(size); - return this; - } - - public Builder size(Optional size) { - Utils.checkNotNull(size, "size"); - this.size = size; - return this; - } - - public Builder audioProfile(String audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = Optional.ofNullable(audioProfile); - return this; - } - - public Builder audioProfile(Optional audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = audioProfile; - return this; - } - - public Builder container(String container) { - Utils.checkNotNull(container, "container"); - this.container = Optional.ofNullable(container); - return this; - } - - public Builder container(Optional container) { - Utils.checkNotNull(container, "container"); - this.container = container; - return this; - } - - public Builder videoProfile(String videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = Optional.ofNullable(videoProfile); - return this; - } - - public Builder videoProfile(Optional videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = videoProfile; - return this; - } - - public Builder stream(List stream) { - Utils.checkNotNull(stream, "stream"); - this.stream = Optional.ofNullable(stream); - return this; - } - - public Builder stream(Optional> stream) { - Utils.checkNotNull(stream, "stream"); - this.stream = stream; - return this; - } - - public GetOnDeckPart build() { - return new GetOnDeckPart( - id, - key, - duration, - file, - size, - audioProfile, - container, - videoProfile, - stream); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckRequestBuilder.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckRequestBuilder.java deleted file mode 100644 index a38f4b36..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckRequestBuilder.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -package dev.plexapi.sdk.models.operations; - - -public class GetOnDeckRequestBuilder { - - private final SDKMethodInterfaces.MethodCallGetOnDeck sdk; - - public GetOnDeckRequestBuilder(SDKMethodInterfaces.MethodCallGetOnDeck sdk) { - this.sdk = sdk; - } - - public GetOnDeckResponse call() throws Exception { - - return sdk.getOnDeckDirect(); - } -} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponse.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponse.java deleted file mode 100644 index 20fa78fd..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponse.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import dev.plexapi.sdk.utils.Response; -import dev.plexapi.sdk.utils.Utils; -import java.io.InputStream; -import java.lang.Integer; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.net.http.HttpResponse; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckResponse implements Response { - - /** - * HTTP response content type for this operation - */ - private String contentType; - - /** - * HTTP response status code for this operation - */ - private int statusCode; - - /** - * Raw HTTP response; suitable for custom response parsing - */ - private HttpResponse rawResponse; - - /** - * The on Deck content - */ - private Optional object; - - @JsonCreator - public GetOnDeckResponse( - String contentType, - int statusCode, - HttpResponse rawResponse, - Optional object) { - Utils.checkNotNull(contentType, "contentType"); - Utils.checkNotNull(statusCode, "statusCode"); - Utils.checkNotNull(rawResponse, "rawResponse"); - Utils.checkNotNull(object, "object"); - this.contentType = contentType; - this.statusCode = statusCode; - this.rawResponse = rawResponse; - this.object = object; - } - - public GetOnDeckResponse( - String contentType, - int statusCode, - HttpResponse rawResponse) { - this(contentType, statusCode, rawResponse, Optional.empty()); - } - - /** - * HTTP response content type for this operation - */ - @JsonIgnore - public String contentType() { - return contentType; - } - - /** - * HTTP response status code for this operation - */ - @JsonIgnore - public int statusCode() { - return statusCode; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - @JsonIgnore - public HttpResponse rawResponse() { - return rawResponse; - } - - /** - * The on Deck content - */ - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional object() { - return (Optional) object; - } - - public final static Builder builder() { - return new Builder(); - } - - /** - * HTTP response content type for this operation - */ - public GetOnDeckResponse withContentType(String contentType) { - Utils.checkNotNull(contentType, "contentType"); - this.contentType = contentType; - return this; - } - - /** - * HTTP response status code for this operation - */ - public GetOnDeckResponse withStatusCode(int statusCode) { - Utils.checkNotNull(statusCode, "statusCode"); - this.statusCode = statusCode; - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public GetOnDeckResponse withRawResponse(HttpResponse rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = rawResponse; - return this; - } - - /** - * The on Deck content - */ - public GetOnDeckResponse withObject(GetOnDeckResponseBody object) { - Utils.checkNotNull(object, "object"); - this.object = Optional.ofNullable(object); - return this; - } - - /** - * The on Deck content - */ - public GetOnDeckResponse withObject(Optional object) { - Utils.checkNotNull(object, "object"); - this.object = object; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckResponse other = (GetOnDeckResponse) o; - return - Objects.deepEquals(this.contentType, other.contentType) && - Objects.deepEquals(this.statusCode, other.statusCode) && - Objects.deepEquals(this.rawResponse, other.rawResponse) && - Objects.deepEquals(this.object, other.object); - } - - @Override - public int hashCode() { - return Objects.hash( - contentType, - statusCode, - rawResponse, - object); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckResponse.class, - "contentType", contentType, - "statusCode", statusCode, - "rawResponse", rawResponse, - "object", object); - } - - public final static class Builder { - - private String contentType; - - private Integer statusCode; - - private HttpResponse rawResponse; - - private Optional object = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - /** - * HTTP response content type for this operation - */ - public Builder contentType(String contentType) { - Utils.checkNotNull(contentType, "contentType"); - this.contentType = contentType; - return this; - } - - /** - * HTTP response status code for this operation - */ - public Builder statusCode(int statusCode) { - Utils.checkNotNull(statusCode, "statusCode"); - this.statusCode = statusCode; - return this; - } - - /** - * Raw HTTP response; suitable for custom response parsing - */ - public Builder rawResponse(HttpResponse rawResponse) { - Utils.checkNotNull(rawResponse, "rawResponse"); - this.rawResponse = rawResponse; - return this; - } - - /** - * The on Deck content - */ - public Builder object(GetOnDeckResponseBody object) { - Utils.checkNotNull(object, "object"); - this.object = Optional.ofNullable(object); - return this; - } - - /** - * The on Deck content - */ - public Builder object(Optional object) { - Utils.checkNotNull(object, "object"); - this.object = object; - return this; - } - - public GetOnDeckResponse build() { - return new GetOnDeckResponse( - contentType, - statusCode, - rawResponse, - object); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponseBody.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponseBody.java deleted file mode 100644 index 4cf2b0e9..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckResponseBody.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; -import java.util.Objects; -import java.util.Optional; -/** - * GetOnDeckResponseBody - The on Deck content - */ - -public class GetOnDeckResponseBody { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("MediaContainer") - private Optional mediaContainer; - - @JsonCreator - public GetOnDeckResponseBody( - @JsonProperty("MediaContainer") Optional mediaContainer) { - Utils.checkNotNull(mediaContainer, "mediaContainer"); - this.mediaContainer = mediaContainer; - } - - public GetOnDeckResponseBody() { - this(Optional.empty()); - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional mediaContainer() { - return (Optional) mediaContainer; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckResponseBody withMediaContainer(GetOnDeckMediaContainer mediaContainer) { - Utils.checkNotNull(mediaContainer, "mediaContainer"); - this.mediaContainer = Optional.ofNullable(mediaContainer); - return this; - } - - public GetOnDeckResponseBody withMediaContainer(Optional mediaContainer) { - Utils.checkNotNull(mediaContainer, "mediaContainer"); - this.mediaContainer = mediaContainer; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckResponseBody other = (GetOnDeckResponseBody) o; - return - Objects.deepEquals(this.mediaContainer, other.mediaContainer); - } - - @Override - public int hashCode() { - return Objects.hash( - mediaContainer); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckResponseBody.class, - "mediaContainer", mediaContainer); - } - - public final static class Builder { - - private Optional mediaContainer = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder mediaContainer(GetOnDeckMediaContainer mediaContainer) { - Utils.checkNotNull(mediaContainer, "mediaContainer"); - this.mediaContainer = Optional.ofNullable(mediaContainer); - return this; - } - - public Builder mediaContainer(Optional mediaContainer) { - Utils.checkNotNull(mediaContainer, "mediaContainer"); - this.mediaContainer = mediaContainer; - return this; - } - - public GetOnDeckResponseBody build() { - return new GetOnDeckResponseBody( - mediaContainer); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckStream.java b/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckStream.java deleted file mode 100644 index 3d826bc5..00000000 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetOnDeckStream.java +++ /dev/null @@ -1,1033 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - - -package dev.plexapi.sdk.models.operations; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.plexapi.sdk.utils.Utils; -import java.lang.Boolean; -import java.lang.Double; -import java.lang.Override; -import java.lang.String; -import java.util.Objects; -import java.util.Optional; - -public class GetOnDeckStream { - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("id") - private Optional id; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("streamType") - private Optional streamType; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("default") - private Optional default_; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("codec") - private Optional codec; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("index") - private Optional index; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("bitrate") - private Optional bitrate; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("language") - private Optional language; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("languageTag") - private Optional languageTag; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("languageCode") - private Optional languageCode; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("bitDepth") - private Optional bitDepth; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("chromaLocation") - private Optional chromaLocation; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("chromaSubsampling") - private Optional chromaSubsampling; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("codedHeight") - private Optional codedHeight; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("codedWidth") - private Optional codedWidth; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("colorRange") - private Optional colorRange; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("frameRate") - private Optional frameRate; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("height") - private Optional height; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("level") - private Optional level; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("profile") - private Optional profile; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("refFrames") - private Optional refFrames; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("width") - private Optional width; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("displayTitle") - private Optional displayTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("extendedDisplayTitle") - private Optional extendedDisplayTitle; - - @JsonCreator - public GetOnDeckStream( - @JsonProperty("id") Optional id, - @JsonProperty("streamType") Optional streamType, - @JsonProperty("default") Optional default_, - @JsonProperty("codec") Optional codec, - @JsonProperty("index") Optional index, - @JsonProperty("bitrate") Optional bitrate, - @JsonProperty("language") Optional language, - @JsonProperty("languageTag") Optional languageTag, - @JsonProperty("languageCode") Optional languageCode, - @JsonProperty("bitDepth") Optional bitDepth, - @JsonProperty("chromaLocation") Optional chromaLocation, - @JsonProperty("chromaSubsampling") Optional chromaSubsampling, - @JsonProperty("codedHeight") Optional codedHeight, - @JsonProperty("codedWidth") Optional codedWidth, - @JsonProperty("colorRange") Optional colorRange, - @JsonProperty("frameRate") Optional frameRate, - @JsonProperty("height") Optional height, - @JsonProperty("level") Optional level, - @JsonProperty("profile") Optional profile, - @JsonProperty("refFrames") Optional refFrames, - @JsonProperty("width") Optional width, - @JsonProperty("displayTitle") Optional displayTitle, - @JsonProperty("extendedDisplayTitle") Optional extendedDisplayTitle) { - Utils.checkNotNull(id, "id"); - Utils.checkNotNull(streamType, "streamType"); - Utils.checkNotNull(default_, "default_"); - Utils.checkNotNull(codec, "codec"); - Utils.checkNotNull(index, "index"); - Utils.checkNotNull(bitrate, "bitrate"); - Utils.checkNotNull(language, "language"); - Utils.checkNotNull(languageTag, "languageTag"); - Utils.checkNotNull(languageCode, "languageCode"); - Utils.checkNotNull(bitDepth, "bitDepth"); - Utils.checkNotNull(chromaLocation, "chromaLocation"); - Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); - Utils.checkNotNull(codedHeight, "codedHeight"); - Utils.checkNotNull(codedWidth, "codedWidth"); - Utils.checkNotNull(colorRange, "colorRange"); - Utils.checkNotNull(frameRate, "frameRate"); - Utils.checkNotNull(height, "height"); - Utils.checkNotNull(level, "level"); - Utils.checkNotNull(profile, "profile"); - Utils.checkNotNull(refFrames, "refFrames"); - Utils.checkNotNull(width, "width"); - Utils.checkNotNull(displayTitle, "displayTitle"); - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.id = id; - this.streamType = streamType; - this.default_ = default_; - this.codec = codec; - this.index = index; - this.bitrate = bitrate; - this.language = language; - this.languageTag = languageTag; - this.languageCode = languageCode; - this.bitDepth = bitDepth; - this.chromaLocation = chromaLocation; - this.chromaSubsampling = chromaSubsampling; - this.codedHeight = codedHeight; - this.codedWidth = codedWidth; - this.colorRange = colorRange; - this.frameRate = frameRate; - this.height = height; - this.level = level; - this.profile = profile; - this.refFrames = refFrames; - this.width = width; - this.displayTitle = displayTitle; - this.extendedDisplayTitle = extendedDisplayTitle; - } - - public GetOnDeckStream() { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); - } - - @JsonIgnore - public Optional id() { - return id; - } - - @JsonIgnore - public Optional streamType() { - return streamType; - } - - @JsonIgnore - public Optional default_() { - return default_; - } - - @JsonIgnore - public Optional codec() { - return codec; - } - - @JsonIgnore - public Optional index() { - return index; - } - - @JsonIgnore - public Optional bitrate() { - return bitrate; - } - - @JsonIgnore - public Optional language() { - return language; - } - - @JsonIgnore - public Optional languageTag() { - return languageTag; - } - - @JsonIgnore - public Optional languageCode() { - return languageCode; - } - - @JsonIgnore - public Optional bitDepth() { - return bitDepth; - } - - @JsonIgnore - public Optional chromaLocation() { - return chromaLocation; - } - - @JsonIgnore - public Optional chromaSubsampling() { - return chromaSubsampling; - } - - @JsonIgnore - public Optional codedHeight() { - return codedHeight; - } - - @JsonIgnore - public Optional codedWidth() { - return codedWidth; - } - - @JsonIgnore - public Optional colorRange() { - return colorRange; - } - - @JsonIgnore - public Optional frameRate() { - return frameRate; - } - - @JsonIgnore - public Optional height() { - return height; - } - - @JsonIgnore - public Optional level() { - return level; - } - - @JsonIgnore - public Optional profile() { - return profile; - } - - @JsonIgnore - public Optional refFrames() { - return refFrames; - } - - @JsonIgnore - public Optional width() { - return width; - } - - @JsonIgnore - public Optional displayTitle() { - return displayTitle; - } - - @JsonIgnore - public Optional extendedDisplayTitle() { - return extendedDisplayTitle; - } - - public final static Builder builder() { - return new Builder(); - } - - public GetOnDeckStream withId(double id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - public GetOnDeckStream withId(Optional id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public GetOnDeckStream withStreamType(double streamType) { - Utils.checkNotNull(streamType, "streamType"); - this.streamType = Optional.ofNullable(streamType); - return this; - } - - public GetOnDeckStream withStreamType(Optional streamType) { - Utils.checkNotNull(streamType, "streamType"); - this.streamType = streamType; - return this; - } - - public GetOnDeckStream withDefault(boolean default_) { - Utils.checkNotNull(default_, "default_"); - this.default_ = Optional.ofNullable(default_); - return this; - } - - public GetOnDeckStream withDefault(Optional default_) { - Utils.checkNotNull(default_, "default_"); - this.default_ = default_; - return this; - } - - public GetOnDeckStream withCodec(String codec) { - Utils.checkNotNull(codec, "codec"); - this.codec = Optional.ofNullable(codec); - return this; - } - - public GetOnDeckStream withCodec(Optional codec) { - Utils.checkNotNull(codec, "codec"); - this.codec = codec; - return this; - } - - public GetOnDeckStream withIndex(double index) { - Utils.checkNotNull(index, "index"); - this.index = Optional.ofNullable(index); - return this; - } - - public GetOnDeckStream withIndex(Optional index) { - Utils.checkNotNull(index, "index"); - this.index = index; - return this; - } - - public GetOnDeckStream withBitrate(double bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = Optional.ofNullable(bitrate); - return this; - } - - public GetOnDeckStream withBitrate(Optional bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = bitrate; - return this; - } - - public GetOnDeckStream withLanguage(String language) { - Utils.checkNotNull(language, "language"); - this.language = Optional.ofNullable(language); - return this; - } - - public GetOnDeckStream withLanguage(Optional language) { - Utils.checkNotNull(language, "language"); - this.language = language; - return this; - } - - public GetOnDeckStream withLanguageTag(String languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = Optional.ofNullable(languageTag); - return this; - } - - public GetOnDeckStream withLanguageTag(Optional languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = languageTag; - return this; - } - - public GetOnDeckStream withLanguageCode(String languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = Optional.ofNullable(languageCode); - return this; - } - - public GetOnDeckStream withLanguageCode(Optional languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = languageCode; - return this; - } - - public GetOnDeckStream withBitDepth(double bitDepth) { - Utils.checkNotNull(bitDepth, "bitDepth"); - this.bitDepth = Optional.ofNullable(bitDepth); - return this; - } - - public GetOnDeckStream withBitDepth(Optional bitDepth) { - Utils.checkNotNull(bitDepth, "bitDepth"); - this.bitDepth = bitDepth; - return this; - } - - public GetOnDeckStream withChromaLocation(String chromaLocation) { - Utils.checkNotNull(chromaLocation, "chromaLocation"); - this.chromaLocation = Optional.ofNullable(chromaLocation); - return this; - } - - public GetOnDeckStream withChromaLocation(Optional chromaLocation) { - Utils.checkNotNull(chromaLocation, "chromaLocation"); - this.chromaLocation = chromaLocation; - return this; - } - - public GetOnDeckStream withChromaSubsampling(String chromaSubsampling) { - Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); - this.chromaSubsampling = Optional.ofNullable(chromaSubsampling); - return this; - } - - public GetOnDeckStream withChromaSubsampling(Optional chromaSubsampling) { - Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); - this.chromaSubsampling = chromaSubsampling; - return this; - } - - public GetOnDeckStream withCodedHeight(double codedHeight) { - Utils.checkNotNull(codedHeight, "codedHeight"); - this.codedHeight = Optional.ofNullable(codedHeight); - return this; - } - - public GetOnDeckStream withCodedHeight(Optional codedHeight) { - Utils.checkNotNull(codedHeight, "codedHeight"); - this.codedHeight = codedHeight; - return this; - } - - public GetOnDeckStream withCodedWidth(double codedWidth) { - Utils.checkNotNull(codedWidth, "codedWidth"); - this.codedWidth = Optional.ofNullable(codedWidth); - return this; - } - - public GetOnDeckStream withCodedWidth(Optional codedWidth) { - Utils.checkNotNull(codedWidth, "codedWidth"); - this.codedWidth = codedWidth; - return this; - } - - public GetOnDeckStream withColorRange(String colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = Optional.ofNullable(colorRange); - return this; - } - - public GetOnDeckStream withColorRange(Optional colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = colorRange; - return this; - } - - public GetOnDeckStream withFrameRate(double frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = Optional.ofNullable(frameRate); - return this; - } - - public GetOnDeckStream withFrameRate(Optional frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = frameRate; - return this; - } - - public GetOnDeckStream withHeight(double height) { - Utils.checkNotNull(height, "height"); - this.height = Optional.ofNullable(height); - return this; - } - - public GetOnDeckStream withHeight(Optional height) { - Utils.checkNotNull(height, "height"); - this.height = height; - return this; - } - - public GetOnDeckStream withLevel(double level) { - Utils.checkNotNull(level, "level"); - this.level = Optional.ofNullable(level); - return this; - } - - public GetOnDeckStream withLevel(Optional level) { - Utils.checkNotNull(level, "level"); - this.level = level; - return this; - } - - public GetOnDeckStream withProfile(String profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = Optional.ofNullable(profile); - return this; - } - - public GetOnDeckStream withProfile(Optional profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = profile; - return this; - } - - public GetOnDeckStream withRefFrames(double refFrames) { - Utils.checkNotNull(refFrames, "refFrames"); - this.refFrames = Optional.ofNullable(refFrames); - return this; - } - - public GetOnDeckStream withRefFrames(Optional refFrames) { - Utils.checkNotNull(refFrames, "refFrames"); - this.refFrames = refFrames; - return this; - } - - public GetOnDeckStream withWidth(double width) { - Utils.checkNotNull(width, "width"); - this.width = Optional.ofNullable(width); - return this; - } - - public GetOnDeckStream withWidth(Optional width) { - Utils.checkNotNull(width, "width"); - this.width = width; - return this; - } - - public GetOnDeckStream withDisplayTitle(String displayTitle) { - Utils.checkNotNull(displayTitle, "displayTitle"); - this.displayTitle = Optional.ofNullable(displayTitle); - return this; - } - - public GetOnDeckStream withDisplayTitle(Optional displayTitle) { - Utils.checkNotNull(displayTitle, "displayTitle"); - this.displayTitle = displayTitle; - return this; - } - - public GetOnDeckStream withExtendedDisplayTitle(String extendedDisplayTitle) { - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.extendedDisplayTitle = Optional.ofNullable(extendedDisplayTitle); - return this; - } - - public GetOnDeckStream withExtendedDisplayTitle(Optional extendedDisplayTitle) { - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.extendedDisplayTitle = extendedDisplayTitle; - return this; - } - - @Override - public boolean equals(java.lang.Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GetOnDeckStream other = (GetOnDeckStream) o; - return - Objects.deepEquals(this.id, other.id) && - Objects.deepEquals(this.streamType, other.streamType) && - Objects.deepEquals(this.default_, other.default_) && - Objects.deepEquals(this.codec, other.codec) && - Objects.deepEquals(this.index, other.index) && - Objects.deepEquals(this.bitrate, other.bitrate) && - Objects.deepEquals(this.language, other.language) && - Objects.deepEquals(this.languageTag, other.languageTag) && - Objects.deepEquals(this.languageCode, other.languageCode) && - Objects.deepEquals(this.bitDepth, other.bitDepth) && - Objects.deepEquals(this.chromaLocation, other.chromaLocation) && - Objects.deepEquals(this.chromaSubsampling, other.chromaSubsampling) && - Objects.deepEquals(this.codedHeight, other.codedHeight) && - Objects.deepEquals(this.codedWidth, other.codedWidth) && - Objects.deepEquals(this.colorRange, other.colorRange) && - Objects.deepEquals(this.frameRate, other.frameRate) && - Objects.deepEquals(this.height, other.height) && - Objects.deepEquals(this.level, other.level) && - Objects.deepEquals(this.profile, other.profile) && - Objects.deepEquals(this.refFrames, other.refFrames) && - Objects.deepEquals(this.width, other.width) && - Objects.deepEquals(this.displayTitle, other.displayTitle) && - Objects.deepEquals(this.extendedDisplayTitle, other.extendedDisplayTitle); - } - - @Override - public int hashCode() { - return Objects.hash( - id, - streamType, - default_, - codec, - index, - bitrate, - language, - languageTag, - languageCode, - bitDepth, - chromaLocation, - chromaSubsampling, - codedHeight, - codedWidth, - colorRange, - frameRate, - height, - level, - profile, - refFrames, - width, - displayTitle, - extendedDisplayTitle); - } - - @Override - public String toString() { - return Utils.toString(GetOnDeckStream.class, - "id", id, - "streamType", streamType, - "default_", default_, - "codec", codec, - "index", index, - "bitrate", bitrate, - "language", language, - "languageTag", languageTag, - "languageCode", languageCode, - "bitDepth", bitDepth, - "chromaLocation", chromaLocation, - "chromaSubsampling", chromaSubsampling, - "codedHeight", codedHeight, - "codedWidth", codedWidth, - "colorRange", colorRange, - "frameRate", frameRate, - "height", height, - "level", level, - "profile", profile, - "refFrames", refFrames, - "width", width, - "displayTitle", displayTitle, - "extendedDisplayTitle", extendedDisplayTitle); - } - - public final static class Builder { - - private Optional id = Optional.empty(); - - private Optional streamType = Optional.empty(); - - private Optional default_ = Optional.empty(); - - private Optional codec = Optional.empty(); - - private Optional index = Optional.empty(); - - private Optional bitrate = Optional.empty(); - - private Optional language = Optional.empty(); - - private Optional languageTag = Optional.empty(); - - private Optional languageCode = Optional.empty(); - - private Optional bitDepth = Optional.empty(); - - private Optional chromaLocation = Optional.empty(); - - private Optional chromaSubsampling = Optional.empty(); - - private Optional codedHeight = Optional.empty(); - - private Optional codedWidth = Optional.empty(); - - private Optional colorRange = Optional.empty(); - - private Optional frameRate = Optional.empty(); - - private Optional height = Optional.empty(); - - private Optional level = Optional.empty(); - - private Optional profile = Optional.empty(); - - private Optional refFrames = Optional.empty(); - - private Optional width = Optional.empty(); - - private Optional displayTitle = Optional.empty(); - - private Optional extendedDisplayTitle = Optional.empty(); - - private Builder() { - // force use of static builder() method - } - - public Builder id(double id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - public Builder id(Optional id) { - Utils.checkNotNull(id, "id"); - this.id = id; - return this; - } - - public Builder streamType(double streamType) { - Utils.checkNotNull(streamType, "streamType"); - this.streamType = Optional.ofNullable(streamType); - return this; - } - - public Builder streamType(Optional streamType) { - Utils.checkNotNull(streamType, "streamType"); - this.streamType = streamType; - return this; - } - - public Builder default_(boolean default_) { - Utils.checkNotNull(default_, "default_"); - this.default_ = Optional.ofNullable(default_); - return this; - } - - public Builder default_(Optional default_) { - Utils.checkNotNull(default_, "default_"); - this.default_ = default_; - return this; - } - - public Builder codec(String codec) { - Utils.checkNotNull(codec, "codec"); - this.codec = Optional.ofNullable(codec); - return this; - } - - public Builder codec(Optional codec) { - Utils.checkNotNull(codec, "codec"); - this.codec = codec; - return this; - } - - public Builder index(double index) { - Utils.checkNotNull(index, "index"); - this.index = Optional.ofNullable(index); - return this; - } - - public Builder index(Optional index) { - Utils.checkNotNull(index, "index"); - this.index = index; - return this; - } - - public Builder bitrate(double bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = Optional.ofNullable(bitrate); - return this; - } - - public Builder bitrate(Optional bitrate) { - Utils.checkNotNull(bitrate, "bitrate"); - this.bitrate = bitrate; - return this; - } - - public Builder language(String language) { - Utils.checkNotNull(language, "language"); - this.language = Optional.ofNullable(language); - return this; - } - - public Builder language(Optional language) { - Utils.checkNotNull(language, "language"); - this.language = language; - return this; - } - - public Builder languageTag(String languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = Optional.ofNullable(languageTag); - return this; - } - - public Builder languageTag(Optional languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = languageTag; - return this; - } - - public Builder languageCode(String languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = Optional.ofNullable(languageCode); - return this; - } - - public Builder languageCode(Optional languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = languageCode; - return this; - } - - public Builder bitDepth(double bitDepth) { - Utils.checkNotNull(bitDepth, "bitDepth"); - this.bitDepth = Optional.ofNullable(bitDepth); - return this; - } - - public Builder bitDepth(Optional bitDepth) { - Utils.checkNotNull(bitDepth, "bitDepth"); - this.bitDepth = bitDepth; - return this; - } - - public Builder chromaLocation(String chromaLocation) { - Utils.checkNotNull(chromaLocation, "chromaLocation"); - this.chromaLocation = Optional.ofNullable(chromaLocation); - return this; - } - - public Builder chromaLocation(Optional chromaLocation) { - Utils.checkNotNull(chromaLocation, "chromaLocation"); - this.chromaLocation = chromaLocation; - return this; - } - - public Builder chromaSubsampling(String chromaSubsampling) { - Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); - this.chromaSubsampling = Optional.ofNullable(chromaSubsampling); - return this; - } - - public Builder chromaSubsampling(Optional chromaSubsampling) { - Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); - this.chromaSubsampling = chromaSubsampling; - return this; - } - - public Builder codedHeight(double codedHeight) { - Utils.checkNotNull(codedHeight, "codedHeight"); - this.codedHeight = Optional.ofNullable(codedHeight); - return this; - } - - public Builder codedHeight(Optional codedHeight) { - Utils.checkNotNull(codedHeight, "codedHeight"); - this.codedHeight = codedHeight; - return this; - } - - public Builder codedWidth(double codedWidth) { - Utils.checkNotNull(codedWidth, "codedWidth"); - this.codedWidth = Optional.ofNullable(codedWidth); - return this; - } - - public Builder codedWidth(Optional codedWidth) { - Utils.checkNotNull(codedWidth, "codedWidth"); - this.codedWidth = codedWidth; - return this; - } - - public Builder colorRange(String colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = Optional.ofNullable(colorRange); - return this; - } - - public Builder colorRange(Optional colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = colorRange; - return this; - } - - public Builder frameRate(double frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = Optional.ofNullable(frameRate); - return this; - } - - public Builder frameRate(Optional frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = frameRate; - return this; - } - - public Builder height(double height) { - Utils.checkNotNull(height, "height"); - this.height = Optional.ofNullable(height); - return this; - } - - public Builder height(Optional height) { - Utils.checkNotNull(height, "height"); - this.height = height; - return this; - } - - public Builder level(double level) { - Utils.checkNotNull(level, "level"); - this.level = Optional.ofNullable(level); - return this; - } - - public Builder level(Optional level) { - Utils.checkNotNull(level, "level"); - this.level = level; - return this; - } - - public Builder profile(String profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = Optional.ofNullable(profile); - return this; - } - - public Builder profile(Optional profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = profile; - return this; - } - - public Builder refFrames(double refFrames) { - Utils.checkNotNull(refFrames, "refFrames"); - this.refFrames = Optional.ofNullable(refFrames); - return this; - } - - public Builder refFrames(Optional refFrames) { - Utils.checkNotNull(refFrames, "refFrames"); - this.refFrames = refFrames; - return this; - } - - public Builder width(double width) { - Utils.checkNotNull(width, "width"); - this.width = Optional.ofNullable(width); - return this; - } - - public Builder width(Optional width) { - Utils.checkNotNull(width, "width"); - this.width = width; - return this; - } - - public Builder displayTitle(String displayTitle) { - Utils.checkNotNull(displayTitle, "displayTitle"); - this.displayTitle = Optional.ofNullable(displayTitle); - return this; - } - - public Builder displayTitle(Optional displayTitle) { - Utils.checkNotNull(displayTitle, "displayTitle"); - this.displayTitle = displayTitle; - return this; - } - - public Builder extendedDisplayTitle(String extendedDisplayTitle) { - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.extendedDisplayTitle = Optional.ofNullable(extendedDisplayTitle); - return this; - } - - public Builder extendedDisplayTitle(Optional extendedDisplayTitle) { - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.extendedDisplayTitle = extendedDisplayTitle; - return this; - } - - public GetOnDeckStream build() { - return new GetOnDeckStream( - id, - streamType, - default_, - codec, - index, - bitrate, - language, - languageTag, - languageCode, - bitDepth, - chromaLocation, - chromaSubsampling, - codedHeight, - codedWidth, - colorRange, - frameRate, - height, - level, - profile, - refFrames, - width, - displayTitle, - extendedDisplayTitle); - } - } -} - diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMediaContainer.java b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMediaContainer.java index 44540ad9..c2ebc05c 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMediaContainer.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMediaContainer.java @@ -22,24 +22,35 @@ import java.util.Optional; public class GetRecentlyAddedMediaContainer { + /** + * Number of media items returned in this response. + */ @JsonProperty("size") - private long size; + private int size; - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("offset") - private Optional offset; - - @JsonInclude(Include.NON_ABSENT) + /** + * Total number of media items in the library. + */ @JsonProperty("totalSize") - private Optional totalSize; + private int totalSize; - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("identifier") - private Optional identifier; + /** + * Offset value for pagination. + */ + @JsonProperty("offset") + private long offset; - @JsonInclude(Include.NON_ABSENT) + /** + * Indicates whether syncing is allowed. + */ @JsonProperty("allowSync") - private Optional allowSync; + private boolean allowSync; + + /** + * An plugin identifier for the media container. + */ + @JsonProperty("identifier") + private String identifier; /** * The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. @@ -49,65 +60,87 @@ public class GetRecentlyAddedMediaContainer { @JsonProperty("Meta") private Optional meta; + /** + * An array of metadata items. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("Metadata") private Optional> metadata; @JsonCreator public GetRecentlyAddedMediaContainer( - @JsonProperty("size") long size, - @JsonProperty("offset") Optional offset, - @JsonProperty("totalSize") Optional totalSize, - @JsonProperty("identifier") Optional identifier, - @JsonProperty("allowSync") Optional allowSync, + @JsonProperty("size") int size, + @JsonProperty("totalSize") int totalSize, + @JsonProperty("offset") long offset, + @JsonProperty("allowSync") boolean allowSync, + @JsonProperty("identifier") String identifier, @JsonProperty("Meta") Optional meta, @JsonProperty("Metadata") Optional> metadata) { Utils.checkNotNull(size, "size"); - Utils.checkNotNull(offset, "offset"); Utils.checkNotNull(totalSize, "totalSize"); - Utils.checkNotNull(identifier, "identifier"); + Utils.checkNotNull(offset, "offset"); Utils.checkNotNull(allowSync, "allowSync"); + Utils.checkNotNull(identifier, "identifier"); Utils.checkNotNull(meta, "meta"); Utils.checkNotNull(metadata, "metadata"); this.size = size; - this.offset = offset; this.totalSize = totalSize; - this.identifier = identifier; + this.offset = offset; this.allowSync = allowSync; + this.identifier = identifier; this.meta = meta; this.metadata = metadata; } public GetRecentlyAddedMediaContainer( - long size) { - this(size, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + int size, + int totalSize, + long offset, + boolean allowSync, + String identifier) { + this(size, totalSize, offset, allowSync, identifier, Optional.empty(), Optional.empty()); } + /** + * Number of media items returned in this response. + */ @JsonIgnore - public long size() { + public int size() { return size; } + /** + * Total number of media items in the library. + */ @JsonIgnore - public Optional offset() { - return offset; - } - - @JsonIgnore - public Optional totalSize() { + public int totalSize() { return totalSize; } + /** + * Offset value for pagination. + */ @JsonIgnore - public Optional identifier() { - return identifier; + public long offset() { + return offset; } + /** + * Indicates whether syncing is allowed. + */ @JsonIgnore - public Optional allowSync() { + public boolean allowSync() { return allowSync; } + /** + * An plugin identifier for the media container. + */ + @JsonIgnore + public String identifier() { + return identifier; + } + /** * The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. * @@ -118,6 +151,9 @@ public class GetRecentlyAddedMediaContainer { return (Optional) meta; } + /** + * An array of metadata items. + */ @SuppressWarnings("unchecked") @JsonIgnore public Optional> metadata() { @@ -128,57 +164,48 @@ public class GetRecentlyAddedMediaContainer { return new Builder(); } - public GetRecentlyAddedMediaContainer withSize(long size) { + /** + * Number of media items returned in this response. + */ + public GetRecentlyAddedMediaContainer withSize(int size) { Utils.checkNotNull(size, "size"); this.size = size; return this; } - public GetRecentlyAddedMediaContainer withOffset(int offset) { - Utils.checkNotNull(offset, "offset"); - this.offset = Optional.ofNullable(offset); - return this; - } - - public GetRecentlyAddedMediaContainer withOffset(Optional offset) { - Utils.checkNotNull(offset, "offset"); - this.offset = offset; - return this; - } - + /** + * Total number of media items in the library. + */ public GetRecentlyAddedMediaContainer withTotalSize(int totalSize) { - Utils.checkNotNull(totalSize, "totalSize"); - this.totalSize = Optional.ofNullable(totalSize); - return this; - } - - public GetRecentlyAddedMediaContainer withTotalSize(Optional totalSize) { Utils.checkNotNull(totalSize, "totalSize"); this.totalSize = totalSize; return this; } - public GetRecentlyAddedMediaContainer withIdentifier(String identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = Optional.ofNullable(identifier); - return this; - } - - public GetRecentlyAddedMediaContainer withIdentifier(Optional identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = identifier; + /** + * Offset value for pagination. + */ + public GetRecentlyAddedMediaContainer withOffset(long offset) { + Utils.checkNotNull(offset, "offset"); + this.offset = offset; return this; } + /** + * Indicates whether syncing is allowed. + */ public GetRecentlyAddedMediaContainer withAllowSync(boolean allowSync) { Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = Optional.ofNullable(allowSync); + this.allowSync = allowSync; return this; } - public GetRecentlyAddedMediaContainer withAllowSync(Optional allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = allowSync; + /** + * An plugin identifier for the media container. + */ + public GetRecentlyAddedMediaContainer withIdentifier(String identifier) { + Utils.checkNotNull(identifier, "identifier"); + this.identifier = identifier; return this; } @@ -202,12 +229,18 @@ public class GetRecentlyAddedMediaContainer { return this; } + /** + * An array of metadata items. + */ public GetRecentlyAddedMediaContainer withMetadata(List metadata) { Utils.checkNotNull(metadata, "metadata"); this.metadata = Optional.ofNullable(metadata); return this; } + /** + * An array of metadata items. + */ public GetRecentlyAddedMediaContainer withMetadata(Optional> metadata) { Utils.checkNotNull(metadata, "metadata"); this.metadata = metadata; @@ -225,10 +258,10 @@ public class GetRecentlyAddedMediaContainer { GetRecentlyAddedMediaContainer other = (GetRecentlyAddedMediaContainer) o; return Objects.deepEquals(this.size, other.size) && - Objects.deepEquals(this.offset, other.offset) && Objects.deepEquals(this.totalSize, other.totalSize) && - Objects.deepEquals(this.identifier, other.identifier) && + Objects.deepEquals(this.offset, other.offset) && Objects.deepEquals(this.allowSync, other.allowSync) && + Objects.deepEquals(this.identifier, other.identifier) && Objects.deepEquals(this.meta, other.meta) && Objects.deepEquals(this.metadata, other.metadata); } @@ -237,10 +270,10 @@ public class GetRecentlyAddedMediaContainer { public int hashCode() { return Objects.hash( size, - offset, totalSize, - identifier, + offset, allowSync, + identifier, meta, metadata); } @@ -249,25 +282,25 @@ public class GetRecentlyAddedMediaContainer { public String toString() { return Utils.toString(GetRecentlyAddedMediaContainer.class, "size", size, - "offset", offset, "totalSize", totalSize, - "identifier", identifier, + "offset", offset, "allowSync", allowSync, + "identifier", identifier, "meta", meta, "metadata", metadata); } public final static class Builder { - private Long size; + private Integer size; - private Optional offset = Optional.empty(); + private Integer totalSize; - private Optional totalSize = Optional.empty(); + private Long offset; - private Optional identifier = Optional.empty(); + private Boolean allowSync; - private Optional allowSync = Optional.empty(); + private String identifier; private Optional meta = Optional.empty(); @@ -277,57 +310,48 @@ public class GetRecentlyAddedMediaContainer { // force use of static builder() method } - public Builder size(long size) { + /** + * Number of media items returned in this response. + */ + public Builder size(int size) { Utils.checkNotNull(size, "size"); this.size = size; return this; } - public Builder offset(int offset) { - Utils.checkNotNull(offset, "offset"); - this.offset = Optional.ofNullable(offset); - return this; - } - - public Builder offset(Optional offset) { - Utils.checkNotNull(offset, "offset"); - this.offset = offset; - return this; - } - + /** + * Total number of media items in the library. + */ public Builder totalSize(int totalSize) { - Utils.checkNotNull(totalSize, "totalSize"); - this.totalSize = Optional.ofNullable(totalSize); - return this; - } - - public Builder totalSize(Optional totalSize) { Utils.checkNotNull(totalSize, "totalSize"); this.totalSize = totalSize; return this; } - public Builder identifier(String identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = Optional.ofNullable(identifier); - return this; - } - - public Builder identifier(Optional identifier) { - Utils.checkNotNull(identifier, "identifier"); - this.identifier = identifier; + /** + * Offset value for pagination. + */ + public Builder offset(long offset) { + Utils.checkNotNull(offset, "offset"); + this.offset = offset; return this; } + /** + * Indicates whether syncing is allowed. + */ public Builder allowSync(boolean allowSync) { Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = Optional.ofNullable(allowSync); + this.allowSync = allowSync; return this; } - public Builder allowSync(Optional allowSync) { - Utils.checkNotNull(allowSync, "allowSync"); - this.allowSync = allowSync; + /** + * An plugin identifier for the media container. + */ + public Builder identifier(String identifier) { + Utils.checkNotNull(identifier, "identifier"); + this.identifier = identifier; return this; } @@ -351,12 +375,18 @@ public class GetRecentlyAddedMediaContainer { return this; } + /** + * An array of metadata items. + */ public Builder metadata(List metadata) { Utils.checkNotNull(metadata, "metadata"); this.metadata = Optional.ofNullable(metadata); return this; } + /** + * An array of metadata items. + */ public Builder metadata(Optional> metadata) { Utils.checkNotNull(metadata, "metadata"); this.metadata = metadata; @@ -366,10 +396,10 @@ public class GetRecentlyAddedMediaContainer { public GetRecentlyAddedMediaContainer build() { return new GetRecentlyAddedMediaContainer( size, - offset, totalSize, - identifier, + offset, allowSync, + identifier, meta, metadata); } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMetadata.java b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMetadata.java index 15810fed..dd71d067 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMetadata.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedMetadata.java @@ -10,8 +10,8 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; -import java.lang.Boolean; import java.lang.Double; +import java.lang.Float; import java.lang.Integer; import java.lang.Long; import java.lang.Override; @@ -21,143 +21,366 @@ import java.time.LocalDate; import java.util.List; import java.util.Objects; import java.util.Optional; +/** + * GetRecentlyAddedMetadata - Unknown + * + */ public class GetRecentlyAddedMetadata { - /** - * The rating key (Media ID) of this media item. - * Note: This is always an integer, but is represented as a string in the API. - * - */ - @JsonProperty("ratingKey") - private String ratingKey; - - @JsonProperty("key") - private String key; - - @JsonProperty("guid") - private String guid; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("studio") - private Optional studio; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("skipChildren") - private Optional skipChildren; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionID") - private Optional librarySectionID; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionTitle") - private Optional librarySectionTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("librarySectionKey") - private Optional librarySectionKey; + @JsonProperty("addedAt") + private long addedAt; /** - * The type of media content - * + * The art image URL for the media item. */ - @JsonProperty("type") - private GetRecentlyAddedHubsType type; - - @JsonProperty("title") - private String title; + @JsonProperty("art") + private String art; + /** + * The URL for the audience rating image. + */ @JsonInclude(Include.NON_ABSENT) - @JsonProperty("slug") - private Optional slug; + @JsonProperty("audienceRatingImage") + private Optional audienceRatingImage; + /** + * The audience rating for the media item. + */ + @JsonProperty("audienceRating") + private double audienceRating; + + /** + * The source from which chapter data is derived. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("chapterSource") + private Optional chapterSource; + + /** + * The number of child items associated with this media item. + */ + @JsonProperty("childCount") + private int childCount; + + /** + * The content rating for the media item. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("contentRating") private Optional contentRating; + /** + * 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). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("createdAtAccuracy") + private Optional createdAtAccuracy; + + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("createdAtTZOffset") + private Optional createdAtTZOffset; + + /** + * The duration of the media item in milliseconds. + */ + @JsonProperty("duration") + private int duration; + + /** + * The art URL for the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentArt") + private Optional grandparentArt; + + /** + * The GUID of the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentGuid") + private Optional grandparentGuid; + + /** + * The key of the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentKey") + private Optional grandparentKey; + + /** + * The rating key of the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentRatingKey") + private Optional grandparentRatingKey; + + /** + * The slug for the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentSlug") + private Optional grandparentSlug; + + /** + * The theme URL for the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentTheme") + private Optional grandparentTheme; + + /** + * The thumbnail URL for the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentThumb") + private Optional grandparentThumb; + + /** + * The title of the grandparent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("grandparentTitle") + private Optional grandparentTitle; + + /** + * The globally unique identifier for the media item. + */ + @JsonProperty("guid") + private String guid; + + /** + * The index position of the media item. + */ + @JsonProperty("index") + private int index; + + /** + * The unique key for the media item. + */ + @JsonProperty("key") + private String key; + + /** + * The Unix timestamp representing the last time the item was rated. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("lastRatedAt") + private Optional lastRatedAt; + + /** + * Unix timestamp for when the media item was last viewed. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("lastViewedAt") + private Optional lastViewedAt; + + /** + * The number of leaf items (end nodes) under this media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("leafCount") + private Optional leafCount; + + /** + * The identifier for the library section. + */ + @JsonProperty("librarySectionID") + private long librarySectionID; + + /** + * The key corresponding to the library section. + */ + @JsonProperty("librarySectionKey") + private String librarySectionKey; + + /** + * The title of the library section. + */ + @JsonProperty("librarySectionTitle") + private String librarySectionTitle; + + /** + * The original title of the media item (if different). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("originalTitle") + private Optional originalTitle; + + /** + * The original release date of the media item. + */ + @JsonProperty("originallyAvailableAt") + private LocalDate originallyAvailableAt; + + /** + * The GUID of the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentGuid") + private Optional parentGuid; + + /** + * The index position of the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentIndex") + private Optional parentIndex; + + /** + * The key of the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentKey") + private Optional parentKey; + + /** + * The rating key of the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentRatingKey") + private Optional parentRatingKey; + + /** + * The slug for the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentSlug") + private Optional parentSlug; + + /** + * The studio of the parent media item. + */ + @JsonProperty("parentStudio") + private String parentStudio; + + /** + * The theme URL for the parent media item. + */ + @JsonProperty("parentTheme") + private String parentTheme; + + /** + * The thumbnail URL for the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentThumb") + private Optional parentThumb; + + /** + * The title of the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentTitle") + private Optional parentTitle; + + /** + * The release year of the parent media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("parentYear") + private Optional parentYear; + + /** + * The primary extra key associated with this media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("primaryExtraKey") + private Optional primaryExtraKey; + + /** + * The URL for the rating image. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("ratingImage") + private Optional ratingImage; + + /** + * 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") + private String ratingKey; + + /** + * The critic rating for the media item. + */ + @JsonProperty("rating") + private float rating; + + /** + * The total number of seasons (for TV shows). + */ + @JsonProperty("seasonCount") + private int seasonCount; + + /** + * The number of times this media item has been skipped. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("skipCount") + private Optional skipCount; + + /** + * A URL‐friendly version of the media title. + */ + @JsonProperty("slug") + private String slug; + + /** + * The studio that produced the media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("studio") + private Optional studio; + + /** + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("subtype") + private Optional subtype; + + /** + * A synopsis of the media item. + */ @JsonProperty("summary") private String summary; - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("rating") - private Optional rating; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audienceRating") - private Optional audienceRating; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("year") - private Optional year; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("seasonCount") - private Optional seasonCount; - - @JsonInclude(Include.NON_ABSENT) + /** + * A brief tagline for the media item. + */ @JsonProperty("tagline") - private Optional tagline; + private String tagline; /** - * 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. */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("flattenSeasons") - private Optional flattenSeasons; + @JsonProperty("theme") + private String theme; /** - * 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. */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("episodeSort") - private Optional episodeSort; - - /** - * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("enableCreditsMarkerGeneration") - private Optional enableCreditsMarkerGeneration; - - /** - * 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)). - * - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("showOrdering") - private Optional showOrdering; - - @JsonInclude(Include.NON_ABSENT) @JsonProperty("thumb") - private Optional thumb; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("art") - private Optional art; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("banner") - private Optional banner; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("duration") - private Optional duration; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("originallyAvailableAt") - private Optional originallyAvailableAt; + private String thumb; /** - * Unix epoch datetime in seconds + * The sort title used for ordering media items. */ - @JsonProperty("addedAt") - private long addedAt; + @JsonProperty("titleSort") + private String titleSort; + + /** + * The title of the media item. + */ + @JsonProperty("title") + private String title; + + @JsonProperty("type") + private GetRecentlyAddedHubsType type; /** * Unix epoch datetime in seconds @@ -166,62 +389,49 @@ public class GetRecentlyAddedMetadata { @JsonProperty("updatedAt") private Optional updatedAt; + /** + * The rating provided by a user for the item. This value is expressed as a decimal number. + */ @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audienceRatingImage") - private Optional audienceRatingImage; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("chapterSource") - private Optional chapterSource; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("primaryExtraKey") - private Optional primaryExtraKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("ratingImage") - private Optional ratingImage; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentRatingKey") - private Optional grandparentRatingKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentGuid") - private Optional grandparentGuid; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentKey") - private Optional grandparentKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentTitle") - private Optional grandparentTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentThumb") - private Optional grandparentThumb; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentSlug") - private Optional parentSlug; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentSlug") - private Optional grandparentSlug; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentArt") - private Optional grandparentArt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("grandparentTheme") - private Optional grandparentTheme; + @JsonProperty("userRating") + private Optional userRating; /** - * The Media object is only included when type query is `4` or higher. - * + * The number of times this media item has been viewed. */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("viewCount") + private Optional viewCount; + + /** + * The current playback offset (in milliseconds). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("viewOffset") + private Optional viewOffset; + + /** + * The number of leaf items that have been viewed. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("viewedLeafCount") + private Optional viewedLeafCount; + + /** + * The release year of the media item. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("year") + private Optional year; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("Image") + private Optional> image; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("UltraBlurColors") + private Optional ultraBlurColors; + @JsonInclude(Include.NON_ABSENT) @JsonProperty("Media") private Optional> media; @@ -242,545 +452,724 @@ public class GetRecentlyAddedMetadata { @JsonProperty("Writer") private Optional> writer; - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Collection") - private Optional> collection; - @JsonInclude(Include.NON_ABSENT) @JsonProperty("Role") private Optional> role; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("Producer") + private Optional> producer; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("Rating") + private Optional> rating1; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("Similar") + private Optional> similar; + @JsonInclude(Include.NON_ABSENT) @JsonProperty("Location") private Optional> location; - /** - * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - * - */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("Guid") - private Optional> mediaGuid; + private Optional> guids; @JsonInclude(Include.NON_ABSENT) - @JsonProperty("UltraBlurColors") - private Optional ultraBlurColors; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Rating") - private Optional> metaDataRating; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("Image") - private Optional> image; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("titleSort") - private Optional titleSort; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("viewCount") - private Optional viewCount; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("lastViewedAt") - private Optional lastViewedAt; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("originalTitle") - private Optional originalTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("viewOffset") - private Optional viewOffset; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("skipCount") - private Optional skipCount; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("index") - private Optional index; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("theme") - private Optional theme; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("leafCount") - private Optional leafCount; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("viewedLeafCount") - private Optional viewedLeafCount; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("childCount") - private Optional childCount; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("hasPremiumExtras") - private Optional hasPremiumExtras; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("hasPremiumPrimaryExtra") - private Optional hasPremiumPrimaryExtra; - - /** - * The rating key of the parent item. - * - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentRatingKey") - private Optional parentRatingKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentGuid") - private Optional parentGuid; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentStudio") - private Optional parentStudio; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentKey") - private Optional parentKey; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentTitle") - private Optional parentTitle; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentIndex") - private Optional parentIndex; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentYear") - private Optional parentYear; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentThumb") - private Optional parentThumb; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("parentTheme") - private Optional parentTheme; + @JsonProperty("Collection") + private Optional> collection; @JsonCreator public GetRecentlyAddedMetadata( - @JsonProperty("ratingKey") String ratingKey, - @JsonProperty("key") String key, - @JsonProperty("guid") String guid, - @JsonProperty("studio") Optional studio, - @JsonProperty("skipChildren") Optional skipChildren, - @JsonProperty("librarySectionID") Optional librarySectionID, - @JsonProperty("librarySectionTitle") Optional librarySectionTitle, - @JsonProperty("librarySectionKey") Optional librarySectionKey, - @JsonProperty("type") GetRecentlyAddedHubsType type, - @JsonProperty("title") String title, - @JsonProperty("slug") Optional slug, - @JsonProperty("contentRating") Optional contentRating, - @JsonProperty("summary") String summary, - @JsonProperty("rating") Optional rating, - @JsonProperty("audienceRating") Optional audienceRating, - @JsonProperty("year") Optional year, - @JsonProperty("seasonCount") Optional seasonCount, - @JsonProperty("tagline") Optional tagline, - @JsonProperty("flattenSeasons") Optional flattenSeasons, - @JsonProperty("episodeSort") Optional episodeSort, - @JsonProperty("enableCreditsMarkerGeneration") Optional enableCreditsMarkerGeneration, - @JsonProperty("showOrdering") Optional showOrdering, - @JsonProperty("thumb") Optional thumb, - @JsonProperty("art") Optional art, - @JsonProperty("banner") Optional banner, - @JsonProperty("duration") Optional duration, - @JsonProperty("originallyAvailableAt") Optional originallyAvailableAt, @JsonProperty("addedAt") long addedAt, - @JsonProperty("updatedAt") Optional updatedAt, + @JsonProperty("art") String art, @JsonProperty("audienceRatingImage") Optional audienceRatingImage, + @JsonProperty("audienceRating") double audienceRating, @JsonProperty("chapterSource") Optional chapterSource, - @JsonProperty("primaryExtraKey") Optional primaryExtraKey, - @JsonProperty("ratingImage") Optional ratingImage, - @JsonProperty("grandparentRatingKey") Optional grandparentRatingKey, + @JsonProperty("childCount") int childCount, + @JsonProperty("contentRating") Optional contentRating, + @JsonProperty("createdAtAccuracy") Optional createdAtAccuracy, + @JsonProperty("createdAtTZOffset") Optional createdAtTZOffset, + @JsonProperty("duration") int duration, + @JsonProperty("grandparentArt") Optional grandparentArt, @JsonProperty("grandparentGuid") Optional grandparentGuid, @JsonProperty("grandparentKey") Optional grandparentKey, - @JsonProperty("grandparentTitle") Optional grandparentTitle, - @JsonProperty("grandparentThumb") Optional grandparentThumb, - @JsonProperty("parentSlug") Optional parentSlug, + @JsonProperty("grandparentRatingKey") Optional grandparentRatingKey, @JsonProperty("grandparentSlug") Optional grandparentSlug, - @JsonProperty("grandparentArt") Optional grandparentArt, @JsonProperty("grandparentTheme") Optional grandparentTheme, + @JsonProperty("grandparentThumb") Optional grandparentThumb, + @JsonProperty("grandparentTitle") Optional grandparentTitle, + @JsonProperty("guid") String guid, + @JsonProperty("index") int index, + @JsonProperty("key") String key, + @JsonProperty("lastRatedAt") Optional lastRatedAt, + @JsonProperty("lastViewedAt") Optional lastViewedAt, + @JsonProperty("leafCount") Optional leafCount, + @JsonProperty("librarySectionID") long librarySectionID, + @JsonProperty("librarySectionKey") String librarySectionKey, + @JsonProperty("librarySectionTitle") String librarySectionTitle, + @JsonProperty("originalTitle") Optional originalTitle, + @JsonProperty("originallyAvailableAt") LocalDate originallyAvailableAt, + @JsonProperty("parentGuid") Optional parentGuid, + @JsonProperty("parentIndex") Optional parentIndex, + @JsonProperty("parentKey") Optional parentKey, + @JsonProperty("parentRatingKey") Optional parentRatingKey, + @JsonProperty("parentSlug") Optional parentSlug, + @JsonProperty("parentStudio") String parentStudio, + @JsonProperty("parentTheme") String parentTheme, + @JsonProperty("parentThumb") Optional parentThumb, + @JsonProperty("parentTitle") Optional parentTitle, + @JsonProperty("parentYear") Optional parentYear, + @JsonProperty("primaryExtraKey") Optional primaryExtraKey, + @JsonProperty("ratingImage") Optional ratingImage, + @JsonProperty("ratingKey") String ratingKey, + @JsonProperty("rating") float rating, + @JsonProperty("seasonCount") int seasonCount, + @JsonProperty("skipCount") Optional skipCount, + @JsonProperty("slug") String slug, + @JsonProperty("studio") Optional studio, + @JsonProperty("subtype") Optional subtype, + @JsonProperty("summary") String summary, + @JsonProperty("tagline") String tagline, + @JsonProperty("theme") String theme, + @JsonProperty("thumb") String thumb, + @JsonProperty("titleSort") String titleSort, + @JsonProperty("title") String title, + @JsonProperty("type") GetRecentlyAddedHubsType type, + @JsonProperty("updatedAt") Optional updatedAt, + @JsonProperty("userRating") Optional userRating, + @JsonProperty("viewCount") Optional viewCount, + @JsonProperty("viewOffset") Optional viewOffset, + @JsonProperty("viewedLeafCount") Optional viewedLeafCount, + @JsonProperty("year") Optional year, + @JsonProperty("Image") Optional> image, + @JsonProperty("UltraBlurColors") Optional ultraBlurColors, @JsonProperty("Media") Optional> media, @JsonProperty("Genre") Optional> genre, @JsonProperty("Country") Optional> country, @JsonProperty("Director") Optional> director, @JsonProperty("Writer") Optional> writer, - @JsonProperty("Collection") Optional> collection, @JsonProperty("Role") Optional> role, + @JsonProperty("Producer") Optional> producer, + @JsonProperty("Rating") Optional> rating1, + @JsonProperty("Similar") Optional> similar, @JsonProperty("Location") Optional> location, - @JsonProperty("Guid") Optional> mediaGuid, - @JsonProperty("UltraBlurColors") Optional ultraBlurColors, - @JsonProperty("Rating") Optional> metaDataRating, - @JsonProperty("Image") Optional> image, - @JsonProperty("titleSort") Optional titleSort, - @JsonProperty("viewCount") Optional viewCount, - @JsonProperty("lastViewedAt") Optional lastViewedAt, - @JsonProperty("originalTitle") Optional originalTitle, - @JsonProperty("viewOffset") Optional viewOffset, - @JsonProperty("skipCount") Optional skipCount, - @JsonProperty("index") Optional index, - @JsonProperty("theme") Optional theme, - @JsonProperty("leafCount") Optional leafCount, - @JsonProperty("viewedLeafCount") Optional viewedLeafCount, - @JsonProperty("childCount") Optional childCount, - @JsonProperty("hasPremiumExtras") Optional hasPremiumExtras, - @JsonProperty("hasPremiumPrimaryExtra") Optional hasPremiumPrimaryExtra, - @JsonProperty("parentRatingKey") Optional parentRatingKey, - @JsonProperty("parentGuid") Optional parentGuid, - @JsonProperty("parentStudio") Optional parentStudio, - @JsonProperty("parentKey") Optional parentKey, - @JsonProperty("parentTitle") Optional parentTitle, - @JsonProperty("parentIndex") Optional parentIndex, - @JsonProperty("parentYear") Optional parentYear, - @JsonProperty("parentThumb") Optional parentThumb, - @JsonProperty("parentTheme") Optional parentTheme) { - Utils.checkNotNull(ratingKey, "ratingKey"); - Utils.checkNotNull(key, "key"); - Utils.checkNotNull(guid, "guid"); - Utils.checkNotNull(studio, "studio"); - Utils.checkNotNull(skipChildren, "skipChildren"); - Utils.checkNotNull(librarySectionID, "librarySectionID"); - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - Utils.checkNotNull(type, "type"); - Utils.checkNotNull(title, "title"); - Utils.checkNotNull(slug, "slug"); - Utils.checkNotNull(contentRating, "contentRating"); - Utils.checkNotNull(summary, "summary"); - Utils.checkNotNull(rating, "rating"); - Utils.checkNotNull(audienceRating, "audienceRating"); - Utils.checkNotNull(year, "year"); - Utils.checkNotNull(seasonCount, "seasonCount"); - Utils.checkNotNull(tagline, "tagline"); - Utils.checkNotNull(flattenSeasons, "flattenSeasons"); - Utils.checkNotNull(episodeSort, "episodeSort"); - Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); - Utils.checkNotNull(showOrdering, "showOrdering"); - Utils.checkNotNull(thumb, "thumb"); - Utils.checkNotNull(art, "art"); - Utils.checkNotNull(banner, "banner"); - Utils.checkNotNull(duration, "duration"); - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); + @JsonProperty("Guid") Optional> guids, + @JsonProperty("Collection") Optional> collection) { Utils.checkNotNull(addedAt, "addedAt"); - Utils.checkNotNull(updatedAt, "updatedAt"); + Utils.checkNotNull(art, "art"); Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); + Utils.checkNotNull(audienceRating, "audienceRating"); Utils.checkNotNull(chapterSource, "chapterSource"); - Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); - Utils.checkNotNull(ratingImage, "ratingImage"); - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); + Utils.checkNotNull(childCount, "childCount"); + Utils.checkNotNull(contentRating, "contentRating"); + Utils.checkNotNull(createdAtAccuracy, "createdAtAccuracy"); + Utils.checkNotNull(createdAtTZOffset, "createdAtTZOffset"); + Utils.checkNotNull(duration, "duration"); + Utils.checkNotNull(grandparentArt, "grandparentArt"); Utils.checkNotNull(grandparentGuid, "grandparentGuid"); Utils.checkNotNull(grandparentKey, "grandparentKey"); - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - Utils.checkNotNull(parentSlug, "parentSlug"); + Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); Utils.checkNotNull(grandparentSlug, "grandparentSlug"); - Utils.checkNotNull(grandparentArt, "grandparentArt"); Utils.checkNotNull(grandparentTheme, "grandparentTheme"); + Utils.checkNotNull(grandparentThumb, "grandparentThumb"); + Utils.checkNotNull(grandparentTitle, "grandparentTitle"); + Utils.checkNotNull(guid, "guid"); + Utils.checkNotNull(index, "index"); + Utils.checkNotNull(key, "key"); + Utils.checkNotNull(lastRatedAt, "lastRatedAt"); + Utils.checkNotNull(lastViewedAt, "lastViewedAt"); + Utils.checkNotNull(leafCount, "leafCount"); + Utils.checkNotNull(librarySectionID, "librarySectionID"); + Utils.checkNotNull(librarySectionKey, "librarySectionKey"); + Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); + Utils.checkNotNull(originalTitle, "originalTitle"); + Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); + Utils.checkNotNull(parentGuid, "parentGuid"); + Utils.checkNotNull(parentIndex, "parentIndex"); + Utils.checkNotNull(parentKey, "parentKey"); + Utils.checkNotNull(parentRatingKey, "parentRatingKey"); + Utils.checkNotNull(parentSlug, "parentSlug"); + Utils.checkNotNull(parentStudio, "parentStudio"); + Utils.checkNotNull(parentTheme, "parentTheme"); + Utils.checkNotNull(parentThumb, "parentThumb"); + Utils.checkNotNull(parentTitle, "parentTitle"); + Utils.checkNotNull(parentYear, "parentYear"); + Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); + Utils.checkNotNull(ratingImage, "ratingImage"); + Utils.checkNotNull(ratingKey, "ratingKey"); + Utils.checkNotNull(rating, "rating"); + Utils.checkNotNull(seasonCount, "seasonCount"); + Utils.checkNotNull(skipCount, "skipCount"); + Utils.checkNotNull(slug, "slug"); + Utils.checkNotNull(studio, "studio"); + Utils.checkNotNull(subtype, "subtype"); + Utils.checkNotNull(summary, "summary"); + Utils.checkNotNull(tagline, "tagline"); + Utils.checkNotNull(theme, "theme"); + Utils.checkNotNull(thumb, "thumb"); + Utils.checkNotNull(titleSort, "titleSort"); + Utils.checkNotNull(title, "title"); + Utils.checkNotNull(type, "type"); + Utils.checkNotNull(updatedAt, "updatedAt"); + Utils.checkNotNull(userRating, "userRating"); + Utils.checkNotNull(viewCount, "viewCount"); + Utils.checkNotNull(viewOffset, "viewOffset"); + Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); + Utils.checkNotNull(year, "year"); + Utils.checkNotNull(image, "image"); + Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); Utils.checkNotNull(media, "media"); Utils.checkNotNull(genre, "genre"); Utils.checkNotNull(country, "country"); Utils.checkNotNull(director, "director"); Utils.checkNotNull(writer, "writer"); - Utils.checkNotNull(collection, "collection"); Utils.checkNotNull(role, "role"); + Utils.checkNotNull(producer, "producer"); + Utils.checkNotNull(rating1, "rating1"); + Utils.checkNotNull(similar, "similar"); Utils.checkNotNull(location, "location"); - Utils.checkNotNull(mediaGuid, "mediaGuid"); - Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); - Utils.checkNotNull(metaDataRating, "metaDataRating"); - Utils.checkNotNull(image, "image"); - Utils.checkNotNull(titleSort, "titleSort"); - Utils.checkNotNull(viewCount, "viewCount"); - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - Utils.checkNotNull(originalTitle, "originalTitle"); - Utils.checkNotNull(viewOffset, "viewOffset"); - Utils.checkNotNull(skipCount, "skipCount"); - Utils.checkNotNull(index, "index"); - Utils.checkNotNull(theme, "theme"); - Utils.checkNotNull(leafCount, "leafCount"); - Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); - Utils.checkNotNull(childCount, "childCount"); - Utils.checkNotNull(hasPremiumExtras, "hasPremiumExtras"); - Utils.checkNotNull(hasPremiumPrimaryExtra, "hasPremiumPrimaryExtra"); - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - Utils.checkNotNull(parentGuid, "parentGuid"); - Utils.checkNotNull(parentStudio, "parentStudio"); - Utils.checkNotNull(parentKey, "parentKey"); - Utils.checkNotNull(parentTitle, "parentTitle"); - Utils.checkNotNull(parentIndex, "parentIndex"); - Utils.checkNotNull(parentYear, "parentYear"); - Utils.checkNotNull(parentThumb, "parentThumb"); - Utils.checkNotNull(parentTheme, "parentTheme"); - this.ratingKey = ratingKey; - this.key = key; - this.guid = guid; - this.studio = studio; - this.skipChildren = skipChildren; - this.librarySectionID = librarySectionID; - this.librarySectionTitle = librarySectionTitle; - this.librarySectionKey = librarySectionKey; - this.type = type; - this.title = title; - this.slug = slug; - this.contentRating = contentRating; - this.summary = summary; - this.rating = rating; - this.audienceRating = audienceRating; - this.year = year; - this.seasonCount = seasonCount; - this.tagline = tagline; - this.flattenSeasons = flattenSeasons; - this.episodeSort = episodeSort; - this.enableCreditsMarkerGeneration = enableCreditsMarkerGeneration; - this.showOrdering = showOrdering; - this.thumb = thumb; - this.art = art; - this.banner = banner; - this.duration = duration; - this.originallyAvailableAt = originallyAvailableAt; + Utils.checkNotNull(guids, "guids"); + Utils.checkNotNull(collection, "collection"); this.addedAt = addedAt; - this.updatedAt = updatedAt; + this.art = art; this.audienceRatingImage = audienceRatingImage; + this.audienceRating = audienceRating; this.chapterSource = chapterSource; - this.primaryExtraKey = primaryExtraKey; - this.ratingImage = ratingImage; - this.grandparentRatingKey = grandparentRatingKey; + this.childCount = childCount; + this.contentRating = contentRating; + this.createdAtAccuracy = createdAtAccuracy; + this.createdAtTZOffset = createdAtTZOffset; + this.duration = duration; + this.grandparentArt = grandparentArt; this.grandparentGuid = grandparentGuid; this.grandparentKey = grandparentKey; - this.grandparentTitle = grandparentTitle; - this.grandparentThumb = grandparentThumb; - this.parentSlug = parentSlug; + this.grandparentRatingKey = grandparentRatingKey; this.grandparentSlug = grandparentSlug; - this.grandparentArt = grandparentArt; this.grandparentTheme = grandparentTheme; + this.grandparentThumb = grandparentThumb; + this.grandparentTitle = grandparentTitle; + this.guid = guid; + this.index = index; + this.key = key; + this.lastRatedAt = lastRatedAt; + this.lastViewedAt = lastViewedAt; + this.leafCount = leafCount; + this.librarySectionID = librarySectionID; + this.librarySectionKey = librarySectionKey; + this.librarySectionTitle = librarySectionTitle; + this.originalTitle = originalTitle; + this.originallyAvailableAt = originallyAvailableAt; + this.parentGuid = parentGuid; + this.parentIndex = parentIndex; + this.parentKey = parentKey; + this.parentRatingKey = parentRatingKey; + this.parentSlug = parentSlug; + this.parentStudio = parentStudio; + this.parentTheme = parentTheme; + this.parentThumb = parentThumb; + this.parentTitle = parentTitle; + this.parentYear = parentYear; + this.primaryExtraKey = primaryExtraKey; + this.ratingImage = ratingImage; + this.ratingKey = ratingKey; + this.rating = rating; + this.seasonCount = seasonCount; + this.skipCount = skipCount; + this.slug = slug; + this.studio = studio; + this.subtype = subtype; + this.summary = summary; + this.tagline = tagline; + this.theme = theme; + this.thumb = thumb; + this.titleSort = titleSort; + this.title = title; + this.type = type; + this.updatedAt = updatedAt; + this.userRating = userRating; + this.viewCount = viewCount; + this.viewOffset = viewOffset; + this.viewedLeafCount = viewedLeafCount; + this.year = year; + this.image = image; + this.ultraBlurColors = ultraBlurColors; this.media = media; this.genre = genre; this.country = country; this.director = director; this.writer = writer; - this.collection = collection; this.role = role; + this.producer = producer; + this.rating1 = rating1; + this.similar = similar; this.location = location; - this.mediaGuid = mediaGuid; - this.ultraBlurColors = ultraBlurColors; - this.metaDataRating = metaDataRating; - this.image = image; - this.titleSort = titleSort; - this.viewCount = viewCount; - this.lastViewedAt = lastViewedAt; - this.originalTitle = originalTitle; - this.viewOffset = viewOffset; - this.skipCount = skipCount; - this.index = index; - this.theme = theme; - this.leafCount = leafCount; - this.viewedLeafCount = viewedLeafCount; - this.childCount = childCount; - this.hasPremiumExtras = hasPremiumExtras; - this.hasPremiumPrimaryExtra = hasPremiumPrimaryExtra; - this.parentRatingKey = parentRatingKey; - this.parentGuid = parentGuid; - this.parentStudio = parentStudio; - this.parentKey = parentKey; - this.parentTitle = parentTitle; - this.parentIndex = parentIndex; - this.parentYear = parentYear; - this.parentThumb = parentThumb; - this.parentTheme = parentTheme; + this.guids = guids; + this.collection = collection; } public GetRecentlyAddedMetadata( - String ratingKey, - String key, + long addedAt, + String art, + double audienceRating, + int childCount, + int duration, String guid, - GetRecentlyAddedHubsType type, - String title, + int index, + String key, + long librarySectionID, + String librarySectionKey, + String librarySectionTitle, + LocalDate originallyAvailableAt, + String parentStudio, + String parentTheme, + String ratingKey, + float rating, + int seasonCount, + String slug, String summary, - long addedAt) { - this(ratingKey, key, guid, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), type, title, Optional.empty(), Optional.empty(), summary, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), addedAt, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + String tagline, + String theme, + String thumb, + String titleSort, + String title, + GetRecentlyAddedHubsType type) { + this(addedAt, art, Optional.empty(), audienceRating, Optional.empty(), childCount, Optional.empty(), Optional.empty(), Optional.empty(), duration, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), guid, index, key, Optional.empty(), Optional.empty(), Optional.empty(), librarySectionID, librarySectionKey, librarySectionTitle, Optional.empty(), originallyAvailableAt, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), parentStudio, parentTheme, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), ratingKey, rating, seasonCount, Optional.empty(), slug, Optional.empty(), Optional.empty(), summary, tagline, theme, thumb, titleSort, title, type, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + } + + @JsonIgnore + public long addedAt() { + return addedAt; } /** - * 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. + */ + @JsonIgnore + public String art() { + return art; + } + + /** + * The URL for the audience rating image. + */ + @JsonIgnore + public Optional audienceRatingImage() { + return audienceRatingImage; + } + + /** + * The audience rating for the media item. + */ + @JsonIgnore + public double audienceRating() { + return audienceRating; + } + + /** + * The source from which chapter data is derived. + */ + @JsonIgnore + public Optional chapterSource() { + return chapterSource; + } + + /** + * The number of child items associated with this media item. + */ + @JsonIgnore + public int childCount() { + return childCount; + } + + /** + * The content rating for the media item. + */ + @JsonIgnore + public Optional contentRating() { + return contentRating; + } + + /** + * 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). + */ + @JsonIgnore + public Optional createdAtAccuracy() { + return createdAtAccuracy; + } + + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + @JsonIgnore + public Optional createdAtTZOffset() { + return createdAtTZOffset; + } + + /** + * The duration of the media item in milliseconds. + */ + @JsonIgnore + public int duration() { + return duration; + } + + /** + * The art URL for the grandparent media item. + */ + @JsonIgnore + public Optional grandparentArt() { + return grandparentArt; + } + + /** + * The GUID of the grandparent media item. + */ + @JsonIgnore + public Optional grandparentGuid() { + return grandparentGuid; + } + + /** + * The key of the grandparent media item. + */ + @JsonIgnore + public Optional grandparentKey() { + return grandparentKey; + } + + /** + * The rating key of the grandparent media item. + */ + @JsonIgnore + public Optional grandparentRatingKey() { + return grandparentRatingKey; + } + + /** + * The slug for the grandparent media item. + */ + @JsonIgnore + public Optional grandparentSlug() { + return grandparentSlug; + } + + /** + * The theme URL for the grandparent media item. + */ + @JsonIgnore + public Optional grandparentTheme() { + return grandparentTheme; + } + + /** + * The thumbnail URL for the grandparent media item. + */ + @JsonIgnore + public Optional grandparentThumb() { + return grandparentThumb; + } + + /** + * The title of the grandparent media item. + */ + @JsonIgnore + public Optional grandparentTitle() { + return grandparentTitle; + } + + /** + * The globally unique identifier for the media item. + */ + @JsonIgnore + public String guid() { + return guid; + } + + /** + * The index position of the media item. + */ + @JsonIgnore + public int index() { + return index; + } + + /** + * The unique key for the media item. + */ + @JsonIgnore + public String key() { + return key; + } + + /** + * The Unix timestamp representing the last time the item was rated. + */ + @JsonIgnore + public Optional lastRatedAt() { + return lastRatedAt; + } + + /** + * Unix timestamp for when the media item was last viewed. + */ + @JsonIgnore + public Optional lastViewedAt() { + return lastViewedAt; + } + + /** + * The number of leaf items (end nodes) under this media item. + */ + @JsonIgnore + public Optional leafCount() { + return leafCount; + } + + /** + * The identifier for the library section. + */ + @JsonIgnore + public long librarySectionID() { + return librarySectionID; + } + + /** + * The key corresponding to the library section. + */ + @JsonIgnore + public String librarySectionKey() { + return librarySectionKey; + } + + /** + * The title of the library section. + */ + @JsonIgnore + public String librarySectionTitle() { + return librarySectionTitle; + } + + /** + * The original title of the media item (if different). + */ + @JsonIgnore + public Optional originalTitle() { + return originalTitle; + } + + /** + * The original release date of the media item. + */ + @JsonIgnore + public LocalDate originallyAvailableAt() { + return originallyAvailableAt; + } + + /** + * The GUID of the parent media item. + */ + @JsonIgnore + public Optional parentGuid() { + return parentGuid; + } + + /** + * The index position of the parent media item. + */ + @JsonIgnore + public Optional parentIndex() { + return parentIndex; + } + + /** + * The key of the parent media item. + */ + @JsonIgnore + public Optional parentKey() { + return parentKey; + } + + /** + * The rating key of the parent media item. + */ + @JsonIgnore + public Optional parentRatingKey() { + return parentRatingKey; + } + + /** + * The slug for the parent media item. + */ + @JsonIgnore + public Optional parentSlug() { + return parentSlug; + } + + /** + * The studio of the parent media item. + */ + @JsonIgnore + public String parentStudio() { + return parentStudio; + } + + /** + * The theme URL for the parent media item. + */ + @JsonIgnore + public String parentTheme() { + return parentTheme; + } + + /** + * The thumbnail URL for the parent media item. + */ + @JsonIgnore + public Optional parentThumb() { + return parentThumb; + } + + /** + * The title of the parent media item. + */ + @JsonIgnore + public Optional parentTitle() { + return parentTitle; + } + + /** + * The release year of the parent media item. + */ + @JsonIgnore + public Optional parentYear() { + return parentYear; + } + + /** + * The primary extra key associated with this media item. + */ + @JsonIgnore + public Optional primaryExtraKey() { + return primaryExtraKey; + } + + /** + * The URL for the rating image. + */ + @JsonIgnore + public Optional ratingImage() { + return ratingImage; + } + + /** + * 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. */ @JsonIgnore public String ratingKey() { return ratingKey; } + /** + * The critic rating for the media item. + */ @JsonIgnore - public String key() { - return key; + public float rating() { + return rating; } + /** + * The total number of seasons (for TV shows). + */ @JsonIgnore - public String guid() { - return guid; + public int seasonCount() { + return seasonCount; } + /** + * The number of times this media item has been skipped. + */ + @JsonIgnore + public Optional skipCount() { + return skipCount; + } + + /** + * A URL‐friendly version of the media title. + */ + @JsonIgnore + public String slug() { + return slug; + } + + /** + * The studio that produced the media item. + */ @JsonIgnore public Optional studio() { return studio; } + /** + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + */ @JsonIgnore - public Optional skipChildren() { - return skipChildren; - } - - @JsonIgnore - public Optional librarySectionID() { - return librarySectionID; - } - - @JsonIgnore - public Optional librarySectionTitle() { - return librarySectionTitle; - } - - @JsonIgnore - public Optional librarySectionKey() { - return librarySectionKey; + public Optional subtype() { + return subtype; } /** - * The type of media content - * + * A synopsis of the media item. */ @JsonIgnore - public GetRecentlyAddedHubsType type() { - return type; + public String summary() { + return summary; } + /** + * A brief tagline for the media item. + */ + @JsonIgnore + public String tagline() { + return tagline; + } + + /** + * The theme URL for the media item. + */ + @JsonIgnore + public String theme() { + return theme; + } + + /** + * The thumbnail image URL for the media item. + */ + @JsonIgnore + public String thumb() { + return thumb; + } + + /** + * The sort title used for ordering media items. + */ + @JsonIgnore + public String titleSort() { + return titleSort; + } + + /** + * The title of the media item. + */ @JsonIgnore public String title() { return title; } @JsonIgnore - public Optional slug() { - return slug; - } - - @JsonIgnore - public Optional contentRating() { - return contentRating; - } - - @JsonIgnore - public String summary() { - return summary; - } - - @JsonIgnore - public Optional rating() { - return rating; - } - - @JsonIgnore - public Optional audienceRating() { - return audienceRating; - } - - @JsonIgnore - public Optional year() { - return year; - } - - @JsonIgnore - public Optional seasonCount() { - return seasonCount; - } - - @JsonIgnore - public Optional tagline() { - return tagline; - } - - /** - * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - */ - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional flattenSeasons() { - return (Optional) flattenSeasons; - } - - /** - * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - */ - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional episodeSort() { - return (Optional) episodeSort; - } - - /** - * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional enableCreditsMarkerGeneration() { - return (Optional) enableCreditsMarkerGeneration; - } - - /** - * 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)). - * - */ - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional showOrdering() { - return (Optional) showOrdering; - } - - @JsonIgnore - public Optional thumb() { - return thumb; - } - - @JsonIgnore - public Optional art() { - return art; - } - - @JsonIgnore - public Optional banner() { - return banner; - } - - @JsonIgnore - public Optional duration() { - return duration; - } - - @JsonIgnore - public Optional originallyAvailableAt() { - return originallyAvailableAt; - } - - /** - * Unix epoch datetime in seconds - */ - @JsonIgnore - public long addedAt() { - return addedAt; + public GetRecentlyAddedHubsType type() { + return type; } /** @@ -791,75 +1180,58 @@ public class GetRecentlyAddedMetadata { return updatedAt; } + /** + * The rating provided by a user for the item. This value is expressed as a decimal number. + */ @JsonIgnore - public Optional audienceRatingImage() { - return audienceRatingImage; - } - - @JsonIgnore - public Optional chapterSource() { - return chapterSource; - } - - @JsonIgnore - public Optional primaryExtraKey() { - return primaryExtraKey; - } - - @JsonIgnore - public Optional ratingImage() { - return ratingImage; - } - - @JsonIgnore - public Optional grandparentRatingKey() { - return grandparentRatingKey; - } - - @JsonIgnore - public Optional grandparentGuid() { - return grandparentGuid; - } - - @JsonIgnore - public Optional grandparentKey() { - return grandparentKey; - } - - @JsonIgnore - public Optional grandparentTitle() { - return grandparentTitle; - } - - @JsonIgnore - public Optional grandparentThumb() { - return grandparentThumb; - } - - @JsonIgnore - public Optional parentSlug() { - return parentSlug; - } - - @JsonIgnore - public Optional grandparentSlug() { - return grandparentSlug; - } - - @JsonIgnore - public Optional grandparentArt() { - return grandparentArt; - } - - @JsonIgnore - public Optional grandparentTheme() { - return grandparentTheme; + public Optional userRating() { + return userRating; } /** - * The Media object is only included when type query is `4` or higher. - * + * The number of times this media item has been viewed. */ + @JsonIgnore + public Optional viewCount() { + return viewCount; + } + + /** + * The current playback offset (in milliseconds). + */ + @JsonIgnore + public Optional viewOffset() { + return viewOffset; + } + + /** + * The number of leaf items that have been viewed. + */ + @JsonIgnore + public Optional viewedLeafCount() { + return viewedLeafCount; + } + + /** + * The release year of the media item. + */ + @JsonIgnore + public Optional year() { + return year; + } + + @SuppressWarnings("unchecked") + @JsonIgnore + public Optional> image() { + return (Optional>) image; + } + + @SuppressWarnings("unchecked") + @JsonIgnore + public Optional ultraBlurColors() { + return (Optional) ultraBlurColors; + } + @SuppressWarnings("unchecked") @JsonIgnore public Optional> media() { @@ -892,14 +1264,26 @@ public class GetRecentlyAddedMetadata { @SuppressWarnings("unchecked") @JsonIgnore - public Optional> collection() { - return (Optional>) collection; + public Optional> role() { + return (Optional>) role; } @SuppressWarnings("unchecked") @JsonIgnore - public Optional> role() { - return (Optional>) role; + public Optional> producer() { + return (Optional>) producer; + } + + @SuppressWarnings("unchecked") + @JsonIgnore + public Optional> rating1() { + return (Optional>) rating1; + } + + @SuppressWarnings("unchecked") + @JsonIgnore + public Optional> similar() { + return (Optional>) similar; } @SuppressWarnings("unchecked") @@ -908,156 +1292,633 @@ public class GetRecentlyAddedMetadata { return (Optional>) location; } - /** - * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - * - */ @SuppressWarnings("unchecked") @JsonIgnore - public Optional> mediaGuid() { - return (Optional>) mediaGuid; + public Optional> guids() { + return (Optional>) guids; } @SuppressWarnings("unchecked") @JsonIgnore - public Optional ultraBlurColors() { - return (Optional) ultraBlurColors; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> metaDataRating() { - return (Optional>) metaDataRating; - } - - @SuppressWarnings("unchecked") - @JsonIgnore - public Optional> image() { - return (Optional>) image; - } - - @JsonIgnore - public Optional titleSort() { - return titleSort; - } - - @JsonIgnore - public Optional viewCount() { - return viewCount; - } - - @JsonIgnore - public Optional lastViewedAt() { - return lastViewedAt; - } - - @JsonIgnore - public Optional originalTitle() { - return originalTitle; - } - - @JsonIgnore - public Optional viewOffset() { - return viewOffset; - } - - @JsonIgnore - public Optional skipCount() { - return skipCount; - } - - @JsonIgnore - public Optional index() { - return index; - } - - @JsonIgnore - public Optional theme() { - return theme; - } - - @JsonIgnore - public Optional leafCount() { - return leafCount; - } - - @JsonIgnore - public Optional viewedLeafCount() { - return viewedLeafCount; - } - - @JsonIgnore - public Optional childCount() { - return childCount; - } - - @JsonIgnore - public Optional hasPremiumExtras() { - return hasPremiumExtras; - } - - @JsonIgnore - public Optional hasPremiumPrimaryExtra() { - return hasPremiumPrimaryExtra; - } - - /** - * The rating key of the parent item. - * - */ - @JsonIgnore - public Optional parentRatingKey() { - return parentRatingKey; - } - - @JsonIgnore - public Optional parentGuid() { - return parentGuid; - } - - @JsonIgnore - public Optional parentStudio() { - return parentStudio; - } - - @JsonIgnore - public Optional parentKey() { - return parentKey; - } - - @JsonIgnore - public Optional parentTitle() { - return parentTitle; - } - - @JsonIgnore - public Optional parentIndex() { - return parentIndex; - } - - @JsonIgnore - public Optional parentYear() { - return parentYear; - } - - @JsonIgnore - public Optional parentThumb() { - return parentThumb; - } - - @JsonIgnore - public Optional parentTheme() { - return parentTheme; + public Optional> collection() { + return (Optional>) collection; } public final static Builder builder() { return new Builder(); } + public GetRecentlyAddedMetadata withAddedAt(long addedAt) { + Utils.checkNotNull(addedAt, "addedAt"); + this.addedAt = addedAt; + return this; + } + /** - * 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. + */ + public GetRecentlyAddedMetadata withArt(String art) { + Utils.checkNotNull(art, "art"); + this.art = art; + return this; + } + + /** + * The URL for the audience rating image. + */ + public GetRecentlyAddedMetadata withAudienceRatingImage(String audienceRatingImage) { + Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); + this.audienceRatingImage = Optional.ofNullable(audienceRatingImage); + return this; + } + + /** + * The URL for the audience rating image. + */ + public GetRecentlyAddedMetadata withAudienceRatingImage(Optional audienceRatingImage) { + Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); + this.audienceRatingImage = audienceRatingImage; + return this; + } + + /** + * The audience rating for the media item. + */ + public GetRecentlyAddedMetadata withAudienceRating(double audienceRating) { + Utils.checkNotNull(audienceRating, "audienceRating"); + this.audienceRating = audienceRating; + return this; + } + + /** + * The source from which chapter data is derived. + */ + public GetRecentlyAddedMetadata withChapterSource(String chapterSource) { + Utils.checkNotNull(chapterSource, "chapterSource"); + this.chapterSource = Optional.ofNullable(chapterSource); + return this; + } + + /** + * The source from which chapter data is derived. + */ + public GetRecentlyAddedMetadata withChapterSource(Optional chapterSource) { + Utils.checkNotNull(chapterSource, "chapterSource"); + this.chapterSource = chapterSource; + return this; + } + + /** + * The number of child items associated with this media item. + */ + public GetRecentlyAddedMetadata withChildCount(int childCount) { + Utils.checkNotNull(childCount, "childCount"); + this.childCount = childCount; + return this; + } + + /** + * The content rating for the media item. + */ + public GetRecentlyAddedMetadata withContentRating(String contentRating) { + Utils.checkNotNull(contentRating, "contentRating"); + this.contentRating = Optional.ofNullable(contentRating); + return this; + } + + /** + * The content rating for the media item. + */ + public GetRecentlyAddedMetadata withContentRating(Optional contentRating) { + Utils.checkNotNull(contentRating, "contentRating"); + this.contentRating = contentRating; + return this; + } + + /** + * 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). + */ + public GetRecentlyAddedMetadata withCreatedAtAccuracy(String createdAtAccuracy) { + Utils.checkNotNull(createdAtAccuracy, "createdAtAccuracy"); + this.createdAtAccuracy = Optional.ofNullable(createdAtAccuracy); + return this; + } + + /** + * 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). + */ + public GetRecentlyAddedMetadata withCreatedAtAccuracy(Optional createdAtAccuracy) { + Utils.checkNotNull(createdAtAccuracy, "createdAtAccuracy"); + this.createdAtAccuracy = createdAtAccuracy; + return this; + } + + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + public GetRecentlyAddedMetadata withCreatedAtTZOffset(String createdAtTZOffset) { + Utils.checkNotNull(createdAtTZOffset, "createdAtTZOffset"); + this.createdAtTZOffset = Optional.ofNullable(createdAtTZOffset); + return this; + } + + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + public GetRecentlyAddedMetadata withCreatedAtTZOffset(Optional createdAtTZOffset) { + Utils.checkNotNull(createdAtTZOffset, "createdAtTZOffset"); + this.createdAtTZOffset = createdAtTZOffset; + return this; + } + + /** + * The duration of the media item in milliseconds. + */ + public GetRecentlyAddedMetadata withDuration(int duration) { + Utils.checkNotNull(duration, "duration"); + this.duration = duration; + return this; + } + + /** + * The art URL for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentArt(String grandparentArt) { + Utils.checkNotNull(grandparentArt, "grandparentArt"); + this.grandparentArt = Optional.ofNullable(grandparentArt); + return this; + } + + /** + * The art URL for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentArt(Optional grandparentArt) { + Utils.checkNotNull(grandparentArt, "grandparentArt"); + this.grandparentArt = grandparentArt; + return this; + } + + /** + * The GUID of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentGuid(String grandparentGuid) { + Utils.checkNotNull(grandparentGuid, "grandparentGuid"); + this.grandparentGuid = Optional.ofNullable(grandparentGuid); + return this; + } + + /** + * The GUID of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentGuid(Optional grandparentGuid) { + Utils.checkNotNull(grandparentGuid, "grandparentGuid"); + this.grandparentGuid = grandparentGuid; + return this; + } + + /** + * The key of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentKey(String grandparentKey) { + Utils.checkNotNull(grandparentKey, "grandparentKey"); + this.grandparentKey = Optional.ofNullable(grandparentKey); + return this; + } + + /** + * The key of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentKey(Optional grandparentKey) { + Utils.checkNotNull(grandparentKey, "grandparentKey"); + this.grandparentKey = grandparentKey; + return this; + } + + /** + * The rating key of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentRatingKey(String grandparentRatingKey) { + Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); + this.grandparentRatingKey = Optional.ofNullable(grandparentRatingKey); + return this; + } + + /** + * The rating key of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentRatingKey(Optional grandparentRatingKey) { + Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); + this.grandparentRatingKey = grandparentRatingKey; + return this; + } + + /** + * The slug for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentSlug(String grandparentSlug) { + Utils.checkNotNull(grandparentSlug, "grandparentSlug"); + this.grandparentSlug = Optional.ofNullable(grandparentSlug); + return this; + } + + /** + * The slug for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentSlug(Optional grandparentSlug) { + Utils.checkNotNull(grandparentSlug, "grandparentSlug"); + this.grandparentSlug = grandparentSlug; + return this; + } + + /** + * The theme URL for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentTheme(String grandparentTheme) { + Utils.checkNotNull(grandparentTheme, "grandparentTheme"); + this.grandparentTheme = Optional.ofNullable(grandparentTheme); + return this; + } + + /** + * The theme URL for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentTheme(Optional grandparentTheme) { + Utils.checkNotNull(grandparentTheme, "grandparentTheme"); + this.grandparentTheme = grandparentTheme; + return this; + } + + /** + * The thumbnail URL for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentThumb(String grandparentThumb) { + Utils.checkNotNull(grandparentThumb, "grandparentThumb"); + this.grandparentThumb = Optional.ofNullable(grandparentThumb); + return this; + } + + /** + * The thumbnail URL for the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentThumb(Optional grandparentThumb) { + Utils.checkNotNull(grandparentThumb, "grandparentThumb"); + this.grandparentThumb = grandparentThumb; + return this; + } + + /** + * The title of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentTitle(String grandparentTitle) { + Utils.checkNotNull(grandparentTitle, "grandparentTitle"); + this.grandparentTitle = Optional.ofNullable(grandparentTitle); + return this; + } + + /** + * The title of the grandparent media item. + */ + public GetRecentlyAddedMetadata withGrandparentTitle(Optional grandparentTitle) { + Utils.checkNotNull(grandparentTitle, "grandparentTitle"); + this.grandparentTitle = grandparentTitle; + return this; + } + + /** + * The globally unique identifier for the media item. + */ + public GetRecentlyAddedMetadata withGuid(String guid) { + Utils.checkNotNull(guid, "guid"); + this.guid = guid; + return this; + } + + /** + * The index position of the media item. + */ + public GetRecentlyAddedMetadata withIndex(int index) { + Utils.checkNotNull(index, "index"); + this.index = index; + return this; + } + + /** + * The unique key for the media item. + */ + public GetRecentlyAddedMetadata withKey(String key) { + Utils.checkNotNull(key, "key"); + this.key = key; + return this; + } + + /** + * The Unix timestamp representing the last time the item was rated. + */ + public GetRecentlyAddedMetadata withLastRatedAt(long lastRatedAt) { + Utils.checkNotNull(lastRatedAt, "lastRatedAt"); + this.lastRatedAt = Optional.ofNullable(lastRatedAt); + return this; + } + + /** + * The Unix timestamp representing the last time the item was rated. + */ + public GetRecentlyAddedMetadata withLastRatedAt(Optional lastRatedAt) { + Utils.checkNotNull(lastRatedAt, "lastRatedAt"); + this.lastRatedAt = lastRatedAt; + return this; + } + + /** + * Unix timestamp for when the media item was last viewed. + */ + public GetRecentlyAddedMetadata withLastViewedAt(int lastViewedAt) { + Utils.checkNotNull(lastViewedAt, "lastViewedAt"); + this.lastViewedAt = Optional.ofNullable(lastViewedAt); + return this; + } + + /** + * Unix timestamp for when the media item was last viewed. + */ + public GetRecentlyAddedMetadata withLastViewedAt(Optional lastViewedAt) { + Utils.checkNotNull(lastViewedAt, "lastViewedAt"); + this.lastViewedAt = lastViewedAt; + return this; + } + + /** + * The number of leaf items (end nodes) under this media item. + */ + public GetRecentlyAddedMetadata withLeafCount(int leafCount) { + Utils.checkNotNull(leafCount, "leafCount"); + this.leafCount = Optional.ofNullable(leafCount); + return this; + } + + /** + * The number of leaf items (end nodes) under this media item. + */ + public GetRecentlyAddedMetadata withLeafCount(Optional leafCount) { + Utils.checkNotNull(leafCount, "leafCount"); + this.leafCount = leafCount; + return this; + } + + /** + * The identifier for the library section. + */ + public GetRecentlyAddedMetadata withLibrarySectionID(long librarySectionID) { + Utils.checkNotNull(librarySectionID, "librarySectionID"); + this.librarySectionID = librarySectionID; + return this; + } + + /** + * The key corresponding to the library section. + */ + public GetRecentlyAddedMetadata withLibrarySectionKey(String librarySectionKey) { + Utils.checkNotNull(librarySectionKey, "librarySectionKey"); + this.librarySectionKey = librarySectionKey; + return this; + } + + /** + * The title of the library section. + */ + public GetRecentlyAddedMetadata withLibrarySectionTitle(String librarySectionTitle) { + Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); + this.librarySectionTitle = librarySectionTitle; + return this; + } + + /** + * The original title of the media item (if different). + */ + public GetRecentlyAddedMetadata withOriginalTitle(String originalTitle) { + Utils.checkNotNull(originalTitle, "originalTitle"); + this.originalTitle = Optional.ofNullable(originalTitle); + return this; + } + + /** + * The original title of the media item (if different). + */ + public GetRecentlyAddedMetadata withOriginalTitle(Optional originalTitle) { + Utils.checkNotNull(originalTitle, "originalTitle"); + this.originalTitle = originalTitle; + return this; + } + + /** + * The original release date of the media item. + */ + public GetRecentlyAddedMetadata withOriginallyAvailableAt(LocalDate originallyAvailableAt) { + Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); + this.originallyAvailableAt = originallyAvailableAt; + return this; + } + + /** + * The GUID of the parent media item. + */ + public GetRecentlyAddedMetadata withParentGuid(String parentGuid) { + Utils.checkNotNull(parentGuid, "parentGuid"); + this.parentGuid = Optional.ofNullable(parentGuid); + return this; + } + + /** + * The GUID of the parent media item. + */ + public GetRecentlyAddedMetadata withParentGuid(Optional parentGuid) { + Utils.checkNotNull(parentGuid, "parentGuid"); + this.parentGuid = parentGuid; + return this; + } + + /** + * The index position of the parent media item. + */ + public GetRecentlyAddedMetadata withParentIndex(int parentIndex) { + Utils.checkNotNull(parentIndex, "parentIndex"); + this.parentIndex = Optional.ofNullable(parentIndex); + return this; + } + + /** + * The index position of the parent media item. + */ + public GetRecentlyAddedMetadata withParentIndex(Optional parentIndex) { + Utils.checkNotNull(parentIndex, "parentIndex"); + this.parentIndex = parentIndex; + return this; + } + + /** + * The key of the parent media item. + */ + public GetRecentlyAddedMetadata withParentKey(String parentKey) { + Utils.checkNotNull(parentKey, "parentKey"); + this.parentKey = Optional.ofNullable(parentKey); + return this; + } + + /** + * The key of the parent media item. + */ + public GetRecentlyAddedMetadata withParentKey(Optional parentKey) { + Utils.checkNotNull(parentKey, "parentKey"); + this.parentKey = parentKey; + return this; + } + + /** + * The rating key of the parent media item. + */ + public GetRecentlyAddedMetadata withParentRatingKey(String parentRatingKey) { + Utils.checkNotNull(parentRatingKey, "parentRatingKey"); + this.parentRatingKey = Optional.ofNullable(parentRatingKey); + return this; + } + + /** + * The rating key of the parent media item. + */ + public GetRecentlyAddedMetadata withParentRatingKey(Optional parentRatingKey) { + Utils.checkNotNull(parentRatingKey, "parentRatingKey"); + this.parentRatingKey = parentRatingKey; + return this; + } + + /** + * The slug for the parent media item. + */ + public GetRecentlyAddedMetadata withParentSlug(String parentSlug) { + Utils.checkNotNull(parentSlug, "parentSlug"); + this.parentSlug = Optional.ofNullable(parentSlug); + return this; + } + + /** + * The slug for the parent media item. + */ + public GetRecentlyAddedMetadata withParentSlug(Optional parentSlug) { + Utils.checkNotNull(parentSlug, "parentSlug"); + this.parentSlug = parentSlug; + return this; + } + + /** + * The studio of the parent media item. + */ + public GetRecentlyAddedMetadata withParentStudio(String parentStudio) { + Utils.checkNotNull(parentStudio, "parentStudio"); + this.parentStudio = parentStudio; + return this; + } + + /** + * The theme URL for the parent media item. + */ + public GetRecentlyAddedMetadata withParentTheme(String parentTheme) { + Utils.checkNotNull(parentTheme, "parentTheme"); + this.parentTheme = parentTheme; + return this; + } + + /** + * The thumbnail URL for the parent media item. + */ + public GetRecentlyAddedMetadata withParentThumb(String parentThumb) { + Utils.checkNotNull(parentThumb, "parentThumb"); + this.parentThumb = Optional.ofNullable(parentThumb); + return this; + } + + /** + * The thumbnail URL for the parent media item. + */ + public GetRecentlyAddedMetadata withParentThumb(Optional parentThumb) { + Utils.checkNotNull(parentThumb, "parentThumb"); + this.parentThumb = parentThumb; + return this; + } + + /** + * The title of the parent media item. + */ + public GetRecentlyAddedMetadata withParentTitle(String parentTitle) { + Utils.checkNotNull(parentTitle, "parentTitle"); + this.parentTitle = Optional.ofNullable(parentTitle); + return this; + } + + /** + * The title of the parent media item. + */ + public GetRecentlyAddedMetadata withParentTitle(Optional parentTitle) { + Utils.checkNotNull(parentTitle, "parentTitle"); + this.parentTitle = parentTitle; + return this; + } + + /** + * The release year of the parent media item. + */ + public GetRecentlyAddedMetadata withParentYear(int parentYear) { + Utils.checkNotNull(parentYear, "parentYear"); + this.parentYear = Optional.ofNullable(parentYear); + return this; + } + + /** + * The release year of the parent media item. + */ + public GetRecentlyAddedMetadata withParentYear(Optional parentYear) { + Utils.checkNotNull(parentYear, "parentYear"); + this.parentYear = parentYear; + return this; + } + + /** + * The primary extra key associated with this media item. + */ + public GetRecentlyAddedMetadata withPrimaryExtraKey(String primaryExtraKey) { + Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); + this.primaryExtraKey = Optional.ofNullable(primaryExtraKey); + return this; + } + + /** + * The primary extra key associated with this media item. + */ + public GetRecentlyAddedMetadata withPrimaryExtraKey(Optional primaryExtraKey) { + Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); + this.primaryExtraKey = primaryExtraKey; + return this; + } + + /** + * The URL for the rating image. + */ + public GetRecentlyAddedMetadata withRatingImage(String ratingImage) { + Utils.checkNotNull(ratingImage, "ratingImage"); + this.ratingImage = Optional.ofNullable(ratingImage); + return this; + } + + /** + * The URL for the rating image. + */ + public GetRecentlyAddedMetadata withRatingImage(Optional ratingImage) { + Utils.checkNotNull(ratingImage, "ratingImage"); + this.ratingImage = ratingImage; + return this; + } + + /** + * 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. */ public GetRecentlyAddedMetadata withRatingKey(String ratingKey) { Utils.checkNotNull(ratingKey, "ratingKey"); @@ -1065,334 +1926,144 @@ public class GetRecentlyAddedMetadata { return this; } - public GetRecentlyAddedMetadata withKey(String key) { - Utils.checkNotNull(key, "key"); - this.key = key; + /** + * The critic rating for the media item. + */ + public GetRecentlyAddedMetadata withRating(float rating) { + Utils.checkNotNull(rating, "rating"); + this.rating = rating; return this; } - public GetRecentlyAddedMetadata withGuid(String guid) { - Utils.checkNotNull(guid, "guid"); - this.guid = guid; + /** + * The total number of seasons (for TV shows). + */ + public GetRecentlyAddedMetadata withSeasonCount(int seasonCount) { + Utils.checkNotNull(seasonCount, "seasonCount"); + this.seasonCount = seasonCount; return this; } + /** + * The number of times this media item has been skipped. + */ + public GetRecentlyAddedMetadata withSkipCount(int skipCount) { + Utils.checkNotNull(skipCount, "skipCount"); + this.skipCount = Optional.ofNullable(skipCount); + return this; + } + + /** + * The number of times this media item has been skipped. + */ + public GetRecentlyAddedMetadata withSkipCount(Optional skipCount) { + Utils.checkNotNull(skipCount, "skipCount"); + this.skipCount = skipCount; + return this; + } + + /** + * A URL‐friendly version of the media title. + */ + public GetRecentlyAddedMetadata withSlug(String slug) { + Utils.checkNotNull(slug, "slug"); + this.slug = slug; + return this; + } + + /** + * The studio that produced the media item. + */ public GetRecentlyAddedMetadata withStudio(String studio) { Utils.checkNotNull(studio, "studio"); this.studio = Optional.ofNullable(studio); return this; } + /** + * The studio that produced the media item. + */ public GetRecentlyAddedMetadata withStudio(Optional studio) { Utils.checkNotNull(studio, "studio"); this.studio = studio; return this; } - public GetRecentlyAddedMetadata withSkipChildren(boolean skipChildren) { - Utils.checkNotNull(skipChildren, "skipChildren"); - this.skipChildren = Optional.ofNullable(skipChildren); - return this; - } - - public GetRecentlyAddedMetadata withSkipChildren(Optional skipChildren) { - Utils.checkNotNull(skipChildren, "skipChildren"); - this.skipChildren = skipChildren; - return this; - } - - public GetRecentlyAddedMetadata withLibrarySectionID(long librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = Optional.ofNullable(librarySectionID); - return this; - } - - public GetRecentlyAddedMetadata withLibrarySectionID(Optional librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = librarySectionID; - return this; - } - - public GetRecentlyAddedMetadata withLibrarySectionTitle(String librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = Optional.ofNullable(librarySectionTitle); - return this; - } - - public GetRecentlyAddedMetadata withLibrarySectionTitle(Optional librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = librarySectionTitle; - return this; - } - - public GetRecentlyAddedMetadata withLibrarySectionKey(String librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = Optional.ofNullable(librarySectionKey); - return this; - } - - public GetRecentlyAddedMetadata withLibrarySectionKey(Optional librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = librarySectionKey; + /** + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + */ + public GetRecentlyAddedMetadata withSubtype(String subtype) { + Utils.checkNotNull(subtype, "subtype"); + this.subtype = Optional.ofNullable(subtype); return this; } /** - * The type of media content - * + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. */ - public GetRecentlyAddedMetadata withType(GetRecentlyAddedHubsType type) { - Utils.checkNotNull(type, "type"); - this.type = type; - return this; - } - - public GetRecentlyAddedMetadata withTitle(String title) { - Utils.checkNotNull(title, "title"); - this.title = title; - return this; - } - - public GetRecentlyAddedMetadata withSlug(String slug) { - Utils.checkNotNull(slug, "slug"); - this.slug = Optional.ofNullable(slug); - return this; - } - - public GetRecentlyAddedMetadata withSlug(Optional slug) { - Utils.checkNotNull(slug, "slug"); - this.slug = slug; - return this; - } - - public GetRecentlyAddedMetadata withContentRating(String contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = Optional.ofNullable(contentRating); - return this; - } - - public GetRecentlyAddedMetadata withContentRating(Optional contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = contentRating; + public GetRecentlyAddedMetadata withSubtype(Optional subtype) { + Utils.checkNotNull(subtype, "subtype"); + this.subtype = subtype; return this; } + /** + * A synopsis of the media item. + */ public GetRecentlyAddedMetadata withSummary(String summary) { Utils.checkNotNull(summary, "summary"); this.summary = summary; return this; } - public GetRecentlyAddedMetadata withRating(double rating) { - Utils.checkNotNull(rating, "rating"); - this.rating = Optional.ofNullable(rating); - return this; - } - - public GetRecentlyAddedMetadata withRating(Optional rating) { - Utils.checkNotNull(rating, "rating"); - this.rating = rating; - return this; - } - - public GetRecentlyAddedMetadata withAudienceRating(double audienceRating) { - Utils.checkNotNull(audienceRating, "audienceRating"); - this.audienceRating = Optional.ofNullable(audienceRating); - return this; - } - - public GetRecentlyAddedMetadata withAudienceRating(Optional audienceRating) { - Utils.checkNotNull(audienceRating, "audienceRating"); - this.audienceRating = audienceRating; - return this; - } - - public GetRecentlyAddedMetadata withYear(int year) { - Utils.checkNotNull(year, "year"); - this.year = Optional.ofNullable(year); - return this; - } - - public GetRecentlyAddedMetadata withYear(Optional year) { - Utils.checkNotNull(year, "year"); - this.year = year; - return this; - } - - public GetRecentlyAddedMetadata withSeasonCount(int seasonCount) { - Utils.checkNotNull(seasonCount, "seasonCount"); - this.seasonCount = Optional.ofNullable(seasonCount); - return this; - } - - public GetRecentlyAddedMetadata withSeasonCount(Optional seasonCount) { - Utils.checkNotNull(seasonCount, "seasonCount"); - this.seasonCount = seasonCount; - return this; - } - + /** + * A brief tagline for the media item. + */ public GetRecentlyAddedMetadata withTagline(String tagline) { - Utils.checkNotNull(tagline, "tagline"); - this.tagline = Optional.ofNullable(tagline); - return this; - } - - public GetRecentlyAddedMetadata withTagline(Optional tagline) { Utils.checkNotNull(tagline, "tagline"); this.tagline = tagline; return this; } /** - * 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. */ - public GetRecentlyAddedMetadata withFlattenSeasons(FlattenSeasons flattenSeasons) { - Utils.checkNotNull(flattenSeasons, "flattenSeasons"); - this.flattenSeasons = Optional.ofNullable(flattenSeasons); + public GetRecentlyAddedMetadata withTheme(String theme) { + Utils.checkNotNull(theme, "theme"); + this.theme = theme; return this; } /** - * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). + * The thumbnail image URL for the media item. */ - public GetRecentlyAddedMetadata withFlattenSeasons(Optional flattenSeasons) { - Utils.checkNotNull(flattenSeasons, "flattenSeasons"); - this.flattenSeasons = flattenSeasons; - return this; - } - - /** - * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - */ - public GetRecentlyAddedMetadata withEpisodeSort(EpisodeSort episodeSort) { - Utils.checkNotNull(episodeSort, "episodeSort"); - this.episodeSort = Optional.ofNullable(episodeSort); - return this; - } - - /** - * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - */ - public GetRecentlyAddedMetadata withEpisodeSort(Optional episodeSort) { - Utils.checkNotNull(episodeSort, "episodeSort"); - this.episodeSort = episodeSort; - return this; - } - - /** - * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ - public GetRecentlyAddedMetadata withEnableCreditsMarkerGeneration(EnableCreditsMarkerGeneration enableCreditsMarkerGeneration) { - Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); - this.enableCreditsMarkerGeneration = Optional.ofNullable(enableCreditsMarkerGeneration); - return this; - } - - /** - * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ - public GetRecentlyAddedMetadata withEnableCreditsMarkerGeneration(Optional enableCreditsMarkerGeneration) { - Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); - this.enableCreditsMarkerGeneration = enableCreditsMarkerGeneration; - return this; - } - - /** - * 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 GetRecentlyAddedMetadata withShowOrdering(ShowOrdering showOrdering) { - Utils.checkNotNull(showOrdering, "showOrdering"); - this.showOrdering = Optional.ofNullable(showOrdering); - return this; - } - - /** - * 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 GetRecentlyAddedMetadata withShowOrdering(Optional showOrdering) { - Utils.checkNotNull(showOrdering, "showOrdering"); - this.showOrdering = showOrdering; - return this; - } - public GetRecentlyAddedMetadata withThumb(String thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = Optional.ofNullable(thumb); - return this; - } - - public GetRecentlyAddedMetadata withThumb(Optional thumb) { Utils.checkNotNull(thumb, "thumb"); this.thumb = thumb; return this; } - public GetRecentlyAddedMetadata withArt(String art) { - Utils.checkNotNull(art, "art"); - this.art = Optional.ofNullable(art); - return this; - } - - public GetRecentlyAddedMetadata withArt(Optional art) { - Utils.checkNotNull(art, "art"); - this.art = art; - return this; - } - - public GetRecentlyAddedMetadata withBanner(String banner) { - Utils.checkNotNull(banner, "banner"); - this.banner = Optional.ofNullable(banner); - return this; - } - - public GetRecentlyAddedMetadata withBanner(Optional banner) { - Utils.checkNotNull(banner, "banner"); - this.banner = banner; - return this; - } - - public GetRecentlyAddedMetadata withDuration(int duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public GetRecentlyAddedMetadata withDuration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public GetRecentlyAddedMetadata withOriginallyAvailableAt(LocalDate originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = Optional.ofNullable(originallyAvailableAt); - return this; - } - - public GetRecentlyAddedMetadata withOriginallyAvailableAt(Optional originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = originallyAvailableAt; + /** + * The sort title used for ordering media items. + */ + public GetRecentlyAddedMetadata withTitleSort(String titleSort) { + Utils.checkNotNull(titleSort, "titleSort"); + this.titleSort = titleSort; return this; } /** - * Unix epoch datetime in seconds + * The title of the media item. */ - public GetRecentlyAddedMetadata withAddedAt(long addedAt) { - Utils.checkNotNull(addedAt, "addedAt"); - this.addedAt = addedAt; + public GetRecentlyAddedMetadata withTitle(String title) { + Utils.checkNotNull(title, "title"); + this.title = title; + return this; + } + + public GetRecentlyAddedMetadata withType(GetRecentlyAddedHubsType type) { + Utils.checkNotNull(type, "type"); + this.type = type; return this; } @@ -1414,176 +2085,126 @@ public class GetRecentlyAddedMetadata { return this; } - public GetRecentlyAddedMetadata withAudienceRatingImage(String audienceRatingImage) { - Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); - this.audienceRatingImage = Optional.ofNullable(audienceRatingImage); - return this; - } - - public GetRecentlyAddedMetadata withAudienceRatingImage(Optional audienceRatingImage) { - Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); - this.audienceRatingImage = audienceRatingImage; - return this; - } - - public GetRecentlyAddedMetadata withChapterSource(String chapterSource) { - Utils.checkNotNull(chapterSource, "chapterSource"); - this.chapterSource = Optional.ofNullable(chapterSource); - return this; - } - - public GetRecentlyAddedMetadata withChapterSource(Optional chapterSource) { - Utils.checkNotNull(chapterSource, "chapterSource"); - this.chapterSource = chapterSource; - return this; - } - - public GetRecentlyAddedMetadata withPrimaryExtraKey(String primaryExtraKey) { - Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); - this.primaryExtraKey = Optional.ofNullable(primaryExtraKey); - return this; - } - - public GetRecentlyAddedMetadata withPrimaryExtraKey(Optional primaryExtraKey) { - Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); - this.primaryExtraKey = primaryExtraKey; - return this; - } - - public GetRecentlyAddedMetadata withRatingImage(String ratingImage) { - Utils.checkNotNull(ratingImage, "ratingImage"); - this.ratingImage = Optional.ofNullable(ratingImage); - return this; - } - - public GetRecentlyAddedMetadata withRatingImage(Optional ratingImage) { - Utils.checkNotNull(ratingImage, "ratingImage"); - this.ratingImage = ratingImage; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentRatingKey(String grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = Optional.ofNullable(grandparentRatingKey); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentRatingKey(Optional grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = grandparentRatingKey; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentGuid(String grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = Optional.ofNullable(grandparentGuid); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentGuid(Optional grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = grandparentGuid; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentKey(String grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = Optional.ofNullable(grandparentKey); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentKey(Optional grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = grandparentKey; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentTitle(String grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = Optional.ofNullable(grandparentTitle); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentTitle(Optional grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = grandparentTitle; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentThumb(String grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = Optional.ofNullable(grandparentThumb); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentThumb(Optional grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = grandparentThumb; - return this; - } - - public GetRecentlyAddedMetadata withParentSlug(String parentSlug) { - Utils.checkNotNull(parentSlug, "parentSlug"); - this.parentSlug = Optional.ofNullable(parentSlug); - return this; - } - - public GetRecentlyAddedMetadata withParentSlug(Optional parentSlug) { - Utils.checkNotNull(parentSlug, "parentSlug"); - this.parentSlug = parentSlug; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentSlug(String grandparentSlug) { - Utils.checkNotNull(grandparentSlug, "grandparentSlug"); - this.grandparentSlug = Optional.ofNullable(grandparentSlug); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentSlug(Optional grandparentSlug) { - Utils.checkNotNull(grandparentSlug, "grandparentSlug"); - this.grandparentSlug = grandparentSlug; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentArt(String grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = Optional.ofNullable(grandparentArt); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentArt(Optional grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = grandparentArt; - return this; - } - - public GetRecentlyAddedMetadata withGrandparentTheme(String grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = Optional.ofNullable(grandparentTheme); - return this; - } - - public GetRecentlyAddedMetadata withGrandparentTheme(Optional grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = grandparentTheme; + /** + * The rating provided by a user for the item. This value is expressed as a decimal number. + */ + public GetRecentlyAddedMetadata withUserRating(float userRating) { + Utils.checkNotNull(userRating, "userRating"); + this.userRating = Optional.ofNullable(userRating); return this; } /** - * The Media object is only included when type query is `4` or higher. - * + * The rating provided by a user for the item. This value is expressed as a decimal number. */ + public GetRecentlyAddedMetadata withUserRating(Optional userRating) { + Utils.checkNotNull(userRating, "userRating"); + this.userRating = userRating; + return this; + } + + /** + * The number of times this media item has been viewed. + */ + public GetRecentlyAddedMetadata withViewCount(int viewCount) { + Utils.checkNotNull(viewCount, "viewCount"); + this.viewCount = Optional.ofNullable(viewCount); + return this; + } + + /** + * The number of times this media item has been viewed. + */ + public GetRecentlyAddedMetadata withViewCount(Optional viewCount) { + Utils.checkNotNull(viewCount, "viewCount"); + this.viewCount = viewCount; + return this; + } + + /** + * The current playback offset (in milliseconds). + */ + public GetRecentlyAddedMetadata withViewOffset(int viewOffset) { + Utils.checkNotNull(viewOffset, "viewOffset"); + this.viewOffset = Optional.ofNullable(viewOffset); + return this; + } + + /** + * The current playback offset (in milliseconds). + */ + public GetRecentlyAddedMetadata withViewOffset(Optional viewOffset) { + Utils.checkNotNull(viewOffset, "viewOffset"); + this.viewOffset = viewOffset; + return this; + } + + /** + * The number of leaf items that have been viewed. + */ + public GetRecentlyAddedMetadata withViewedLeafCount(int viewedLeafCount) { + Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); + this.viewedLeafCount = Optional.ofNullable(viewedLeafCount); + return this; + } + + /** + * The number of leaf items that have been viewed. + */ + public GetRecentlyAddedMetadata withViewedLeafCount(Optional viewedLeafCount) { + Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); + this.viewedLeafCount = viewedLeafCount; + return this; + } + + /** + * The release year of the media item. + */ + public GetRecentlyAddedMetadata withYear(int year) { + Utils.checkNotNull(year, "year"); + this.year = Optional.ofNullable(year); + return this; + } + + /** + * The release year of the media item. + */ + public GetRecentlyAddedMetadata withYear(Optional year) { + Utils.checkNotNull(year, "year"); + this.year = year; + return this; + } + + public GetRecentlyAddedMetadata withImage(List image) { + Utils.checkNotNull(image, "image"); + this.image = Optional.ofNullable(image); + return this; + } + + public GetRecentlyAddedMetadata withImage(Optional> image) { + Utils.checkNotNull(image, "image"); + this.image = image; + return this; + } + + public GetRecentlyAddedMetadata withUltraBlurColors(UltraBlurColors ultraBlurColors) { + Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); + this.ultraBlurColors = Optional.ofNullable(ultraBlurColors); + return this; + } + + public GetRecentlyAddedMetadata withUltraBlurColors(Optional ultraBlurColors) { + Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); + this.ultraBlurColors = ultraBlurColors; + return this; + } + public GetRecentlyAddedMetadata withMedia(List media) { Utils.checkNotNull(media, "media"); this.media = Optional.ofNullable(media); return this; } - /** - * The Media object is only included when type query is `4` or higher. - * - */ public GetRecentlyAddedMetadata withMedia(Optional> media) { Utils.checkNotNull(media, "media"); this.media = media; @@ -1638,18 +2259,6 @@ public class GetRecentlyAddedMetadata { return this; } - public GetRecentlyAddedMetadata withCollection(List collection) { - Utils.checkNotNull(collection, "collection"); - this.collection = Optional.ofNullable(collection); - return this; - } - - public GetRecentlyAddedMetadata withCollection(Optional> collection) { - Utils.checkNotNull(collection, "collection"); - this.collection = collection; - return this; - } - public GetRecentlyAddedMetadata withRole(List role) { Utils.checkNotNull(role, "role"); this.role = Optional.ofNullable(role); @@ -1662,6 +2271,42 @@ public class GetRecentlyAddedMetadata { return this; } + public GetRecentlyAddedMetadata withProducer(List producer) { + Utils.checkNotNull(producer, "producer"); + this.producer = Optional.ofNullable(producer); + return this; + } + + public GetRecentlyAddedMetadata withProducer(Optional> producer) { + Utils.checkNotNull(producer, "producer"); + this.producer = producer; + return this; + } + + public GetRecentlyAddedMetadata withRating1(List rating1) { + Utils.checkNotNull(rating1, "rating1"); + this.rating1 = Optional.ofNullable(rating1); + return this; + } + + public GetRecentlyAddedMetadata withRating1(Optional> rating1) { + Utils.checkNotNull(rating1, "rating1"); + this.rating1 = rating1; + return this; + } + + public GetRecentlyAddedMetadata withSimilar(List similar) { + Utils.checkNotNull(similar, "similar"); + this.similar = Optional.ofNullable(similar); + return this; + } + + public GetRecentlyAddedMetadata withSimilar(Optional> similar) { + Utils.checkNotNull(similar, "similar"); + this.similar = similar; + return this; + } + public GetRecentlyAddedMetadata withLocation(List location) { Utils.checkNotNull(location, "location"); this.location = Optional.ofNullable(location); @@ -1674,331 +2319,27 @@ public class GetRecentlyAddedMetadata { return this; } - /** - * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - * - */ - public GetRecentlyAddedMetadata withMediaGuid(List mediaGuid) { - Utils.checkNotNull(mediaGuid, "mediaGuid"); - this.mediaGuid = Optional.ofNullable(mediaGuid); + public GetRecentlyAddedMetadata withGuids(List guids) { + Utils.checkNotNull(guids, "guids"); + this.guids = Optional.ofNullable(guids); return this; } - /** - * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - * - */ - public GetRecentlyAddedMetadata withMediaGuid(Optional> mediaGuid) { - Utils.checkNotNull(mediaGuid, "mediaGuid"); - this.mediaGuid = mediaGuid; + public GetRecentlyAddedMetadata withGuids(Optional> guids) { + Utils.checkNotNull(guids, "guids"); + this.guids = guids; return this; } - public GetRecentlyAddedMetadata withUltraBlurColors(UltraBlurColors ultraBlurColors) { - Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); - this.ultraBlurColors = Optional.ofNullable(ultraBlurColors); + public GetRecentlyAddedMetadata withCollection(List collection) { + Utils.checkNotNull(collection, "collection"); + this.collection = Optional.ofNullable(collection); return this; } - public GetRecentlyAddedMetadata withUltraBlurColors(Optional ultraBlurColors) { - Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); - this.ultraBlurColors = ultraBlurColors; - return this; - } - - public GetRecentlyAddedMetadata withMetaDataRating(List metaDataRating) { - Utils.checkNotNull(metaDataRating, "metaDataRating"); - this.metaDataRating = Optional.ofNullable(metaDataRating); - return this; - } - - public GetRecentlyAddedMetadata withMetaDataRating(Optional> metaDataRating) { - Utils.checkNotNull(metaDataRating, "metaDataRating"); - this.metaDataRating = metaDataRating; - return this; - } - - public GetRecentlyAddedMetadata withImage(List image) { - Utils.checkNotNull(image, "image"); - this.image = Optional.ofNullable(image); - return this; - } - - public GetRecentlyAddedMetadata withImage(Optional> image) { - Utils.checkNotNull(image, "image"); - this.image = image; - return this; - } - - public GetRecentlyAddedMetadata withTitleSort(String titleSort) { - Utils.checkNotNull(titleSort, "titleSort"); - this.titleSort = Optional.ofNullable(titleSort); - return this; - } - - public GetRecentlyAddedMetadata withTitleSort(Optional titleSort) { - Utils.checkNotNull(titleSort, "titleSort"); - this.titleSort = titleSort; - return this; - } - - public GetRecentlyAddedMetadata withViewCount(int viewCount) { - Utils.checkNotNull(viewCount, "viewCount"); - this.viewCount = Optional.ofNullable(viewCount); - return this; - } - - public GetRecentlyAddedMetadata withViewCount(Optional viewCount) { - Utils.checkNotNull(viewCount, "viewCount"); - this.viewCount = viewCount; - return this; - } - - public GetRecentlyAddedMetadata withLastViewedAt(int lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = Optional.ofNullable(lastViewedAt); - return this; - } - - public GetRecentlyAddedMetadata withLastViewedAt(Optional lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = lastViewedAt; - return this; - } - - public GetRecentlyAddedMetadata withOriginalTitle(String originalTitle) { - Utils.checkNotNull(originalTitle, "originalTitle"); - this.originalTitle = Optional.ofNullable(originalTitle); - return this; - } - - public GetRecentlyAddedMetadata withOriginalTitle(Optional originalTitle) { - Utils.checkNotNull(originalTitle, "originalTitle"); - this.originalTitle = originalTitle; - return this; - } - - public GetRecentlyAddedMetadata withViewOffset(int viewOffset) { - Utils.checkNotNull(viewOffset, "viewOffset"); - this.viewOffset = Optional.ofNullable(viewOffset); - return this; - } - - public GetRecentlyAddedMetadata withViewOffset(Optional viewOffset) { - Utils.checkNotNull(viewOffset, "viewOffset"); - this.viewOffset = viewOffset; - return this; - } - - public GetRecentlyAddedMetadata withSkipCount(int skipCount) { - Utils.checkNotNull(skipCount, "skipCount"); - this.skipCount = Optional.ofNullable(skipCount); - return this; - } - - public GetRecentlyAddedMetadata withSkipCount(Optional skipCount) { - Utils.checkNotNull(skipCount, "skipCount"); - this.skipCount = skipCount; - return this; - } - - public GetRecentlyAddedMetadata withIndex(int index) { - Utils.checkNotNull(index, "index"); - this.index = Optional.ofNullable(index); - return this; - } - - public GetRecentlyAddedMetadata withIndex(Optional index) { - Utils.checkNotNull(index, "index"); - this.index = index; - return this; - } - - public GetRecentlyAddedMetadata withTheme(String theme) { - Utils.checkNotNull(theme, "theme"); - this.theme = Optional.ofNullable(theme); - return this; - } - - public GetRecentlyAddedMetadata withTheme(Optional theme) { - Utils.checkNotNull(theme, "theme"); - this.theme = theme; - return this; - } - - public GetRecentlyAddedMetadata withLeafCount(int leafCount) { - Utils.checkNotNull(leafCount, "leafCount"); - this.leafCount = Optional.ofNullable(leafCount); - return this; - } - - public GetRecentlyAddedMetadata withLeafCount(Optional leafCount) { - Utils.checkNotNull(leafCount, "leafCount"); - this.leafCount = leafCount; - return this; - } - - public GetRecentlyAddedMetadata withViewedLeafCount(int viewedLeafCount) { - Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); - this.viewedLeafCount = Optional.ofNullable(viewedLeafCount); - return this; - } - - public GetRecentlyAddedMetadata withViewedLeafCount(Optional viewedLeafCount) { - Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); - this.viewedLeafCount = viewedLeafCount; - return this; - } - - public GetRecentlyAddedMetadata withChildCount(int childCount) { - Utils.checkNotNull(childCount, "childCount"); - this.childCount = Optional.ofNullable(childCount); - return this; - } - - public GetRecentlyAddedMetadata withChildCount(Optional childCount) { - Utils.checkNotNull(childCount, "childCount"); - this.childCount = childCount; - return this; - } - - public GetRecentlyAddedMetadata withHasPremiumExtras(String hasPremiumExtras) { - Utils.checkNotNull(hasPremiumExtras, "hasPremiumExtras"); - this.hasPremiumExtras = Optional.ofNullable(hasPremiumExtras); - return this; - } - - public GetRecentlyAddedMetadata withHasPremiumExtras(Optional hasPremiumExtras) { - Utils.checkNotNull(hasPremiumExtras, "hasPremiumExtras"); - this.hasPremiumExtras = hasPremiumExtras; - return this; - } - - public GetRecentlyAddedMetadata withHasPremiumPrimaryExtra(String hasPremiumPrimaryExtra) { - Utils.checkNotNull(hasPremiumPrimaryExtra, "hasPremiumPrimaryExtra"); - this.hasPremiumPrimaryExtra = Optional.ofNullable(hasPremiumPrimaryExtra); - return this; - } - - public GetRecentlyAddedMetadata withHasPremiumPrimaryExtra(Optional hasPremiumPrimaryExtra) { - Utils.checkNotNull(hasPremiumPrimaryExtra, "hasPremiumPrimaryExtra"); - this.hasPremiumPrimaryExtra = hasPremiumPrimaryExtra; - return this; - } - - /** - * The rating key of the parent item. - * - */ - public GetRecentlyAddedMetadata withParentRatingKey(String parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = Optional.ofNullable(parentRatingKey); - return this; - } - - /** - * The rating key of the parent item. - * - */ - public GetRecentlyAddedMetadata withParentRatingKey(Optional parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = parentRatingKey; - return this; - } - - public GetRecentlyAddedMetadata withParentGuid(String parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = Optional.ofNullable(parentGuid); - return this; - } - - public GetRecentlyAddedMetadata withParentGuid(Optional parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = parentGuid; - return this; - } - - public GetRecentlyAddedMetadata withParentStudio(String parentStudio) { - Utils.checkNotNull(parentStudio, "parentStudio"); - this.parentStudio = Optional.ofNullable(parentStudio); - return this; - } - - public GetRecentlyAddedMetadata withParentStudio(Optional parentStudio) { - Utils.checkNotNull(parentStudio, "parentStudio"); - this.parentStudio = parentStudio; - return this; - } - - public GetRecentlyAddedMetadata withParentKey(String parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = Optional.ofNullable(parentKey); - return this; - } - - public GetRecentlyAddedMetadata withParentKey(Optional parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = parentKey; - return this; - } - - public GetRecentlyAddedMetadata withParentTitle(String parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = Optional.ofNullable(parentTitle); - return this; - } - - public GetRecentlyAddedMetadata withParentTitle(Optional parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = parentTitle; - return this; - } - - public GetRecentlyAddedMetadata withParentIndex(int parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = Optional.ofNullable(parentIndex); - return this; - } - - public GetRecentlyAddedMetadata withParentIndex(Optional parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = parentIndex; - return this; - } - - public GetRecentlyAddedMetadata withParentYear(int parentYear) { - Utils.checkNotNull(parentYear, "parentYear"); - this.parentYear = Optional.ofNullable(parentYear); - return this; - } - - public GetRecentlyAddedMetadata withParentYear(Optional parentYear) { - Utils.checkNotNull(parentYear, "parentYear"); - this.parentYear = parentYear; - return this; - } - - public GetRecentlyAddedMetadata withParentThumb(String parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = Optional.ofNullable(parentThumb); - return this; - } - - public GetRecentlyAddedMetadata withParentThumb(Optional parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = parentThumb; - return this; - } - - public GetRecentlyAddedMetadata withParentTheme(String parentTheme) { - Utils.checkNotNull(parentTheme, "parentTheme"); - this.parentTheme = Optional.ofNullable(parentTheme); - return this; - } - - public GetRecentlyAddedMetadata withParentTheme(Optional parentTheme) { - Utils.checkNotNull(parentTheme, "parentTheme"); - this.parentTheme = parentTheme; + public GetRecentlyAddedMetadata withCollection(Optional> collection) { + Utils.checkNotNull(collection, "collection"); + this.collection = collection; return this; } @@ -2012,332 +2353,371 @@ public class GetRecentlyAddedMetadata { } GetRecentlyAddedMetadata other = (GetRecentlyAddedMetadata) o; return - Objects.deepEquals(this.ratingKey, other.ratingKey) && - Objects.deepEquals(this.key, other.key) && - Objects.deepEquals(this.guid, other.guid) && - Objects.deepEquals(this.studio, other.studio) && - Objects.deepEquals(this.skipChildren, other.skipChildren) && - Objects.deepEquals(this.librarySectionID, other.librarySectionID) && - Objects.deepEquals(this.librarySectionTitle, other.librarySectionTitle) && - Objects.deepEquals(this.librarySectionKey, other.librarySectionKey) && - Objects.deepEquals(this.type, other.type) && - Objects.deepEquals(this.title, other.title) && - Objects.deepEquals(this.slug, other.slug) && - Objects.deepEquals(this.contentRating, other.contentRating) && - Objects.deepEquals(this.summary, other.summary) && - Objects.deepEquals(this.rating, other.rating) && - Objects.deepEquals(this.audienceRating, other.audienceRating) && - Objects.deepEquals(this.year, other.year) && - Objects.deepEquals(this.seasonCount, other.seasonCount) && - Objects.deepEquals(this.tagline, other.tagline) && - Objects.deepEquals(this.flattenSeasons, other.flattenSeasons) && - Objects.deepEquals(this.episodeSort, other.episodeSort) && - Objects.deepEquals(this.enableCreditsMarkerGeneration, other.enableCreditsMarkerGeneration) && - Objects.deepEquals(this.showOrdering, other.showOrdering) && - Objects.deepEquals(this.thumb, other.thumb) && - Objects.deepEquals(this.art, other.art) && - Objects.deepEquals(this.banner, other.banner) && - Objects.deepEquals(this.duration, other.duration) && - Objects.deepEquals(this.originallyAvailableAt, other.originallyAvailableAt) && Objects.deepEquals(this.addedAt, other.addedAt) && - Objects.deepEquals(this.updatedAt, other.updatedAt) && + Objects.deepEquals(this.art, other.art) && Objects.deepEquals(this.audienceRatingImage, other.audienceRatingImage) && + Objects.deepEquals(this.audienceRating, other.audienceRating) && Objects.deepEquals(this.chapterSource, other.chapterSource) && - Objects.deepEquals(this.primaryExtraKey, other.primaryExtraKey) && - Objects.deepEquals(this.ratingImage, other.ratingImage) && - Objects.deepEquals(this.grandparentRatingKey, other.grandparentRatingKey) && + Objects.deepEquals(this.childCount, other.childCount) && + Objects.deepEquals(this.contentRating, other.contentRating) && + Objects.deepEquals(this.createdAtAccuracy, other.createdAtAccuracy) && + Objects.deepEquals(this.createdAtTZOffset, other.createdAtTZOffset) && + Objects.deepEquals(this.duration, other.duration) && + Objects.deepEquals(this.grandparentArt, other.grandparentArt) && Objects.deepEquals(this.grandparentGuid, other.grandparentGuid) && Objects.deepEquals(this.grandparentKey, other.grandparentKey) && - Objects.deepEquals(this.grandparentTitle, other.grandparentTitle) && - Objects.deepEquals(this.grandparentThumb, other.grandparentThumb) && - Objects.deepEquals(this.parentSlug, other.parentSlug) && + Objects.deepEquals(this.grandparentRatingKey, other.grandparentRatingKey) && Objects.deepEquals(this.grandparentSlug, other.grandparentSlug) && - Objects.deepEquals(this.grandparentArt, other.grandparentArt) && Objects.deepEquals(this.grandparentTheme, other.grandparentTheme) && + Objects.deepEquals(this.grandparentThumb, other.grandparentThumb) && + Objects.deepEquals(this.grandparentTitle, other.grandparentTitle) && + Objects.deepEquals(this.guid, other.guid) && + Objects.deepEquals(this.index, other.index) && + Objects.deepEquals(this.key, other.key) && + Objects.deepEquals(this.lastRatedAt, other.lastRatedAt) && + Objects.deepEquals(this.lastViewedAt, other.lastViewedAt) && + Objects.deepEquals(this.leafCount, other.leafCount) && + Objects.deepEquals(this.librarySectionID, other.librarySectionID) && + Objects.deepEquals(this.librarySectionKey, other.librarySectionKey) && + Objects.deepEquals(this.librarySectionTitle, other.librarySectionTitle) && + Objects.deepEquals(this.originalTitle, other.originalTitle) && + Objects.deepEquals(this.originallyAvailableAt, other.originallyAvailableAt) && + Objects.deepEquals(this.parentGuid, other.parentGuid) && + Objects.deepEquals(this.parentIndex, other.parentIndex) && + Objects.deepEquals(this.parentKey, other.parentKey) && + Objects.deepEquals(this.parentRatingKey, other.parentRatingKey) && + Objects.deepEquals(this.parentSlug, other.parentSlug) && + Objects.deepEquals(this.parentStudio, other.parentStudio) && + Objects.deepEquals(this.parentTheme, other.parentTheme) && + Objects.deepEquals(this.parentThumb, other.parentThumb) && + Objects.deepEquals(this.parentTitle, other.parentTitle) && + Objects.deepEquals(this.parentYear, other.parentYear) && + Objects.deepEquals(this.primaryExtraKey, other.primaryExtraKey) && + Objects.deepEquals(this.ratingImage, other.ratingImage) && + Objects.deepEquals(this.ratingKey, other.ratingKey) && + Objects.deepEquals(this.rating, other.rating) && + Objects.deepEquals(this.seasonCount, other.seasonCount) && + Objects.deepEquals(this.skipCount, other.skipCount) && + Objects.deepEquals(this.slug, other.slug) && + Objects.deepEquals(this.studio, other.studio) && + Objects.deepEquals(this.subtype, other.subtype) && + Objects.deepEquals(this.summary, other.summary) && + Objects.deepEquals(this.tagline, other.tagline) && + Objects.deepEquals(this.theme, other.theme) && + Objects.deepEquals(this.thumb, other.thumb) && + Objects.deepEquals(this.titleSort, other.titleSort) && + Objects.deepEquals(this.title, other.title) && + Objects.deepEquals(this.type, other.type) && + Objects.deepEquals(this.updatedAt, other.updatedAt) && + Objects.deepEquals(this.userRating, other.userRating) && + Objects.deepEquals(this.viewCount, other.viewCount) && + Objects.deepEquals(this.viewOffset, other.viewOffset) && + Objects.deepEquals(this.viewedLeafCount, other.viewedLeafCount) && + Objects.deepEquals(this.year, other.year) && + Objects.deepEquals(this.image, other.image) && + Objects.deepEquals(this.ultraBlurColors, other.ultraBlurColors) && Objects.deepEquals(this.media, other.media) && Objects.deepEquals(this.genre, other.genre) && Objects.deepEquals(this.country, other.country) && Objects.deepEquals(this.director, other.director) && Objects.deepEquals(this.writer, other.writer) && - Objects.deepEquals(this.collection, other.collection) && Objects.deepEquals(this.role, other.role) && + Objects.deepEquals(this.producer, other.producer) && + Objects.deepEquals(this.rating1, other.rating1) && + Objects.deepEquals(this.similar, other.similar) && Objects.deepEquals(this.location, other.location) && - Objects.deepEquals(this.mediaGuid, other.mediaGuid) && - Objects.deepEquals(this.ultraBlurColors, other.ultraBlurColors) && - Objects.deepEquals(this.metaDataRating, other.metaDataRating) && - Objects.deepEquals(this.image, other.image) && - Objects.deepEquals(this.titleSort, other.titleSort) && - Objects.deepEquals(this.viewCount, other.viewCount) && - Objects.deepEquals(this.lastViewedAt, other.lastViewedAt) && - Objects.deepEquals(this.originalTitle, other.originalTitle) && - Objects.deepEquals(this.viewOffset, other.viewOffset) && - Objects.deepEquals(this.skipCount, other.skipCount) && - Objects.deepEquals(this.index, other.index) && - Objects.deepEquals(this.theme, other.theme) && - Objects.deepEquals(this.leafCount, other.leafCount) && - Objects.deepEquals(this.viewedLeafCount, other.viewedLeafCount) && - Objects.deepEquals(this.childCount, other.childCount) && - Objects.deepEquals(this.hasPremiumExtras, other.hasPremiumExtras) && - Objects.deepEquals(this.hasPremiumPrimaryExtra, other.hasPremiumPrimaryExtra) && - Objects.deepEquals(this.parentRatingKey, other.parentRatingKey) && - Objects.deepEquals(this.parentGuid, other.parentGuid) && - Objects.deepEquals(this.parentStudio, other.parentStudio) && - Objects.deepEquals(this.parentKey, other.parentKey) && - Objects.deepEquals(this.parentTitle, other.parentTitle) && - Objects.deepEquals(this.parentIndex, other.parentIndex) && - Objects.deepEquals(this.parentYear, other.parentYear) && - Objects.deepEquals(this.parentThumb, other.parentThumb) && - Objects.deepEquals(this.parentTheme, other.parentTheme); + Objects.deepEquals(this.guids, other.guids) && + Objects.deepEquals(this.collection, other.collection); } @Override public int hashCode() { return Objects.hash( - ratingKey, - key, - guid, - studio, - skipChildren, - librarySectionID, - librarySectionTitle, - librarySectionKey, - type, - title, - slug, - contentRating, - summary, - rating, - audienceRating, - year, - seasonCount, - tagline, - flattenSeasons, - episodeSort, - enableCreditsMarkerGeneration, - showOrdering, - thumb, - art, - banner, - duration, - originallyAvailableAt, addedAt, - updatedAt, + art, audienceRatingImage, + audienceRating, chapterSource, - primaryExtraKey, - ratingImage, - grandparentRatingKey, + childCount, + contentRating, + createdAtAccuracy, + createdAtTZOffset, + duration, + grandparentArt, grandparentGuid, grandparentKey, - grandparentTitle, - grandparentThumb, - parentSlug, + grandparentRatingKey, grandparentSlug, - grandparentArt, grandparentTheme, + grandparentThumb, + grandparentTitle, + guid, + index, + key, + lastRatedAt, + lastViewedAt, + leafCount, + librarySectionID, + librarySectionKey, + librarySectionTitle, + originalTitle, + originallyAvailableAt, + parentGuid, + parentIndex, + parentKey, + parentRatingKey, + parentSlug, + parentStudio, + parentTheme, + parentThumb, + parentTitle, + parentYear, + primaryExtraKey, + ratingImage, + ratingKey, + rating, + seasonCount, + skipCount, + slug, + studio, + subtype, + summary, + tagline, + theme, + thumb, + titleSort, + title, + type, + updatedAt, + userRating, + viewCount, + viewOffset, + viewedLeafCount, + year, + image, + ultraBlurColors, media, genre, country, director, writer, - collection, role, + producer, + rating1, + similar, location, - mediaGuid, - ultraBlurColors, - metaDataRating, - image, - titleSort, - viewCount, - lastViewedAt, - originalTitle, - viewOffset, - skipCount, - index, - theme, - leafCount, - viewedLeafCount, - childCount, - hasPremiumExtras, - hasPremiumPrimaryExtra, - parentRatingKey, - parentGuid, - parentStudio, - parentKey, - parentTitle, - parentIndex, - parentYear, - parentThumb, - parentTheme); + guids, + collection); } @Override public String toString() { return Utils.toString(GetRecentlyAddedMetadata.class, - "ratingKey", ratingKey, - "key", key, - "guid", guid, - "studio", studio, - "skipChildren", skipChildren, - "librarySectionID", librarySectionID, - "librarySectionTitle", librarySectionTitle, - "librarySectionKey", librarySectionKey, - "type", type, - "title", title, - "slug", slug, - "contentRating", contentRating, - "summary", summary, - "rating", rating, - "audienceRating", audienceRating, - "year", year, - "seasonCount", seasonCount, - "tagline", tagline, - "flattenSeasons", flattenSeasons, - "episodeSort", episodeSort, - "enableCreditsMarkerGeneration", enableCreditsMarkerGeneration, - "showOrdering", showOrdering, - "thumb", thumb, - "art", art, - "banner", banner, - "duration", duration, - "originallyAvailableAt", originallyAvailableAt, "addedAt", addedAt, - "updatedAt", updatedAt, + "art", art, "audienceRatingImage", audienceRatingImage, + "audienceRating", audienceRating, "chapterSource", chapterSource, - "primaryExtraKey", primaryExtraKey, - "ratingImage", ratingImage, - "grandparentRatingKey", grandparentRatingKey, + "childCount", childCount, + "contentRating", contentRating, + "createdAtAccuracy", createdAtAccuracy, + "createdAtTZOffset", createdAtTZOffset, + "duration", duration, + "grandparentArt", grandparentArt, "grandparentGuid", grandparentGuid, "grandparentKey", grandparentKey, - "grandparentTitle", grandparentTitle, - "grandparentThumb", grandparentThumb, - "parentSlug", parentSlug, + "grandparentRatingKey", grandparentRatingKey, "grandparentSlug", grandparentSlug, - "grandparentArt", grandparentArt, "grandparentTheme", grandparentTheme, + "grandparentThumb", grandparentThumb, + "grandparentTitle", grandparentTitle, + "guid", guid, + "index", index, + "key", key, + "lastRatedAt", lastRatedAt, + "lastViewedAt", lastViewedAt, + "leafCount", leafCount, + "librarySectionID", librarySectionID, + "librarySectionKey", librarySectionKey, + "librarySectionTitle", librarySectionTitle, + "originalTitle", originalTitle, + "originallyAvailableAt", originallyAvailableAt, + "parentGuid", parentGuid, + "parentIndex", parentIndex, + "parentKey", parentKey, + "parentRatingKey", parentRatingKey, + "parentSlug", parentSlug, + "parentStudio", parentStudio, + "parentTheme", parentTheme, + "parentThumb", parentThumb, + "parentTitle", parentTitle, + "parentYear", parentYear, + "primaryExtraKey", primaryExtraKey, + "ratingImage", ratingImage, + "ratingKey", ratingKey, + "rating", rating, + "seasonCount", seasonCount, + "skipCount", skipCount, + "slug", slug, + "studio", studio, + "subtype", subtype, + "summary", summary, + "tagline", tagline, + "theme", theme, + "thumb", thumb, + "titleSort", titleSort, + "title", title, + "type", type, + "updatedAt", updatedAt, + "userRating", userRating, + "viewCount", viewCount, + "viewOffset", viewOffset, + "viewedLeafCount", viewedLeafCount, + "year", year, + "image", image, + "ultraBlurColors", ultraBlurColors, "media", media, "genre", genre, "country", country, "director", director, "writer", writer, - "collection", collection, "role", role, + "producer", producer, + "rating1", rating1, + "similar", similar, "location", location, - "mediaGuid", mediaGuid, - "ultraBlurColors", ultraBlurColors, - "metaDataRating", metaDataRating, - "image", image, - "titleSort", titleSort, - "viewCount", viewCount, - "lastViewedAt", lastViewedAt, - "originalTitle", originalTitle, - "viewOffset", viewOffset, - "skipCount", skipCount, - "index", index, - "theme", theme, - "leafCount", leafCount, - "viewedLeafCount", viewedLeafCount, - "childCount", childCount, - "hasPremiumExtras", hasPremiumExtras, - "hasPremiumPrimaryExtra", hasPremiumPrimaryExtra, - "parentRatingKey", parentRatingKey, - "parentGuid", parentGuid, - "parentStudio", parentStudio, - "parentKey", parentKey, - "parentTitle", parentTitle, - "parentIndex", parentIndex, - "parentYear", parentYear, - "parentThumb", parentThumb, - "parentTheme", parentTheme); + "guids", guids, + "collection", collection); } public final static class Builder { - private String ratingKey; - - private String key; - - private String guid; - - private Optional studio = Optional.empty(); - - private Optional skipChildren = Optional.empty(); - - private Optional librarySectionID = Optional.empty(); - - private Optional librarySectionTitle = Optional.empty(); - - private Optional librarySectionKey = Optional.empty(); - - private GetRecentlyAddedHubsType type; - - private String title; - - private Optional slug = Optional.empty(); - - private Optional contentRating = Optional.empty(); - - private String summary; - - private Optional rating = Optional.empty(); - - private Optional audienceRating = Optional.empty(); - - private Optional year = Optional.empty(); - - private Optional seasonCount = Optional.empty(); - - private Optional tagline = Optional.empty(); - - private Optional flattenSeasons = Optional.empty(); - - private Optional episodeSort = Optional.empty(); - - private Optional enableCreditsMarkerGeneration = Optional.empty(); - - private Optional showOrdering = Optional.empty(); - - private Optional thumb = Optional.empty(); - - private Optional art = Optional.empty(); - - private Optional banner = Optional.empty(); - - private Optional duration = Optional.empty(); - - private Optional originallyAvailableAt = Optional.empty(); - private Long addedAt; - private Optional updatedAt = Optional.empty(); + private String art; private Optional audienceRatingImage = Optional.empty(); + private Double audienceRating; + private Optional chapterSource = Optional.empty(); - private Optional primaryExtraKey = Optional.empty(); + private Integer childCount; - private Optional ratingImage = Optional.empty(); + private Optional contentRating = Optional.empty(); - private Optional grandparentRatingKey = Optional.empty(); + private Optional createdAtAccuracy = Optional.empty(); + + private Optional createdAtTZOffset = Optional.empty(); + + private Integer duration; + + private Optional grandparentArt = Optional.empty(); private Optional grandparentGuid = Optional.empty(); private Optional grandparentKey = Optional.empty(); - private Optional grandparentTitle = Optional.empty(); - - private Optional grandparentThumb = Optional.empty(); - - private Optional parentSlug = Optional.empty(); + private Optional grandparentRatingKey = Optional.empty(); private Optional grandparentSlug = Optional.empty(); - private Optional grandparentArt = Optional.empty(); - private Optional grandparentTheme = Optional.empty(); + private Optional grandparentThumb = Optional.empty(); + + private Optional grandparentTitle = Optional.empty(); + + private String guid; + + private Integer index; + + private String key; + + private Optional lastRatedAt = Optional.empty(); + + private Optional lastViewedAt = Optional.empty(); + + private Optional leafCount = Optional.empty(); + + private Long librarySectionID; + + private String librarySectionKey; + + private String librarySectionTitle; + + private Optional originalTitle = Optional.empty(); + + private LocalDate originallyAvailableAt; + + private Optional parentGuid = Optional.empty(); + + private Optional parentIndex = Optional.empty(); + + private Optional parentKey = Optional.empty(); + + private Optional parentRatingKey = Optional.empty(); + + private Optional parentSlug = Optional.empty(); + + private String parentStudio; + + private String parentTheme; + + private Optional parentThumb = Optional.empty(); + + private Optional parentTitle = Optional.empty(); + + private Optional parentYear = Optional.empty(); + + private Optional primaryExtraKey = Optional.empty(); + + private Optional ratingImage = Optional.empty(); + + private String ratingKey; + + private Float rating; + + private Integer seasonCount; + + private Optional skipCount = Optional.empty(); + + private String slug; + + private Optional studio = Optional.empty(); + + private Optional subtype = Optional.empty(); + + private String summary; + + private String tagline; + + private String theme; + + private String thumb; + + private String titleSort; + + private String title; + + private GetRecentlyAddedHubsType type; + + private Optional updatedAt = Optional.empty(); + + private Optional userRating = Optional.empty(); + + private Optional viewCount = Optional.empty(); + + private Optional viewOffset = Optional.empty(); + + private Optional viewedLeafCount = Optional.empty(); + + private Optional year = Optional.empty(); + + private Optional> image = Optional.empty(); + + private Optional ultraBlurColors = Optional.empty(); + private Optional> media = Optional.empty(); private Optional> genre = Optional.empty(); @@ -2348,72 +2728,635 @@ public class GetRecentlyAddedMetadata { private Optional> writer = Optional.empty(); - private Optional> collection = Optional.empty(); - private Optional> role = Optional.empty(); + private Optional> producer = Optional.empty(); + + private Optional> rating1 = Optional.empty(); + + private Optional> similar = Optional.empty(); + private Optional> location = Optional.empty(); - private Optional> mediaGuid = Optional.empty(); + private Optional> guids = Optional.empty(); - private Optional ultraBlurColors = Optional.empty(); - - private Optional> metaDataRating = Optional.empty(); - - private Optional> image = Optional.empty(); - - private Optional titleSort = Optional.empty(); - - private Optional viewCount = Optional.empty(); - - private Optional lastViewedAt = Optional.empty(); - - private Optional originalTitle = Optional.empty(); - - private Optional viewOffset = Optional.empty(); - - private Optional skipCount = Optional.empty(); - - private Optional index = Optional.empty(); - - private Optional theme = Optional.empty(); - - private Optional leafCount = Optional.empty(); - - private Optional viewedLeafCount = Optional.empty(); - - private Optional childCount = Optional.empty(); - - private Optional hasPremiumExtras = Optional.empty(); - - private Optional hasPremiumPrimaryExtra = Optional.empty(); - - private Optional parentRatingKey = Optional.empty(); - - private Optional parentGuid = Optional.empty(); - - private Optional parentStudio = Optional.empty(); - - private Optional parentKey = Optional.empty(); - - private Optional parentTitle = Optional.empty(); - - private Optional parentIndex = Optional.empty(); - - private Optional parentYear = Optional.empty(); - - private Optional parentThumb = Optional.empty(); - - private Optional parentTheme = Optional.empty(); + private Optional> collection = Optional.empty(); private Builder() { // force use of static builder() method } + public Builder addedAt(long addedAt) { + Utils.checkNotNull(addedAt, "addedAt"); + this.addedAt = addedAt; + return this; + } + /** - * 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. + */ + public Builder art(String art) { + Utils.checkNotNull(art, "art"); + this.art = art; + return this; + } + + /** + * The URL for the audience rating image. + */ + public Builder audienceRatingImage(String audienceRatingImage) { + Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); + this.audienceRatingImage = Optional.ofNullable(audienceRatingImage); + return this; + } + + /** + * The URL for the audience rating image. + */ + public Builder audienceRatingImage(Optional audienceRatingImage) { + Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); + this.audienceRatingImage = audienceRatingImage; + return this; + } + + /** + * The audience rating for the media item. + */ + public Builder audienceRating(double audienceRating) { + Utils.checkNotNull(audienceRating, "audienceRating"); + this.audienceRating = audienceRating; + return this; + } + + /** + * The source from which chapter data is derived. + */ + public Builder chapterSource(String chapterSource) { + Utils.checkNotNull(chapterSource, "chapterSource"); + this.chapterSource = Optional.ofNullable(chapterSource); + return this; + } + + /** + * The source from which chapter data is derived. + */ + public Builder chapterSource(Optional chapterSource) { + Utils.checkNotNull(chapterSource, "chapterSource"); + this.chapterSource = chapterSource; + return this; + } + + /** + * The number of child items associated with this media item. + */ + public Builder childCount(int childCount) { + Utils.checkNotNull(childCount, "childCount"); + this.childCount = childCount; + return this; + } + + /** + * The content rating for the media item. + */ + public Builder contentRating(String contentRating) { + Utils.checkNotNull(contentRating, "contentRating"); + this.contentRating = Optional.ofNullable(contentRating); + return this; + } + + /** + * The content rating for the media item. + */ + public Builder contentRating(Optional contentRating) { + Utils.checkNotNull(contentRating, "contentRating"); + this.contentRating = contentRating; + return this; + } + + /** + * 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). + */ + public Builder createdAtAccuracy(String createdAtAccuracy) { + Utils.checkNotNull(createdAtAccuracy, "createdAtAccuracy"); + this.createdAtAccuracy = Optional.ofNullable(createdAtAccuracy); + return this; + } + + /** + * 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). + */ + public Builder createdAtAccuracy(Optional createdAtAccuracy) { + Utils.checkNotNull(createdAtAccuracy, "createdAtAccuracy"); + this.createdAtAccuracy = createdAtAccuracy; + return this; + } + + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + public Builder createdAtTZOffset(String createdAtTZOffset) { + Utils.checkNotNull(createdAtTZOffset, "createdAtTZOffset"); + this.createdAtTZOffset = Optional.ofNullable(createdAtTZOffset); + return this; + } + + /** + * The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. + */ + public Builder createdAtTZOffset(Optional createdAtTZOffset) { + Utils.checkNotNull(createdAtTZOffset, "createdAtTZOffset"); + this.createdAtTZOffset = createdAtTZOffset; + return this; + } + + /** + * The duration of the media item in milliseconds. + */ + public Builder duration(int duration) { + Utils.checkNotNull(duration, "duration"); + this.duration = duration; + return this; + } + + /** + * The art URL for the grandparent media item. + */ + public Builder grandparentArt(String grandparentArt) { + Utils.checkNotNull(grandparentArt, "grandparentArt"); + this.grandparentArt = Optional.ofNullable(grandparentArt); + return this; + } + + /** + * The art URL for the grandparent media item. + */ + public Builder grandparentArt(Optional grandparentArt) { + Utils.checkNotNull(grandparentArt, "grandparentArt"); + this.grandparentArt = grandparentArt; + return this; + } + + /** + * The GUID of the grandparent media item. + */ + public Builder grandparentGuid(String grandparentGuid) { + Utils.checkNotNull(grandparentGuid, "grandparentGuid"); + this.grandparentGuid = Optional.ofNullable(grandparentGuid); + return this; + } + + /** + * The GUID of the grandparent media item. + */ + public Builder grandparentGuid(Optional grandparentGuid) { + Utils.checkNotNull(grandparentGuid, "grandparentGuid"); + this.grandparentGuid = grandparentGuid; + return this; + } + + /** + * The key of the grandparent media item. + */ + public Builder grandparentKey(String grandparentKey) { + Utils.checkNotNull(grandparentKey, "grandparentKey"); + this.grandparentKey = Optional.ofNullable(grandparentKey); + return this; + } + + /** + * The key of the grandparent media item. + */ + public Builder grandparentKey(Optional grandparentKey) { + Utils.checkNotNull(grandparentKey, "grandparentKey"); + this.grandparentKey = grandparentKey; + return this; + } + + /** + * The rating key of the grandparent media item. + */ + public Builder grandparentRatingKey(String grandparentRatingKey) { + Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); + this.grandparentRatingKey = Optional.ofNullable(grandparentRatingKey); + return this; + } + + /** + * The rating key of the grandparent media item. + */ + public Builder grandparentRatingKey(Optional grandparentRatingKey) { + Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); + this.grandparentRatingKey = grandparentRatingKey; + return this; + } + + /** + * The slug for the grandparent media item. + */ + public Builder grandparentSlug(String grandparentSlug) { + Utils.checkNotNull(grandparentSlug, "grandparentSlug"); + this.grandparentSlug = Optional.ofNullable(grandparentSlug); + return this; + } + + /** + * The slug for the grandparent media item. + */ + public Builder grandparentSlug(Optional grandparentSlug) { + Utils.checkNotNull(grandparentSlug, "grandparentSlug"); + this.grandparentSlug = grandparentSlug; + return this; + } + + /** + * The theme URL for the grandparent media item. + */ + public Builder grandparentTheme(String grandparentTheme) { + Utils.checkNotNull(grandparentTheme, "grandparentTheme"); + this.grandparentTheme = Optional.ofNullable(grandparentTheme); + return this; + } + + /** + * The theme URL for the grandparent media item. + */ + public Builder grandparentTheme(Optional grandparentTheme) { + Utils.checkNotNull(grandparentTheme, "grandparentTheme"); + this.grandparentTheme = grandparentTheme; + return this; + } + + /** + * The thumbnail URL for the grandparent media item. + */ + public Builder grandparentThumb(String grandparentThumb) { + Utils.checkNotNull(grandparentThumb, "grandparentThumb"); + this.grandparentThumb = Optional.ofNullable(grandparentThumb); + return this; + } + + /** + * The thumbnail URL for the grandparent media item. + */ + public Builder grandparentThumb(Optional grandparentThumb) { + Utils.checkNotNull(grandparentThumb, "grandparentThumb"); + this.grandparentThumb = grandparentThumb; + return this; + } + + /** + * The title of the grandparent media item. + */ + public Builder grandparentTitle(String grandparentTitle) { + Utils.checkNotNull(grandparentTitle, "grandparentTitle"); + this.grandparentTitle = Optional.ofNullable(grandparentTitle); + return this; + } + + /** + * The title of the grandparent media item. + */ + public Builder grandparentTitle(Optional grandparentTitle) { + Utils.checkNotNull(grandparentTitle, "grandparentTitle"); + this.grandparentTitle = grandparentTitle; + return this; + } + + /** + * The globally unique identifier for the media item. + */ + public Builder guid(String guid) { + Utils.checkNotNull(guid, "guid"); + this.guid = guid; + return this; + } + + /** + * The index position of the media item. + */ + public Builder index(int index) { + Utils.checkNotNull(index, "index"); + this.index = index; + return this; + } + + /** + * The unique key for the media item. + */ + public Builder key(String key) { + Utils.checkNotNull(key, "key"); + this.key = key; + return this; + } + + /** + * The Unix timestamp representing the last time the item was rated. + */ + public Builder lastRatedAt(long lastRatedAt) { + Utils.checkNotNull(lastRatedAt, "lastRatedAt"); + this.lastRatedAt = Optional.ofNullable(lastRatedAt); + return this; + } + + /** + * The Unix timestamp representing the last time the item was rated. + */ + public Builder lastRatedAt(Optional lastRatedAt) { + Utils.checkNotNull(lastRatedAt, "lastRatedAt"); + this.lastRatedAt = lastRatedAt; + return this; + } + + /** + * Unix timestamp for when the media item was last viewed. + */ + public Builder lastViewedAt(int lastViewedAt) { + Utils.checkNotNull(lastViewedAt, "lastViewedAt"); + this.lastViewedAt = Optional.ofNullable(lastViewedAt); + return this; + } + + /** + * Unix timestamp for when the media item was last viewed. + */ + public Builder lastViewedAt(Optional lastViewedAt) { + Utils.checkNotNull(lastViewedAt, "lastViewedAt"); + this.lastViewedAt = lastViewedAt; + return this; + } + + /** + * The number of leaf items (end nodes) under this media item. + */ + public Builder leafCount(int leafCount) { + Utils.checkNotNull(leafCount, "leafCount"); + this.leafCount = Optional.ofNullable(leafCount); + return this; + } + + /** + * The number of leaf items (end nodes) under this media item. + */ + public Builder leafCount(Optional leafCount) { + Utils.checkNotNull(leafCount, "leafCount"); + this.leafCount = leafCount; + return this; + } + + /** + * The identifier for the library section. + */ + public Builder librarySectionID(long librarySectionID) { + Utils.checkNotNull(librarySectionID, "librarySectionID"); + this.librarySectionID = librarySectionID; + return this; + } + + /** + * The key corresponding to the library section. + */ + public Builder librarySectionKey(String librarySectionKey) { + Utils.checkNotNull(librarySectionKey, "librarySectionKey"); + this.librarySectionKey = librarySectionKey; + return this; + } + + /** + * The title of the library section. + */ + public Builder librarySectionTitle(String librarySectionTitle) { + Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); + this.librarySectionTitle = librarySectionTitle; + return this; + } + + /** + * The original title of the media item (if different). + */ + public Builder originalTitle(String originalTitle) { + Utils.checkNotNull(originalTitle, "originalTitle"); + this.originalTitle = Optional.ofNullable(originalTitle); + return this; + } + + /** + * The original title of the media item (if different). + */ + public Builder originalTitle(Optional originalTitle) { + Utils.checkNotNull(originalTitle, "originalTitle"); + this.originalTitle = originalTitle; + return this; + } + + /** + * The original release date of the media item. + */ + public Builder originallyAvailableAt(LocalDate originallyAvailableAt) { + Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); + this.originallyAvailableAt = originallyAvailableAt; + return this; + } + + /** + * The GUID of the parent media item. + */ + public Builder parentGuid(String parentGuid) { + Utils.checkNotNull(parentGuid, "parentGuid"); + this.parentGuid = Optional.ofNullable(parentGuid); + return this; + } + + /** + * The GUID of the parent media item. + */ + public Builder parentGuid(Optional parentGuid) { + Utils.checkNotNull(parentGuid, "parentGuid"); + this.parentGuid = parentGuid; + return this; + } + + /** + * The index position of the parent media item. + */ + public Builder parentIndex(int parentIndex) { + Utils.checkNotNull(parentIndex, "parentIndex"); + this.parentIndex = Optional.ofNullable(parentIndex); + return this; + } + + /** + * The index position of the parent media item. + */ + public Builder parentIndex(Optional parentIndex) { + Utils.checkNotNull(parentIndex, "parentIndex"); + this.parentIndex = parentIndex; + return this; + } + + /** + * The key of the parent media item. + */ + public Builder parentKey(String parentKey) { + Utils.checkNotNull(parentKey, "parentKey"); + this.parentKey = Optional.ofNullable(parentKey); + return this; + } + + /** + * The key of the parent media item. + */ + public Builder parentKey(Optional parentKey) { + Utils.checkNotNull(parentKey, "parentKey"); + this.parentKey = parentKey; + return this; + } + + /** + * The rating key of the parent media item. + */ + public Builder parentRatingKey(String parentRatingKey) { + Utils.checkNotNull(parentRatingKey, "parentRatingKey"); + this.parentRatingKey = Optional.ofNullable(parentRatingKey); + return this; + } + + /** + * The rating key of the parent media item. + */ + public Builder parentRatingKey(Optional parentRatingKey) { + Utils.checkNotNull(parentRatingKey, "parentRatingKey"); + this.parentRatingKey = parentRatingKey; + return this; + } + + /** + * The slug for the parent media item. + */ + public Builder parentSlug(String parentSlug) { + Utils.checkNotNull(parentSlug, "parentSlug"); + this.parentSlug = Optional.ofNullable(parentSlug); + return this; + } + + /** + * The slug for the parent media item. + */ + public Builder parentSlug(Optional parentSlug) { + Utils.checkNotNull(parentSlug, "parentSlug"); + this.parentSlug = parentSlug; + return this; + } + + /** + * The studio of the parent media item. + */ + public Builder parentStudio(String parentStudio) { + Utils.checkNotNull(parentStudio, "parentStudio"); + this.parentStudio = parentStudio; + return this; + } + + /** + * The theme URL for the parent media item. + */ + public Builder parentTheme(String parentTheme) { + Utils.checkNotNull(parentTheme, "parentTheme"); + this.parentTheme = parentTheme; + return this; + } + + /** + * The thumbnail URL for the parent media item. + */ + public Builder parentThumb(String parentThumb) { + Utils.checkNotNull(parentThumb, "parentThumb"); + this.parentThumb = Optional.ofNullable(parentThumb); + return this; + } + + /** + * The thumbnail URL for the parent media item. + */ + public Builder parentThumb(Optional parentThumb) { + Utils.checkNotNull(parentThumb, "parentThumb"); + this.parentThumb = parentThumb; + return this; + } + + /** + * The title of the parent media item. + */ + public Builder parentTitle(String parentTitle) { + Utils.checkNotNull(parentTitle, "parentTitle"); + this.parentTitle = Optional.ofNullable(parentTitle); + return this; + } + + /** + * The title of the parent media item. + */ + public Builder parentTitle(Optional parentTitle) { + Utils.checkNotNull(parentTitle, "parentTitle"); + this.parentTitle = parentTitle; + return this; + } + + /** + * The release year of the parent media item. + */ + public Builder parentYear(int parentYear) { + Utils.checkNotNull(parentYear, "parentYear"); + this.parentYear = Optional.ofNullable(parentYear); + return this; + } + + /** + * The release year of the parent media item. + */ + public Builder parentYear(Optional parentYear) { + Utils.checkNotNull(parentYear, "parentYear"); + this.parentYear = parentYear; + return this; + } + + /** + * The primary extra key associated with this media item. + */ + public Builder primaryExtraKey(String primaryExtraKey) { + Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); + this.primaryExtraKey = Optional.ofNullable(primaryExtraKey); + return this; + } + + /** + * The primary extra key associated with this media item. + */ + public Builder primaryExtraKey(Optional primaryExtraKey) { + Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); + this.primaryExtraKey = primaryExtraKey; + return this; + } + + /** + * The URL for the rating image. + */ + public Builder ratingImage(String ratingImage) { + Utils.checkNotNull(ratingImage, "ratingImage"); + this.ratingImage = Optional.ofNullable(ratingImage); + return this; + } + + /** + * The URL for the rating image. + */ + public Builder ratingImage(Optional ratingImage) { + Utils.checkNotNull(ratingImage, "ratingImage"); + this.ratingImage = ratingImage; + return this; + } + + /** + * 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. */ public Builder ratingKey(String ratingKey) { Utils.checkNotNull(ratingKey, "ratingKey"); @@ -2421,334 +3364,144 @@ public class GetRecentlyAddedMetadata { return this; } - public Builder key(String key) { - Utils.checkNotNull(key, "key"); - this.key = key; + /** + * The critic rating for the media item. + */ + public Builder rating(float rating) { + Utils.checkNotNull(rating, "rating"); + this.rating = rating; return this; } - public Builder guid(String guid) { - Utils.checkNotNull(guid, "guid"); - this.guid = guid; + /** + * The total number of seasons (for TV shows). + */ + public Builder seasonCount(int seasonCount) { + Utils.checkNotNull(seasonCount, "seasonCount"); + this.seasonCount = seasonCount; return this; } + /** + * The number of times this media item has been skipped. + */ + public Builder skipCount(int skipCount) { + Utils.checkNotNull(skipCount, "skipCount"); + this.skipCount = Optional.ofNullable(skipCount); + return this; + } + + /** + * The number of times this media item has been skipped. + */ + public Builder skipCount(Optional skipCount) { + Utils.checkNotNull(skipCount, "skipCount"); + this.skipCount = skipCount; + return this; + } + + /** + * A URL‐friendly version of the media title. + */ + public Builder slug(String slug) { + Utils.checkNotNull(slug, "slug"); + this.slug = slug; + return this; + } + + /** + * The studio that produced the media item. + */ public Builder studio(String studio) { Utils.checkNotNull(studio, "studio"); this.studio = Optional.ofNullable(studio); return this; } + /** + * The studio that produced the media item. + */ public Builder studio(Optional studio) { Utils.checkNotNull(studio, "studio"); this.studio = studio; return this; } - public Builder skipChildren(boolean skipChildren) { - Utils.checkNotNull(skipChildren, "skipChildren"); - this.skipChildren = Optional.ofNullable(skipChildren); - return this; - } - - public Builder skipChildren(Optional skipChildren) { - Utils.checkNotNull(skipChildren, "skipChildren"); - this.skipChildren = skipChildren; - return this; - } - - public Builder librarySectionID(long librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = Optional.ofNullable(librarySectionID); - return this; - } - - public Builder librarySectionID(Optional librarySectionID) { - Utils.checkNotNull(librarySectionID, "librarySectionID"); - this.librarySectionID = librarySectionID; - return this; - } - - public Builder librarySectionTitle(String librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = Optional.ofNullable(librarySectionTitle); - return this; - } - - public Builder librarySectionTitle(Optional librarySectionTitle) { - Utils.checkNotNull(librarySectionTitle, "librarySectionTitle"); - this.librarySectionTitle = librarySectionTitle; - return this; - } - - public Builder librarySectionKey(String librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = Optional.ofNullable(librarySectionKey); - return this; - } - - public Builder librarySectionKey(Optional librarySectionKey) { - Utils.checkNotNull(librarySectionKey, "librarySectionKey"); - this.librarySectionKey = librarySectionKey; + /** + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. + */ + public Builder subtype(String subtype) { + Utils.checkNotNull(subtype, "subtype"); + this.subtype = Optional.ofNullable(subtype); return this; } /** - * The type of media content - * + * A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. */ - public Builder type(GetRecentlyAddedHubsType type) { - Utils.checkNotNull(type, "type"); - this.type = type; - return this; - } - - public Builder title(String title) { - Utils.checkNotNull(title, "title"); - this.title = title; - return this; - } - - public Builder slug(String slug) { - Utils.checkNotNull(slug, "slug"); - this.slug = Optional.ofNullable(slug); - return this; - } - - public Builder slug(Optional slug) { - Utils.checkNotNull(slug, "slug"); - this.slug = slug; - return this; - } - - public Builder contentRating(String contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = Optional.ofNullable(contentRating); - return this; - } - - public Builder contentRating(Optional contentRating) { - Utils.checkNotNull(contentRating, "contentRating"); - this.contentRating = contentRating; + public Builder subtype(Optional subtype) { + Utils.checkNotNull(subtype, "subtype"); + this.subtype = subtype; return this; } + /** + * A synopsis of the media item. + */ public Builder summary(String summary) { Utils.checkNotNull(summary, "summary"); this.summary = summary; return this; } - public Builder rating(double rating) { - Utils.checkNotNull(rating, "rating"); - this.rating = Optional.ofNullable(rating); - return this; - } - - public Builder rating(Optional rating) { - Utils.checkNotNull(rating, "rating"); - this.rating = rating; - return this; - } - - public Builder audienceRating(double audienceRating) { - Utils.checkNotNull(audienceRating, "audienceRating"); - this.audienceRating = Optional.ofNullable(audienceRating); - return this; - } - - public Builder audienceRating(Optional audienceRating) { - Utils.checkNotNull(audienceRating, "audienceRating"); - this.audienceRating = audienceRating; - return this; - } - - public Builder year(int year) { - Utils.checkNotNull(year, "year"); - this.year = Optional.ofNullable(year); - return this; - } - - public Builder year(Optional year) { - Utils.checkNotNull(year, "year"); - this.year = year; - return this; - } - - public Builder seasonCount(int seasonCount) { - Utils.checkNotNull(seasonCount, "seasonCount"); - this.seasonCount = Optional.ofNullable(seasonCount); - return this; - } - - public Builder seasonCount(Optional seasonCount) { - Utils.checkNotNull(seasonCount, "seasonCount"); - this.seasonCount = seasonCount; - return this; - } - + /** + * A brief tagline for the media item. + */ public Builder tagline(String tagline) { - Utils.checkNotNull(tagline, "tagline"); - this.tagline = Optional.ofNullable(tagline); - return this; - } - - public Builder tagline(Optional tagline) { Utils.checkNotNull(tagline, "tagline"); this.tagline = tagline; return this; } /** - * 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. */ - public Builder flattenSeasons(FlattenSeasons flattenSeasons) { - Utils.checkNotNull(flattenSeasons, "flattenSeasons"); - this.flattenSeasons = Optional.ofNullable(flattenSeasons); + public Builder theme(String theme) { + Utils.checkNotNull(theme, "theme"); + this.theme = theme; return this; } /** - * Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). + * The thumbnail image URL for the media item. */ - public Builder flattenSeasons(Optional flattenSeasons) { - Utils.checkNotNull(flattenSeasons, "flattenSeasons"); - this.flattenSeasons = flattenSeasons; - return this; - } - - /** - * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - */ - public Builder episodeSort(EpisodeSort episodeSort) { - Utils.checkNotNull(episodeSort, "episodeSort"); - this.episodeSort = Optional.ofNullable(episodeSort); - return this; - } - - /** - * Setting that indicates how episodes are sorted for the show. (-1 = Library default, 0 = Oldest first, 1 = Newest first). - */ - public Builder episodeSort(Optional episodeSort) { - Utils.checkNotNull(episodeSort, "episodeSort"); - this.episodeSort = episodeSort; - return this; - } - - /** - * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ - public Builder enableCreditsMarkerGeneration(EnableCreditsMarkerGeneration enableCreditsMarkerGeneration) { - Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); - this.enableCreditsMarkerGeneration = Optional.ofNullable(enableCreditsMarkerGeneration); - return this; - } - - /** - * Setting that indicates if credits markers detection is enabled. (-1 = Library default, 0 = Disabled). - */ - public Builder enableCreditsMarkerGeneration(Optional enableCreditsMarkerGeneration) { - Utils.checkNotNull(enableCreditsMarkerGeneration, "enableCreditsMarkerGeneration"); - this.enableCreditsMarkerGeneration = enableCreditsMarkerGeneration; - return this; - } - - /** - * 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 Builder showOrdering(ShowOrdering showOrdering) { - Utils.checkNotNull(showOrdering, "showOrdering"); - this.showOrdering = Optional.ofNullable(showOrdering); - return this; - } - - /** - * 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 Builder showOrdering(Optional showOrdering) { - Utils.checkNotNull(showOrdering, "showOrdering"); - this.showOrdering = showOrdering; - return this; - } - public Builder thumb(String thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = Optional.ofNullable(thumb); - return this; - } - - public Builder thumb(Optional thumb) { Utils.checkNotNull(thumb, "thumb"); this.thumb = thumb; return this; } - public Builder art(String art) { - Utils.checkNotNull(art, "art"); - this.art = Optional.ofNullable(art); - return this; - } - - public Builder art(Optional art) { - Utils.checkNotNull(art, "art"); - this.art = art; - return this; - } - - public Builder banner(String banner) { - Utils.checkNotNull(banner, "banner"); - this.banner = Optional.ofNullable(banner); - return this; - } - - public Builder banner(Optional banner) { - Utils.checkNotNull(banner, "banner"); - this.banner = banner; - return this; - } - - public Builder duration(int duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = Optional.ofNullable(duration); - return this; - } - - public Builder duration(Optional duration) { - Utils.checkNotNull(duration, "duration"); - this.duration = duration; - return this; - } - - public Builder originallyAvailableAt(LocalDate originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = Optional.ofNullable(originallyAvailableAt); - return this; - } - - public Builder originallyAvailableAt(Optional originallyAvailableAt) { - Utils.checkNotNull(originallyAvailableAt, "originallyAvailableAt"); - this.originallyAvailableAt = originallyAvailableAt; + /** + * The sort title used for ordering media items. + */ + public Builder titleSort(String titleSort) { + Utils.checkNotNull(titleSort, "titleSort"); + this.titleSort = titleSort; return this; } /** - * Unix epoch datetime in seconds + * The title of the media item. */ - public Builder addedAt(long addedAt) { - Utils.checkNotNull(addedAt, "addedAt"); - this.addedAt = addedAt; + public Builder title(String title) { + Utils.checkNotNull(title, "title"); + this.title = title; + return this; + } + + public Builder type(GetRecentlyAddedHubsType type) { + Utils.checkNotNull(type, "type"); + this.type = type; return this; } @@ -2770,176 +3523,126 @@ public class GetRecentlyAddedMetadata { return this; } - public Builder audienceRatingImage(String audienceRatingImage) { - Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); - this.audienceRatingImage = Optional.ofNullable(audienceRatingImage); - return this; - } - - public Builder audienceRatingImage(Optional audienceRatingImage) { - Utils.checkNotNull(audienceRatingImage, "audienceRatingImage"); - this.audienceRatingImage = audienceRatingImage; - return this; - } - - public Builder chapterSource(String chapterSource) { - Utils.checkNotNull(chapterSource, "chapterSource"); - this.chapterSource = Optional.ofNullable(chapterSource); - return this; - } - - public Builder chapterSource(Optional chapterSource) { - Utils.checkNotNull(chapterSource, "chapterSource"); - this.chapterSource = chapterSource; - return this; - } - - public Builder primaryExtraKey(String primaryExtraKey) { - Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); - this.primaryExtraKey = Optional.ofNullable(primaryExtraKey); - return this; - } - - public Builder primaryExtraKey(Optional primaryExtraKey) { - Utils.checkNotNull(primaryExtraKey, "primaryExtraKey"); - this.primaryExtraKey = primaryExtraKey; - return this; - } - - public Builder ratingImage(String ratingImage) { - Utils.checkNotNull(ratingImage, "ratingImage"); - this.ratingImage = Optional.ofNullable(ratingImage); - return this; - } - - public Builder ratingImage(Optional ratingImage) { - Utils.checkNotNull(ratingImage, "ratingImage"); - this.ratingImage = ratingImage; - return this; - } - - public Builder grandparentRatingKey(String grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = Optional.ofNullable(grandparentRatingKey); - return this; - } - - public Builder grandparentRatingKey(Optional grandparentRatingKey) { - Utils.checkNotNull(grandparentRatingKey, "grandparentRatingKey"); - this.grandparentRatingKey = grandparentRatingKey; - return this; - } - - public Builder grandparentGuid(String grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = Optional.ofNullable(grandparentGuid); - return this; - } - - public Builder grandparentGuid(Optional grandparentGuid) { - Utils.checkNotNull(grandparentGuid, "grandparentGuid"); - this.grandparentGuid = grandparentGuid; - return this; - } - - public Builder grandparentKey(String grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = Optional.ofNullable(grandparentKey); - return this; - } - - public Builder grandparentKey(Optional grandparentKey) { - Utils.checkNotNull(grandparentKey, "grandparentKey"); - this.grandparentKey = grandparentKey; - return this; - } - - public Builder grandparentTitle(String grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = Optional.ofNullable(grandparentTitle); - return this; - } - - public Builder grandparentTitle(Optional grandparentTitle) { - Utils.checkNotNull(grandparentTitle, "grandparentTitle"); - this.grandparentTitle = grandparentTitle; - return this; - } - - public Builder grandparentThumb(String grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = Optional.ofNullable(grandparentThumb); - return this; - } - - public Builder grandparentThumb(Optional grandparentThumb) { - Utils.checkNotNull(grandparentThumb, "grandparentThumb"); - this.grandparentThumb = grandparentThumb; - return this; - } - - public Builder parentSlug(String parentSlug) { - Utils.checkNotNull(parentSlug, "parentSlug"); - this.parentSlug = Optional.ofNullable(parentSlug); - return this; - } - - public Builder parentSlug(Optional parentSlug) { - Utils.checkNotNull(parentSlug, "parentSlug"); - this.parentSlug = parentSlug; - return this; - } - - public Builder grandparentSlug(String grandparentSlug) { - Utils.checkNotNull(grandparentSlug, "grandparentSlug"); - this.grandparentSlug = Optional.ofNullable(grandparentSlug); - return this; - } - - public Builder grandparentSlug(Optional grandparentSlug) { - Utils.checkNotNull(grandparentSlug, "grandparentSlug"); - this.grandparentSlug = grandparentSlug; - return this; - } - - public Builder grandparentArt(String grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = Optional.ofNullable(grandparentArt); - return this; - } - - public Builder grandparentArt(Optional grandparentArt) { - Utils.checkNotNull(grandparentArt, "grandparentArt"); - this.grandparentArt = grandparentArt; - return this; - } - - public Builder grandparentTheme(String grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = Optional.ofNullable(grandparentTheme); - return this; - } - - public Builder grandparentTheme(Optional grandparentTheme) { - Utils.checkNotNull(grandparentTheme, "grandparentTheme"); - this.grandparentTheme = grandparentTheme; + /** + * The rating provided by a user for the item. This value is expressed as a decimal number. + */ + public Builder userRating(float userRating) { + Utils.checkNotNull(userRating, "userRating"); + this.userRating = Optional.ofNullable(userRating); return this; } /** - * The Media object is only included when type query is `4` or higher. - * + * The rating provided by a user for the item. This value is expressed as a decimal number. */ + public Builder userRating(Optional userRating) { + Utils.checkNotNull(userRating, "userRating"); + this.userRating = userRating; + return this; + } + + /** + * The number of times this media item has been viewed. + */ + public Builder viewCount(int viewCount) { + Utils.checkNotNull(viewCount, "viewCount"); + this.viewCount = Optional.ofNullable(viewCount); + return this; + } + + /** + * The number of times this media item has been viewed. + */ + public Builder viewCount(Optional viewCount) { + Utils.checkNotNull(viewCount, "viewCount"); + this.viewCount = viewCount; + return this; + } + + /** + * The current playback offset (in milliseconds). + */ + public Builder viewOffset(int viewOffset) { + Utils.checkNotNull(viewOffset, "viewOffset"); + this.viewOffset = Optional.ofNullable(viewOffset); + return this; + } + + /** + * The current playback offset (in milliseconds). + */ + public Builder viewOffset(Optional viewOffset) { + Utils.checkNotNull(viewOffset, "viewOffset"); + this.viewOffset = viewOffset; + return this; + } + + /** + * The number of leaf items that have been viewed. + */ + public Builder viewedLeafCount(int viewedLeafCount) { + Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); + this.viewedLeafCount = Optional.ofNullable(viewedLeafCount); + return this; + } + + /** + * The number of leaf items that have been viewed. + */ + public Builder viewedLeafCount(Optional viewedLeafCount) { + Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); + this.viewedLeafCount = viewedLeafCount; + return this; + } + + /** + * The release year of the media item. + */ + public Builder year(int year) { + Utils.checkNotNull(year, "year"); + this.year = Optional.ofNullable(year); + return this; + } + + /** + * The release year of the media item. + */ + public Builder year(Optional year) { + Utils.checkNotNull(year, "year"); + this.year = year; + return this; + } + + public Builder image(List image) { + Utils.checkNotNull(image, "image"); + this.image = Optional.ofNullable(image); + return this; + } + + public Builder image(Optional> image) { + Utils.checkNotNull(image, "image"); + this.image = image; + return this; + } + + public Builder ultraBlurColors(UltraBlurColors ultraBlurColors) { + Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); + this.ultraBlurColors = Optional.ofNullable(ultraBlurColors); + return this; + } + + public Builder ultraBlurColors(Optional ultraBlurColors) { + Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); + this.ultraBlurColors = ultraBlurColors; + return this; + } + public Builder media(List media) { Utils.checkNotNull(media, "media"); this.media = Optional.ofNullable(media); return this; } - /** - * The Media object is only included when type query is `4` or higher. - * - */ public Builder media(Optional> media) { Utils.checkNotNull(media, "media"); this.media = media; @@ -2994,18 +3697,6 @@ public class GetRecentlyAddedMetadata { return this; } - public Builder collection(List collection) { - Utils.checkNotNull(collection, "collection"); - this.collection = Optional.ofNullable(collection); - return this; - } - - public Builder collection(Optional> collection) { - Utils.checkNotNull(collection, "collection"); - this.collection = collection; - return this; - } - public Builder role(List role) { Utils.checkNotNull(role, "role"); this.role = Optional.ofNullable(role); @@ -3018,6 +3709,42 @@ public class GetRecentlyAddedMetadata { return this; } + public Builder producer(List producer) { + Utils.checkNotNull(producer, "producer"); + this.producer = Optional.ofNullable(producer); + return this; + } + + public Builder producer(Optional> producer) { + Utils.checkNotNull(producer, "producer"); + this.producer = producer; + return this; + } + + public Builder rating1(List rating1) { + Utils.checkNotNull(rating1, "rating1"); + this.rating1 = Optional.ofNullable(rating1); + return this; + } + + public Builder rating1(Optional> rating1) { + Utils.checkNotNull(rating1, "rating1"); + this.rating1 = rating1; + return this; + } + + public Builder similar(List similar) { + Utils.checkNotNull(similar, "similar"); + this.similar = Optional.ofNullable(similar); + return this; + } + + public Builder similar(Optional> similar) { + Utils.checkNotNull(similar, "similar"); + this.similar = similar; + return this; + } + public Builder location(List location) { Utils.checkNotNull(location, "location"); this.location = Optional.ofNullable(location); @@ -3030,412 +3757,107 @@ public class GetRecentlyAddedMetadata { return this; } - /** - * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - * - */ - public Builder mediaGuid(List mediaGuid) { - Utils.checkNotNull(mediaGuid, "mediaGuid"); - this.mediaGuid = Optional.ofNullable(mediaGuid); + public Builder guids(List guids) { + Utils.checkNotNull(guids, "guids"); + this.guids = Optional.ofNullable(guids); return this; } - /** - * The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. - * - */ - public Builder mediaGuid(Optional> mediaGuid) { - Utils.checkNotNull(mediaGuid, "mediaGuid"); - this.mediaGuid = mediaGuid; + public Builder guids(Optional> guids) { + Utils.checkNotNull(guids, "guids"); + this.guids = guids; return this; } - public Builder ultraBlurColors(UltraBlurColors ultraBlurColors) { - Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); - this.ultraBlurColors = Optional.ofNullable(ultraBlurColors); + public Builder collection(List collection) { + Utils.checkNotNull(collection, "collection"); + this.collection = Optional.ofNullable(collection); return this; } - public Builder ultraBlurColors(Optional ultraBlurColors) { - Utils.checkNotNull(ultraBlurColors, "ultraBlurColors"); - this.ultraBlurColors = ultraBlurColors; - return this; - } - - public Builder metaDataRating(List metaDataRating) { - Utils.checkNotNull(metaDataRating, "metaDataRating"); - this.metaDataRating = Optional.ofNullable(metaDataRating); - return this; - } - - public Builder metaDataRating(Optional> metaDataRating) { - Utils.checkNotNull(metaDataRating, "metaDataRating"); - this.metaDataRating = metaDataRating; - return this; - } - - public Builder image(List image) { - Utils.checkNotNull(image, "image"); - this.image = Optional.ofNullable(image); - return this; - } - - public Builder image(Optional> image) { - Utils.checkNotNull(image, "image"); - this.image = image; - return this; - } - - public Builder titleSort(String titleSort) { - Utils.checkNotNull(titleSort, "titleSort"); - this.titleSort = Optional.ofNullable(titleSort); - return this; - } - - public Builder titleSort(Optional titleSort) { - Utils.checkNotNull(titleSort, "titleSort"); - this.titleSort = titleSort; - return this; - } - - public Builder viewCount(int viewCount) { - Utils.checkNotNull(viewCount, "viewCount"); - this.viewCount = Optional.ofNullable(viewCount); - return this; - } - - public Builder viewCount(Optional viewCount) { - Utils.checkNotNull(viewCount, "viewCount"); - this.viewCount = viewCount; - return this; - } - - public Builder lastViewedAt(int lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = Optional.ofNullable(lastViewedAt); - return this; - } - - public Builder lastViewedAt(Optional lastViewedAt) { - Utils.checkNotNull(lastViewedAt, "lastViewedAt"); - this.lastViewedAt = lastViewedAt; - return this; - } - - public Builder originalTitle(String originalTitle) { - Utils.checkNotNull(originalTitle, "originalTitle"); - this.originalTitle = Optional.ofNullable(originalTitle); - return this; - } - - public Builder originalTitle(Optional originalTitle) { - Utils.checkNotNull(originalTitle, "originalTitle"); - this.originalTitle = originalTitle; - return this; - } - - public Builder viewOffset(int viewOffset) { - Utils.checkNotNull(viewOffset, "viewOffset"); - this.viewOffset = Optional.ofNullable(viewOffset); - return this; - } - - public Builder viewOffset(Optional viewOffset) { - Utils.checkNotNull(viewOffset, "viewOffset"); - this.viewOffset = viewOffset; - return this; - } - - public Builder skipCount(int skipCount) { - Utils.checkNotNull(skipCount, "skipCount"); - this.skipCount = Optional.ofNullable(skipCount); - return this; - } - - public Builder skipCount(Optional skipCount) { - Utils.checkNotNull(skipCount, "skipCount"); - this.skipCount = skipCount; - return this; - } - - public Builder index(int index) { - Utils.checkNotNull(index, "index"); - this.index = Optional.ofNullable(index); - return this; - } - - public Builder index(Optional index) { - Utils.checkNotNull(index, "index"); - this.index = index; - return this; - } - - public Builder theme(String theme) { - Utils.checkNotNull(theme, "theme"); - this.theme = Optional.ofNullable(theme); - return this; - } - - public Builder theme(Optional theme) { - Utils.checkNotNull(theme, "theme"); - this.theme = theme; - return this; - } - - public Builder leafCount(int leafCount) { - Utils.checkNotNull(leafCount, "leafCount"); - this.leafCount = Optional.ofNullable(leafCount); - return this; - } - - public Builder leafCount(Optional leafCount) { - Utils.checkNotNull(leafCount, "leafCount"); - this.leafCount = leafCount; - return this; - } - - public Builder viewedLeafCount(int viewedLeafCount) { - Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); - this.viewedLeafCount = Optional.ofNullable(viewedLeafCount); - return this; - } - - public Builder viewedLeafCount(Optional viewedLeafCount) { - Utils.checkNotNull(viewedLeafCount, "viewedLeafCount"); - this.viewedLeafCount = viewedLeafCount; - return this; - } - - public Builder childCount(int childCount) { - Utils.checkNotNull(childCount, "childCount"); - this.childCount = Optional.ofNullable(childCount); - return this; - } - - public Builder childCount(Optional childCount) { - Utils.checkNotNull(childCount, "childCount"); - this.childCount = childCount; - return this; - } - - public Builder hasPremiumExtras(String hasPremiumExtras) { - Utils.checkNotNull(hasPremiumExtras, "hasPremiumExtras"); - this.hasPremiumExtras = Optional.ofNullable(hasPremiumExtras); - return this; - } - - public Builder hasPremiumExtras(Optional hasPremiumExtras) { - Utils.checkNotNull(hasPremiumExtras, "hasPremiumExtras"); - this.hasPremiumExtras = hasPremiumExtras; - return this; - } - - public Builder hasPremiumPrimaryExtra(String hasPremiumPrimaryExtra) { - Utils.checkNotNull(hasPremiumPrimaryExtra, "hasPremiumPrimaryExtra"); - this.hasPremiumPrimaryExtra = Optional.ofNullable(hasPremiumPrimaryExtra); - return this; - } - - public Builder hasPremiumPrimaryExtra(Optional hasPremiumPrimaryExtra) { - Utils.checkNotNull(hasPremiumPrimaryExtra, "hasPremiumPrimaryExtra"); - this.hasPremiumPrimaryExtra = hasPremiumPrimaryExtra; - return this; - } - - /** - * The rating key of the parent item. - * - */ - public Builder parentRatingKey(String parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = Optional.ofNullable(parentRatingKey); - return this; - } - - /** - * The rating key of the parent item. - * - */ - public Builder parentRatingKey(Optional parentRatingKey) { - Utils.checkNotNull(parentRatingKey, "parentRatingKey"); - this.parentRatingKey = parentRatingKey; - return this; - } - - public Builder parentGuid(String parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = Optional.ofNullable(parentGuid); - return this; - } - - public Builder parentGuid(Optional parentGuid) { - Utils.checkNotNull(parentGuid, "parentGuid"); - this.parentGuid = parentGuid; - return this; - } - - public Builder parentStudio(String parentStudio) { - Utils.checkNotNull(parentStudio, "parentStudio"); - this.parentStudio = Optional.ofNullable(parentStudio); - return this; - } - - public Builder parentStudio(Optional parentStudio) { - Utils.checkNotNull(parentStudio, "parentStudio"); - this.parentStudio = parentStudio; - return this; - } - - public Builder parentKey(String parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = Optional.ofNullable(parentKey); - return this; - } - - public Builder parentKey(Optional parentKey) { - Utils.checkNotNull(parentKey, "parentKey"); - this.parentKey = parentKey; - return this; - } - - public Builder parentTitle(String parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = Optional.ofNullable(parentTitle); - return this; - } - - public Builder parentTitle(Optional parentTitle) { - Utils.checkNotNull(parentTitle, "parentTitle"); - this.parentTitle = parentTitle; - return this; - } - - public Builder parentIndex(int parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = Optional.ofNullable(parentIndex); - return this; - } - - public Builder parentIndex(Optional parentIndex) { - Utils.checkNotNull(parentIndex, "parentIndex"); - this.parentIndex = parentIndex; - return this; - } - - public Builder parentYear(int parentYear) { - Utils.checkNotNull(parentYear, "parentYear"); - this.parentYear = Optional.ofNullable(parentYear); - return this; - } - - public Builder parentYear(Optional parentYear) { - Utils.checkNotNull(parentYear, "parentYear"); - this.parentYear = parentYear; - return this; - } - - public Builder parentThumb(String parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = Optional.ofNullable(parentThumb); - return this; - } - - public Builder parentThumb(Optional parentThumb) { - Utils.checkNotNull(parentThumb, "parentThumb"); - this.parentThumb = parentThumb; - return this; - } - - public Builder parentTheme(String parentTheme) { - Utils.checkNotNull(parentTheme, "parentTheme"); - this.parentTheme = Optional.ofNullable(parentTheme); - return this; - } - - public Builder parentTheme(Optional parentTheme) { - Utils.checkNotNull(parentTheme, "parentTheme"); - this.parentTheme = parentTheme; + public Builder collection(Optional> collection) { + Utils.checkNotNull(collection, "collection"); + this.collection = collection; return this; } public GetRecentlyAddedMetadata build() { return new GetRecentlyAddedMetadata( - ratingKey, - key, - guid, - studio, - skipChildren, - librarySectionID, - librarySectionTitle, - librarySectionKey, - type, - title, - slug, - contentRating, - summary, - rating, - audienceRating, - year, - seasonCount, - tagline, - flattenSeasons, - episodeSort, - enableCreditsMarkerGeneration, - showOrdering, - thumb, - art, - banner, - duration, - originallyAvailableAt, addedAt, - updatedAt, + art, audienceRatingImage, + audienceRating, chapterSource, - primaryExtraKey, - ratingImage, - grandparentRatingKey, + childCount, + contentRating, + createdAtAccuracy, + createdAtTZOffset, + duration, + grandparentArt, grandparentGuid, grandparentKey, - grandparentTitle, - grandparentThumb, - parentSlug, + grandparentRatingKey, grandparentSlug, - grandparentArt, grandparentTheme, + grandparentThumb, + grandparentTitle, + guid, + index, + key, + lastRatedAt, + lastViewedAt, + leafCount, + librarySectionID, + librarySectionKey, + librarySectionTitle, + originalTitle, + originallyAvailableAt, + parentGuid, + parentIndex, + parentKey, + parentRatingKey, + parentSlug, + parentStudio, + parentTheme, + parentThumb, + parentTitle, + parentYear, + primaryExtraKey, + ratingImage, + ratingKey, + rating, + seasonCount, + skipCount, + slug, + studio, + subtype, + summary, + tagline, + theme, + thumb, + titleSort, + title, + type, + updatedAt, + userRating, + viewCount, + viewOffset, + viewedLeafCount, + year, + image, + ultraBlurColors, media, genre, country, director, writer, - collection, role, + producer, + rating1, + similar, location, - mediaGuid, - ultraBlurColors, - metaDataRating, - image, - titleSort, - viewCount, - lastViewedAt, - originalTitle, - viewOffset, - skipCount, - index, - theme, - leafCount, - viewedLeafCount, - childCount, - hasPremiumExtras, - hasPremiumPrimaryExtra, - parentRatingKey, - parentGuid, - parentStudio, - parentKey, - parentTitle, - parentIndex, - parentYear, - parentThumb, - parentTheme); + guids, + collection); } } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming.java b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming.java new file mode 100644 index 00000000..fad969bd --- /dev/null +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming.java @@ -0,0 +1,99 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + + +package dev.plexapi.sdk.models.operations; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import dev.plexapi.sdk.utils.OneOfDeserializer; +import dev.plexapi.sdk.utils.TypedObject; +import dev.plexapi.sdk.utils.Utils.JsonShape; +import dev.plexapi.sdk.utils.Utils.TypeReferenceWithShape; +import dev.plexapi.sdk.utils.Utils; +import java.lang.Boolean; +import java.lang.Override; +import java.lang.String; +import java.lang.SuppressWarnings; +import java.util.Objects; +/** + * GetRecentlyAddedOptimizedForStreaming - Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + +@JsonDeserialize(using = GetRecentlyAddedOptimizedForStreaming._Deserializer.class) +public class GetRecentlyAddedOptimizedForStreaming { + + @JsonValue + private TypedObject value; + + private GetRecentlyAddedOptimizedForStreaming(TypedObject value) { + this.value = value; + } + + public static GetRecentlyAddedOptimizedForStreaming of(GetRecentlyAddedOptimizedForStreaming1 value) { + Utils.checkNotNull(value, "value"); + return new GetRecentlyAddedOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); + } + + public static GetRecentlyAddedOptimizedForStreaming of(boolean value) { + Utils.checkNotNull(value, "value"); + return new GetRecentlyAddedOptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); + } + + /** + * Returns an instance of one of these types: + *
    + *
  • {@code dev.plexapi.sdk.models.operations.GetRecentlyAddedOptimizedForStreaming1}
  • + *
  • {@code boolean}
  • + *
+ * + *

Use {@code instanceof} to determine what type is returned. For example: + * + *

+     * if (obj.value() instanceof String) {
+     *     String answer = (String) obj.value();
+     *     System.out.println("answer=" + answer);
+     * }
+     * 
+ * + * @return value of oneOf type + **/ + public java.lang.Object value() { + return value.value(); + } + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + GetRecentlyAddedOptimizedForStreaming other = (GetRecentlyAddedOptimizedForStreaming) o; + return Objects.deepEquals(this.value.value(), other.value.value()); + } + + @Override + public int hashCode() { + return Objects.hash(value.value()); + } + + @SuppressWarnings("serial") + public static final class _Deserializer extends OneOfDeserializer { + + public _Deserializer() { + super(GetRecentlyAddedOptimizedForStreaming.class, false, + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT), + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); + } + } + + @Override + public String toString() { + return Utils.toString(GetRecentlyAddedOptimizedForStreaming.class, + "value", value); + } + +} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming1.java b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming1.java new file mode 100644 index 00000000..ebd3200d --- /dev/null +++ b/src/main/java/dev/plexapi/sdk/models/operations/GetRecentlyAddedOptimizedForStreaming1.java @@ -0,0 +1,33 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + + +package dev.plexapi.sdk.models.operations; +import com.fasterxml.jackson.annotation.JsonValue; +import java.util.Objects; +import java.util.Optional; +public enum GetRecentlyAddedOptimizedForStreaming1 { + ZERO(0), + ONE(1); + + @JsonValue + private final int value; + + private GetRecentlyAddedOptimizedForStreaming1(int value) { + this.value = value; + } + + public int value() { + return value; + } + + public static Optional fromValue(int value) { + for (GetRecentlyAddedOptimizedForStreaming1 o: GetRecentlyAddedOptimizedForStreaming1.values()) { + if (Objects.deepEquals(o.value, value)) { + return Optional.of(o); + } + } + return Optional.empty(); + } +} diff --git a/src/main/java/dev/plexapi/sdk/models/operations/HasThumbnail.java b/src/main/java/dev/plexapi/sdk/models/operations/HasThumbnail.java index 20322e5f..8b2d0b2d 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/HasThumbnail.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/HasThumbnail.java @@ -8,6 +8,9 @@ import com.fasterxml.jackson.annotation.JsonValue; import java.lang.String; import java.util.Objects; import java.util.Optional; +/** + * HasThumbnail - Indicates if the part has a thumbnail. + */ public enum HasThumbnail { False("0"), True("1"); diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Location.java b/src/main/java/dev/plexapi/sdk/models/operations/Location.java index d28af787..7f68a139 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Location.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Location.java @@ -6,34 +6,29 @@ package dev.plexapi.sdk.models.operations; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; import java.lang.Override; import java.lang.String; import java.util.Objects; -import java.util.Optional; +/** + * Location - The folder path for the media item. + */ public class Location { - @JsonInclude(Include.NON_ABSENT) @JsonProperty("path") - private Optional path; + private String path; @JsonCreator public Location( - @JsonProperty("path") Optional path) { + @JsonProperty("path") String path) { Utils.checkNotNull(path, "path"); this.path = path; } - - public Location() { - this(Optional.empty()); - } @JsonIgnore - public Optional path() { + public String path() { return path; } @@ -42,12 +37,6 @@ public class Location { } public Location withPath(String path) { - Utils.checkNotNull(path, "path"); - this.path = Optional.ofNullable(path); - return this; - } - - public Location withPath(Optional path) { Utils.checkNotNull(path, "path"); this.path = path; return this; @@ -80,19 +69,13 @@ public class Location { public final static class Builder { - private Optional path = Optional.empty(); + private String path; private Builder() { // force use of static builder() method } public Builder path(String path) { - Utils.checkNotNull(path, "path"); - this.path = Optional.ofNullable(path); - return this; - } - - public Builder path(Optional path) { Utils.checkNotNull(path, "path"); this.path = path; return this; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Media.java b/src/main/java/dev/plexapi/sdk/models/operations/Media.java index e6865049..ad3dbc11 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Media.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Media.java @@ -9,12 +9,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.type.TypeReference; -import dev.plexapi.sdk.utils.LazySingletonValue; import dev.plexapi.sdk.utils.Utils; import java.lang.Boolean; -import java.lang.Double; +import java.lang.Float; import java.lang.Integer; +import java.lang.Long; import java.lang.Override; import java.lang.String; import java.lang.SuppressWarnings; @@ -24,64 +23,118 @@ import java.util.Optional; public class Media { + /** + * Unique media identifier. + */ @JsonProperty("id") - private int id; + private long id; + /** + * Duration of the media in milliseconds. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("duration") private Optional duration; + /** + * Bitrate in bits per second. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("bitrate") private Optional bitrate; + /** + * Video width in pixels. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("width") private Optional width; + /** + * Video height in pixels. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("height") private Optional height; + /** + * Aspect ratio of the video. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("aspectRatio") - private Optional aspectRatio; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("audioProfile") - private Optional audioProfile; + private Optional aspectRatio; + /** + * Number of audio channels. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("audioChannels") private Optional audioChannels; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("displayOffset") + private Optional displayOffset; + + /** + * Audio codec used. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("audioCodec") private Optional audioCodec; + /** + * Video codec used. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("videoCodec") private Optional videoCodec; + /** + * Video resolution (e.g., 4k). + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("videoResolution") private Optional videoResolution; + /** + * File container type. + */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("container") - private String container; + private Optional container; + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("videoFrameRate") private Optional videoFrameRate; + /** + * Video profile (e.g., main 10). + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("videoProfile") private Optional videoProfile; + /** + * Indicates whether voice activity is detected. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("hasVoiceActivity") private Optional hasVoiceActivity; + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("audioProfile") + private Optional audioProfile; + + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("optimizedForStreaming") private Optional optimizedForStreaming; @@ -90,37 +143,42 @@ public class Media { @JsonProperty("has64bitOffsets") private Optional has64bitOffsets; + /** + * An array of parts for this media item. + */ + @JsonInclude(Include.NON_ABSENT) @JsonProperty("Part") - private List part; + private Optional> part; @JsonCreator public Media( - @JsonProperty("id") int id, + @JsonProperty("id") long id, @JsonProperty("duration") Optional duration, @JsonProperty("bitrate") Optional bitrate, @JsonProperty("width") Optional width, @JsonProperty("height") Optional height, - @JsonProperty("aspectRatio") Optional aspectRatio, - @JsonProperty("audioProfile") Optional audioProfile, + @JsonProperty("aspectRatio") Optional aspectRatio, @JsonProperty("audioChannels") Optional audioChannels, + @JsonProperty("displayOffset") Optional displayOffset, @JsonProperty("audioCodec") Optional audioCodec, @JsonProperty("videoCodec") Optional videoCodec, @JsonProperty("videoResolution") Optional videoResolution, - @JsonProperty("container") String container, + @JsonProperty("container") Optional container, @JsonProperty("videoFrameRate") Optional videoFrameRate, @JsonProperty("videoProfile") Optional videoProfile, @JsonProperty("hasVoiceActivity") Optional hasVoiceActivity, + @JsonProperty("audioProfile") Optional audioProfile, @JsonProperty("optimizedForStreaming") Optional optimizedForStreaming, @JsonProperty("has64bitOffsets") Optional has64bitOffsets, - @JsonProperty("Part") List part) { + @JsonProperty("Part") Optional> part) { Utils.checkNotNull(id, "id"); Utils.checkNotNull(duration, "duration"); Utils.checkNotNull(bitrate, "bitrate"); Utils.checkNotNull(width, "width"); Utils.checkNotNull(height, "height"); Utils.checkNotNull(aspectRatio, "aspectRatio"); - Utils.checkNotNull(audioProfile, "audioProfile"); Utils.checkNotNull(audioChannels, "audioChannels"); + Utils.checkNotNull(displayOffset, "displayOffset"); Utils.checkNotNull(audioCodec, "audioCodec"); Utils.checkNotNull(videoCodec, "videoCodec"); Utils.checkNotNull(videoResolution, "videoResolution"); @@ -128,6 +186,7 @@ public class Media { Utils.checkNotNull(videoFrameRate, "videoFrameRate"); Utils.checkNotNull(videoProfile, "videoProfile"); Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); + Utils.checkNotNull(audioProfile, "audioProfile"); Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); Utils.checkNotNull(has64bitOffsets, "has64bitOffsets"); Utils.checkNotNull(part, "part"); @@ -137,8 +196,8 @@ public class Media { this.width = width; this.height = height; this.aspectRatio = aspectRatio; - this.audioProfile = audioProfile; this.audioChannels = audioChannels; + this.displayOffset = displayOffset; this.audioCodec = audioCodec; this.videoCodec = videoCodec; this.videoResolution = videoResolution; @@ -146,93 +205,146 @@ public class Media { this.videoFrameRate = videoFrameRate; this.videoProfile = videoProfile; this.hasVoiceActivity = hasVoiceActivity; + this.audioProfile = audioProfile; this.optimizedForStreaming = optimizedForStreaming; this.has64bitOffsets = has64bitOffsets; this.part = part; } public Media( - int id, - String container, - List part) { - this(id, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), container, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), part); + long id) { + this(id, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } + /** + * Unique media identifier. + */ @JsonIgnore - public int id() { + public long id() { return id; } + /** + * Duration of the media in milliseconds. + */ @JsonIgnore public Optional duration() { return duration; } + /** + * Bitrate in bits per second. + */ @JsonIgnore public Optional bitrate() { return bitrate; } + /** + * Video width in pixels. + */ @JsonIgnore public Optional width() { return width; } + /** + * Video height in pixels. + */ @JsonIgnore public Optional height() { return height; } + /** + * Aspect ratio of the video. + */ @JsonIgnore - public Optional aspectRatio() { + public Optional aspectRatio() { return aspectRatio; } - @JsonIgnore - public Optional audioProfile() { - return audioProfile; - } - + /** + * Number of audio channels. + */ @JsonIgnore public Optional audioChannels() { return audioChannels; } + @JsonIgnore + public Optional displayOffset() { + return displayOffset; + } + + /** + * Audio codec used. + */ @JsonIgnore public Optional audioCodec() { return audioCodec; } + /** + * Video codec used. + */ @JsonIgnore public Optional videoCodec() { return videoCodec; } + /** + * Video resolution (e.g., 4k). + */ @JsonIgnore public Optional videoResolution() { return videoResolution; } + /** + * File container type. + */ @JsonIgnore - public String container() { + public Optional container() { return container; } + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + */ @JsonIgnore public Optional videoFrameRate() { return videoFrameRate; } + /** + * Video profile (e.g., main 10). + */ @JsonIgnore public Optional videoProfile() { return videoProfile; } + /** + * Indicates whether voice activity is detected. + */ @JsonIgnore public Optional hasVoiceActivity() { return hasVoiceActivity; } + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + @JsonIgnore + public Optional audioProfile() { + return audioProfile; + } + + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ @SuppressWarnings("unchecked") @JsonIgnore public Optional optimizedForStreaming() { @@ -244,189 +356,306 @@ public class Media { return has64bitOffsets; } + /** + * An array of parts for this media item. + */ + @SuppressWarnings("unchecked") @JsonIgnore - public List part() { - return part; + public Optional> part() { + return (Optional>) part; } public final static Builder builder() { return new Builder(); } - public Media withId(int id) { + /** + * Unique media identifier. + */ + public Media withId(long id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } + /** + * Duration of the media in milliseconds. + */ public Media withDuration(int duration) { Utils.checkNotNull(duration, "duration"); this.duration = Optional.ofNullable(duration); return this; } + /** + * Duration of the media in milliseconds. + */ public Media withDuration(Optional duration) { Utils.checkNotNull(duration, "duration"); this.duration = duration; return this; } + /** + * Bitrate in bits per second. + */ public Media withBitrate(int bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = Optional.ofNullable(bitrate); return this; } + /** + * Bitrate in bits per second. + */ public Media withBitrate(Optional bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = bitrate; return this; } + /** + * Video width in pixels. + */ public Media withWidth(int width) { Utils.checkNotNull(width, "width"); this.width = Optional.ofNullable(width); return this; } + /** + * Video width in pixels. + */ public Media withWidth(Optional width) { Utils.checkNotNull(width, "width"); this.width = width; return this; } + /** + * Video height in pixels. + */ public Media withHeight(int height) { Utils.checkNotNull(height, "height"); this.height = Optional.ofNullable(height); return this; } + /** + * Video height in pixels. + */ public Media withHeight(Optional height) { Utils.checkNotNull(height, "height"); this.height = height; return this; } - public Media withAspectRatio(double aspectRatio) { + /** + * Aspect ratio of the video. + */ + public Media withAspectRatio(float aspectRatio) { Utils.checkNotNull(aspectRatio, "aspectRatio"); this.aspectRatio = Optional.ofNullable(aspectRatio); return this; } - public Media withAspectRatio(Optional aspectRatio) { + /** + * Aspect ratio of the video. + */ + public Media withAspectRatio(Optional aspectRatio) { Utils.checkNotNull(aspectRatio, "aspectRatio"); this.aspectRatio = aspectRatio; return this; } - public Media withAudioProfile(String audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = Optional.ofNullable(audioProfile); - return this; - } - - public Media withAudioProfile(Optional audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = audioProfile; - return this; - } - + /** + * Number of audio channels. + */ public Media withAudioChannels(int audioChannels) { Utils.checkNotNull(audioChannels, "audioChannels"); this.audioChannels = Optional.ofNullable(audioChannels); return this; } + /** + * Number of audio channels. + */ public Media withAudioChannels(Optional audioChannels) { Utils.checkNotNull(audioChannels, "audioChannels"); this.audioChannels = audioChannels; return this; } + public Media withDisplayOffset(int displayOffset) { + Utils.checkNotNull(displayOffset, "displayOffset"); + this.displayOffset = Optional.ofNullable(displayOffset); + return this; + } + + public Media withDisplayOffset(Optional displayOffset) { + Utils.checkNotNull(displayOffset, "displayOffset"); + this.displayOffset = displayOffset; + return this; + } + + /** + * Audio codec used. + */ public Media withAudioCodec(String audioCodec) { Utils.checkNotNull(audioCodec, "audioCodec"); this.audioCodec = Optional.ofNullable(audioCodec); return this; } + /** + * Audio codec used. + */ public Media withAudioCodec(Optional audioCodec) { Utils.checkNotNull(audioCodec, "audioCodec"); this.audioCodec = audioCodec; return this; } + /** + * Video codec used. + */ public Media withVideoCodec(String videoCodec) { Utils.checkNotNull(videoCodec, "videoCodec"); this.videoCodec = Optional.ofNullable(videoCodec); return this; } + /** + * Video codec used. + */ public Media withVideoCodec(Optional videoCodec) { Utils.checkNotNull(videoCodec, "videoCodec"); this.videoCodec = videoCodec; return this; } + /** + * Video resolution (e.g., 4k). + */ public Media withVideoResolution(String videoResolution) { Utils.checkNotNull(videoResolution, "videoResolution"); this.videoResolution = Optional.ofNullable(videoResolution); return this; } + /** + * Video resolution (e.g., 4k). + */ public Media withVideoResolution(Optional videoResolution) { Utils.checkNotNull(videoResolution, "videoResolution"); this.videoResolution = videoResolution; return this; } + /** + * File container type. + */ public Media withContainer(String container) { + Utils.checkNotNull(container, "container"); + this.container = Optional.ofNullable(container); + return this; + } + + /** + * File container type. + */ + public Media withContainer(Optional container) { Utils.checkNotNull(container, "container"); this.container = container; return this; } + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + */ public Media withVideoFrameRate(String videoFrameRate) { Utils.checkNotNull(videoFrameRate, "videoFrameRate"); this.videoFrameRate = Optional.ofNullable(videoFrameRate); return this; } + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + */ public Media withVideoFrameRate(Optional videoFrameRate) { Utils.checkNotNull(videoFrameRate, "videoFrameRate"); this.videoFrameRate = videoFrameRate; return this; } + /** + * Video profile (e.g., main 10). + */ public Media withVideoProfile(String videoProfile) { Utils.checkNotNull(videoProfile, "videoProfile"); this.videoProfile = Optional.ofNullable(videoProfile); return this; } + /** + * Video profile (e.g., main 10). + */ public Media withVideoProfile(Optional videoProfile) { Utils.checkNotNull(videoProfile, "videoProfile"); this.videoProfile = videoProfile; return this; } + /** + * Indicates whether voice activity is detected. + */ public Media withHasVoiceActivity(boolean hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = Optional.ofNullable(hasVoiceActivity); return this; } + /** + * Indicates whether voice activity is detected. + */ public Media withHasVoiceActivity(Optional hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = hasVoiceActivity; return this; } + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + public Media withAudioProfile(String audioProfile) { + Utils.checkNotNull(audioProfile, "audioProfile"); + this.audioProfile = Optional.ofNullable(audioProfile); + return this; + } + + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + public Media withAudioProfile(Optional audioProfile) { + Utils.checkNotNull(audioProfile, "audioProfile"); + this.audioProfile = audioProfile; + return this; + } + + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ public Media withOptimizedForStreaming(OptimizedForStreaming optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = Optional.ofNullable(optimizedForStreaming); return this; } + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ public Media withOptimizedForStreaming(Optional optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = optimizedForStreaming; @@ -445,7 +674,19 @@ public class Media { return this; } + /** + * An array of parts for this media item. + */ public Media withPart(List part) { + Utils.checkNotNull(part, "part"); + this.part = Optional.ofNullable(part); + return this; + } + + /** + * An array of parts for this media item. + */ + public Media withPart(Optional> part) { Utils.checkNotNull(part, "part"); this.part = part; return this; @@ -467,8 +708,8 @@ public class Media { Objects.deepEquals(this.width, other.width) && Objects.deepEquals(this.height, other.height) && Objects.deepEquals(this.aspectRatio, other.aspectRatio) && - Objects.deepEquals(this.audioProfile, other.audioProfile) && Objects.deepEquals(this.audioChannels, other.audioChannels) && + Objects.deepEquals(this.displayOffset, other.displayOffset) && Objects.deepEquals(this.audioCodec, other.audioCodec) && Objects.deepEquals(this.videoCodec, other.videoCodec) && Objects.deepEquals(this.videoResolution, other.videoResolution) && @@ -476,6 +717,7 @@ public class Media { Objects.deepEquals(this.videoFrameRate, other.videoFrameRate) && Objects.deepEquals(this.videoProfile, other.videoProfile) && Objects.deepEquals(this.hasVoiceActivity, other.hasVoiceActivity) && + Objects.deepEquals(this.audioProfile, other.audioProfile) && Objects.deepEquals(this.optimizedForStreaming, other.optimizedForStreaming) && Objects.deepEquals(this.has64bitOffsets, other.has64bitOffsets) && Objects.deepEquals(this.part, other.part); @@ -490,8 +732,8 @@ public class Media { width, height, aspectRatio, - audioProfile, audioChannels, + displayOffset, audioCodec, videoCodec, videoResolution, @@ -499,6 +741,7 @@ public class Media { videoFrameRate, videoProfile, hasVoiceActivity, + audioProfile, optimizedForStreaming, has64bitOffsets, part); @@ -513,8 +756,8 @@ public class Media { "width", width, "height", height, "aspectRatio", aspectRatio, - "audioProfile", audioProfile, "audioChannels", audioChannels, + "displayOffset", displayOffset, "audioCodec", audioCodec, "videoCodec", videoCodec, "videoResolution", videoResolution, @@ -522,6 +765,7 @@ public class Media { "videoFrameRate", videoFrameRate, "videoProfile", videoProfile, "hasVoiceActivity", hasVoiceActivity, + "audioProfile", audioProfile, "optimizedForStreaming", optimizedForStreaming, "has64bitOffsets", has64bitOffsets, "part", part); @@ -529,7 +773,7 @@ public class Media { public final static class Builder { - private Integer id; + private Long id; private Optional duration = Optional.empty(); @@ -539,19 +783,19 @@ public class Media { private Optional height = Optional.empty(); - private Optional aspectRatio = Optional.empty(); - - private Optional audioProfile = Optional.empty(); + private Optional aspectRatio = Optional.empty(); private Optional audioChannels = Optional.empty(); + private Optional displayOffset = Optional.empty(); + private Optional audioCodec = Optional.empty(); private Optional videoCodec = Optional.empty(); private Optional videoResolution = Optional.empty(); - private String container; + private Optional container = Optional.empty(); private Optional videoFrameRate = Optional.empty(); @@ -559,190 +803,305 @@ public class Media { private Optional hasVoiceActivity = Optional.empty(); - private Optional optimizedForStreaming; + private Optional audioProfile = Optional.empty(); + + private Optional optimizedForStreaming = Optional.empty(); private Optional has64bitOffsets = Optional.empty(); - private List part; + private Optional> part = Optional.empty(); private Builder() { // force use of static builder() method } - public Builder id(int id) { + /** + * Unique media identifier. + */ + public Builder id(long id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } + /** + * Duration of the media in milliseconds. + */ public Builder duration(int duration) { Utils.checkNotNull(duration, "duration"); this.duration = Optional.ofNullable(duration); return this; } + /** + * Duration of the media in milliseconds. + */ public Builder duration(Optional duration) { Utils.checkNotNull(duration, "duration"); this.duration = duration; return this; } + /** + * Bitrate in bits per second. + */ public Builder bitrate(int bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = Optional.ofNullable(bitrate); return this; } + /** + * Bitrate in bits per second. + */ public Builder bitrate(Optional bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = bitrate; return this; } + /** + * Video width in pixels. + */ public Builder width(int width) { Utils.checkNotNull(width, "width"); this.width = Optional.ofNullable(width); return this; } + /** + * Video width in pixels. + */ public Builder width(Optional width) { Utils.checkNotNull(width, "width"); this.width = width; return this; } + /** + * Video height in pixels. + */ public Builder height(int height) { Utils.checkNotNull(height, "height"); this.height = Optional.ofNullable(height); return this; } + /** + * Video height in pixels. + */ public Builder height(Optional height) { Utils.checkNotNull(height, "height"); this.height = height; return this; } - public Builder aspectRatio(double aspectRatio) { + /** + * Aspect ratio of the video. + */ + public Builder aspectRatio(float aspectRatio) { Utils.checkNotNull(aspectRatio, "aspectRatio"); this.aspectRatio = Optional.ofNullable(aspectRatio); return this; } - public Builder aspectRatio(Optional aspectRatio) { + /** + * Aspect ratio of the video. + */ + public Builder aspectRatio(Optional aspectRatio) { Utils.checkNotNull(aspectRatio, "aspectRatio"); this.aspectRatio = aspectRatio; return this; } - public Builder audioProfile(String audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = Optional.ofNullable(audioProfile); - return this; - } - - public Builder audioProfile(Optional audioProfile) { - Utils.checkNotNull(audioProfile, "audioProfile"); - this.audioProfile = audioProfile; - return this; - } - + /** + * Number of audio channels. + */ public Builder audioChannels(int audioChannels) { Utils.checkNotNull(audioChannels, "audioChannels"); this.audioChannels = Optional.ofNullable(audioChannels); return this; } + /** + * Number of audio channels. + */ public Builder audioChannels(Optional audioChannels) { Utils.checkNotNull(audioChannels, "audioChannels"); this.audioChannels = audioChannels; return this; } + public Builder displayOffset(int displayOffset) { + Utils.checkNotNull(displayOffset, "displayOffset"); + this.displayOffset = Optional.ofNullable(displayOffset); + return this; + } + + public Builder displayOffset(Optional displayOffset) { + Utils.checkNotNull(displayOffset, "displayOffset"); + this.displayOffset = displayOffset; + return this; + } + + /** + * Audio codec used. + */ public Builder audioCodec(String audioCodec) { Utils.checkNotNull(audioCodec, "audioCodec"); this.audioCodec = Optional.ofNullable(audioCodec); return this; } + /** + * Audio codec used. + */ public Builder audioCodec(Optional audioCodec) { Utils.checkNotNull(audioCodec, "audioCodec"); this.audioCodec = audioCodec; return this; } + /** + * Video codec used. + */ public Builder videoCodec(String videoCodec) { Utils.checkNotNull(videoCodec, "videoCodec"); this.videoCodec = Optional.ofNullable(videoCodec); return this; } + /** + * Video codec used. + */ public Builder videoCodec(Optional videoCodec) { Utils.checkNotNull(videoCodec, "videoCodec"); this.videoCodec = videoCodec; return this; } + /** + * Video resolution (e.g., 4k). + */ public Builder videoResolution(String videoResolution) { Utils.checkNotNull(videoResolution, "videoResolution"); this.videoResolution = Optional.ofNullable(videoResolution); return this; } + /** + * Video resolution (e.g., 4k). + */ public Builder videoResolution(Optional videoResolution) { Utils.checkNotNull(videoResolution, "videoResolution"); this.videoResolution = videoResolution; return this; } + /** + * File container type. + */ public Builder container(String container) { + Utils.checkNotNull(container, "container"); + this.container = Optional.ofNullable(container); + return this; + } + + /** + * File container type. + */ + public Builder container(Optional container) { Utils.checkNotNull(container, "container"); this.container = container; return this; } + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + */ public Builder videoFrameRate(String videoFrameRate) { Utils.checkNotNull(videoFrameRate, "videoFrameRate"); this.videoFrameRate = Optional.ofNullable(videoFrameRate); return this; } + /** + * Frame rate of the video. Values found include NTSC, PAL, 24p + * + */ public Builder videoFrameRate(Optional videoFrameRate) { Utils.checkNotNull(videoFrameRate, "videoFrameRate"); this.videoFrameRate = videoFrameRate; return this; } + /** + * Video profile (e.g., main 10). + */ public Builder videoProfile(String videoProfile) { Utils.checkNotNull(videoProfile, "videoProfile"); this.videoProfile = Optional.ofNullable(videoProfile); return this; } + /** + * Video profile (e.g., main 10). + */ public Builder videoProfile(Optional videoProfile) { Utils.checkNotNull(videoProfile, "videoProfile"); this.videoProfile = videoProfile; return this; } + /** + * Indicates whether voice activity is detected. + */ public Builder hasVoiceActivity(boolean hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = Optional.ofNullable(hasVoiceActivity); return this; } + /** + * Indicates whether voice activity is detected. + */ public Builder hasVoiceActivity(Optional hasVoiceActivity) { Utils.checkNotNull(hasVoiceActivity, "hasVoiceActivity"); this.hasVoiceActivity = hasVoiceActivity; return this; } + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + public Builder audioProfile(String audioProfile) { + Utils.checkNotNull(audioProfile, "audioProfile"); + this.audioProfile = Optional.ofNullable(audioProfile); + return this; + } + + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ + public Builder audioProfile(Optional audioProfile) { + Utils.checkNotNull(audioProfile, "audioProfile"); + this.audioProfile = audioProfile; + return this; + } + + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ public Builder optimizedForStreaming(OptimizedForStreaming optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = Optional.ofNullable(optimizedForStreaming); return this; } + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ public Builder optimizedForStreaming(Optional optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = optimizedForStreaming; @@ -761,24 +1120,34 @@ public class Media { return this; } + /** + * An array of parts for this media item. + */ public Builder part(List part) { + Utils.checkNotNull(part, "part"); + this.part = Optional.ofNullable(part); + return this; + } + + /** + * An array of parts for this media item. + */ + public Builder part(Optional> part) { Utils.checkNotNull(part, "part"); this.part = part; return this; } public Media build() { - if (optimizedForStreaming == null) { - optimizedForStreaming = _SINGLETON_VALUE_OptimizedForStreaming.value(); - } return new Media( + return new Media( id, duration, bitrate, width, height, aspectRatio, - audioProfile, audioChannels, + displayOffset, audioCodec, videoCodec, videoResolution, @@ -786,16 +1155,11 @@ public class Media { videoFrameRate, videoProfile, hasVoiceActivity, + audioProfile, optimizedForStreaming, has64bitOffsets, part); } - - private static final LazySingletonValue> _SINGLETON_VALUE_OptimizedForStreaming = - new LazySingletonValue<>( - "optimizedForStreaming", - "0", - new TypeReference>() {}); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/OptimizedForStreaming.java b/src/main/java/dev/plexapi/sdk/models/operations/OptimizedForStreaming.java index af742df5..f3af1475 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/OptimizedForStreaming.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/OptimizedForStreaming.java @@ -5,29 +5,95 @@ package dev.plexapi.sdk.models.operations; import com.fasterxml.jackson.annotation.JsonValue; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import dev.plexapi.sdk.utils.OneOfDeserializer; +import dev.plexapi.sdk.utils.TypedObject; +import dev.plexapi.sdk.utils.Utils.JsonShape; +import dev.plexapi.sdk.utils.Utils.TypeReferenceWithShape; +import dev.plexapi.sdk.utils.Utils; +import java.lang.Boolean; +import java.lang.Override; +import java.lang.String; +import java.lang.SuppressWarnings; import java.util.Objects; -import java.util.Optional; -public enum OptimizedForStreaming { - Disable(0), - Enable(1); +/** + * OptimizedForStreaming - Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + +@JsonDeserialize(using = OptimizedForStreaming._Deserializer.class) +public class OptimizedForStreaming { @JsonValue - private final int value; - - private OptimizedForStreaming(int value) { + private TypedObject value; + + private OptimizedForStreaming(TypedObject value) { this.value = value; } - - public int value() { - return value; + + public static OptimizedForStreaming of(One value) { + Utils.checkNotNull(value, "value"); + return new OptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); + } + + public static OptimizedForStreaming of(boolean value) { + Utils.checkNotNull(value, "value"); + return new OptimizedForStreaming(TypedObject.of(value, JsonShape.DEFAULT, new TypeReference(){})); } - public static Optional fromValue(int value) { - for (OptimizedForStreaming o: OptimizedForStreaming.values()) { - if (Objects.deepEquals(o.value, value)) { - return Optional.of(o); - } + /** + * Returns an instance of one of these types: + *
    + *
  • {@code dev.plexapi.sdk.models.operations.One}
  • + *
  • {@code boolean}
  • + *
+ * + *

Use {@code instanceof} to determine what type is returned. For example: + * + *

+     * if (obj.value() instanceof String) {
+     *     String answer = (String) obj.value();
+     *     System.out.println("answer=" + answer);
+     * }
+     * 
+ * + * @return value of oneOf type + **/ + public java.lang.Object value() { + return value.value(); + } + + @Override + public boolean equals(java.lang.Object o) { + if (this == o) { + return true; } - return Optional.empty(); + if (o == null || getClass() != o.getClass()) { + return false; + } + OptimizedForStreaming other = (OptimizedForStreaming) o; + return Objects.deepEquals(this.value.value(), other.value.value()); } + + @Override + public int hashCode() { + return Objects.hash(value.value()); + } + + @SuppressWarnings("serial") + public static final class _Deserializer extends OneOfDeserializer { + + public _Deserializer() { + super(OptimizedForStreaming.class, false, + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT), + TypeReferenceWithShape.of(new TypeReference() {}, JsonShape.DEFAULT)); + } + } + + @Override + public String toString() { + return Utils.toString(OptimizedForStreaming.class, + "value", value); + } + } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Part.java b/src/main/java/dev/plexapi/sdk/models/operations/Part.java index 7232a6d1..e8887d14 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Part.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Part.java @@ -24,29 +24,76 @@ import java.util.Optional; public class Part { - @JsonProperty("id") - private int id; + /** + * Indicates if the part is accessible. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("accessible") + private Optional accessible; + /** + * Indicates if the part exists. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("exists") + private Optional exists; + + /** + * Unique part identifier. + */ + @JsonProperty("id") + private long id; + + /** + * Key to access this part. + */ @JsonProperty("key") private String key; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("indexes") + private Optional indexes; + + /** + * Duration of the part in milliseconds. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("duration") private Optional duration; + /** + * File path for the part. + */ @JsonProperty("file") private String file; + /** + * File size in bytes. + */ @JsonProperty("size") private long size; - /** - * The container format of the media file. - * - */ - @JsonProperty("container") - private String container; + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("packetLength") + private Optional packetLength; + /** + * Container format of the part. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("container") + private Optional container; + + /** + * Video profile for the part. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("videoProfile") + private Optional videoProfile; + + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("audioProfile") private Optional audioProfile; @@ -55,112 +102,169 @@ public class Part { @JsonProperty("has64bitOffsets") private Optional has64bitOffsets; + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("optimizedForStreaming") - private Optional optimizedForStreaming; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("videoProfile") - private Optional videoProfile; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("indexes") - private Optional indexes; + private Optional optimizedForStreaming; @JsonInclude(Include.NON_ABSENT) @JsonProperty("hasThumbnail") private Optional hasThumbnail; + /** + * An array of streams for this part. + */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("Stream") private Optional> stream; @JsonCreator public Part( - @JsonProperty("id") int id, + @JsonProperty("accessible") Optional accessible, + @JsonProperty("exists") Optional exists, + @JsonProperty("id") long id, @JsonProperty("key") String key, + @JsonProperty("indexes") Optional indexes, @JsonProperty("duration") Optional duration, @JsonProperty("file") String file, @JsonProperty("size") long size, - @JsonProperty("container") String container, + @JsonProperty("packetLength") Optional packetLength, + @JsonProperty("container") Optional container, + @JsonProperty("videoProfile") Optional videoProfile, @JsonProperty("audioProfile") Optional audioProfile, @JsonProperty("has64bitOffsets") Optional has64bitOffsets, - @JsonProperty("optimizedForStreaming") Optional optimizedForStreaming, - @JsonProperty("videoProfile") Optional videoProfile, - @JsonProperty("indexes") Optional indexes, + @JsonProperty("optimizedForStreaming") Optional optimizedForStreaming, @JsonProperty("hasThumbnail") Optional hasThumbnail, @JsonProperty("Stream") Optional> stream) { + Utils.checkNotNull(accessible, "accessible"); + Utils.checkNotNull(exists, "exists"); Utils.checkNotNull(id, "id"); Utils.checkNotNull(key, "key"); + Utils.checkNotNull(indexes, "indexes"); Utils.checkNotNull(duration, "duration"); Utils.checkNotNull(file, "file"); Utils.checkNotNull(size, "size"); + Utils.checkNotNull(packetLength, "packetLength"); Utils.checkNotNull(container, "container"); + Utils.checkNotNull(videoProfile, "videoProfile"); Utils.checkNotNull(audioProfile, "audioProfile"); Utils.checkNotNull(has64bitOffsets, "has64bitOffsets"); Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); - Utils.checkNotNull(videoProfile, "videoProfile"); - Utils.checkNotNull(indexes, "indexes"); Utils.checkNotNull(hasThumbnail, "hasThumbnail"); Utils.checkNotNull(stream, "stream"); + this.accessible = accessible; + this.exists = exists; this.id = id; this.key = key; + this.indexes = indexes; this.duration = duration; this.file = file; this.size = size; + this.packetLength = packetLength; this.container = container; + this.videoProfile = videoProfile; this.audioProfile = audioProfile; this.has64bitOffsets = has64bitOffsets; this.optimizedForStreaming = optimizedForStreaming; - this.videoProfile = videoProfile; - this.indexes = indexes; this.hasThumbnail = hasThumbnail; this.stream = stream; } public Part( - int id, + long id, String key, String file, - long size, - String container) { - this(id, key, Optional.empty(), file, size, container, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + long size) { + this(Optional.empty(), Optional.empty(), id, key, Optional.empty(), Optional.empty(), file, size, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } + /** + * Indicates if the part is accessible. + */ @JsonIgnore - public int id() { + public Optional accessible() { + return accessible; + } + + /** + * Indicates if the part exists. + */ + @JsonIgnore + public Optional exists() { + return exists; + } + + /** + * Unique part identifier. + */ + @JsonIgnore + public long id() { return id; } + /** + * Key to access this part. + */ @JsonIgnore public String key() { return key; } + @JsonIgnore + public Optional indexes() { + return indexes; + } + + /** + * Duration of the part in milliseconds. + */ @JsonIgnore public Optional duration() { return duration; } + /** + * File path for the part. + */ @JsonIgnore public String file() { return file; } + /** + * File size in bytes. + */ @JsonIgnore public long size() { return size; } + @JsonIgnore + public Optional packetLength() { + return packetLength; + } + /** - * The container format of the media file. - * + * Container format of the part. */ @JsonIgnore - public String container() { + public Optional container() { return container; } + /** + * Video profile for the part. + */ + @JsonIgnore + public Optional videoProfile() { + return videoProfile; + } + + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ @JsonIgnore public Optional audioProfile() { return audioProfile; @@ -171,19 +275,13 @@ public class Part { return has64bitOffsets; } + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + @SuppressWarnings("unchecked") @JsonIgnore - public Optional optimizedForStreaming() { - return optimizedForStreaming; - } - - @JsonIgnore - public Optional videoProfile() { - return videoProfile; - } - - @JsonIgnore - public Optional indexes() { - return indexes; + public Optional optimizedForStreaming() { + return (Optional) optimizedForStreaming; } @SuppressWarnings("unchecked") @@ -192,6 +290,9 @@ public class Part { return (Optional) hasThumbnail; } + /** + * An array of streams for this part. + */ @SuppressWarnings("unchecked") @JsonIgnore public Optional> stream() { @@ -202,58 +303,168 @@ public class Part { return new Builder(); } - public Part withId(int id) { + /** + * Indicates if the part is accessible. + */ + public Part withAccessible(boolean accessible) { + Utils.checkNotNull(accessible, "accessible"); + this.accessible = Optional.ofNullable(accessible); + return this; + } + + /** + * Indicates if the part is accessible. + */ + public Part withAccessible(Optional accessible) { + Utils.checkNotNull(accessible, "accessible"); + this.accessible = accessible; + return this; + } + + /** + * Indicates if the part exists. + */ + public Part withExists(boolean exists) { + Utils.checkNotNull(exists, "exists"); + this.exists = Optional.ofNullable(exists); + return this; + } + + /** + * Indicates if the part exists. + */ + public Part withExists(Optional exists) { + Utils.checkNotNull(exists, "exists"); + this.exists = exists; + return this; + } + + /** + * Unique part identifier. + */ + public Part withId(long id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } + /** + * Key to access this part. + */ public Part withKey(String key) { Utils.checkNotNull(key, "key"); this.key = key; return this; } + public Part withIndexes(String indexes) { + Utils.checkNotNull(indexes, "indexes"); + this.indexes = Optional.ofNullable(indexes); + return this; + } + + public Part withIndexes(Optional indexes) { + Utils.checkNotNull(indexes, "indexes"); + this.indexes = indexes; + return this; + } + + /** + * Duration of the part in milliseconds. + */ public Part withDuration(int duration) { Utils.checkNotNull(duration, "duration"); this.duration = Optional.ofNullable(duration); return this; } + /** + * Duration of the part in milliseconds. + */ public Part withDuration(Optional duration) { Utils.checkNotNull(duration, "duration"); this.duration = duration; return this; } + /** + * File path for the part. + */ public Part withFile(String file) { Utils.checkNotNull(file, "file"); this.file = file; return this; } + /** + * File size in bytes. + */ public Part withSize(long size) { Utils.checkNotNull(size, "size"); this.size = size; return this; } + public Part withPacketLength(int packetLength) { + Utils.checkNotNull(packetLength, "packetLength"); + this.packetLength = Optional.ofNullable(packetLength); + return this; + } + + public Part withPacketLength(Optional packetLength) { + Utils.checkNotNull(packetLength, "packetLength"); + this.packetLength = packetLength; + return this; + } + /** - * The container format of the media file. - * + * Container format of the part. */ public Part withContainer(String container) { + Utils.checkNotNull(container, "container"); + this.container = Optional.ofNullable(container); + return this; + } + + /** + * Container format of the part. + */ + public Part withContainer(Optional container) { Utils.checkNotNull(container, "container"); this.container = container; return this; } + /** + * Video profile for the part. + */ + public Part withVideoProfile(String videoProfile) { + Utils.checkNotNull(videoProfile, "videoProfile"); + this.videoProfile = Optional.ofNullable(videoProfile); + return this; + } + + /** + * Video profile for the part. + */ + public Part withVideoProfile(Optional videoProfile) { + Utils.checkNotNull(videoProfile, "videoProfile"); + this.videoProfile = videoProfile; + return this; + } + + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ public Part withAudioProfile(String audioProfile) { Utils.checkNotNull(audioProfile, "audioProfile"); this.audioProfile = Optional.ofNullable(audioProfile); return this; } + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ public Part withAudioProfile(Optional audioProfile) { Utils.checkNotNull(audioProfile, "audioProfile"); this.audioProfile = audioProfile; @@ -272,42 +483,24 @@ public class Part { return this; } - public Part withOptimizedForStreaming(boolean optimizedForStreaming) { + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + public Part withOptimizedForStreaming(GetRecentlyAddedOptimizedForStreaming optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = Optional.ofNullable(optimizedForStreaming); return this; } - public Part withOptimizedForStreaming(Optional optimizedForStreaming) { + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + public Part withOptimizedForStreaming(Optional optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = optimizedForStreaming; return this; } - public Part withVideoProfile(String videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = Optional.ofNullable(videoProfile); - return this; - } - - public Part withVideoProfile(Optional videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = videoProfile; - return this; - } - - public Part withIndexes(String indexes) { - Utils.checkNotNull(indexes, "indexes"); - this.indexes = Optional.ofNullable(indexes); - return this; - } - - public Part withIndexes(Optional indexes) { - Utils.checkNotNull(indexes, "indexes"); - this.indexes = indexes; - return this; - } - public Part withHasThumbnail(HasThumbnail hasThumbnail) { Utils.checkNotNull(hasThumbnail, "hasThumbnail"); this.hasThumbnail = Optional.ofNullable(hasThumbnail); @@ -320,12 +513,18 @@ public class Part { return this; } + /** + * An array of streams for this part. + */ public Part withStream(List stream) { Utils.checkNotNull(stream, "stream"); this.stream = Optional.ofNullable(stream); return this; } + /** + * An array of streams for this part. + */ public Part withStream(Optional> stream) { Utils.checkNotNull(stream, "stream"); this.stream = stream; @@ -342,17 +541,20 @@ public class Part { } Part other = (Part) o; return + Objects.deepEquals(this.accessible, other.accessible) && + Objects.deepEquals(this.exists, other.exists) && Objects.deepEquals(this.id, other.id) && Objects.deepEquals(this.key, other.key) && + Objects.deepEquals(this.indexes, other.indexes) && Objects.deepEquals(this.duration, other.duration) && Objects.deepEquals(this.file, other.file) && Objects.deepEquals(this.size, other.size) && + Objects.deepEquals(this.packetLength, other.packetLength) && Objects.deepEquals(this.container, other.container) && + Objects.deepEquals(this.videoProfile, other.videoProfile) && Objects.deepEquals(this.audioProfile, other.audioProfile) && Objects.deepEquals(this.has64bitOffsets, other.has64bitOffsets) && Objects.deepEquals(this.optimizedForStreaming, other.optimizedForStreaming) && - Objects.deepEquals(this.videoProfile, other.videoProfile) && - Objects.deepEquals(this.indexes, other.indexes) && Objects.deepEquals(this.hasThumbnail, other.hasThumbnail) && Objects.deepEquals(this.stream, other.stream); } @@ -360,17 +562,20 @@ public class Part { @Override public int hashCode() { return Objects.hash( + accessible, + exists, id, key, + indexes, duration, file, size, + packetLength, container, + videoProfile, audioProfile, has64bitOffsets, optimizedForStreaming, - videoProfile, - indexes, hasThumbnail, stream); } @@ -378,44 +583,53 @@ public class Part { @Override public String toString() { return Utils.toString(Part.class, + "accessible", accessible, + "exists", exists, "id", id, "key", key, + "indexes", indexes, "duration", duration, "file", file, "size", size, + "packetLength", packetLength, "container", container, + "videoProfile", videoProfile, "audioProfile", audioProfile, "has64bitOffsets", has64bitOffsets, "optimizedForStreaming", optimizedForStreaming, - "videoProfile", videoProfile, - "indexes", indexes, "hasThumbnail", hasThumbnail, "stream", stream); } public final static class Builder { - private Integer id; + private Optional accessible = Optional.empty(); + + private Optional exists = Optional.empty(); + + private Long id; private String key; + private Optional indexes = Optional.empty(); + private Optional duration = Optional.empty(); private String file; private Long size; - private String container; + private Optional packetLength = Optional.empty(); + + private Optional container = Optional.empty(); + + private Optional videoProfile = Optional.empty(); private Optional audioProfile = Optional.empty(); private Optional has64bitOffsets = Optional.empty(); - private Optional optimizedForStreaming = Optional.empty(); - - private Optional videoProfile = Optional.empty(); - - private Optional indexes = Optional.empty(); + private Optional optimizedForStreaming = Optional.empty(); private Optional hasThumbnail; @@ -425,58 +639,168 @@ public class Part { // force use of static builder() method } - public Builder id(int id) { + /** + * Indicates if the part is accessible. + */ + public Builder accessible(boolean accessible) { + Utils.checkNotNull(accessible, "accessible"); + this.accessible = Optional.ofNullable(accessible); + return this; + } + + /** + * Indicates if the part is accessible. + */ + public Builder accessible(Optional accessible) { + Utils.checkNotNull(accessible, "accessible"); + this.accessible = accessible; + return this; + } + + /** + * Indicates if the part exists. + */ + public Builder exists(boolean exists) { + Utils.checkNotNull(exists, "exists"); + this.exists = Optional.ofNullable(exists); + return this; + } + + /** + * Indicates if the part exists. + */ + public Builder exists(Optional exists) { + Utils.checkNotNull(exists, "exists"); + this.exists = exists; + return this; + } + + /** + * Unique part identifier. + */ + public Builder id(long id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } + /** + * Key to access this part. + */ public Builder key(String key) { Utils.checkNotNull(key, "key"); this.key = key; return this; } + public Builder indexes(String indexes) { + Utils.checkNotNull(indexes, "indexes"); + this.indexes = Optional.ofNullable(indexes); + return this; + } + + public Builder indexes(Optional indexes) { + Utils.checkNotNull(indexes, "indexes"); + this.indexes = indexes; + return this; + } + + /** + * Duration of the part in milliseconds. + */ public Builder duration(int duration) { Utils.checkNotNull(duration, "duration"); this.duration = Optional.ofNullable(duration); return this; } + /** + * Duration of the part in milliseconds. + */ public Builder duration(Optional duration) { Utils.checkNotNull(duration, "duration"); this.duration = duration; return this; } + /** + * File path for the part. + */ public Builder file(String file) { Utils.checkNotNull(file, "file"); this.file = file; return this; } + /** + * File size in bytes. + */ public Builder size(long size) { Utils.checkNotNull(size, "size"); this.size = size; return this; } + public Builder packetLength(int packetLength) { + Utils.checkNotNull(packetLength, "packetLength"); + this.packetLength = Optional.ofNullable(packetLength); + return this; + } + + public Builder packetLength(Optional packetLength) { + Utils.checkNotNull(packetLength, "packetLength"); + this.packetLength = packetLength; + return this; + } + /** - * The container format of the media file. - * + * Container format of the part. */ public Builder container(String container) { + Utils.checkNotNull(container, "container"); + this.container = Optional.ofNullable(container); + return this; + } + + /** + * Container format of the part. + */ + public Builder container(Optional container) { Utils.checkNotNull(container, "container"); this.container = container; return this; } + /** + * Video profile for the part. + */ + public Builder videoProfile(String videoProfile) { + Utils.checkNotNull(videoProfile, "videoProfile"); + this.videoProfile = Optional.ofNullable(videoProfile); + return this; + } + + /** + * Video profile for the part. + */ + public Builder videoProfile(Optional videoProfile) { + Utils.checkNotNull(videoProfile, "videoProfile"); + this.videoProfile = videoProfile; + return this; + } + + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ public Builder audioProfile(String audioProfile) { Utils.checkNotNull(audioProfile, "audioProfile"); this.audioProfile = Optional.ofNullable(audioProfile); return this; } + /** + * The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). + */ public Builder audioProfile(Optional audioProfile) { Utils.checkNotNull(audioProfile, "audioProfile"); this.audioProfile = audioProfile; @@ -495,42 +819,24 @@ public class Part { return this; } - public Builder optimizedForStreaming(boolean optimizedForStreaming) { + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + public Builder optimizedForStreaming(GetRecentlyAddedOptimizedForStreaming optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = Optional.ofNullable(optimizedForStreaming); return this; } - public Builder optimizedForStreaming(Optional optimizedForStreaming) { + /** + * Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true + */ + public Builder optimizedForStreaming(Optional optimizedForStreaming) { Utils.checkNotNull(optimizedForStreaming, "optimizedForStreaming"); this.optimizedForStreaming = optimizedForStreaming; return this; } - public Builder videoProfile(String videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = Optional.ofNullable(videoProfile); - return this; - } - - public Builder videoProfile(Optional videoProfile) { - Utils.checkNotNull(videoProfile, "videoProfile"); - this.videoProfile = videoProfile; - return this; - } - - public Builder indexes(String indexes) { - Utils.checkNotNull(indexes, "indexes"); - this.indexes = Optional.ofNullable(indexes); - return this; - } - - public Builder indexes(Optional indexes) { - Utils.checkNotNull(indexes, "indexes"); - this.indexes = indexes; - return this; - } - public Builder hasThumbnail(HasThumbnail hasThumbnail) { Utils.checkNotNull(hasThumbnail, "hasThumbnail"); this.hasThumbnail = Optional.ofNullable(hasThumbnail); @@ -543,12 +849,18 @@ public class Part { return this; } + /** + * An array of streams for this part. + */ public Builder stream(List stream) { Utils.checkNotNull(stream, "stream"); this.stream = Optional.ofNullable(stream); return this; } + /** + * An array of streams for this part. + */ public Builder stream(Optional> stream) { Utils.checkNotNull(stream, "stream"); this.stream = stream; @@ -559,17 +871,20 @@ public class Part { if (hasThumbnail == null) { hasThumbnail = _SINGLETON_VALUE_HasThumbnail.value(); } return new Part( + accessible, + exists, id, key, + indexes, duration, file, size, + packetLength, container, + videoProfile, audioProfile, has64bitOffsets, optimizedForStreaming, - videoProfile, - indexes, hasThumbnail, stream); } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Producer.java b/src/main/java/dev/plexapi/sdk/models/operations/Producer.java index 51a83ac7..e8e2dcff 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Producer.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Producer.java @@ -19,38 +19,32 @@ import java.util.Optional; public class Producer { /** - * The unique role identifier. + * Unique identifier for the producer. */ @JsonProperty("id") private long id; /** - * The filter string for the role. + * The filter string used to query this producer. */ @JsonProperty("filter") private String filter; /** - * The actor's name. + * The name of the producer */ @JsonProperty("tag") private String tag; /** - * A key associated with the actor tag. - */ - @JsonProperty("tagKey") - private String tagKey; - - /** - * The character name or role. + * A unique key associated with the producer's tag, used for internal identification. */ @JsonInclude(Include.NON_ABSENT) - @JsonProperty("role") - private Optional role; + @JsonProperty("tagKey") + private Optional tagKey; /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the actor. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("thumb") @@ -61,33 +55,29 @@ public class Producer { @JsonProperty("id") long id, @JsonProperty("filter") String filter, @JsonProperty("tag") String tag, - @JsonProperty("tagKey") String tagKey, - @JsonProperty("role") Optional role, + @JsonProperty("tagKey") Optional tagKey, @JsonProperty("thumb") Optional thumb) { Utils.checkNotNull(id, "id"); Utils.checkNotNull(filter, "filter"); Utils.checkNotNull(tag, "tag"); Utils.checkNotNull(tagKey, "tagKey"); - Utils.checkNotNull(role, "role"); Utils.checkNotNull(thumb, "thumb"); this.id = id; this.filter = filter; this.tag = tag; this.tagKey = tagKey; - this.role = role; this.thumb = thumb; } public Producer( long id, String filter, - String tag, - String tagKey) { - this(id, filter, tag, tagKey, Optional.empty(), Optional.empty()); + String tag) { + this(id, filter, tag, Optional.empty(), Optional.empty()); } /** - * The unique role identifier. + * Unique identifier for the producer. */ @JsonIgnore public long id() { @@ -95,7 +85,7 @@ public class Producer { } /** - * The filter string for the role. + * The filter string used to query this producer. */ @JsonIgnore public String filter() { @@ -103,7 +93,7 @@ public class Producer { } /** - * The actor's name. + * The name of the producer */ @JsonIgnore public String tag() { @@ -111,23 +101,15 @@ public class Producer { } /** - * A key associated with the actor tag. + * A unique key associated with the producer's tag, used for internal identification. */ @JsonIgnore - public String tagKey() { + public Optional tagKey() { return tagKey; } /** - * The character name or role. - */ - @JsonIgnore - public Optional role() { - return role; - } - - /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the actor. */ @JsonIgnore public Optional thumb() { @@ -139,7 +121,7 @@ public class Producer { } /** - * The unique role identifier. + * Unique identifier for the producer. */ public Producer withId(long id) { Utils.checkNotNull(id, "id"); @@ -148,7 +130,7 @@ public class Producer { } /** - * The filter string for the role. + * The filter string used to query this producer. */ public Producer withFilter(String filter) { Utils.checkNotNull(filter, "filter"); @@ -157,7 +139,7 @@ public class Producer { } /** - * The actor's name. + * The name of the producer */ public Producer withTag(String tag) { Utils.checkNotNull(tag, "tag"); @@ -166,34 +148,25 @@ public class Producer { } /** - * A key associated with the actor tag. + * A unique key associated with the producer's tag, used for internal identification. */ public Producer withTagKey(String tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = Optional.ofNullable(tagKey); + return this; + } + + /** + * A unique key associated with the producer's tag, used for internal identification. + */ + public Producer withTagKey(Optional tagKey) { Utils.checkNotNull(tagKey, "tagKey"); this.tagKey = tagKey; return this; } /** - * The character name or role. - */ - public Producer withRole(String role) { - Utils.checkNotNull(role, "role"); - this.role = Optional.ofNullable(role); - return this; - } - - /** - * The character name or role. - */ - public Producer withRole(Optional role) { - Utils.checkNotNull(role, "role"); - this.role = role; - return this; - } - - /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the actor. */ public Producer withThumb(String thumb) { Utils.checkNotNull(thumb, "thumb"); @@ -202,7 +175,7 @@ public class Producer { } /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the actor. */ public Producer withThumb(Optional thumb) { Utils.checkNotNull(thumb, "thumb"); @@ -224,7 +197,6 @@ public class Producer { Objects.deepEquals(this.filter, other.filter) && Objects.deepEquals(this.tag, other.tag) && Objects.deepEquals(this.tagKey, other.tagKey) && - Objects.deepEquals(this.role, other.role) && Objects.deepEquals(this.thumb, other.thumb); } @@ -235,7 +207,6 @@ public class Producer { filter, tag, tagKey, - role, thumb); } @@ -246,7 +217,6 @@ public class Producer { "filter", filter, "tag", tag, "tagKey", tagKey, - "role", role, "thumb", thumb); } @@ -258,9 +228,7 @@ public class Producer { private String tag; - private String tagKey; - - private Optional role = Optional.empty(); + private Optional tagKey = Optional.empty(); private Optional thumb = Optional.empty(); @@ -269,7 +237,7 @@ public class Producer { } /** - * The unique role identifier. + * Unique identifier for the producer. */ public Builder id(long id) { Utils.checkNotNull(id, "id"); @@ -278,7 +246,7 @@ public class Producer { } /** - * The filter string for the role. + * The filter string used to query this producer. */ public Builder filter(String filter) { Utils.checkNotNull(filter, "filter"); @@ -287,7 +255,7 @@ public class Producer { } /** - * The actor's name. + * The name of the producer */ public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); @@ -296,34 +264,25 @@ public class Producer { } /** - * A key associated with the actor tag. + * A unique key associated with the producer's tag, used for internal identification. */ public Builder tagKey(String tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = Optional.ofNullable(tagKey); + return this; + } + + /** + * A unique key associated with the producer's tag, used for internal identification. + */ + public Builder tagKey(Optional tagKey) { Utils.checkNotNull(tagKey, "tagKey"); this.tagKey = tagKey; return this; } /** - * The character name or role. - */ - public Builder role(String role) { - Utils.checkNotNull(role, "role"); - this.role = Optional.ofNullable(role); - return this; - } - - /** - * The character name or role. - */ - public Builder role(Optional role) { - Utils.checkNotNull(role, "role"); - this.role = role; - return this; - } - - /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the actor. */ public Builder thumb(String thumb) { Utils.checkNotNull(thumb, "thumb"); @@ -332,7 +291,7 @@ public class Producer { } /** - * URL for the role thumbnail image. + * The URL of the thumbnail image for the actor. */ public Builder thumb(Optional thumb) { Utils.checkNotNull(thumb, "thumb"); @@ -346,7 +305,6 @@ public class Producer { filter, tag, tagKey, - role, thumb); } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetaDataRating.java b/src/main/java/dev/plexapi/sdk/models/operations/Rating.java similarity index 66% rename from src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetaDataRating.java rename to src/main/java/dev/plexapi/sdk/models/operations/Rating.java index d6813a7a..e0651a51 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/GetLibraryItemsMetaDataRating.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Rating.java @@ -8,35 +8,29 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; -import java.lang.Float; +import java.lang.Double; import java.lang.Override; import java.lang.String; import java.util.Objects; +/** + * Rating - The type of rating, for example 'audience' or 'critic'. + */ -public class GetLibraryItemsMetaDataRating { +public class Rating { - /** - * A URI or path to the rating image. - */ @JsonProperty("image") private String image; - /** - * The value of the rating. - */ @JsonProperty("value") - private float value; + private double value; - /** - * The type of rating (e.g., audience, critic). - */ @JsonProperty("type") private String type; @JsonCreator - public GetLibraryItemsMetaDataRating( + public Rating( @JsonProperty("image") String image, - @JsonProperty("value") float value, + @JsonProperty("value") double value, @JsonProperty("type") String type) { Utils.checkNotNull(image, "image"); Utils.checkNotNull(value, "value"); @@ -46,25 +40,16 @@ public class GetLibraryItemsMetaDataRating { this.type = type; } - /** - * A URI or path to the rating image. - */ @JsonIgnore public String image() { return image; } - /** - * The value of the rating. - */ @JsonIgnore - public float value() { + public double value() { return value; } - /** - * The type of rating (e.g., audience, critic). - */ @JsonIgnore public String type() { return type; @@ -74,28 +59,19 @@ public class GetLibraryItemsMetaDataRating { return new Builder(); } - /** - * A URI or path to the rating image. - */ - public GetLibraryItemsMetaDataRating withImage(String image) { + public Rating withImage(String image) { Utils.checkNotNull(image, "image"); this.image = image; return this; } - /** - * The value of the rating. - */ - public GetLibraryItemsMetaDataRating withValue(float value) { + public Rating withValue(double value) { Utils.checkNotNull(value, "value"); this.value = value; return this; } - /** - * The type of rating (e.g., audience, critic). - */ - public GetLibraryItemsMetaDataRating withType(String type) { + public Rating withType(String type) { Utils.checkNotNull(type, "type"); this.type = type; return this; @@ -109,7 +85,7 @@ public class GetLibraryItemsMetaDataRating { if (o == null || getClass() != o.getClass()) { return false; } - GetLibraryItemsMetaDataRating other = (GetLibraryItemsMetaDataRating) o; + Rating other = (Rating) o; return Objects.deepEquals(this.image, other.image) && Objects.deepEquals(this.value, other.value) && @@ -126,7 +102,7 @@ public class GetLibraryItemsMetaDataRating { @Override public String toString() { - return Utils.toString(GetLibraryItemsMetaDataRating.class, + return Utils.toString(Rating.class, "image", image, "value", value, "type", type); @@ -136,7 +112,7 @@ public class GetLibraryItemsMetaDataRating { private String image; - private Float value; + private Double value; private String type; @@ -144,35 +120,26 @@ public class GetLibraryItemsMetaDataRating { // force use of static builder() method } - /** - * A URI or path to the rating image. - */ public Builder image(String image) { Utils.checkNotNull(image, "image"); this.image = image; return this; } - /** - * The value of the rating. - */ - public Builder value(float value) { + public Builder value(double value) { Utils.checkNotNull(value, "value"); this.value = value; return this; } - /** - * The type of rating (e.g., audience, critic). - */ public Builder type(String type) { Utils.checkNotNull(type, "type"); this.type = type; return this; } - public GetLibraryItemsMetaDataRating build() { - return new GetLibraryItemsMetaDataRating( + public Rating build() { + return new Rating( image, value, type); diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Role.java b/src/main/java/dev/plexapi/sdk/models/operations/Role.java index 290d7729..7c4230ee 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Role.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Role.java @@ -19,107 +19,99 @@ import java.util.Optional; public class Role { /** - * The ID of the tag or actor. + * Unique identifier for the actor or role. */ - @JsonInclude(Include.NON_ABSENT) @JsonProperty("id") - private Optional id; + private long id; /** - * 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. */ - @JsonInclude(Include.NON_ABSENT) @JsonProperty("filter") - private Optional filter; + private String filter; /** - * The thumbnail of the actor + * The display tag for the actor (typically the actor's name). */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("thumb") - private Optional thumb; - - /** - * The name of the tag or actor. - */ - @JsonInclude(Include.NON_ABSENT) @JsonProperty("tag") - private Optional tag; + private String tag; /** - * Unique identifier for the tag. + * A unique key associated with the actor's tag, used for internal identification. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("tagKey") private Optional tagKey; /** - * The role of the actor or tag in the media. + * The role played by the actor in the media item. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("role") private Optional role; + /** + * The URL of the thumbnail image for the actor. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("thumb") + private Optional thumb; + @JsonCreator public Role( - @JsonProperty("id") Optional id, - @JsonProperty("filter") Optional filter, - @JsonProperty("thumb") Optional thumb, - @JsonProperty("tag") Optional tag, + @JsonProperty("id") long id, + @JsonProperty("filter") String filter, + @JsonProperty("tag") String tag, @JsonProperty("tagKey") Optional tagKey, - @JsonProperty("role") Optional role) { + @JsonProperty("role") Optional role, + @JsonProperty("thumb") Optional thumb) { Utils.checkNotNull(id, "id"); Utils.checkNotNull(filter, "filter"); - Utils.checkNotNull(thumb, "thumb"); Utils.checkNotNull(tag, "tag"); Utils.checkNotNull(tagKey, "tagKey"); Utils.checkNotNull(role, "role"); + Utils.checkNotNull(thumb, "thumb"); this.id = id; this.filter = filter; - this.thumb = thumb; this.tag = tag; this.tagKey = tagKey; this.role = role; + this.thumb = thumb; } - public Role() { - this(Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + public Role( + long id, + String filter, + String tag) { + this(id, filter, tag, Optional.empty(), Optional.empty(), Optional.empty()); } /** - * The ID of the tag or actor. + * Unique identifier for the actor or role. */ @JsonIgnore - public Optional id() { + public long id() { return id; } /** - * 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. */ @JsonIgnore - public Optional filter() { + public String filter() { return filter; } /** - * The thumbnail of the actor + * The display tag for the actor (typically the actor's name). */ @JsonIgnore - public Optional thumb() { - return thumb; - } - - /** - * The name of the tag or actor. - */ - @JsonIgnore - public Optional tag() { + public String tag() { return tag; } /** - * Unique identifier for the tag. + * A unique key associated with the actor's tag, used for internal identification. */ @JsonIgnore public Optional tagKey() { @@ -127,91 +119,54 @@ public class Role { } /** - * The role of the actor or tag in the media. + * The role played by the actor in the media item. */ @JsonIgnore public Optional role() { return role; } + /** + * The URL of the thumbnail image for the actor. + */ + @JsonIgnore + public Optional thumb() { + return thumb; + } + public final static Builder builder() { return new Builder(); } /** - * The ID of the tag or actor. + * Unique identifier for the actor or role. */ public Role withId(long id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - /** - * The ID of the tag or actor. - */ - public Role withId(Optional id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } /** - * 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. */ public Role withFilter(String filter) { - Utils.checkNotNull(filter, "filter"); - this.filter = Optional.ofNullable(filter); - return this; - } - - /** - * The filter used to find the actor or tag. - */ - public Role withFilter(Optional filter) { Utils.checkNotNull(filter, "filter"); this.filter = filter; return this; } /** - * The thumbnail of the actor - */ - public Role withThumb(String thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = Optional.ofNullable(thumb); - return this; - } - - /** - * The thumbnail of the actor - */ - public Role withThumb(Optional thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = thumb; - return this; - } - - /** - * The name of the tag or actor. + * The display tag for the actor (typically the actor's name). */ public Role withTag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); - return this; - } - - /** - * The name of the tag or actor. - */ - public Role withTag(Optional tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; } /** - * Unique identifier for the tag. + * A unique key associated with the actor's tag, used for internal identification. */ public Role withTagKey(String tagKey) { Utils.checkNotNull(tagKey, "tagKey"); @@ -220,7 +175,7 @@ public class Role { } /** - * Unique identifier for the tag. + * A unique key associated with the actor's tag, used for internal identification. */ public Role withTagKey(Optional tagKey) { Utils.checkNotNull(tagKey, "tagKey"); @@ -229,7 +184,7 @@ public class Role { } /** - * The role of the actor or tag in the media. + * The role played by the actor in the media item. */ public Role withRole(String role) { Utils.checkNotNull(role, "role"); @@ -238,13 +193,31 @@ public class Role { } /** - * The role of the actor or tag in the media. + * The role played by the actor in the media item. */ public Role withRole(Optional role) { Utils.checkNotNull(role, "role"); this.role = role; return this; } + + /** + * The URL of the thumbnail image for the actor. + */ + public Role withThumb(String thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = Optional.ofNullable(thumb); + return this; + } + + /** + * The URL of the thumbnail image for the actor. + */ + public Role withThumb(Optional thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = thumb; + return this; + } @Override public boolean equals(java.lang.Object o) { @@ -258,10 +231,10 @@ public class Role { return Objects.deepEquals(this.id, other.id) && Objects.deepEquals(this.filter, other.filter) && - Objects.deepEquals(this.thumb, other.thumb) && Objects.deepEquals(this.tag, other.tag) && Objects.deepEquals(this.tagKey, other.tagKey) && - Objects.deepEquals(this.role, other.role); + Objects.deepEquals(this.role, other.role) && + Objects.deepEquals(this.thumb, other.thumb); } @Override @@ -269,10 +242,10 @@ public class Role { return Objects.hash( id, filter, - thumb, tag, tagKey, - role); + role, + thumb); } @Override @@ -280,104 +253,59 @@ public class Role { return Utils.toString(Role.class, "id", id, "filter", filter, - "thumb", thumb, "tag", tag, "tagKey", tagKey, - "role", role); + "role", role, + "thumb", thumb); } public final static class Builder { - private Optional id = Optional.empty(); + private Long id; - private Optional filter = Optional.empty(); + private String filter; - private Optional thumb = Optional.empty(); - - private Optional tag = Optional.empty(); + private String tag; private Optional tagKey = Optional.empty(); - private Optional role = Optional.empty(); + private Optional role = Optional.empty(); + + private Optional thumb = Optional.empty(); private Builder() { // force use of static builder() method } /** - * The ID of the tag or actor. + * Unique identifier for the actor or role. */ public Builder id(long id) { - Utils.checkNotNull(id, "id"); - this.id = Optional.ofNullable(id); - return this; - } - - /** - * The ID of the tag or actor. - */ - public Builder id(Optional id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } /** - * 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. */ public Builder filter(String filter) { - Utils.checkNotNull(filter, "filter"); - this.filter = Optional.ofNullable(filter); - return this; - } - - /** - * The filter used to find the actor or tag. - */ - public Builder filter(Optional filter) { Utils.checkNotNull(filter, "filter"); this.filter = filter; return this; } /** - * The thumbnail of the actor - */ - public Builder thumb(String thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = Optional.ofNullable(thumb); - return this; - } - - /** - * The thumbnail of the actor - */ - public Builder thumb(Optional thumb) { - Utils.checkNotNull(thumb, "thumb"); - this.thumb = thumb; - return this; - } - - /** - * The name of the tag or actor. + * The display tag for the actor (typically the actor's name). */ public Builder tag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); - return this; - } - - /** - * The name of the tag or actor. - */ - public Builder tag(Optional tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; } /** - * Unique identifier for the tag. + * A unique key associated with the actor's tag, used for internal identification. */ public Builder tagKey(String tagKey) { Utils.checkNotNull(tagKey, "tagKey"); @@ -386,7 +314,7 @@ public class Role { } /** - * Unique identifier for the tag. + * A unique key associated with the actor's tag, used for internal identification. */ public Builder tagKey(Optional tagKey) { Utils.checkNotNull(tagKey, "tagKey"); @@ -395,7 +323,7 @@ public class Role { } /** - * The role of the actor or tag in the media. + * The role played by the actor in the media item. */ public Builder role(String role) { Utils.checkNotNull(role, "role"); @@ -404,22 +332,40 @@ public class Role { } /** - * The role of the actor or tag in the media. + * The role played by the actor in the media item. */ public Builder role(Optional role) { Utils.checkNotNull(role, "role"); this.role = role; return this; } + + /** + * The URL of the thumbnail image for the actor. + */ + public Builder thumb(String thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = Optional.ofNullable(thumb); + return this; + } + + /** + * The URL of the thumbnail image for the actor. + */ + public Builder thumb(Optional thumb) { + Utils.checkNotNull(thumb, "thumb"); + this.thumb = thumb; + return this; + } public Role build() { return new Role( id, filter, - thumb, tag, tagKey, - role); + role, + thumb); } } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java b/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java index 1611af91..ed3b6389 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/SDKMethodInterfaces.java @@ -336,11 +336,6 @@ public class SDKMethodInterfaces { } - public interface MethodCallGetOnDeck { - GetOnDeckResponse getOnDeckDirect() throws Exception; - } - - public interface MethodCallGetWatchList { GetWatchListResponse getWatchList( GetWatchListRequest request, diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Similar.java b/src/main/java/dev/plexapi/sdk/models/operations/Similar.java index c3b7a9b5..f383658c 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Similar.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Similar.java @@ -12,24 +12,18 @@ import java.lang.Long; import java.lang.Override; import java.lang.String; import java.util.Objects; +/** + * Similar - The display tag for the similar item, typically the title. + */ public class Similar { - /** - * The unique similar item identifier. - */ @JsonProperty("id") private long id; - /** - * The filter string for similar items. - */ @JsonProperty("filter") private String filter; - /** - * The tag or title of the similar content. - */ @JsonProperty("tag") private String tag; @@ -46,25 +40,16 @@ public class Similar { this.tag = tag; } - /** - * The unique similar item identifier. - */ @JsonIgnore public long id() { return id; } - /** - * The filter string for similar items. - */ @JsonIgnore public String filter() { return filter; } - /** - * The tag or title of the similar content. - */ @JsonIgnore public String tag() { return tag; @@ -74,27 +59,18 @@ public class Similar { return new Builder(); } - /** - * The unique similar item identifier. - */ public Similar withId(long id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } - /** - * The filter string for similar items. - */ public Similar withFilter(String filter) { Utils.checkNotNull(filter, "filter"); this.filter = filter; return this; } - /** - * The tag or title of the similar content. - */ public Similar withTag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; @@ -144,27 +120,18 @@ public class Similar { // force use of static builder() method } - /** - * The unique similar item identifier. - */ public Builder id(long id) { Utils.checkNotNull(id, "id"); this.id = id; return this; } - /** - * The filter string for similar items. - */ public Builder filter(String filter) { Utils.checkNotNull(filter, "filter"); this.filter = filter; return this; } - /** - * The tag or title of the similar content. - */ public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Stream.java b/src/main/java/dev/plexapi/sdk/models/operations/Stream.java index e47d3b0a..a23b9dd8 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Stream.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Stream.java @@ -11,7 +11,8 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; import java.lang.Boolean; -import java.lang.Double; +import java.lang.Float; +import java.lang.Integer; import java.lang.Long; import java.lang.Override; import java.lang.String; @@ -20,397 +21,507 @@ import java.util.Optional; public class Stream { + /** + * Unique stream identifier. + */ @JsonProperty("id") private long id; /** - * Type of stream (1 = video, 2 = audio, 3 = subtitle) + * Stream type (1=video, 2=audio, 3=subtitle). */ @JsonProperty("streamType") - private long streamType; + private int streamType; /** - * Indicates if this is the default stream + * Indicates if this stream is default. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("default") private Optional default_; /** - * Indicates if the stream is selected - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("selected") - private Optional selected; - - /** - * Codec used by the stream + * Codec used by the stream. */ @JsonProperty("codec") private String codec; /** - * The index of the stream + * Index of the stream. */ @JsonProperty("index") - private long index; + private int index; /** - * The bitrate of the stream in kbps + * Bitrate of the stream. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("bitrate") - private Optional bitrate; + private Optional bitrate; /** - * The color primaries of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("colorPrimaries") - private Optional colorPrimaries; - - /** - * The color range of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("colorRange") - private Optional colorRange; - - /** - * The color space of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("colorSpace") - private Optional colorSpace; - - /** - * The transfer characteristics (TRC) of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("colorTrc") - private Optional colorTrc; - - /** - * The bit depth of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("bitDepth") - private Optional bitDepth; - - /** - * The chroma location of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("chromaLocation") - private Optional chromaLocation; - - /** - * The identifier of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("streamIdentifier") - private Optional streamIdentifier; - - /** - * The chroma subsampling format - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("chromaSubsampling") - private Optional chromaSubsampling; - - /** - * The coded height of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("codedHeight") - private Optional codedHeight; - - /** - * The coded width of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("codedWidth") - private Optional codedWidth; - - /** - * The frame rate of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("frameRate") - private Optional frameRate; - - /** - * Indicates if the stream has a scaling matrix - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("hasScalingMatrix") - private Optional hasScalingMatrix; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("hearingImpaired") - private Optional hearingImpaired; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("closedCaptions") - private Optional closedCaptions; - - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("embeddedInVideo") - private Optional embeddedInVideo; - - /** - * The height of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("height") - private Optional height; - - /** - * The level of the video codec - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("level") - private Optional level; - - /** - * The profile of the video codec - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("profile") - private Optional profile; - - /** - * Number of reference frames - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("refFrames") - private Optional refFrames; - - /** - * The scan type (progressive or interlaced) - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("scanType") - private Optional scanType; - - /** - * The width of the video stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("width") - private Optional width; - - /** - * Display title of the stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("displayTitle") - private Optional displayTitle; - - /** - * Extended display title of the stream - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("extendedDisplayTitle") - private Optional extendedDisplayTitle; - - /** - * Number of audio channels (for audio streams) - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("channels") - private Optional channels; - - /** - * The language of the stream (for audio/subtitle streams) + * Language of the stream. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("language") private Optional language; /** - * Language tag of the stream + * Language tag (e.g., en). */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("languageTag") private Optional languageTag; /** - * Language code of the stream + * ISO language code. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("languageCode") private Optional languageCode; /** - * The audio channel layout + * Indicates whether header compression is enabled. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("headerCompression") + private Optional headerCompression; + + /** + * Dolby Vision BL compatibility ID. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIBLCompatID") + private Optional doviblCompatID; + + /** + * Indicates if Dolby Vision BL is present. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIBLPresent") + private Optional doviblPresent; + + /** + * Indicates if Dolby Vision EL is present. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIELPresent") + private Optional dovielPresent; + + /** + * Dolby Vision level. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVILevel") + private Optional doviLevel; + + /** + * Indicates if Dolby Vision is present. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIPresent") + private Optional doviPresent; + + /** + * Dolby Vision profile. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIProfile") + private Optional doviProfile; + + /** + * Indicates if Dolby Vision RPU is present. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIRPUPresent") + private Optional dovirpuPresent; + + /** + * Dolby Vision version. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("DOVIVersion") + private Optional doviVersion; + + /** + * Bit depth of the video stream. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("bitDepth") + private Optional bitDepth; + + /** + * Chroma sample location. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("chromaLocation") + private Optional chromaLocation; + + /** + * Chroma subsampling format. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("chromaSubsampling") + private Optional chromaSubsampling; + + /** + * Coded video height. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("codedHeight") + private Optional codedHeight; + + /** + * Coded video width. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("codedWidth") + private Optional codedWidth; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("closedCaptions") + private Optional closedCaptions; + + /** + * Color primaries used. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("colorPrimaries") + private Optional colorPrimaries; + + /** + * Color range (e.g., tv). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("colorRange") + private Optional colorRange; + + /** + * Color space. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("colorSpace") + private Optional colorSpace; + + /** + * Color transfer characteristics. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("colorTrc") + private Optional colorTrc; + + /** + * Frame rate of the stream. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("frameRate") + private Optional frameRate; + + /** + * Height of the video stream. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("height") + private Optional height; + + /** + * Video level. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("level") + private Optional level; + + /** + * Indicates if this is the original stream. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("original") + private Optional original; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("hasScalingMatrix") + private Optional hasScalingMatrix; + + /** + * Video profile. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("profile") + private Optional profile; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("scanType") + private Optional scanType; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("embeddedInVideo") + private Optional embeddedInVideo; + + /** + * Number of reference frames. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("refFrames") + private Optional refFrames; + + /** + * Width of the video stream. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("width") + private Optional width; + + /** + * Display title for the stream. + */ + @JsonProperty("displayTitle") + private String displayTitle; + + /** + * Extended display title for the stream. + */ + @JsonProperty("extendedDisplayTitle") + private String extendedDisplayTitle; + + /** + * Indicates if this stream is selected (applicable for audio streams). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("selected") + private Optional selected; + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("forced") + private Optional forced; + + /** + * Number of audio channels (for audio streams). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("channels") + private Optional channels; + + /** + * Audio channel layout. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("audioChannelLayout") private Optional audioChannelLayout; /** - * Sampling rate of the audio stream in Hz + * Sampling rate for the audio stream. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("samplingRate") - private Optional samplingRate; + private Optional samplingRate; /** - * Title of the subtitle track (for subtitle streams) - */ - @JsonInclude(Include.NON_ABSENT) - @JsonProperty("title") - private Optional title; - - /** - * Indicates if the subtitle stream can auto-sync + * Indicates if the stream can auto-sync. */ @JsonInclude(Include.NON_ABSENT) @JsonProperty("canAutoSync") private Optional canAutoSync; + /** + * Indicates if the stream is for the hearing impaired. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("hearingImpaired") + private Optional hearingImpaired; + + /** + * Indicates if the stream is a dub. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("dub") + private Optional dub; + + /** + * Optional title for the stream (e.g., language variant). + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("title") + private Optional title; + @JsonCreator public Stream( @JsonProperty("id") long id, - @JsonProperty("streamType") long streamType, + @JsonProperty("streamType") int streamType, @JsonProperty("default") Optional default_, - @JsonProperty("selected") Optional selected, @JsonProperty("codec") String codec, - @JsonProperty("index") long index, - @JsonProperty("bitrate") Optional bitrate, + @JsonProperty("index") int index, + @JsonProperty("bitrate") Optional bitrate, + @JsonProperty("language") Optional language, + @JsonProperty("languageTag") Optional languageTag, + @JsonProperty("languageCode") Optional languageCode, + @JsonProperty("headerCompression") Optional headerCompression, + @JsonProperty("DOVIBLCompatID") Optional doviblCompatID, + @JsonProperty("DOVIBLPresent") Optional doviblPresent, + @JsonProperty("DOVIELPresent") Optional dovielPresent, + @JsonProperty("DOVILevel") Optional doviLevel, + @JsonProperty("DOVIPresent") Optional doviPresent, + @JsonProperty("DOVIProfile") Optional doviProfile, + @JsonProperty("DOVIRPUPresent") Optional dovirpuPresent, + @JsonProperty("DOVIVersion") Optional doviVersion, + @JsonProperty("bitDepth") Optional bitDepth, + @JsonProperty("chromaLocation") Optional chromaLocation, + @JsonProperty("chromaSubsampling") Optional chromaSubsampling, + @JsonProperty("codedHeight") Optional codedHeight, + @JsonProperty("codedWidth") Optional codedWidth, + @JsonProperty("closedCaptions") Optional closedCaptions, @JsonProperty("colorPrimaries") Optional colorPrimaries, @JsonProperty("colorRange") Optional colorRange, @JsonProperty("colorSpace") Optional colorSpace, @JsonProperty("colorTrc") Optional colorTrc, - @JsonProperty("bitDepth") Optional bitDepth, - @JsonProperty("chromaLocation") Optional chromaLocation, - @JsonProperty("streamIdentifier") Optional streamIdentifier, - @JsonProperty("chromaSubsampling") Optional chromaSubsampling, - @JsonProperty("codedHeight") Optional codedHeight, - @JsonProperty("codedWidth") Optional codedWidth, - @JsonProperty("frameRate") Optional frameRate, + @JsonProperty("frameRate") Optional frameRate, + @JsonProperty("height") Optional height, + @JsonProperty("level") Optional level, + @JsonProperty("original") Optional original, @JsonProperty("hasScalingMatrix") Optional hasScalingMatrix, - @JsonProperty("hearingImpaired") Optional hearingImpaired, - @JsonProperty("closedCaptions") Optional closedCaptions, - @JsonProperty("embeddedInVideo") Optional embeddedInVideo, - @JsonProperty("height") Optional height, - @JsonProperty("level") Optional level, @JsonProperty("profile") Optional profile, - @JsonProperty("refFrames") Optional refFrames, @JsonProperty("scanType") Optional scanType, - @JsonProperty("width") Optional width, - @JsonProperty("displayTitle") Optional displayTitle, - @JsonProperty("extendedDisplayTitle") Optional extendedDisplayTitle, - @JsonProperty("channels") Optional channels, - @JsonProperty("language") Optional language, - @JsonProperty("languageTag") Optional languageTag, - @JsonProperty("languageCode") Optional languageCode, + @JsonProperty("embeddedInVideo") Optional embeddedInVideo, + @JsonProperty("refFrames") Optional refFrames, + @JsonProperty("width") Optional width, + @JsonProperty("displayTitle") String displayTitle, + @JsonProperty("extendedDisplayTitle") String extendedDisplayTitle, + @JsonProperty("selected") Optional selected, + @JsonProperty("forced") Optional forced, + @JsonProperty("channels") Optional channels, @JsonProperty("audioChannelLayout") Optional audioChannelLayout, - @JsonProperty("samplingRate") Optional samplingRate, - @JsonProperty("title") Optional title, - @JsonProperty("canAutoSync") Optional canAutoSync) { + @JsonProperty("samplingRate") Optional samplingRate, + @JsonProperty("canAutoSync") Optional canAutoSync, + @JsonProperty("hearingImpaired") Optional hearingImpaired, + @JsonProperty("dub") Optional dub, + @JsonProperty("title") Optional title) { Utils.checkNotNull(id, "id"); Utils.checkNotNull(streamType, "streamType"); Utils.checkNotNull(default_, "default_"); - Utils.checkNotNull(selected, "selected"); Utils.checkNotNull(codec, "codec"); Utils.checkNotNull(index, "index"); Utils.checkNotNull(bitrate, "bitrate"); + Utils.checkNotNull(language, "language"); + Utils.checkNotNull(languageTag, "languageTag"); + Utils.checkNotNull(languageCode, "languageCode"); + Utils.checkNotNull(headerCompression, "headerCompression"); + Utils.checkNotNull(doviblCompatID, "doviblCompatID"); + Utils.checkNotNull(doviblPresent, "doviblPresent"); + Utils.checkNotNull(dovielPresent, "dovielPresent"); + Utils.checkNotNull(doviLevel, "doviLevel"); + Utils.checkNotNull(doviPresent, "doviPresent"); + Utils.checkNotNull(doviProfile, "doviProfile"); + Utils.checkNotNull(dovirpuPresent, "dovirpuPresent"); + Utils.checkNotNull(doviVersion, "doviVersion"); + Utils.checkNotNull(bitDepth, "bitDepth"); + Utils.checkNotNull(chromaLocation, "chromaLocation"); + Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); + Utils.checkNotNull(codedHeight, "codedHeight"); + Utils.checkNotNull(codedWidth, "codedWidth"); + Utils.checkNotNull(closedCaptions, "closedCaptions"); Utils.checkNotNull(colorPrimaries, "colorPrimaries"); Utils.checkNotNull(colorRange, "colorRange"); Utils.checkNotNull(colorSpace, "colorSpace"); Utils.checkNotNull(colorTrc, "colorTrc"); - Utils.checkNotNull(bitDepth, "bitDepth"); - Utils.checkNotNull(chromaLocation, "chromaLocation"); - Utils.checkNotNull(streamIdentifier, "streamIdentifier"); - Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); - Utils.checkNotNull(codedHeight, "codedHeight"); - Utils.checkNotNull(codedWidth, "codedWidth"); Utils.checkNotNull(frameRate, "frameRate"); - Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); - Utils.checkNotNull(hearingImpaired, "hearingImpaired"); - Utils.checkNotNull(closedCaptions, "closedCaptions"); - Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); Utils.checkNotNull(height, "height"); Utils.checkNotNull(level, "level"); + Utils.checkNotNull(original, "original"); + Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); Utils.checkNotNull(profile, "profile"); - Utils.checkNotNull(refFrames, "refFrames"); Utils.checkNotNull(scanType, "scanType"); + Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); + Utils.checkNotNull(refFrames, "refFrames"); Utils.checkNotNull(width, "width"); Utils.checkNotNull(displayTitle, "displayTitle"); Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); + Utils.checkNotNull(selected, "selected"); + Utils.checkNotNull(forced, "forced"); Utils.checkNotNull(channels, "channels"); - Utils.checkNotNull(language, "language"); - Utils.checkNotNull(languageTag, "languageTag"); - Utils.checkNotNull(languageCode, "languageCode"); Utils.checkNotNull(audioChannelLayout, "audioChannelLayout"); Utils.checkNotNull(samplingRate, "samplingRate"); - Utils.checkNotNull(title, "title"); Utils.checkNotNull(canAutoSync, "canAutoSync"); + Utils.checkNotNull(hearingImpaired, "hearingImpaired"); + Utils.checkNotNull(dub, "dub"); + Utils.checkNotNull(title, "title"); this.id = id; this.streamType = streamType; this.default_ = default_; - this.selected = selected; this.codec = codec; this.index = index; this.bitrate = bitrate; + this.language = language; + this.languageTag = languageTag; + this.languageCode = languageCode; + this.headerCompression = headerCompression; + this.doviblCompatID = doviblCompatID; + this.doviblPresent = doviblPresent; + this.dovielPresent = dovielPresent; + this.doviLevel = doviLevel; + this.doviPresent = doviPresent; + this.doviProfile = doviProfile; + this.dovirpuPresent = dovirpuPresent; + this.doviVersion = doviVersion; + this.bitDepth = bitDepth; + this.chromaLocation = chromaLocation; + this.chromaSubsampling = chromaSubsampling; + this.codedHeight = codedHeight; + this.codedWidth = codedWidth; + this.closedCaptions = closedCaptions; this.colorPrimaries = colorPrimaries; this.colorRange = colorRange; this.colorSpace = colorSpace; this.colorTrc = colorTrc; - this.bitDepth = bitDepth; - this.chromaLocation = chromaLocation; - this.streamIdentifier = streamIdentifier; - this.chromaSubsampling = chromaSubsampling; - this.codedHeight = codedHeight; - this.codedWidth = codedWidth; this.frameRate = frameRate; - this.hasScalingMatrix = hasScalingMatrix; - this.hearingImpaired = hearingImpaired; - this.closedCaptions = closedCaptions; - this.embeddedInVideo = embeddedInVideo; this.height = height; this.level = level; + this.original = original; + this.hasScalingMatrix = hasScalingMatrix; this.profile = profile; - this.refFrames = refFrames; this.scanType = scanType; + this.embeddedInVideo = embeddedInVideo; + this.refFrames = refFrames; this.width = width; this.displayTitle = displayTitle; this.extendedDisplayTitle = extendedDisplayTitle; + this.selected = selected; + this.forced = forced; this.channels = channels; - this.language = language; - this.languageTag = languageTag; - this.languageCode = languageCode; this.audioChannelLayout = audioChannelLayout; this.samplingRate = samplingRate; - this.title = title; this.canAutoSync = canAutoSync; + this.hearingImpaired = hearingImpaired; + this.dub = dub; + this.title = title; } public Stream( long id, - long streamType, + int streamType, String codec, - long index) { - this(id, streamType, Optional.empty(), Optional.empty(), codec, index, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); + int index, + String displayTitle, + String extendedDisplayTitle) { + this(id, streamType, Optional.empty(), codec, index, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), displayTitle, extendedDisplayTitle, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty()); } + /** + * Unique stream identifier. + */ @JsonIgnore public long id() { return id; } /** - * Type of stream (1 = video, 2 = audio, 3 = subtitle) + * Stream type (1=video, 2=audio, 3=subtitle). */ @JsonIgnore - public long streamType() { + public int streamType() { return streamType; } /** - * Indicates if this is the default stream + * Indicates if this stream is default. */ @JsonIgnore public Optional default_() { @@ -418,15 +529,7 @@ public class Stream { } /** - * Indicates if the stream is selected - */ - @JsonIgnore - public Optional selected() { - return selected; - } - - /** - * Codec used by the stream + * Codec used by the stream. */ @JsonIgnore public String codec() { @@ -434,63 +537,127 @@ public class Stream { } /** - * The index of the stream + * Index of the stream. */ @JsonIgnore - public long index() { + public int index() { return index; } /** - * The bitrate of the stream in kbps + * Bitrate of the stream. */ @JsonIgnore - public Optional bitrate() { + public Optional bitrate() { return bitrate; } /** - * The color primaries of the video stream + * Language of the stream. */ @JsonIgnore - public Optional colorPrimaries() { - return colorPrimaries; + public Optional language() { + return language; } /** - * The color range of the video stream + * Language tag (e.g., en). */ @JsonIgnore - public Optional colorRange() { - return colorRange; + public Optional languageTag() { + return languageTag; } /** - * The color space of the video stream + * ISO language code. */ @JsonIgnore - public Optional colorSpace() { - return colorSpace; + public Optional languageCode() { + return languageCode; } /** - * The transfer characteristics (TRC) of the video stream + * Indicates whether header compression is enabled. */ @JsonIgnore - public Optional colorTrc() { - return colorTrc; + public Optional headerCompression() { + return headerCompression; } /** - * The bit depth of the video stream + * Dolby Vision BL compatibility ID. */ @JsonIgnore - public Optional bitDepth() { + public Optional doviblCompatID() { + return doviblCompatID; + } + + /** + * Indicates if Dolby Vision BL is present. + */ + @JsonIgnore + public Optional doviblPresent() { + return doviblPresent; + } + + /** + * Indicates if Dolby Vision EL is present. + */ + @JsonIgnore + public Optional dovielPresent() { + return dovielPresent; + } + + /** + * Dolby Vision level. + */ + @JsonIgnore + public Optional doviLevel() { + return doviLevel; + } + + /** + * Indicates if Dolby Vision is present. + */ + @JsonIgnore + public Optional doviPresent() { + return doviPresent; + } + + /** + * Dolby Vision profile. + */ + @JsonIgnore + public Optional doviProfile() { + return doviProfile; + } + + /** + * Indicates if Dolby Vision RPU is present. + */ + @JsonIgnore + public Optional dovirpuPresent() { + return dovirpuPresent; + } + + /** + * Dolby Vision version. + */ + @JsonIgnore + public Optional doviVersion() { + return doviVersion; + } + + /** + * Bit depth of the video stream. + */ + @JsonIgnore + public Optional bitDepth() { return bitDepth; } /** - * The chroma location of the video stream + * Chroma sample location. */ @JsonIgnore public Optional chromaLocation() { @@ -498,15 +665,7 @@ public class Stream { } /** - * The identifier of the video stream - */ - @JsonIgnore - public Optional streamIdentifier() { - return streamIdentifier; - } - - /** - * The chroma subsampling format + * Chroma subsampling format. */ @JsonIgnore public Optional chromaSubsampling() { @@ -514,150 +673,168 @@ public class Stream { } /** - * The coded height of the video stream + * Coded video height. */ @JsonIgnore - public Optional codedHeight() { + public Optional codedHeight() { return codedHeight; } /** - * The coded width of the video stream + * Coded video width. */ @JsonIgnore - public Optional codedWidth() { + public Optional codedWidth() { return codedWidth; } - /** - * The frame rate of the video stream - */ - @JsonIgnore - public Optional frameRate() { - return frameRate; - } - - /** - * Indicates if the stream has a scaling matrix - */ - @JsonIgnore - public Optional hasScalingMatrix() { - return hasScalingMatrix; - } - - @JsonIgnore - public Optional hearingImpaired() { - return hearingImpaired; - } - @JsonIgnore public Optional closedCaptions() { return closedCaptions; } + /** + * Color primaries used. + */ + @JsonIgnore + public Optional colorPrimaries() { + return colorPrimaries; + } + + /** + * Color range (e.g., tv). + */ + @JsonIgnore + public Optional colorRange() { + return colorRange; + } + + /** + * Color space. + */ + @JsonIgnore + public Optional colorSpace() { + return colorSpace; + } + + /** + * Color transfer characteristics. + */ + @JsonIgnore + public Optional colorTrc() { + return colorTrc; + } + + /** + * Frame rate of the stream. + */ + @JsonIgnore + public Optional frameRate() { + return frameRate; + } + + /** + * Height of the video stream. + */ + @JsonIgnore + public Optional height() { + return height; + } + + /** + * Video level. + */ + @JsonIgnore + public Optional level() { + return level; + } + + /** + * Indicates if this is the original stream. + */ + @JsonIgnore + public Optional original() { + return original; + } + + @JsonIgnore + public Optional hasScalingMatrix() { + return hasScalingMatrix; + } + + /** + * Video profile. + */ + @JsonIgnore + public Optional profile() { + return profile; + } + + @JsonIgnore + public Optional scanType() { + return scanType; + } + @JsonIgnore public Optional embeddedInVideo() { return embeddedInVideo; } /** - * The height of the video stream + * Number of reference frames. */ @JsonIgnore - public Optional height() { - return height; - } - - /** - * The level of the video codec - */ - @JsonIgnore - public Optional level() { - return level; - } - - /** - * The profile of the video codec - */ - @JsonIgnore - public Optional profile() { - return profile; - } - - /** - * Number of reference frames - */ - @JsonIgnore - public Optional refFrames() { + public Optional refFrames() { return refFrames; } /** - * The scan type (progressive or interlaced) + * Width of the video stream. */ @JsonIgnore - public Optional scanType() { - return scanType; - } - - /** - * The width of the video stream - */ - @JsonIgnore - public Optional width() { + public Optional width() { return width; } /** - * Display title of the stream + * Display title for the stream. */ @JsonIgnore - public Optional displayTitle() { + public String displayTitle() { return displayTitle; } /** - * Extended display title of the stream + * Extended display title for the stream. */ @JsonIgnore - public Optional extendedDisplayTitle() { + public String extendedDisplayTitle() { return extendedDisplayTitle; } /** - * Number of audio channels (for audio streams) + * Indicates if this stream is selected (applicable for audio streams). */ @JsonIgnore - public Optional channels() { + public Optional selected() { + return selected; + } + + @JsonIgnore + public Optional forced() { + return forced; + } + + /** + * Number of audio channels (for audio streams). + */ + @JsonIgnore + public Optional channels() { return channels; } /** - * The language of the stream (for audio/subtitle streams) - */ - @JsonIgnore - public Optional language() { - return language; - } - - /** - * Language tag of the stream - */ - @JsonIgnore - public Optional languageTag() { - return languageTag; - } - - /** - * Language code of the stream - */ - @JsonIgnore - public Optional languageCode() { - return languageCode; - } - - /** - * The audio channel layout + * Audio channel layout. */ @JsonIgnore public Optional audioChannelLayout() { @@ -665,33 +842,52 @@ public class Stream { } /** - * Sampling rate of the audio stream in Hz + * Sampling rate for the audio stream. */ @JsonIgnore - public Optional samplingRate() { + public Optional samplingRate() { return samplingRate; } /** - * Title of the subtitle track (for subtitle streams) - */ - @JsonIgnore - public Optional title() { - return title; - } - - /** - * Indicates if the subtitle stream can auto-sync + * Indicates if the stream can auto-sync. */ @JsonIgnore public Optional canAutoSync() { return canAutoSync; } + /** + * Indicates if the stream is for the hearing impaired. + */ + @JsonIgnore + public Optional hearingImpaired() { + return hearingImpaired; + } + + /** + * Indicates if the stream is a dub. + */ + @JsonIgnore + public Optional dub() { + return dub; + } + + /** + * Optional title for the stream (e.g., language variant). + */ + @JsonIgnore + public Optional title() { + return title; + } + public final static Builder builder() { return new Builder(); } + /** + * Unique stream identifier. + */ public Stream withId(long id) { Utils.checkNotNull(id, "id"); this.id = id; @@ -699,16 +895,16 @@ public class Stream { } /** - * Type of stream (1 = video, 2 = audio, 3 = subtitle) + * Stream type (1=video, 2=audio, 3=subtitle). */ - public Stream withStreamType(long streamType) { + public Stream withStreamType(int streamType) { Utils.checkNotNull(streamType, "streamType"); this.streamType = streamType; return this; } /** - * Indicates if this is the default stream + * Indicates if this stream is default. */ public Stream withDefault(boolean default_) { Utils.checkNotNull(default_, "default_"); @@ -717,7 +913,7 @@ public class Stream { } /** - * Indicates if this is the default stream + * Indicates if this stream is default. */ public Stream withDefault(Optional default_) { Utils.checkNotNull(default_, "default_"); @@ -726,25 +922,7 @@ public class Stream { } /** - * Indicates if the stream is selected - */ - public Stream withSelected(boolean selected) { - Utils.checkNotNull(selected, "selected"); - this.selected = Optional.ofNullable(selected); - return this; - } - - /** - * Indicates if the stream is selected - */ - public Stream withSelected(Optional selected) { - Utils.checkNotNull(selected, "selected"); - this.selected = selected; - return this; - } - - /** - * Codec used by the stream + * Codec used by the stream. */ public Stream withCodec(String codec) { Utils.checkNotNull(codec, "codec"); @@ -753,124 +931,268 @@ public class Stream { } /** - * The index of the stream + * Index of the stream. */ - public Stream withIndex(long index) { + public Stream withIndex(int index) { Utils.checkNotNull(index, "index"); this.index = index; return this; } /** - * The bitrate of the stream in kbps + * Bitrate of the stream. */ - public Stream withBitrate(long bitrate) { + public Stream withBitrate(int bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = Optional.ofNullable(bitrate); return this; } /** - * The bitrate of the stream in kbps + * Bitrate of the stream. */ - public Stream withBitrate(Optional bitrate) { + public Stream withBitrate(Optional bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = bitrate; return this; } /** - * The color primaries of the video stream + * Language of the stream. */ - public Stream withColorPrimaries(String colorPrimaries) { - Utils.checkNotNull(colorPrimaries, "colorPrimaries"); - this.colorPrimaries = Optional.ofNullable(colorPrimaries); + public Stream withLanguage(String language) { + Utils.checkNotNull(language, "language"); + this.language = Optional.ofNullable(language); return this; } /** - * The color primaries of the video stream + * Language of the stream. */ - public Stream withColorPrimaries(Optional colorPrimaries) { - Utils.checkNotNull(colorPrimaries, "colorPrimaries"); - this.colorPrimaries = colorPrimaries; + public Stream withLanguage(Optional language) { + Utils.checkNotNull(language, "language"); + this.language = language; return this; } /** - * The color range of the video stream + * Language tag (e.g., en). */ - public Stream withColorRange(String colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = Optional.ofNullable(colorRange); + public Stream withLanguageTag(String languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = Optional.ofNullable(languageTag); return this; } /** - * The color range of the video stream + * Language tag (e.g., en). */ - public Stream withColorRange(Optional colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = colorRange; + public Stream withLanguageTag(Optional languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = languageTag; return this; } /** - * The color space of the video stream + * ISO language code. */ - public Stream withColorSpace(String colorSpace) { - Utils.checkNotNull(colorSpace, "colorSpace"); - this.colorSpace = Optional.ofNullable(colorSpace); + public Stream withLanguageCode(String languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = Optional.ofNullable(languageCode); return this; } /** - * The color space of the video stream + * ISO language code. */ - public Stream withColorSpace(Optional colorSpace) { - Utils.checkNotNull(colorSpace, "colorSpace"); - this.colorSpace = colorSpace; + public Stream withLanguageCode(Optional languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = languageCode; return this; } /** - * The transfer characteristics (TRC) of the video stream + * Indicates whether header compression is enabled. */ - public Stream withColorTrc(String colorTrc) { - Utils.checkNotNull(colorTrc, "colorTrc"); - this.colorTrc = Optional.ofNullable(colorTrc); + public Stream withHeaderCompression(boolean headerCompression) { + Utils.checkNotNull(headerCompression, "headerCompression"); + this.headerCompression = Optional.ofNullable(headerCompression); return this; } /** - * The transfer characteristics (TRC) of the video stream + * Indicates whether header compression is enabled. */ - public Stream withColorTrc(Optional colorTrc) { - Utils.checkNotNull(colorTrc, "colorTrc"); - this.colorTrc = colorTrc; + public Stream withHeaderCompression(Optional headerCompression) { + Utils.checkNotNull(headerCompression, "headerCompression"); + this.headerCompression = headerCompression; return this; } /** - * The bit depth of the video stream + * Dolby Vision BL compatibility ID. */ - public Stream withBitDepth(long bitDepth) { + public Stream withDOVIBLCompatID(int doviblCompatID) { + Utils.checkNotNull(doviblCompatID, "doviblCompatID"); + this.doviblCompatID = Optional.ofNullable(doviblCompatID); + return this; + } + + /** + * Dolby Vision BL compatibility ID. + */ + public Stream withDOVIBLCompatID(Optional doviblCompatID) { + Utils.checkNotNull(doviblCompatID, "doviblCompatID"); + this.doviblCompatID = doviblCompatID; + return this; + } + + /** + * Indicates if Dolby Vision BL is present. + */ + public Stream withDOVIBLPresent(boolean doviblPresent) { + Utils.checkNotNull(doviblPresent, "doviblPresent"); + this.doviblPresent = Optional.ofNullable(doviblPresent); + return this; + } + + /** + * Indicates if Dolby Vision BL is present. + */ + public Stream withDOVIBLPresent(Optional doviblPresent) { + Utils.checkNotNull(doviblPresent, "doviblPresent"); + this.doviblPresent = doviblPresent; + return this; + } + + /** + * Indicates if Dolby Vision EL is present. + */ + public Stream withDOVIELPresent(boolean dovielPresent) { + Utils.checkNotNull(dovielPresent, "dovielPresent"); + this.dovielPresent = Optional.ofNullable(dovielPresent); + return this; + } + + /** + * Indicates if Dolby Vision EL is present. + */ + public Stream withDOVIELPresent(Optional dovielPresent) { + Utils.checkNotNull(dovielPresent, "dovielPresent"); + this.dovielPresent = dovielPresent; + return this; + } + + /** + * Dolby Vision level. + */ + public Stream withDOVILevel(int doviLevel) { + Utils.checkNotNull(doviLevel, "doviLevel"); + this.doviLevel = Optional.ofNullable(doviLevel); + return this; + } + + /** + * Dolby Vision level. + */ + public Stream withDOVILevel(Optional doviLevel) { + Utils.checkNotNull(doviLevel, "doviLevel"); + this.doviLevel = doviLevel; + return this; + } + + /** + * Indicates if Dolby Vision is present. + */ + public Stream withDOVIPresent(boolean doviPresent) { + Utils.checkNotNull(doviPresent, "doviPresent"); + this.doviPresent = Optional.ofNullable(doviPresent); + return this; + } + + /** + * Indicates if Dolby Vision is present. + */ + public Stream withDOVIPresent(Optional doviPresent) { + Utils.checkNotNull(doviPresent, "doviPresent"); + this.doviPresent = doviPresent; + return this; + } + + /** + * Dolby Vision profile. + */ + public Stream withDOVIProfile(int doviProfile) { + Utils.checkNotNull(doviProfile, "doviProfile"); + this.doviProfile = Optional.ofNullable(doviProfile); + return this; + } + + /** + * Dolby Vision profile. + */ + public Stream withDOVIProfile(Optional doviProfile) { + Utils.checkNotNull(doviProfile, "doviProfile"); + this.doviProfile = doviProfile; + return this; + } + + /** + * Indicates if Dolby Vision RPU is present. + */ + public Stream withDOVIRPUPresent(boolean dovirpuPresent) { + Utils.checkNotNull(dovirpuPresent, "dovirpuPresent"); + this.dovirpuPresent = Optional.ofNullable(dovirpuPresent); + return this; + } + + /** + * Indicates if Dolby Vision RPU is present. + */ + public Stream withDOVIRPUPresent(Optional dovirpuPresent) { + Utils.checkNotNull(dovirpuPresent, "dovirpuPresent"); + this.dovirpuPresent = dovirpuPresent; + return this; + } + + /** + * Dolby Vision version. + */ + public Stream withDOVIVersion(String doviVersion) { + Utils.checkNotNull(doviVersion, "doviVersion"); + this.doviVersion = Optional.ofNullable(doviVersion); + return this; + } + + /** + * Dolby Vision version. + */ + public Stream withDOVIVersion(Optional doviVersion) { + Utils.checkNotNull(doviVersion, "doviVersion"); + this.doviVersion = doviVersion; + return this; + } + + /** + * Bit depth of the video stream. + */ + public Stream withBitDepth(int bitDepth) { Utils.checkNotNull(bitDepth, "bitDepth"); this.bitDepth = Optional.ofNullable(bitDepth); return this; } /** - * The bit depth of the video stream + * Bit depth of the video stream. */ - public Stream withBitDepth(Optional bitDepth) { + public Stream withBitDepth(Optional bitDepth) { Utils.checkNotNull(bitDepth, "bitDepth"); this.bitDepth = bitDepth; return this; } /** - * The chroma location of the video stream + * Chroma sample location. */ public Stream withChromaLocation(String chromaLocation) { Utils.checkNotNull(chromaLocation, "chromaLocation"); @@ -879,7 +1201,7 @@ public class Stream { } /** - * The chroma location of the video stream + * Chroma sample location. */ public Stream withChromaLocation(Optional chromaLocation) { Utils.checkNotNull(chromaLocation, "chromaLocation"); @@ -888,25 +1210,7 @@ public class Stream { } /** - * The identifier of the video stream - */ - public Stream withStreamIdentifier(String streamIdentifier) { - Utils.checkNotNull(streamIdentifier, "streamIdentifier"); - this.streamIdentifier = Optional.ofNullable(streamIdentifier); - return this; - } - - /** - * The identifier of the video stream - */ - public Stream withStreamIdentifier(Optional streamIdentifier) { - Utils.checkNotNull(streamIdentifier, "streamIdentifier"); - this.streamIdentifier = streamIdentifier; - return this; - } - - /** - * The chroma subsampling format + * Chroma subsampling format. */ public Stream withChromaSubsampling(String chromaSubsampling) { Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); @@ -915,7 +1219,7 @@ public class Stream { } /** - * The chroma subsampling format + * Chroma subsampling format. */ public Stream withChromaSubsampling(Optional chromaSubsampling) { Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); @@ -924,89 +1228,41 @@ public class Stream { } /** - * The coded height of the video stream + * Coded video height. */ - public Stream withCodedHeight(long codedHeight) { + public Stream withCodedHeight(int codedHeight) { Utils.checkNotNull(codedHeight, "codedHeight"); this.codedHeight = Optional.ofNullable(codedHeight); return this; } /** - * The coded height of the video stream + * Coded video height. */ - public Stream withCodedHeight(Optional codedHeight) { + public Stream withCodedHeight(Optional codedHeight) { Utils.checkNotNull(codedHeight, "codedHeight"); this.codedHeight = codedHeight; return this; } /** - * The coded width of the video stream + * Coded video width. */ - public Stream withCodedWidth(long codedWidth) { + public Stream withCodedWidth(int codedWidth) { Utils.checkNotNull(codedWidth, "codedWidth"); this.codedWidth = Optional.ofNullable(codedWidth); return this; } /** - * The coded width of the video stream + * Coded video width. */ - public Stream withCodedWidth(Optional codedWidth) { + public Stream withCodedWidth(Optional codedWidth) { Utils.checkNotNull(codedWidth, "codedWidth"); this.codedWidth = codedWidth; return this; } - /** - * The frame rate of the video stream - */ - public Stream withFrameRate(double frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = Optional.ofNullable(frameRate); - return this; - } - - /** - * The frame rate of the video stream - */ - public Stream withFrameRate(Optional frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = frameRate; - return this; - } - - /** - * Indicates if the stream has a scaling matrix - */ - public Stream withHasScalingMatrix(boolean hasScalingMatrix) { - Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); - this.hasScalingMatrix = Optional.ofNullable(hasScalingMatrix); - return this; - } - - /** - * Indicates if the stream has a scaling matrix - */ - public Stream withHasScalingMatrix(Optional hasScalingMatrix) { - Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); - this.hasScalingMatrix = hasScalingMatrix; - return this; - } - - public Stream withHearingImpaired(boolean hearingImpaired) { - Utils.checkNotNull(hearingImpaired, "hearingImpaired"); - this.hearingImpaired = Optional.ofNullable(hearingImpaired); - return this; - } - - public Stream withHearingImpaired(Optional hearingImpaired) { - Utils.checkNotNull(hearingImpaired, "hearingImpaired"); - this.hearingImpaired = hearingImpaired; - return this; - } - public Stream withClosedCaptions(boolean closedCaptions) { Utils.checkNotNull(closedCaptions, "closedCaptions"); this.closedCaptions = Optional.ofNullable(closedCaptions); @@ -1019,6 +1275,192 @@ public class Stream { return this; } + /** + * Color primaries used. + */ + public Stream withColorPrimaries(String colorPrimaries) { + Utils.checkNotNull(colorPrimaries, "colorPrimaries"); + this.colorPrimaries = Optional.ofNullable(colorPrimaries); + return this; + } + + /** + * Color primaries used. + */ + public Stream withColorPrimaries(Optional colorPrimaries) { + Utils.checkNotNull(colorPrimaries, "colorPrimaries"); + this.colorPrimaries = colorPrimaries; + return this; + } + + /** + * Color range (e.g., tv). + */ + public Stream withColorRange(String colorRange) { + Utils.checkNotNull(colorRange, "colorRange"); + this.colorRange = Optional.ofNullable(colorRange); + return this; + } + + /** + * Color range (e.g., tv). + */ + public Stream withColorRange(Optional colorRange) { + Utils.checkNotNull(colorRange, "colorRange"); + this.colorRange = colorRange; + return this; + } + + /** + * Color space. + */ + public Stream withColorSpace(String colorSpace) { + Utils.checkNotNull(colorSpace, "colorSpace"); + this.colorSpace = Optional.ofNullable(colorSpace); + return this; + } + + /** + * Color space. + */ + public Stream withColorSpace(Optional colorSpace) { + Utils.checkNotNull(colorSpace, "colorSpace"); + this.colorSpace = colorSpace; + return this; + } + + /** + * Color transfer characteristics. + */ + public Stream withColorTrc(String colorTrc) { + Utils.checkNotNull(colorTrc, "colorTrc"); + this.colorTrc = Optional.ofNullable(colorTrc); + return this; + } + + /** + * Color transfer characteristics. + */ + public Stream withColorTrc(Optional colorTrc) { + Utils.checkNotNull(colorTrc, "colorTrc"); + this.colorTrc = colorTrc; + return this; + } + + /** + * Frame rate of the stream. + */ + public Stream withFrameRate(float frameRate) { + Utils.checkNotNull(frameRate, "frameRate"); + this.frameRate = Optional.ofNullable(frameRate); + return this; + } + + /** + * Frame rate of the stream. + */ + public Stream withFrameRate(Optional frameRate) { + Utils.checkNotNull(frameRate, "frameRate"); + this.frameRate = frameRate; + return this; + } + + /** + * Height of the video stream. + */ + public Stream withHeight(int height) { + Utils.checkNotNull(height, "height"); + this.height = Optional.ofNullable(height); + return this; + } + + /** + * Height of the video stream. + */ + public Stream withHeight(Optional height) { + Utils.checkNotNull(height, "height"); + this.height = height; + return this; + } + + /** + * Video level. + */ + public Stream withLevel(int level) { + Utils.checkNotNull(level, "level"); + this.level = Optional.ofNullable(level); + return this; + } + + /** + * Video level. + */ + public Stream withLevel(Optional level) { + Utils.checkNotNull(level, "level"); + this.level = level; + return this; + } + + /** + * Indicates if this is the original stream. + */ + public Stream withOriginal(boolean original) { + Utils.checkNotNull(original, "original"); + this.original = Optional.ofNullable(original); + return this; + } + + /** + * Indicates if this is the original stream. + */ + public Stream withOriginal(Optional original) { + Utils.checkNotNull(original, "original"); + this.original = original; + return this; + } + + public Stream withHasScalingMatrix(boolean hasScalingMatrix) { + Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); + this.hasScalingMatrix = Optional.ofNullable(hasScalingMatrix); + return this; + } + + public Stream withHasScalingMatrix(Optional hasScalingMatrix) { + Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); + this.hasScalingMatrix = hasScalingMatrix; + return this; + } + + /** + * Video profile. + */ + public Stream withProfile(String profile) { + Utils.checkNotNull(profile, "profile"); + this.profile = Optional.ofNullable(profile); + return this; + } + + /** + * Video profile. + */ + public Stream withProfile(Optional profile) { + Utils.checkNotNull(profile, "profile"); + this.profile = profile; + return this; + } + + public Stream withScanType(String scanType) { + Utils.checkNotNull(scanType, "scanType"); + this.scanType = Optional.ofNullable(scanType); + return this; + } + + public Stream withScanType(Optional scanType) { + Utils.checkNotNull(scanType, "scanType"); + this.scanType = scanType; + return this; + } + public Stream withEmbeddedInVideo(String embeddedInVideo) { Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); this.embeddedInVideo = Optional.ofNullable(embeddedInVideo); @@ -1032,223 +1474,109 @@ public class Stream { } /** - * The height of the video stream + * Number of reference frames. */ - public Stream withHeight(long height) { - Utils.checkNotNull(height, "height"); - this.height = Optional.ofNullable(height); - return this; - } - - /** - * The height of the video stream - */ - public Stream withHeight(Optional height) { - Utils.checkNotNull(height, "height"); - this.height = height; - return this; - } - - /** - * The level of the video codec - */ - public Stream withLevel(long level) { - Utils.checkNotNull(level, "level"); - this.level = Optional.ofNullable(level); - return this; - } - - /** - * The level of the video codec - */ - public Stream withLevel(Optional level) { - Utils.checkNotNull(level, "level"); - this.level = level; - return this; - } - - /** - * The profile of the video codec - */ - public Stream withProfile(String profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = Optional.ofNullable(profile); - return this; - } - - /** - * The profile of the video codec - */ - public Stream withProfile(Optional profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = profile; - return this; - } - - /** - * Number of reference frames - */ - public Stream withRefFrames(long refFrames) { + public Stream withRefFrames(int refFrames) { Utils.checkNotNull(refFrames, "refFrames"); this.refFrames = Optional.ofNullable(refFrames); return this; } /** - * Number of reference frames + * Number of reference frames. */ - public Stream withRefFrames(Optional refFrames) { + public Stream withRefFrames(Optional refFrames) { Utils.checkNotNull(refFrames, "refFrames"); this.refFrames = refFrames; return this; } /** - * The scan type (progressive or interlaced) + * Width of the video stream. */ - public Stream withScanType(String scanType) { - Utils.checkNotNull(scanType, "scanType"); - this.scanType = Optional.ofNullable(scanType); - return this; - } - - /** - * The scan type (progressive or interlaced) - */ - public Stream withScanType(Optional scanType) { - Utils.checkNotNull(scanType, "scanType"); - this.scanType = scanType; - return this; - } - - /** - * The width of the video stream - */ - public Stream withWidth(long width) { + public Stream withWidth(int width) { Utils.checkNotNull(width, "width"); this.width = Optional.ofNullable(width); return this; } /** - * The width of the video stream + * Width of the video stream. */ - public Stream withWidth(Optional width) { + public Stream withWidth(Optional width) { Utils.checkNotNull(width, "width"); this.width = width; return this; } /** - * Display title of the stream + * Display title for the stream. */ public Stream withDisplayTitle(String displayTitle) { - Utils.checkNotNull(displayTitle, "displayTitle"); - this.displayTitle = Optional.ofNullable(displayTitle); - return this; - } - - /** - * Display title of the stream - */ - public Stream withDisplayTitle(Optional displayTitle) { Utils.checkNotNull(displayTitle, "displayTitle"); this.displayTitle = displayTitle; return this; } /** - * Extended display title of the stream + * Extended display title for the stream. */ public Stream withExtendedDisplayTitle(String extendedDisplayTitle) { - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.extendedDisplayTitle = Optional.ofNullable(extendedDisplayTitle); - return this; - } - - /** - * Extended display title of the stream - */ - public Stream withExtendedDisplayTitle(Optional extendedDisplayTitle) { Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); this.extendedDisplayTitle = extendedDisplayTitle; return this; } /** - * Number of audio channels (for audio streams) + * Indicates if this stream is selected (applicable for audio streams). */ - public Stream withChannels(long channels) { + public Stream withSelected(boolean selected) { + Utils.checkNotNull(selected, "selected"); + this.selected = Optional.ofNullable(selected); + return this; + } + + /** + * Indicates if this stream is selected (applicable for audio streams). + */ + public Stream withSelected(Optional selected) { + Utils.checkNotNull(selected, "selected"); + this.selected = selected; + return this; + } + + public Stream withForced(boolean forced) { + Utils.checkNotNull(forced, "forced"); + this.forced = Optional.ofNullable(forced); + return this; + } + + public Stream withForced(Optional forced) { + Utils.checkNotNull(forced, "forced"); + this.forced = forced; + return this; + } + + /** + * Number of audio channels (for audio streams). + */ + public Stream withChannels(int channels) { Utils.checkNotNull(channels, "channels"); this.channels = Optional.ofNullable(channels); return this; } /** - * Number of audio channels (for audio streams) + * Number of audio channels (for audio streams). */ - public Stream withChannels(Optional channels) { + public Stream withChannels(Optional channels) { Utils.checkNotNull(channels, "channels"); this.channels = channels; return this; } /** - * The language of the stream (for audio/subtitle streams) - */ - public Stream withLanguage(String language) { - Utils.checkNotNull(language, "language"); - this.language = Optional.ofNullable(language); - return this; - } - - /** - * The language of the stream (for audio/subtitle streams) - */ - public Stream withLanguage(Optional language) { - Utils.checkNotNull(language, "language"); - this.language = language; - return this; - } - - /** - * Language tag of the stream - */ - public Stream withLanguageTag(String languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = Optional.ofNullable(languageTag); - return this; - } - - /** - * Language tag of the stream - */ - public Stream withLanguageTag(Optional languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = languageTag; - return this; - } - - /** - * Language code of the stream - */ - public Stream withLanguageCode(String languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = Optional.ofNullable(languageCode); - return this; - } - - /** - * Language code of the stream - */ - public Stream withLanguageCode(Optional languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = languageCode; - return this; - } - - /** - * The audio channel layout + * Audio channel layout. */ public Stream withAudioChannelLayout(String audioChannelLayout) { Utils.checkNotNull(audioChannelLayout, "audioChannelLayout"); @@ -1257,7 +1585,7 @@ public class Stream { } /** - * The audio channel layout + * Audio channel layout. */ public Stream withAudioChannelLayout(Optional audioChannelLayout) { Utils.checkNotNull(audioChannelLayout, "audioChannelLayout"); @@ -1266,43 +1594,25 @@ public class Stream { } /** - * Sampling rate of the audio stream in Hz + * Sampling rate for the audio stream. */ - public Stream withSamplingRate(long samplingRate) { + public Stream withSamplingRate(int samplingRate) { Utils.checkNotNull(samplingRate, "samplingRate"); this.samplingRate = Optional.ofNullable(samplingRate); return this; } /** - * Sampling rate of the audio stream in Hz + * Sampling rate for the audio stream. */ - public Stream withSamplingRate(Optional samplingRate) { + public Stream withSamplingRate(Optional samplingRate) { Utils.checkNotNull(samplingRate, "samplingRate"); this.samplingRate = samplingRate; return this; } /** - * Title of the subtitle track (for subtitle streams) - */ - public Stream withTitle(String title) { - Utils.checkNotNull(title, "title"); - this.title = Optional.ofNullable(title); - return this; - } - - /** - * Title of the subtitle track (for subtitle streams) - */ - public Stream withTitle(Optional title) { - Utils.checkNotNull(title, "title"); - this.title = title; - return this; - } - - /** - * Indicates if the subtitle stream can auto-sync + * Indicates if the stream can auto-sync. */ public Stream withCanAutoSync(boolean canAutoSync) { Utils.checkNotNull(canAutoSync, "canAutoSync"); @@ -1311,13 +1621,67 @@ public class Stream { } /** - * Indicates if the subtitle stream can auto-sync + * Indicates if the stream can auto-sync. */ public Stream withCanAutoSync(Optional canAutoSync) { Utils.checkNotNull(canAutoSync, "canAutoSync"); this.canAutoSync = canAutoSync; return this; } + + /** + * Indicates if the stream is for the hearing impaired. + */ + public Stream withHearingImpaired(boolean hearingImpaired) { + Utils.checkNotNull(hearingImpaired, "hearingImpaired"); + this.hearingImpaired = Optional.ofNullable(hearingImpaired); + return this; + } + + /** + * Indicates if the stream is for the hearing impaired. + */ + public Stream withHearingImpaired(Optional hearingImpaired) { + Utils.checkNotNull(hearingImpaired, "hearingImpaired"); + this.hearingImpaired = hearingImpaired; + return this; + } + + /** + * Indicates if the stream is a dub. + */ + public Stream withDub(boolean dub) { + Utils.checkNotNull(dub, "dub"); + this.dub = Optional.ofNullable(dub); + return this; + } + + /** + * Indicates if the stream is a dub. + */ + public Stream withDub(Optional dub) { + Utils.checkNotNull(dub, "dub"); + this.dub = dub; + return this; + } + + /** + * Optional title for the stream (e.g., language variant). + */ + public Stream withTitle(String title) { + Utils.checkNotNull(title, "title"); + this.title = Optional.ofNullable(title); + return this; + } + + /** + * Optional title for the stream (e.g., language variant). + */ + public Stream withTitle(Optional title) { + Utils.checkNotNull(title, "title"); + this.title = title; + return this; + } @Override public boolean equals(java.lang.Object o) { @@ -1332,41 +1696,52 @@ public class Stream { Objects.deepEquals(this.id, other.id) && Objects.deepEquals(this.streamType, other.streamType) && Objects.deepEquals(this.default_, other.default_) && - Objects.deepEquals(this.selected, other.selected) && Objects.deepEquals(this.codec, other.codec) && Objects.deepEquals(this.index, other.index) && Objects.deepEquals(this.bitrate, other.bitrate) && + Objects.deepEquals(this.language, other.language) && + Objects.deepEquals(this.languageTag, other.languageTag) && + Objects.deepEquals(this.languageCode, other.languageCode) && + Objects.deepEquals(this.headerCompression, other.headerCompression) && + Objects.deepEquals(this.doviblCompatID, other.doviblCompatID) && + Objects.deepEquals(this.doviblPresent, other.doviblPresent) && + Objects.deepEquals(this.dovielPresent, other.dovielPresent) && + Objects.deepEquals(this.doviLevel, other.doviLevel) && + Objects.deepEquals(this.doviPresent, other.doviPresent) && + Objects.deepEquals(this.doviProfile, other.doviProfile) && + Objects.deepEquals(this.dovirpuPresent, other.dovirpuPresent) && + Objects.deepEquals(this.doviVersion, other.doviVersion) && + Objects.deepEquals(this.bitDepth, other.bitDepth) && + Objects.deepEquals(this.chromaLocation, other.chromaLocation) && + Objects.deepEquals(this.chromaSubsampling, other.chromaSubsampling) && + Objects.deepEquals(this.codedHeight, other.codedHeight) && + Objects.deepEquals(this.codedWidth, other.codedWidth) && + Objects.deepEquals(this.closedCaptions, other.closedCaptions) && Objects.deepEquals(this.colorPrimaries, other.colorPrimaries) && Objects.deepEquals(this.colorRange, other.colorRange) && Objects.deepEquals(this.colorSpace, other.colorSpace) && Objects.deepEquals(this.colorTrc, other.colorTrc) && - Objects.deepEquals(this.bitDepth, other.bitDepth) && - Objects.deepEquals(this.chromaLocation, other.chromaLocation) && - Objects.deepEquals(this.streamIdentifier, other.streamIdentifier) && - Objects.deepEquals(this.chromaSubsampling, other.chromaSubsampling) && - Objects.deepEquals(this.codedHeight, other.codedHeight) && - Objects.deepEquals(this.codedWidth, other.codedWidth) && Objects.deepEquals(this.frameRate, other.frameRate) && - Objects.deepEquals(this.hasScalingMatrix, other.hasScalingMatrix) && - Objects.deepEquals(this.hearingImpaired, other.hearingImpaired) && - Objects.deepEquals(this.closedCaptions, other.closedCaptions) && - Objects.deepEquals(this.embeddedInVideo, other.embeddedInVideo) && Objects.deepEquals(this.height, other.height) && Objects.deepEquals(this.level, other.level) && + Objects.deepEquals(this.original, other.original) && + Objects.deepEquals(this.hasScalingMatrix, other.hasScalingMatrix) && Objects.deepEquals(this.profile, other.profile) && - Objects.deepEquals(this.refFrames, other.refFrames) && Objects.deepEquals(this.scanType, other.scanType) && + Objects.deepEquals(this.embeddedInVideo, other.embeddedInVideo) && + Objects.deepEquals(this.refFrames, other.refFrames) && Objects.deepEquals(this.width, other.width) && Objects.deepEquals(this.displayTitle, other.displayTitle) && Objects.deepEquals(this.extendedDisplayTitle, other.extendedDisplayTitle) && + Objects.deepEquals(this.selected, other.selected) && + Objects.deepEquals(this.forced, other.forced) && Objects.deepEquals(this.channels, other.channels) && - Objects.deepEquals(this.language, other.language) && - Objects.deepEquals(this.languageTag, other.languageTag) && - Objects.deepEquals(this.languageCode, other.languageCode) && Objects.deepEquals(this.audioChannelLayout, other.audioChannelLayout) && Objects.deepEquals(this.samplingRate, other.samplingRate) && - Objects.deepEquals(this.title, other.title) && - Objects.deepEquals(this.canAutoSync, other.canAutoSync); + Objects.deepEquals(this.canAutoSync, other.canAutoSync) && + Objects.deepEquals(this.hearingImpaired, other.hearingImpaired) && + Objects.deepEquals(this.dub, other.dub) && + Objects.deepEquals(this.title, other.title); } @Override @@ -1375,41 +1750,52 @@ public class Stream { id, streamType, default_, - selected, codec, index, bitrate, + language, + languageTag, + languageCode, + headerCompression, + doviblCompatID, + doviblPresent, + dovielPresent, + doviLevel, + doviPresent, + doviProfile, + dovirpuPresent, + doviVersion, + bitDepth, + chromaLocation, + chromaSubsampling, + codedHeight, + codedWidth, + closedCaptions, colorPrimaries, colorRange, colorSpace, colorTrc, - bitDepth, - chromaLocation, - streamIdentifier, - chromaSubsampling, - codedHeight, - codedWidth, frameRate, - hasScalingMatrix, - hearingImpaired, - closedCaptions, - embeddedInVideo, height, level, + original, + hasScalingMatrix, profile, - refFrames, scanType, + embeddedInVideo, + refFrames, width, displayTitle, extendedDisplayTitle, + selected, + forced, channels, - language, - languageTag, - languageCode, audioChannelLayout, samplingRate, - title, - canAutoSync); + canAutoSync, + hearingImpaired, + dub, + title); } @Override @@ -1418,58 +1804,103 @@ public class Stream { "id", id, "streamType", streamType, "default_", default_, - "selected", selected, "codec", codec, "index", index, "bitrate", bitrate, + "language", language, + "languageTag", languageTag, + "languageCode", languageCode, + "headerCompression", headerCompression, + "doviblCompatID", doviblCompatID, + "doviblPresent", doviblPresent, + "dovielPresent", dovielPresent, + "doviLevel", doviLevel, + "doviPresent", doviPresent, + "doviProfile", doviProfile, + "dovirpuPresent", dovirpuPresent, + "doviVersion", doviVersion, + "bitDepth", bitDepth, + "chromaLocation", chromaLocation, + "chromaSubsampling", chromaSubsampling, + "codedHeight", codedHeight, + "codedWidth", codedWidth, + "closedCaptions", closedCaptions, "colorPrimaries", colorPrimaries, "colorRange", colorRange, "colorSpace", colorSpace, "colorTrc", colorTrc, - "bitDepth", bitDepth, - "chromaLocation", chromaLocation, - "streamIdentifier", streamIdentifier, - "chromaSubsampling", chromaSubsampling, - "codedHeight", codedHeight, - "codedWidth", codedWidth, "frameRate", frameRate, - "hasScalingMatrix", hasScalingMatrix, - "hearingImpaired", hearingImpaired, - "closedCaptions", closedCaptions, - "embeddedInVideo", embeddedInVideo, "height", height, "level", level, + "original", original, + "hasScalingMatrix", hasScalingMatrix, "profile", profile, - "refFrames", refFrames, "scanType", scanType, + "embeddedInVideo", embeddedInVideo, + "refFrames", refFrames, "width", width, "displayTitle", displayTitle, "extendedDisplayTitle", extendedDisplayTitle, + "selected", selected, + "forced", forced, "channels", channels, - "language", language, - "languageTag", languageTag, - "languageCode", languageCode, "audioChannelLayout", audioChannelLayout, "samplingRate", samplingRate, - "title", title, - "canAutoSync", canAutoSync); + "canAutoSync", canAutoSync, + "hearingImpaired", hearingImpaired, + "dub", dub, + "title", title); } public final static class Builder { private Long id; - private Long streamType; + private Integer streamType; private Optional default_ = Optional.empty(); - private Optional selected = Optional.empty(); - private String codec; - private Long index; + private Integer index; - private Optional bitrate = Optional.empty(); + private Optional bitrate = Optional.empty(); + + private Optional language = Optional.empty(); + + private Optional languageTag = Optional.empty(); + + private Optional languageCode = Optional.empty(); + + private Optional headerCompression = Optional.empty(); + + private Optional doviblCompatID = Optional.empty(); + + private Optional doviblPresent = Optional.empty(); + + private Optional dovielPresent = Optional.empty(); + + private Optional doviLevel = Optional.empty(); + + private Optional doviPresent = Optional.empty(); + + private Optional doviProfile = Optional.empty(); + + private Optional dovirpuPresent = Optional.empty(); + + private Optional doviVersion = Optional.empty(); + + private Optional bitDepth = Optional.empty(); + + private Optional chromaLocation = Optional.empty(); + + private Optional chromaSubsampling = Optional.empty(); + + private Optional codedHeight = Optional.empty(); + + private Optional codedWidth = Optional.empty(); + + private Optional closedCaptions = Optional.empty(); private Optional colorPrimaries = Optional.empty(); @@ -1479,64 +1910,55 @@ public class Stream { private Optional colorTrc = Optional.empty(); - private Optional bitDepth = Optional.empty(); + private Optional frameRate = Optional.empty(); - private Optional chromaLocation = Optional.empty(); + private Optional height = Optional.empty(); - private Optional streamIdentifier = Optional.empty(); + private Optional level = Optional.empty(); - private Optional chromaSubsampling = Optional.empty(); - - private Optional codedHeight = Optional.empty(); - - private Optional codedWidth = Optional.empty(); - - private Optional frameRate = Optional.empty(); + private Optional original = Optional.empty(); private Optional hasScalingMatrix = Optional.empty(); - private Optional hearingImpaired = Optional.empty(); - - private Optional closedCaptions = Optional.empty(); - - private Optional embeddedInVideo = Optional.empty(); - - private Optional height = Optional.empty(); - - private Optional level = Optional.empty(); - private Optional profile = Optional.empty(); - private Optional refFrames = Optional.empty(); - private Optional scanType = Optional.empty(); - private Optional width = Optional.empty(); + private Optional embeddedInVideo = Optional.empty(); - private Optional displayTitle = Optional.empty(); + private Optional refFrames = Optional.empty(); - private Optional extendedDisplayTitle = Optional.empty(); + private Optional width = Optional.empty(); - private Optional channels = Optional.empty(); + private String displayTitle; - private Optional language = Optional.empty(); + private String extendedDisplayTitle; - private Optional languageTag = Optional.empty(); + private Optional selected = Optional.empty(); - private Optional languageCode = Optional.empty(); + private Optional forced = Optional.empty(); + + private Optional channels = Optional.empty(); private Optional audioChannelLayout = Optional.empty(); - private Optional samplingRate = Optional.empty(); + private Optional samplingRate = Optional.empty(); - private Optional title = Optional.empty(); + private Optional canAutoSync = Optional.empty(); - private Optional canAutoSync = Optional.empty(); + private Optional hearingImpaired = Optional.empty(); + + private Optional dub = Optional.empty(); + + private Optional title = Optional.empty(); private Builder() { // force use of static builder() method } + /** + * Unique stream identifier. + */ public Builder id(long id) { Utils.checkNotNull(id, "id"); this.id = id; @@ -1544,16 +1966,16 @@ public class Stream { } /** - * Type of stream (1 = video, 2 = audio, 3 = subtitle) + * Stream type (1=video, 2=audio, 3=subtitle). */ - public Builder streamType(long streamType) { + public Builder streamType(int streamType) { Utils.checkNotNull(streamType, "streamType"); this.streamType = streamType; return this; } /** - * Indicates if this is the default stream + * Indicates if this stream is default. */ public Builder default_(boolean default_) { Utils.checkNotNull(default_, "default_"); @@ -1562,7 +1984,7 @@ public class Stream { } /** - * Indicates if this is the default stream + * Indicates if this stream is default. */ public Builder default_(Optional default_) { Utils.checkNotNull(default_, "default_"); @@ -1571,25 +1993,7 @@ public class Stream { } /** - * Indicates if the stream is selected - */ - public Builder selected(boolean selected) { - Utils.checkNotNull(selected, "selected"); - this.selected = Optional.ofNullable(selected); - return this; - } - - /** - * Indicates if the stream is selected - */ - public Builder selected(Optional selected) { - Utils.checkNotNull(selected, "selected"); - this.selected = selected; - return this; - } - - /** - * Codec used by the stream + * Codec used by the stream. */ public Builder codec(String codec) { Utils.checkNotNull(codec, "codec"); @@ -1598,124 +2002,268 @@ public class Stream { } /** - * The index of the stream + * Index of the stream. */ - public Builder index(long index) { + public Builder index(int index) { Utils.checkNotNull(index, "index"); this.index = index; return this; } /** - * The bitrate of the stream in kbps + * Bitrate of the stream. */ - public Builder bitrate(long bitrate) { + public Builder bitrate(int bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = Optional.ofNullable(bitrate); return this; } /** - * The bitrate of the stream in kbps + * Bitrate of the stream. */ - public Builder bitrate(Optional bitrate) { + public Builder bitrate(Optional bitrate) { Utils.checkNotNull(bitrate, "bitrate"); this.bitrate = bitrate; return this; } /** - * The color primaries of the video stream + * Language of the stream. */ - public Builder colorPrimaries(String colorPrimaries) { - Utils.checkNotNull(colorPrimaries, "colorPrimaries"); - this.colorPrimaries = Optional.ofNullable(colorPrimaries); + public Builder language(String language) { + Utils.checkNotNull(language, "language"); + this.language = Optional.ofNullable(language); return this; } /** - * The color primaries of the video stream + * Language of the stream. */ - public Builder colorPrimaries(Optional colorPrimaries) { - Utils.checkNotNull(colorPrimaries, "colorPrimaries"); - this.colorPrimaries = colorPrimaries; + public Builder language(Optional language) { + Utils.checkNotNull(language, "language"); + this.language = language; return this; } /** - * The color range of the video stream + * Language tag (e.g., en). */ - public Builder colorRange(String colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = Optional.ofNullable(colorRange); + public Builder languageTag(String languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = Optional.ofNullable(languageTag); return this; } /** - * The color range of the video stream + * Language tag (e.g., en). */ - public Builder colorRange(Optional colorRange) { - Utils.checkNotNull(colorRange, "colorRange"); - this.colorRange = colorRange; + public Builder languageTag(Optional languageTag) { + Utils.checkNotNull(languageTag, "languageTag"); + this.languageTag = languageTag; return this; } /** - * The color space of the video stream + * ISO language code. */ - public Builder colorSpace(String colorSpace) { - Utils.checkNotNull(colorSpace, "colorSpace"); - this.colorSpace = Optional.ofNullable(colorSpace); + public Builder languageCode(String languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = Optional.ofNullable(languageCode); return this; } /** - * The color space of the video stream + * ISO language code. */ - public Builder colorSpace(Optional colorSpace) { - Utils.checkNotNull(colorSpace, "colorSpace"); - this.colorSpace = colorSpace; + public Builder languageCode(Optional languageCode) { + Utils.checkNotNull(languageCode, "languageCode"); + this.languageCode = languageCode; return this; } /** - * The transfer characteristics (TRC) of the video stream + * Indicates whether header compression is enabled. */ - public Builder colorTrc(String colorTrc) { - Utils.checkNotNull(colorTrc, "colorTrc"); - this.colorTrc = Optional.ofNullable(colorTrc); + public Builder headerCompression(boolean headerCompression) { + Utils.checkNotNull(headerCompression, "headerCompression"); + this.headerCompression = Optional.ofNullable(headerCompression); return this; } /** - * The transfer characteristics (TRC) of the video stream + * Indicates whether header compression is enabled. */ - public Builder colorTrc(Optional colorTrc) { - Utils.checkNotNull(colorTrc, "colorTrc"); - this.colorTrc = colorTrc; + public Builder headerCompression(Optional headerCompression) { + Utils.checkNotNull(headerCompression, "headerCompression"); + this.headerCompression = headerCompression; return this; } /** - * The bit depth of the video stream + * Dolby Vision BL compatibility ID. */ - public Builder bitDepth(long bitDepth) { + public Builder doviblCompatID(int doviblCompatID) { + Utils.checkNotNull(doviblCompatID, "doviblCompatID"); + this.doviblCompatID = Optional.ofNullable(doviblCompatID); + return this; + } + + /** + * Dolby Vision BL compatibility ID. + */ + public Builder doviblCompatID(Optional doviblCompatID) { + Utils.checkNotNull(doviblCompatID, "doviblCompatID"); + this.doviblCompatID = doviblCompatID; + return this; + } + + /** + * Indicates if Dolby Vision BL is present. + */ + public Builder doviblPresent(boolean doviblPresent) { + Utils.checkNotNull(doviblPresent, "doviblPresent"); + this.doviblPresent = Optional.ofNullable(doviblPresent); + return this; + } + + /** + * Indicates if Dolby Vision BL is present. + */ + public Builder doviblPresent(Optional doviblPresent) { + Utils.checkNotNull(doviblPresent, "doviblPresent"); + this.doviblPresent = doviblPresent; + return this; + } + + /** + * Indicates if Dolby Vision EL is present. + */ + public Builder dovielPresent(boolean dovielPresent) { + Utils.checkNotNull(dovielPresent, "dovielPresent"); + this.dovielPresent = Optional.ofNullable(dovielPresent); + return this; + } + + /** + * Indicates if Dolby Vision EL is present. + */ + public Builder dovielPresent(Optional dovielPresent) { + Utils.checkNotNull(dovielPresent, "dovielPresent"); + this.dovielPresent = dovielPresent; + return this; + } + + /** + * Dolby Vision level. + */ + public Builder doviLevel(int doviLevel) { + Utils.checkNotNull(doviLevel, "doviLevel"); + this.doviLevel = Optional.ofNullable(doviLevel); + return this; + } + + /** + * Dolby Vision level. + */ + public Builder doviLevel(Optional doviLevel) { + Utils.checkNotNull(doviLevel, "doviLevel"); + this.doviLevel = doviLevel; + return this; + } + + /** + * Indicates if Dolby Vision is present. + */ + public Builder doviPresent(boolean doviPresent) { + Utils.checkNotNull(doviPresent, "doviPresent"); + this.doviPresent = Optional.ofNullable(doviPresent); + return this; + } + + /** + * Indicates if Dolby Vision is present. + */ + public Builder doviPresent(Optional doviPresent) { + Utils.checkNotNull(doviPresent, "doviPresent"); + this.doviPresent = doviPresent; + return this; + } + + /** + * Dolby Vision profile. + */ + public Builder doviProfile(int doviProfile) { + Utils.checkNotNull(doviProfile, "doviProfile"); + this.doviProfile = Optional.ofNullable(doviProfile); + return this; + } + + /** + * Dolby Vision profile. + */ + public Builder doviProfile(Optional doviProfile) { + Utils.checkNotNull(doviProfile, "doviProfile"); + this.doviProfile = doviProfile; + return this; + } + + /** + * Indicates if Dolby Vision RPU is present. + */ + public Builder dovirpuPresent(boolean dovirpuPresent) { + Utils.checkNotNull(dovirpuPresent, "dovirpuPresent"); + this.dovirpuPresent = Optional.ofNullable(dovirpuPresent); + return this; + } + + /** + * Indicates if Dolby Vision RPU is present. + */ + public Builder dovirpuPresent(Optional dovirpuPresent) { + Utils.checkNotNull(dovirpuPresent, "dovirpuPresent"); + this.dovirpuPresent = dovirpuPresent; + return this; + } + + /** + * Dolby Vision version. + */ + public Builder doviVersion(String doviVersion) { + Utils.checkNotNull(doviVersion, "doviVersion"); + this.doviVersion = Optional.ofNullable(doviVersion); + return this; + } + + /** + * Dolby Vision version. + */ + public Builder doviVersion(Optional doviVersion) { + Utils.checkNotNull(doviVersion, "doviVersion"); + this.doviVersion = doviVersion; + return this; + } + + /** + * Bit depth of the video stream. + */ + public Builder bitDepth(int bitDepth) { Utils.checkNotNull(bitDepth, "bitDepth"); this.bitDepth = Optional.ofNullable(bitDepth); return this; } /** - * The bit depth of the video stream + * Bit depth of the video stream. */ - public Builder bitDepth(Optional bitDepth) { + public Builder bitDepth(Optional bitDepth) { Utils.checkNotNull(bitDepth, "bitDepth"); this.bitDepth = bitDepth; return this; } /** - * The chroma location of the video stream + * Chroma sample location. */ public Builder chromaLocation(String chromaLocation) { Utils.checkNotNull(chromaLocation, "chromaLocation"); @@ -1724,7 +2272,7 @@ public class Stream { } /** - * The chroma location of the video stream + * Chroma sample location. */ public Builder chromaLocation(Optional chromaLocation) { Utils.checkNotNull(chromaLocation, "chromaLocation"); @@ -1733,25 +2281,7 @@ public class Stream { } /** - * The identifier of the video stream - */ - public Builder streamIdentifier(String streamIdentifier) { - Utils.checkNotNull(streamIdentifier, "streamIdentifier"); - this.streamIdentifier = Optional.ofNullable(streamIdentifier); - return this; - } - - /** - * The identifier of the video stream - */ - public Builder streamIdentifier(Optional streamIdentifier) { - Utils.checkNotNull(streamIdentifier, "streamIdentifier"); - this.streamIdentifier = streamIdentifier; - return this; - } - - /** - * The chroma subsampling format + * Chroma subsampling format. */ public Builder chromaSubsampling(String chromaSubsampling) { Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); @@ -1760,7 +2290,7 @@ public class Stream { } /** - * The chroma subsampling format + * Chroma subsampling format. */ public Builder chromaSubsampling(Optional chromaSubsampling) { Utils.checkNotNull(chromaSubsampling, "chromaSubsampling"); @@ -1769,89 +2299,41 @@ public class Stream { } /** - * The coded height of the video stream + * Coded video height. */ - public Builder codedHeight(long codedHeight) { + public Builder codedHeight(int codedHeight) { Utils.checkNotNull(codedHeight, "codedHeight"); this.codedHeight = Optional.ofNullable(codedHeight); return this; } /** - * The coded height of the video stream + * Coded video height. */ - public Builder codedHeight(Optional codedHeight) { + public Builder codedHeight(Optional codedHeight) { Utils.checkNotNull(codedHeight, "codedHeight"); this.codedHeight = codedHeight; return this; } /** - * The coded width of the video stream + * Coded video width. */ - public Builder codedWidth(long codedWidth) { + public Builder codedWidth(int codedWidth) { Utils.checkNotNull(codedWidth, "codedWidth"); this.codedWidth = Optional.ofNullable(codedWidth); return this; } /** - * The coded width of the video stream + * Coded video width. */ - public Builder codedWidth(Optional codedWidth) { + public Builder codedWidth(Optional codedWidth) { Utils.checkNotNull(codedWidth, "codedWidth"); this.codedWidth = codedWidth; return this; } - /** - * The frame rate of the video stream - */ - public Builder frameRate(double frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = Optional.ofNullable(frameRate); - return this; - } - - /** - * The frame rate of the video stream - */ - public Builder frameRate(Optional frameRate) { - Utils.checkNotNull(frameRate, "frameRate"); - this.frameRate = frameRate; - return this; - } - - /** - * Indicates if the stream has a scaling matrix - */ - public Builder hasScalingMatrix(boolean hasScalingMatrix) { - Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); - this.hasScalingMatrix = Optional.ofNullable(hasScalingMatrix); - return this; - } - - /** - * Indicates if the stream has a scaling matrix - */ - public Builder hasScalingMatrix(Optional hasScalingMatrix) { - Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); - this.hasScalingMatrix = hasScalingMatrix; - return this; - } - - public Builder hearingImpaired(boolean hearingImpaired) { - Utils.checkNotNull(hearingImpaired, "hearingImpaired"); - this.hearingImpaired = Optional.ofNullable(hearingImpaired); - return this; - } - - public Builder hearingImpaired(Optional hearingImpaired) { - Utils.checkNotNull(hearingImpaired, "hearingImpaired"); - this.hearingImpaired = hearingImpaired; - return this; - } - public Builder closedCaptions(boolean closedCaptions) { Utils.checkNotNull(closedCaptions, "closedCaptions"); this.closedCaptions = Optional.ofNullable(closedCaptions); @@ -1864,6 +2346,192 @@ public class Stream { return this; } + /** + * Color primaries used. + */ + public Builder colorPrimaries(String colorPrimaries) { + Utils.checkNotNull(colorPrimaries, "colorPrimaries"); + this.colorPrimaries = Optional.ofNullable(colorPrimaries); + return this; + } + + /** + * Color primaries used. + */ + public Builder colorPrimaries(Optional colorPrimaries) { + Utils.checkNotNull(colorPrimaries, "colorPrimaries"); + this.colorPrimaries = colorPrimaries; + return this; + } + + /** + * Color range (e.g., tv). + */ + public Builder colorRange(String colorRange) { + Utils.checkNotNull(colorRange, "colorRange"); + this.colorRange = Optional.ofNullable(colorRange); + return this; + } + + /** + * Color range (e.g., tv). + */ + public Builder colorRange(Optional colorRange) { + Utils.checkNotNull(colorRange, "colorRange"); + this.colorRange = colorRange; + return this; + } + + /** + * Color space. + */ + public Builder colorSpace(String colorSpace) { + Utils.checkNotNull(colorSpace, "colorSpace"); + this.colorSpace = Optional.ofNullable(colorSpace); + return this; + } + + /** + * Color space. + */ + public Builder colorSpace(Optional colorSpace) { + Utils.checkNotNull(colorSpace, "colorSpace"); + this.colorSpace = colorSpace; + return this; + } + + /** + * Color transfer characteristics. + */ + public Builder colorTrc(String colorTrc) { + Utils.checkNotNull(colorTrc, "colorTrc"); + this.colorTrc = Optional.ofNullable(colorTrc); + return this; + } + + /** + * Color transfer characteristics. + */ + public Builder colorTrc(Optional colorTrc) { + Utils.checkNotNull(colorTrc, "colorTrc"); + this.colorTrc = colorTrc; + return this; + } + + /** + * Frame rate of the stream. + */ + public Builder frameRate(float frameRate) { + Utils.checkNotNull(frameRate, "frameRate"); + this.frameRate = Optional.ofNullable(frameRate); + return this; + } + + /** + * Frame rate of the stream. + */ + public Builder frameRate(Optional frameRate) { + Utils.checkNotNull(frameRate, "frameRate"); + this.frameRate = frameRate; + return this; + } + + /** + * Height of the video stream. + */ + public Builder height(int height) { + Utils.checkNotNull(height, "height"); + this.height = Optional.ofNullable(height); + return this; + } + + /** + * Height of the video stream. + */ + public Builder height(Optional height) { + Utils.checkNotNull(height, "height"); + this.height = height; + return this; + } + + /** + * Video level. + */ + public Builder level(int level) { + Utils.checkNotNull(level, "level"); + this.level = Optional.ofNullable(level); + return this; + } + + /** + * Video level. + */ + public Builder level(Optional level) { + Utils.checkNotNull(level, "level"); + this.level = level; + return this; + } + + /** + * Indicates if this is the original stream. + */ + public Builder original(boolean original) { + Utils.checkNotNull(original, "original"); + this.original = Optional.ofNullable(original); + return this; + } + + /** + * Indicates if this is the original stream. + */ + public Builder original(Optional original) { + Utils.checkNotNull(original, "original"); + this.original = original; + return this; + } + + public Builder hasScalingMatrix(boolean hasScalingMatrix) { + Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); + this.hasScalingMatrix = Optional.ofNullable(hasScalingMatrix); + return this; + } + + public Builder hasScalingMatrix(Optional hasScalingMatrix) { + Utils.checkNotNull(hasScalingMatrix, "hasScalingMatrix"); + this.hasScalingMatrix = hasScalingMatrix; + return this; + } + + /** + * Video profile. + */ + public Builder profile(String profile) { + Utils.checkNotNull(profile, "profile"); + this.profile = Optional.ofNullable(profile); + return this; + } + + /** + * Video profile. + */ + public Builder profile(Optional profile) { + Utils.checkNotNull(profile, "profile"); + this.profile = profile; + return this; + } + + public Builder scanType(String scanType) { + Utils.checkNotNull(scanType, "scanType"); + this.scanType = Optional.ofNullable(scanType); + return this; + } + + public Builder scanType(Optional scanType) { + Utils.checkNotNull(scanType, "scanType"); + this.scanType = scanType; + return this; + } + public Builder embeddedInVideo(String embeddedInVideo) { Utils.checkNotNull(embeddedInVideo, "embeddedInVideo"); this.embeddedInVideo = Optional.ofNullable(embeddedInVideo); @@ -1877,223 +2545,109 @@ public class Stream { } /** - * The height of the video stream + * Number of reference frames. */ - public Builder height(long height) { - Utils.checkNotNull(height, "height"); - this.height = Optional.ofNullable(height); - return this; - } - - /** - * The height of the video stream - */ - public Builder height(Optional height) { - Utils.checkNotNull(height, "height"); - this.height = height; - return this; - } - - /** - * The level of the video codec - */ - public Builder level(long level) { - Utils.checkNotNull(level, "level"); - this.level = Optional.ofNullable(level); - return this; - } - - /** - * The level of the video codec - */ - public Builder level(Optional level) { - Utils.checkNotNull(level, "level"); - this.level = level; - return this; - } - - /** - * The profile of the video codec - */ - public Builder profile(String profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = Optional.ofNullable(profile); - return this; - } - - /** - * The profile of the video codec - */ - public Builder profile(Optional profile) { - Utils.checkNotNull(profile, "profile"); - this.profile = profile; - return this; - } - - /** - * Number of reference frames - */ - public Builder refFrames(long refFrames) { + public Builder refFrames(int refFrames) { Utils.checkNotNull(refFrames, "refFrames"); this.refFrames = Optional.ofNullable(refFrames); return this; } /** - * Number of reference frames + * Number of reference frames. */ - public Builder refFrames(Optional refFrames) { + public Builder refFrames(Optional refFrames) { Utils.checkNotNull(refFrames, "refFrames"); this.refFrames = refFrames; return this; } /** - * The scan type (progressive or interlaced) + * Width of the video stream. */ - public Builder scanType(String scanType) { - Utils.checkNotNull(scanType, "scanType"); - this.scanType = Optional.ofNullable(scanType); - return this; - } - - /** - * The scan type (progressive or interlaced) - */ - public Builder scanType(Optional scanType) { - Utils.checkNotNull(scanType, "scanType"); - this.scanType = scanType; - return this; - } - - /** - * The width of the video stream - */ - public Builder width(long width) { + public Builder width(int width) { Utils.checkNotNull(width, "width"); this.width = Optional.ofNullable(width); return this; } /** - * The width of the video stream + * Width of the video stream. */ - public Builder width(Optional width) { + public Builder width(Optional width) { Utils.checkNotNull(width, "width"); this.width = width; return this; } /** - * Display title of the stream + * Display title for the stream. */ public Builder displayTitle(String displayTitle) { - Utils.checkNotNull(displayTitle, "displayTitle"); - this.displayTitle = Optional.ofNullable(displayTitle); - return this; - } - - /** - * Display title of the stream - */ - public Builder displayTitle(Optional displayTitle) { Utils.checkNotNull(displayTitle, "displayTitle"); this.displayTitle = displayTitle; return this; } /** - * Extended display title of the stream + * Extended display title for the stream. */ public Builder extendedDisplayTitle(String extendedDisplayTitle) { - Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); - this.extendedDisplayTitle = Optional.ofNullable(extendedDisplayTitle); - return this; - } - - /** - * Extended display title of the stream - */ - public Builder extendedDisplayTitle(Optional extendedDisplayTitle) { Utils.checkNotNull(extendedDisplayTitle, "extendedDisplayTitle"); this.extendedDisplayTitle = extendedDisplayTitle; return this; } /** - * Number of audio channels (for audio streams) + * Indicates if this stream is selected (applicable for audio streams). */ - public Builder channels(long channels) { + public Builder selected(boolean selected) { + Utils.checkNotNull(selected, "selected"); + this.selected = Optional.ofNullable(selected); + return this; + } + + /** + * Indicates if this stream is selected (applicable for audio streams). + */ + public Builder selected(Optional selected) { + Utils.checkNotNull(selected, "selected"); + this.selected = selected; + return this; + } + + public Builder forced(boolean forced) { + Utils.checkNotNull(forced, "forced"); + this.forced = Optional.ofNullable(forced); + return this; + } + + public Builder forced(Optional forced) { + Utils.checkNotNull(forced, "forced"); + this.forced = forced; + return this; + } + + /** + * Number of audio channels (for audio streams). + */ + public Builder channels(int channels) { Utils.checkNotNull(channels, "channels"); this.channels = Optional.ofNullable(channels); return this; } /** - * Number of audio channels (for audio streams) + * Number of audio channels (for audio streams). */ - public Builder channels(Optional channels) { + public Builder channels(Optional channels) { Utils.checkNotNull(channels, "channels"); this.channels = channels; return this; } /** - * The language of the stream (for audio/subtitle streams) - */ - public Builder language(String language) { - Utils.checkNotNull(language, "language"); - this.language = Optional.ofNullable(language); - return this; - } - - /** - * The language of the stream (for audio/subtitle streams) - */ - public Builder language(Optional language) { - Utils.checkNotNull(language, "language"); - this.language = language; - return this; - } - - /** - * Language tag of the stream - */ - public Builder languageTag(String languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = Optional.ofNullable(languageTag); - return this; - } - - /** - * Language tag of the stream - */ - public Builder languageTag(Optional languageTag) { - Utils.checkNotNull(languageTag, "languageTag"); - this.languageTag = languageTag; - return this; - } - - /** - * Language code of the stream - */ - public Builder languageCode(String languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = Optional.ofNullable(languageCode); - return this; - } - - /** - * Language code of the stream - */ - public Builder languageCode(Optional languageCode) { - Utils.checkNotNull(languageCode, "languageCode"); - this.languageCode = languageCode; - return this; - } - - /** - * The audio channel layout + * Audio channel layout. */ public Builder audioChannelLayout(String audioChannelLayout) { Utils.checkNotNull(audioChannelLayout, "audioChannelLayout"); @@ -2102,7 +2656,7 @@ public class Stream { } /** - * The audio channel layout + * Audio channel layout. */ public Builder audioChannelLayout(Optional audioChannelLayout) { Utils.checkNotNull(audioChannelLayout, "audioChannelLayout"); @@ -2111,43 +2665,25 @@ public class Stream { } /** - * Sampling rate of the audio stream in Hz + * Sampling rate for the audio stream. */ - public Builder samplingRate(long samplingRate) { + public Builder samplingRate(int samplingRate) { Utils.checkNotNull(samplingRate, "samplingRate"); this.samplingRate = Optional.ofNullable(samplingRate); return this; } /** - * Sampling rate of the audio stream in Hz + * Sampling rate for the audio stream. */ - public Builder samplingRate(Optional samplingRate) { + public Builder samplingRate(Optional samplingRate) { Utils.checkNotNull(samplingRate, "samplingRate"); this.samplingRate = samplingRate; return this; } /** - * Title of the subtitle track (for subtitle streams) - */ - public Builder title(String title) { - Utils.checkNotNull(title, "title"); - this.title = Optional.ofNullable(title); - return this; - } - - /** - * Title of the subtitle track (for subtitle streams) - */ - public Builder title(Optional title) { - Utils.checkNotNull(title, "title"); - this.title = title; - return this; - } - - /** - * Indicates if the subtitle stream can auto-sync + * Indicates if the stream can auto-sync. */ public Builder canAutoSync(boolean canAutoSync) { Utils.checkNotNull(canAutoSync, "canAutoSync"); @@ -2156,54 +2692,119 @@ public class Stream { } /** - * Indicates if the subtitle stream can auto-sync + * Indicates if the stream can auto-sync. */ public Builder canAutoSync(Optional canAutoSync) { Utils.checkNotNull(canAutoSync, "canAutoSync"); this.canAutoSync = canAutoSync; return this; } + + /** + * Indicates if the stream is for the hearing impaired. + */ + public Builder hearingImpaired(boolean hearingImpaired) { + Utils.checkNotNull(hearingImpaired, "hearingImpaired"); + this.hearingImpaired = Optional.ofNullable(hearingImpaired); + return this; + } + + /** + * Indicates if the stream is for the hearing impaired. + */ + public Builder hearingImpaired(Optional hearingImpaired) { + Utils.checkNotNull(hearingImpaired, "hearingImpaired"); + this.hearingImpaired = hearingImpaired; + return this; + } + + /** + * Indicates if the stream is a dub. + */ + public Builder dub(boolean dub) { + Utils.checkNotNull(dub, "dub"); + this.dub = Optional.ofNullable(dub); + return this; + } + + /** + * Indicates if the stream is a dub. + */ + public Builder dub(Optional dub) { + Utils.checkNotNull(dub, "dub"); + this.dub = dub; + return this; + } + + /** + * Optional title for the stream (e.g., language variant). + */ + public Builder title(String title) { + Utils.checkNotNull(title, "title"); + this.title = Optional.ofNullable(title); + return this; + } + + /** + * Optional title for the stream (e.g., language variant). + */ + public Builder title(Optional title) { + Utils.checkNotNull(title, "title"); + this.title = title; + return this; + } public Stream build() { return new Stream( id, streamType, default_, - selected, codec, index, bitrate, + language, + languageTag, + languageCode, + headerCompression, + doviblCompatID, + doviblPresent, + dovielPresent, + doviLevel, + doviPresent, + doviProfile, + dovirpuPresent, + doviVersion, + bitDepth, + chromaLocation, + chromaSubsampling, + codedHeight, + codedWidth, + closedCaptions, colorPrimaries, colorRange, colorSpace, colorTrc, - bitDepth, - chromaLocation, - streamIdentifier, - chromaSubsampling, - codedHeight, - codedWidth, frameRate, - hasScalingMatrix, - hearingImpaired, - closedCaptions, - embeddedInVideo, height, level, + original, + hasScalingMatrix, profile, - refFrames, scanType, + embeddedInVideo, + refFrames, width, displayTitle, extendedDisplayTitle, + selected, + forced, channels, - language, - languageTag, - languageCode, audioChannelLayout, samplingRate, - title, - canAutoSync); + canAutoSync, + hearingImpaired, + dub, + title); } } } diff --git a/src/main/java/dev/plexapi/sdk/models/operations/Writer.java b/src/main/java/dev/plexapi/sdk/models/operations/Writer.java index 158b9cd3..a59d6d34 100644 --- a/src/main/java/dev/plexapi/sdk/models/operations/Writer.java +++ b/src/main/java/dev/plexapi/sdk/models/operations/Writer.java @@ -10,6 +10,7 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import dev.plexapi.sdk.utils.Utils; +import java.lang.Long; import java.lang.Override; import java.lang.String; import java.util.Objects; @@ -17,41 +18,134 @@ import java.util.Optional; public class Writer { - @JsonInclude(Include.NON_ABSENT) + /** + * Unique identifier for the writer. + */ + @JsonProperty("id") + private long id; + + /** + * The filter string used to query this writer. + */ + @JsonProperty("filter") + private String filter; + + /** + * The role of Writer + */ @JsonProperty("tag") - private Optional tag; + private String tag; + + /** + * A unique key associated with the writers tag, used for internal identification. + */ + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("tagKey") + private Optional tagKey; @JsonCreator public Writer( - @JsonProperty("tag") Optional tag) { + @JsonProperty("id") long id, + @JsonProperty("filter") String filter, + @JsonProperty("tag") String tag, + @JsonProperty("tagKey") Optional tagKey) { + Utils.checkNotNull(id, "id"); + Utils.checkNotNull(filter, "filter"); Utils.checkNotNull(tag, "tag"); + Utils.checkNotNull(tagKey, "tagKey"); + this.id = id; + this.filter = filter; this.tag = tag; + this.tagKey = tagKey; } - public Writer() { - this(Optional.empty()); + public Writer( + long id, + String filter, + String tag) { + this(id, filter, tag, Optional.empty()); } + /** + * Unique identifier for the writer. + */ @JsonIgnore - public Optional tag() { + public long id() { + return id; + } + + /** + * The filter string used to query this writer. + */ + @JsonIgnore + public String filter() { + return filter; + } + + /** + * The role of Writer + */ + @JsonIgnore + public String tag() { return tag; } + /** + * A unique key associated with the writers tag, used for internal identification. + */ + @JsonIgnore + public Optional tagKey() { + return tagKey; + } + public final static Builder builder() { return new Builder(); } - public Writer withTag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); + /** + * Unique identifier for the writer. + */ + public Writer withId(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; return this; } - public Writer withTag(Optional tag) { + /** + * The filter string used to query this writer. + */ + public Writer withFilter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The role of Writer + */ + public Writer withTag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; } + + /** + * A unique key associated with the writers tag, used for internal identification. + */ + public Writer withTagKey(String tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = Optional.ofNullable(tagKey); + return this; + } + + /** + * A unique key associated with the writers tag, used for internal identification. + */ + public Writer withTagKey(Optional tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = tagKey; + return this; + } @Override public boolean equals(java.lang.Object o) { @@ -63,44 +157,95 @@ public class Writer { } Writer other = (Writer) o; return - Objects.deepEquals(this.tag, other.tag); + Objects.deepEquals(this.id, other.id) && + Objects.deepEquals(this.filter, other.filter) && + Objects.deepEquals(this.tag, other.tag) && + Objects.deepEquals(this.tagKey, other.tagKey); } @Override public int hashCode() { return Objects.hash( - tag); + id, + filter, + tag, + tagKey); } @Override public String toString() { return Utils.toString(Writer.class, - "tag", tag); + "id", id, + "filter", filter, + "tag", tag, + "tagKey", tagKey); } public final static class Builder { - private Optional tag = Optional.empty(); + private Long id; + + private String filter; + + private String tag; + + private Optional tagKey = Optional.empty(); private Builder() { // force use of static builder() method } - public Builder tag(String tag) { - Utils.checkNotNull(tag, "tag"); - this.tag = Optional.ofNullable(tag); + /** + * Unique identifier for the writer. + */ + public Builder id(long id) { + Utils.checkNotNull(id, "id"); + this.id = id; return this; } - public Builder tag(Optional tag) { + /** + * The filter string used to query this writer. + */ + public Builder filter(String filter) { + Utils.checkNotNull(filter, "filter"); + this.filter = filter; + return this; + } + + /** + * The role of Writer + */ + public Builder tag(String tag) { Utils.checkNotNull(tag, "tag"); this.tag = tag; return this; } + + /** + * A unique key associated with the writers tag, used for internal identification. + */ + public Builder tagKey(String tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = Optional.ofNullable(tagKey); + return this; + } + + /** + * A unique key associated with the writers tag, used for internal identification. + */ + public Builder tagKey(Optional tagKey) { + Utils.checkNotNull(tagKey, "tagKey"); + this.tagKey = tagKey; + return this; + } public Writer build() { return new Writer( - tag); + id, + filter, + tag, + tagKey); } } }