diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index d566056..a0e24d7 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 3eeea668-4ef4-464e-a888-bdfa023bedf5 management: - docChecksum: 82a4a9784fb0e66e1c64f130701cdd08 + docChecksum: 5e039359563b41bbe118fc6701ba22dc docVersion: 0.0.3 - speakeasyVersion: 1.401.2 - generationVersion: 2.421.3 - releaseVersion: 0.13.1 - configChecksum: c4e89f18672b1bf32dd6c935497ad858 + speakeasyVersion: 1.402.14 + generationVersion: 2.422.22 + releaseVersion: 0.14.0 + configChecksum: 94801fc942959dabbfcbcced5032a59f repoURL: https://github.com/LukeHagar/plexpy.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexpy.git @@ -15,7 +15,7 @@ features: python: additionalDependencies: 1.0.0 constsAndDefaults: 1.0.3 - core: 5.5.4 + core: 5.5.5 defaultEnabledRetries: 0.2.0 deprecations: 3.0.0 downloadStreams: 1.0.1 @@ -35,7 +35,6 @@ features: responseFormat: 1.0.0 retries: 3.0.2 sdkHooks: 1.0.0 - unions: 3.0.2 generatedFiles: - .gitattributes - .vscode/settings.json @@ -169,10 +168,10 @@ generatedFiles: - docs/models/errors/getplaylistsplaylistserrors.md - docs/models/errors/getplaylistsunauthorized.md - docs/models/errors/getplaylistunauthorized.md - - docs/models/errors/getrecentlyaddedbadrequest.md - - docs/models/errors/getrecentlyaddederrors.md + - docs/models/errors/getrecentlyaddedlibrarybadrequest.md - docs/models/errors/getrecentlyaddedlibraryerrors.md - - docs/models/errors/getrecentlyaddedunauthorized.md + - docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md + - docs/models/errors/getrecentlyaddedlibraryunauthorized.md - docs/models/errors/getrefreshlibrarymetadatabadrequest.md - docs/models/errors/getrefreshlibrarymetadataerrors.md - docs/models/errors/getrefreshlibrarymetadatalibraryerrors.md @@ -420,11 +419,15 @@ generatedFiles: - docs/models/operations/gethomedataresponse.md - docs/models/operations/gethomedataresponsebody.md - docs/models/operations/getlibrarydetailsdirectory.md + - docs/models/operations/getlibrarydetailsfield.md + - docs/models/operations/getlibrarydetailsfieldtype.md - docs/models/operations/getlibrarydetailsfilter.md - docs/models/operations/getlibrarydetailsmediacontainer.md + - docs/models/operations/getlibrarydetailsoperator.md - docs/models/operations/getlibrarydetailsrequest.md - docs/models/operations/getlibrarydetailsresponse.md - docs/models/operations/getlibrarydetailsresponsebody.md + - docs/models/operations/getlibrarydetailssort.md - docs/models/operations/getlibrarydetailstype.md - docs/models/operations/getlibraryhubscountry.md - docs/models/operations/getlibraryhubsdirector.md @@ -439,26 +442,48 @@ generatedFiles: - docs/models/operations/getlibraryhubsresponsebody.md - docs/models/operations/getlibraryhubsrole.md - docs/models/operations/getlibraryhubswriter.md + - docs/models/operations/getlibraryitemsactivedirection.md + - docs/models/operations/getlibraryitemscollection.md - docs/models/operations/getlibraryitemscountry.md + - docs/models/operations/getlibraryitemsdefaultdirection.md - docs/models/operations/getlibraryitemsdirector.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 + - docs/models/operations/getlibraryitemslibraryactivedirection.md + - docs/models/operations/getlibraryitemslibrarydefaultdirection.md + - docs/models/operations/getlibraryitemslibraryfield.md + - docs/models/operations/getlibraryitemslibraryfieldtype.md + - docs/models/operations/getlibraryitemslibraryfilter.md + - docs/models/operations/getlibraryitemslibraryoperator.md + - docs/models/operations/getlibraryitemslibraryresponse200type.md - docs/models/operations/getlibraryitemslibraryresponsetype.md + - docs/models/operations/getlibraryitemslibrarysort.md - docs/models/operations/getlibraryitemslibrarytype.md - docs/models/operations/getlibraryitemsmedia.md - docs/models/operations/getlibraryitemsmediacontainer.md + - docs/models/operations/getlibraryitemsmediaguid.md + - docs/models/operations/getlibraryitemsmeta.md - docs/models/operations/getlibraryitemsmetadata.md + - docs/models/operations/getlibraryitemsmetadatarating.md - docs/models/operations/getlibraryitemsoperator.md + - docs/models/operations/getlibraryitemsoptimizedforstreaming.md - docs/models/operations/getlibraryitemspart.md + - docs/models/operations/getlibraryitemsqueryparamincludemeta.md + - docs/models/operations/getlibraryitemsqueryparamtype.md - docs/models/operations/getlibraryitemsrequest.md - 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 + - docs/models/operations/getlibraryitemsultrablurcolors.md - docs/models/operations/getlibraryitemswriter.md - docs/models/operations/getmediaprovidersdirectory.md - docs/models/operations/getmediaprovidersmediacontainer.md @@ -476,6 +501,7 @@ generatedFiles: - docs/models/operations/getmetadatabyratingkeyresponse.md - docs/models/operations/getmetadatabyratingkeyresponsebody.md - docs/models/operations/getmetadatabyratingkeyrole.md + - docs/models/operations/getmetadatabyratingkeystream.md - docs/models/operations/getmetadatabyratingkeywriter.md - docs/models/operations/getmetadatachildrendirectory.md - docs/models/operations/getmetadatachildrenmediacontainer.md @@ -520,11 +546,36 @@ generatedFiles: - docs/models/operations/getplaylistsrequest.md - docs/models/operations/getplaylistsresponse.md - docs/models/operations/getplaylistsresponsebody.md + - docs/models/operations/getrecentlyaddedactivedirection.md + - docs/models/operations/getrecentlyaddeddefaultdirection.md + - docs/models/operations/getrecentlyaddedfield.md + - docs/models/operations/getrecentlyaddedfieldtype.md + - docs/models/operations/getrecentlyaddedfilter.md + - docs/models/operations/getrecentlyaddedhubsresponsetype.md + - docs/models/operations/getrecentlyaddedhubstype.md + - docs/models/operations/getrecentlyaddedimage.md + - docs/models/operations/getrecentlyaddedlibrarycountry.md + - docs/models/operations/getrecentlyaddedlibrarydirector.md + - docs/models/operations/getrecentlyaddedlibraryfilter.md + - docs/models/operations/getrecentlyaddedlibrarygenre.md + - docs/models/operations/getrecentlyaddedlibrarymedia.md + - docs/models/operations/getrecentlyaddedlibrarymediacontainer.md + - docs/models/operations/getrecentlyaddedlibrarymetadata.md + - docs/models/operations/getrecentlyaddedlibrarypart.md + - docs/models/operations/getrecentlyaddedlibraryrequest.md + - docs/models/operations/getrecentlyaddedlibraryresponse.md + - docs/models/operations/getrecentlyaddedlibraryresponsebody.md + - docs/models/operations/getrecentlyaddedlibraryrole.md + - docs/models/operations/getrecentlyaddedlibrarytype.md + - docs/models/operations/getrecentlyaddedlibrarywriter.md - docs/models/operations/getrecentlyaddedmediacontainer.md - docs/models/operations/getrecentlyaddedmetadata.md + - docs/models/operations/getrecentlyaddedoperator.md - docs/models/operations/getrecentlyaddedrequest.md - docs/models/operations/getrecentlyaddedresponse.md - docs/models/operations/getrecentlyaddedresponsebody.md + - docs/models/operations/getrecentlyaddedsort.md + - docs/models/operations/getrecentlyaddedtype.md - docs/models/operations/getrefreshlibrarymetadatarequest.md - docs/models/operations/getrefreshlibrarymetadataresponse.md - docs/models/operations/getresizedphotorequest.md @@ -535,6 +586,7 @@ generatedFiles: - docs/models/operations/getresourcesstatisticsresponsebody.md - docs/models/operations/getsearchlibrarymediacontainer.md - docs/models/operations/getsearchlibrarymetadata.md + - docs/models/operations/getsearchlibraryqueryparamtype.md - docs/models/operations/getsearchlibraryrequest.md - docs/models/operations/getsearchlibraryresponse.md - docs/models/operations/getsearchlibraryresponsebody.md @@ -639,7 +691,6 @@ generatedFiles: - docs/models/operations/includerelay.md - docs/models/operations/internalpaymentmethod.md - docs/models/operations/level.md - - docs/models/operations/librarysectionid.md - docs/models/operations/libtype.md - docs/models/operations/location.md - docs/models/operations/loglinerequest.md @@ -657,10 +708,12 @@ generatedFiles: - docs/models/operations/mediareviewsvisibility.md - docs/models/operations/meta.md - docs/models/operations/metadata.md + - docs/models/operations/metadatarating.md - docs/models/operations/minsize.md - docs/models/operations/myplex.md - docs/models/operations/onlytransient.md - docs/models/operations/operator.md + - docs/models/operations/optimizedforstreaming.md - docs/models/operations/part.md - docs/models/operations/pastsubscription.md - docs/models/operations/pathparamtaskname.md @@ -680,8 +733,10 @@ generatedFiles: - docs/models/operations/postuserssignindatadefaultsubtitleaccessibility.md - docs/models/operations/postuserssignindatadefaultsubtitleforced.md - docs/models/operations/postuserssignindatafeatures.md + - docs/models/operations/postuserssignindataglobals.md - docs/models/operations/postuserssignindatamailingliststatus.md - docs/models/operations/postuserssignindatamediareviewsvisibility.md + - docs/models/operations/postuserssignindatarequest.md - docs/models/operations/postuserssignindatarequestbody.md - docs/models/operations/postuserssignindataresponse.md - docs/models/operations/postuserssignindataservices.md @@ -696,6 +751,7 @@ generatedFiles: - docs/models/operations/provider.md - docs/models/operations/queryparamfilter.md - docs/models/operations/queryparamforce.md + - docs/models/operations/queryparamincludemeta.md - docs/models/operations/queryparamonlytransient.md - docs/models/operations/queryparamsmart.md - docs/models/operations/queryparamtype.md @@ -805,6 +861,7 @@ generatedFiles: - src/plex_api_client/models/errors/get_library_items.py - src/plex_api_client/models/errors/get_media_providers.py - src/plex_api_client/models/errors/get_meta_data_by_rating_key.py + - src/plex_api_client/models/errors/get_recently_added_library.py - src/plex_api_client/models/errors/get_refresh_library_metadata.py - src/plex_api_client/models/errors/get_search_library.py - src/plex_api_client/models/errors/get_server_identity.py @@ -828,7 +885,6 @@ generatedFiles: - src/plex_api_client/models/errors/getplaylist.py - src/plex_api_client/models/errors/getplaylistcontents.py - src/plex_api_client/models/errors/getplaylists.py - - src/plex_api_client/models/errors/getrecentlyadded.py - src/plex_api_client/models/errors/getresizedphoto.py - src/plex_api_client/models/errors/getresourcesstatistics.py - src/plex_api_client/models/errors/getsearchresults.py @@ -883,6 +939,8 @@ generatedFiles: - src/plex_api_client/models/operations/get_library_items.py - src/plex_api_client/models/operations/get_media_providers.py - src/plex_api_client/models/operations/get_meta_data_by_rating_key.py + - src/plex_api_client/models/operations/get_recently_added.py + - src/plex_api_client/models/operations/get_recently_added_library.py - src/plex_api_client/models/operations/get_refresh_library_metadata.py - src/plex_api_client/models/operations/get_search_library.py - src/plex_api_client/models/operations/get_server_identity.py @@ -906,7 +964,6 @@ generatedFiles: - src/plex_api_client/models/operations/getplaylist.py - src/plex_api_client/models/operations/getplaylistcontents.py - src/plex_api_client/models/operations/getplaylists.py - - src/plex_api_client/models/operations/getrecentlyadded.py - src/plex_api_client/models/operations/getresizedphoto.py - src/plex_api_client/models/operations/getresourcesstatistics.py - src/plex_api_client/models/operations/getsearchresults.py @@ -1290,6 +1347,7 @@ examples: X-Plex-Device: "Linux" X-Plex-Version: "4.133.0" X-Plex-Platform: "Chrome" + X-Plex-Client-Identifier: "gcgzw5rz2xovp84b4vha3a40" responses: "200": application/json: {"id": 308667304, "code": "7RQZ", "product": "0", "trusted": false, "qr": "https://plex.tv/api/v2/pins/qr/7RQZ", "clientIdentifier": "string", "location": {"code": "VI", "continent_code": "NA", "country": "United States Virgin Islands", "city": "Amsterdam", "european_union_member": true, "time_zone": "America/St_Thomas", "postal_code": 802, "in_privacy_restricted_country": true, "in_privacy_restricted_region": true, "subdivisions": "Saint Thomas", "coordinates": "18.3381, -64.8941"}, "expiresIn": 876, "createdAt": "2024-07-16T17:03:05Z", "expiresAt": "2024-07-16T17:18:05Z", "authToken": null, "newRegistration": null} @@ -1449,7 +1507,7 @@ examples: X-Plex-Container-Size: 50 responses: "200": - application/json: {"MediaContainer": {"size": 70, "totalSize": 170, "offset": 0, "content": "secondary", "allowSync": true, "nocache": true, "art": "/:/resources/movie-fanart.jpg", "identifier": "com.plexapp.plugins.library", "librarySectionID": "", "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "title2": "Recently Released", "viewGroup": "movie", "viewMode": 65592, "mixedParents": true, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "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", "showOrdering": "dvd", "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", "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, "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", "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1"}, {"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", "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1"}, {"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", "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1"}]}], "Genre": [{"tag": "Adventure"}, {"tag": "Adventure"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}], "Role": [{"tag": "Sigourney Weaver"}, {"tag": "Sigourney Weaver"}, {"tag": "Sigourney Weaver"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}, {"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "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", "showOrdering": "dvd", "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", "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, "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", "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1"}]}], "Genre": [], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}], "Role": [{"tag": "Sigourney Weaver"}, {"tag": "Sigourney Weaver"}, {"tag": "Sigourney Weaver"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}], "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [], "Sort": [], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [], "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": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}]}}} + application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}], "size": 70, "totalSize": 170, "offset": 0, "content": "secondary", "allowSync": true, "nocache": true, "art": "/:/resources/movie-fanart.jpg", "identifier": "com.plexapp.plugins.library", "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1701731894, "thumb": "/:/resources/movie.png", "title1": "Movies", "title2": "Recently Released", "viewGroup": "movie", "viewMode": 65592, "mixedParents": true, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "showOrdering": "dvd", "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": 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}]}]}], "Genre": [{"tag": "Adventure"}, {"tag": "Adventure"}, {"tag": "Adventure"}], "Country": [{"tag": "United States of America"}, {"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"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [{"image": "themoviedb://image.rating", "value": 3, "type": "audience"}], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}, {"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", "showOrdering": "dvd", "thumb": "/library/metadata/58683/thumb/1703239236", "art": "/library/metadata/58683/art/1703239236", "banner": "/library/metadata/58683/banner/1703239236", "duration": 11558112, "originallyAvailableAt": "2022-12-14T00:00:00Z", "addedAt": 1556281940, "updatedAt": 1556281940, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/58684", "ratingImage": "rottentomatoes://image.rating.ripe", "grandparentRatingKey": "66", "grandparentGuid": "plex://show/5d9c081b170e24001f2a7be4", "grandparentKey": "/library/metadata/66", "grandparentTitle": "Caprica", "grandparentThumb": "/library/metadata/66/thumb/1705716261", "parentSlug": "alice-in-borderland-2020", "grandparentSlug": "alice-in-borderland-2020", "grandparentArt": "/library/metadata/66/art/1705716261", "grandparentTheme": "/library/metadata/66/theme/1705716261", "Media": [{"id": 119534, "duration": 11558112, "bitrate": 25025, "width": 3840, "height": 2072, "aspectRatio": 1.85, "audioProfile": "dts", "audioChannels": 6, "audioCodec": "eac3", "videoCodec": "hevc", "videoResolution": "4k", "container": "mkv", "videoFrameRate": "24p", "videoProfile": "main 10", "hasVoiceActivity": false, "optimizedForStreaming": 1, "has64bitOffsets": false, "Part": [{"id": 119542, "key": "/library/parts/119542/1680457526/file.mkv", "duration": 11558112, "file": "/movies/Avatar The Way of Water (2022)/Avatar.The.Way.of.Water.2022.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR10.HEVC-CMRG.mkv", "size": 36158371307, "container": "mkv", "audioProfile": "dts", "has64bitOffsets": false, "optimizedForStreaming": false, "videoProfile": "main 10", "indexes": "sd", "hasThumbnail": "1", "Stream": [{"id": 272796, "streamType": 1, "default": true, "selected": true, "codec": "h264", "index": 0, "bitrate": 6273, "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "bitDepth": 8, "chromaLocation": "left", "streamIdentifier": "2", "chromaSubsampling": "4:2:0", "codedHeight": 1088, "codedWidth": 1920, "frameRate": 29.97, "hasScalingMatrix": false, "hearingImpaired": false, "closedCaptions": false, "embeddedInVideo": "1", "height": 1080, "level": 40, "profile": "main", "refFrames": 4, "scanType": "progressive", "width": 1920, "displayTitle": "1080p (H.264)", "extendedDisplayTitle": "1080p (H.264)", "channels": 2, "language": "English", "languageTag": "en", "languageCode": "eng", "audioChannelLayout": "stereo", "samplingRate": 48000, "title": "English", "canAutoSync": false}]}]}], "Genre": [], "Country": [{"tag": "United States of America"}], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [{"tag": "James Cameron"}], "Collection": [{"tag": "Working NL Subs"}, {"tag": "Working NL Subs"}], "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"}], "Guid": [{"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [], "Image": [{"alt": "Episode 1", "type": "background", "url": "/library/metadata/45521/thumb/1644710589"}], "titleSort": "Whale", "viewCount": 1, "lastViewedAt": 1682752242, "originalTitle": "映画 ブラッククローバー 魔法帝の剣", "viewOffset": 5222500, "skipCount": 1, "index": 1, "theme": "/library/metadata/1/theme/1705636920", "leafCount": 14, "viewedLeafCount": 0, "childCount": 1, "hasPremiumExtras": "1", "hasPremiumPrimaryExtra": "1", "parentRatingKey": "66", "parentGuid": "plex://show/5d9c081b170e24001f2a7be4", "parentStudio": "UCP", "parentKey": "/library/metadata/66", "parentTitle": "Caprica", "parentIndex": 1, "parentYear": 2010, "parentThumb": "/library/metadata/66/thumb/1705716261", "parentTheme": "/library/metadata/66/theme/1705716261"}], "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [], "Sort": [], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [], "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": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}, {"type": "tag", "Operator": [{"key": "=", "title": "is"}, {"key": "=", "title": "is"}]}]}}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -1749,6 +1807,23 @@ examples: application/json: {"errors": []} "401": application/json: {"errors": []} + "": + parameters: + query: + X-Plex-Client-Identifier: "gcgzw5rz2xovp84b4vha3a40" + X-Plex-Product: "Plex Web" + X-Plex-Device: "Linux" + X-Plex-Version: "4.133.0" + X-Plex-Platform: "Chrome" + requestBody: + application/x-www-form-urlencoded: {"login": "username@email.com", "password": "password123", "verificationCode": "123456"} + responses: + "201": + application/json: {"adsConsent": true, "adsConsentReminderAt": "2019-08-24T14:15:22Z", "adsConsentSetAt": "2019-08-24T14:15:22Z", "anonymous": false, "authToken": "CxoUzBTSV5hsxjTpFKaf", "backupCodesCreated": false, "confirmed": false, "country": "US", "email": "username@email.com", "emailOnlyAuth": false, "experimentalFeatures": false, "friendlyName": "friendlyUsername", "entitlements": [], "guest": false, "hasPassword": true, "home": false, "homeAdmin": false, "homeSize": 1, "id": 13692262, "joinedAt": 1721154902, "locale": null, "mailingListActive": false, "mailingListStatus": "unsubscribed", "maxHomeSize": 15, "pin": "string", "profile": {"autoSelectAudio": true, "defaultAudioLanguage": "ja", "defaultSubtitleLanguage": "en", "autoSelectSubtitle": 1, "defaultSubtitleAccessibility": 1, "defaultSubtitleForced": 1, "watchedIndicator": 1, "mediaReviewsVisibility": 1}, "protected": false, "rememberExpiresAt": 1722364046, "restricted": false, "roles": ["string"], "scrobbleTypes": "", "services": [{"identifier": "metadata-dev", "endpoint": "https://epg.provider.plex.tv", "token": "DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv", "secret": "string", "status": "online"}], "subscription": {"features": ["Android - Dolby Vision"], "active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive", "paymentService": "string", "plan": "string"}, "subscriptionDescription": "string", "subscriptions": [{"features": ["Android - Dolby Vision"], "active": true, "subscribedAt": "2021-04-12T18:21:12Z", "status": "Inactive", "paymentService": "string", "plan": "string"}], "thumb": "https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101", "title": "UsernameTitle", "twoFactorEnabled": false, "username": "Username", "uuid": "dae343c1f45beb4f", "attributionPartner": null, "pastSubscriptions": [{"id": "string", "mode": "string", "renewsAt": "string", "endsAt": "1556281940", "canceled": "0", "gracePeriod": "0", "onHold": "0", "canReactivate": "0", "canUpgrade": "0", "canDowngrade": "0", "canConvert": "0", "type": "plexpass", "transfer": "string", "state": "ended", "billing": {"paymentMethodId": 481656}}], "trials": [{}]} + "400": + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + "401": + application/json: {"errors": []} getStatistics: "": parameters: @@ -1930,3 +2005,34 @@ examples: application/json: {"errors": []} "401": application/json: {"errors": []} + get-recently-added: + speakeasy-default-get-recently-added: + parameters: + query: + contentDirectoryID: 470161 + sectionID: 2 + type: 2 + includeMeta: 1 + X-Plex-Container-Start: 0 + X-Plex-Container-Size: 50 + responses: + "200": + application/json: {"MediaContainer": {"size": 50, "identifier": "com.plexapp.plugins.library", "Meta": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}, {"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [{"type": "tag", "Operator": [{"key": "=", "title": "is"}]}, {"type": "tag", "Operator": []}, {"type": "tag", "Operator": []}]}, "Metadata": [{"ratingKey": "58683", "key": "/library/metadata/58683", "guid": "plex://movie/5d7768ba96b655001fdc0408", "studio": "20th Century Studios", "skipChildren": false, "librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionKey": "/library/sections/1", "type": "movie", "title": "Avatar: The Way of Water", "slug": "4-for-texas", "contentRating": "PG-13", "summary": "Jake Sully lives with his newfound family formed on the extrasolar moon Pandora. Once a familiar threat returns to finish what was previously started, Jake must work with Neytiri and the army of the Na'vi race to protect their home.", "rating": 7.6, "audienceRating": 9.2, "year": 2022, "seasonCount": 2022, "tagline": "Return to Pandora.", "flattenSeasons": "1", "showOrdering": "dvd", "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": 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": []}]}], "Genre": [{"tag": "Adventure"}], "Country": [], "Director": [{"tag": "James Cameron"}, {"tag": "James Cameron"}], "Writer": [], "Collection": [], "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"}], "Guid": [{"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}, {"id": "imdb://tt13015952"}], "UltraBlurColors": {"topLeft": "11333b", "topRight": "0a232d", "bottomRight": "73958", "bottomLeft": "1f5066"}, "Rating": [], "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"}]}} + get-recently-added-library: + speakeasy-default-get-recently-added-library: + parameters: + query: + contentDirectoryID: 2 + pinnedContentDirectoryID: [3, 5, 7, 13, 12, 1, 6, 14, 2, 10, 16, 17] + sectionID: 2 + type: 2 + includeMeta: 1 + X-Plex-Container-Start: 0 + X-Plex-Container-Size: 50 + responses: + "200": + application/json: {"MediaContainer": {"Type": [{"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}, {"key": "/library/sections/2/all?type=2", "type": "show", "title": "TV Shows", "active": false, "Filter": [{"filter": "genre", "filterType": "string", "key": "/library/sections/2/genre?type=2", "title": "Genre", "type": "filter"}], "Sort": [{"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}, {"default": "asc", "active": false, "activeDirection": "asc", "defaultDirection": "asc", "descKey": "titleSort:desc", "firstCharacterKey": "/library/sections/2/firstCharacter", "key": "titleSort", "title": "Title"}], "Field": [{"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}, {"key": "show.title", "title": "Show Title", "type": "string", "subType": "rating"}]}], "FieldType": [], "size": 50, "identifier": "com.plexapp.plugins.library", "mediaTagPrefix": "/system/bundle/media/flags/", "mediaTagVersion": 1680021154, "Metadata": [{"librarySectionID": 1, "librarySectionTitle": "Movies", "librarySectionUUID": "322a231a-b7f7-49f5-920f-14c61199cd30", "ratingKey": 59398, "key": "/library/metadata/59398", "guid": "plex://movie/5e161a83bea6ac004126e148", "studio": "Marvel Studios", "type": "movie", "title": "Ant-Man and the Wasp: Quantumania", "contentRating": "PG-13", "summary": "Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible.", "rating": 4.7, "audienceRating": 8.3, "year": 2023, "tagline": "Witness the beginning of a new dynasty.", "thumb": "/library/metadata/59398/thumb/1681888010", "art": "/library/metadata/59398/art/1681888010", "duration": 7474422, "originallyAvailableAt": "2023-02-15T00:00:00Z", "addedAt": 1681803215, "updatedAt": 1681888010, "audienceRatingImage": "rottentomatoes://image.rating.upright", "chapterSource": "media", "primaryExtraKey": "/library/metadata/59399", "ratingImage": "rottentomatoes://image.rating.rotten", "Media": [{"id": 120345, "duration": 7474422, "bitrate": 3623, "width": 1920, "height": 804, "aspectRatio": 2.35, "audioChannels": 6, "audioCodec": "ac3", "videoCodec": "h264", "videoResolution": 1080, "container": "mp4", "videoFrameRate": "24p", "optimizedForStreaming": 0, "videoProfile": "high", "Part": []}], "Genre": [], "Director": [{"tag": "Peyton Reed"}], "Writer": [], "Country": [], "Role": [{"tag": "Paul Rudd"}, {"tag": "Paul Rudd"}, {"tag": "Paul Rudd"}]}]}} + "400": + application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} + "401": + application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 3beba55..a99944a 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -12,7 +12,7 @@ generation: auth: oAuth2ClientCredentialsEnabled: true python: - version: 0.13.1 + version: 0.14.0 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 83ed9c5..6bd55f0 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.401.2 +speakeasyVersion: 1.402.14 sources: my-source: sourceNamespace: my-source @@ -8,8 +8,8 @@ sources: - latest plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:fc6eebe661455e23b1aa352a91c14ef773fa72331330ec4caeddc2c460dc16bb - sourceBlobDigest: sha256:2e81e86c83d7f4e8842efca0d43a2db84a4932534c8439e3737e1f65c873f855 + sourceRevisionDigest: sha256:b7081644a59eca24a22b8009506fcf459bf18b07dce0462b39bc36c40d94862e + sourceBlobDigest: sha256:6b822f23afbc630bbc0fc12299316ea03d3671a2c2a81241ad4caa49022b430e tags: - latest - main @@ -17,10 +17,10 @@ targets: plexpy: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:fc6eebe661455e23b1aa352a91c14ef773fa72331330ec4caeddc2c460dc16bb - sourceBlobDigest: sha256:2e81e86c83d7f4e8842efca0d43a2db84a4932534c8439e3737e1f65c873f855 + sourceRevisionDigest: sha256:b7081644a59eca24a22b8009506fcf459bf18b07dce0462b39bc36c40d94862e + sourceBlobDigest: sha256:6b822f23afbc630bbc0fc12299316ea03d3671a2c2a81241ad4caa49022b430e codeSamplesNamespace: code-samples-python-plexpy - codeSamplesRevisionDigest: sha256:024365b752e0bab5dddaf0c68d5dea77d7bbb16f3dfdd469ed8b27eb2f14cf99 + codeSamplesRevisionDigest: sha256:a9cb66019954437cc4933b5f6fa4c53227010c792f21c62a5498bec77afe2b2e workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 603e72d..22107eb 100644 --- a/README.md +++ b/README.md @@ -141,12 +141,13 @@ asyncio.run(main()) ### [hubs](docs/sdks/hubs/README.md) * [get_global_hubs](docs/sdks/hubs/README.md#get_global_hubs) - Get Global Hubs +* [get_recently_added](docs/sdks/hubs/README.md#get_recently_added) - Get Recently Added * [get_library_hubs](docs/sdks/hubs/README.md#get_library_hubs) - Get library specific hubs ### [library](docs/sdks/library/README.md) * [get_file_hash](docs/sdks/library/README.md#get_file_hash) - Get Hash Value -* [get_recently_added](docs/sdks/library/README.md#get_recently_added) - Get Recently Added +* [get_recently_added_library](docs/sdks/library/README.md#get_recently_added_library) - Get Recently Added * [get_all_libraries](docs/sdks/library/README.md#get_all_libraries) - Get All Libraries * [get_library_details](docs/sdks/library/README.md#get_library_details) - Get Library Details * [delete_library](docs/sdks/library/README.md#delete_library) - Delete Library Section diff --git a/RELEASES.md b/RELEASES.md index 0710731..7308da3 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -768,4 +768,14 @@ Based on: ### Generated - [python v0.13.1] . ### Releases -- [PyPI v0.13.1] https://pypi.org/project/plex-api-client/0.13.1 - . \ No newline at end of file +- [PyPI v0.13.1] https://pypi.org/project/plex-api-client/0.13.1 - . + +## 2024-09-26 00:01:17 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.402.14 (2.422.22) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.14.0] . +### Releases +- [PyPI v0.14.0] https://pypi.org/project/plex-api-client/0.14.0 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index c0c2b1c..f5aa023 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -453,6 +453,36 @@ actions: res = s.hubs.get_global_hubs() + if res.object is not None: + # handle response + pass + - target: $["paths"]["/hubs/home/recentlyAdded"]["get"] + update: + x-codeSamples: + - lang: python + label: added + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import operations + + s = PlexAPI( + access_token="", + client_id="gcgzw5rz2xovp84b4vha3a40", + client_name="Plex Web", + client_version="4.133.0", + client_platform="Chrome", + device_name="Linux", + ) + + res = s.hubs.get_recently_added(request={ + "content_directory_id": 470161, + "section_id": 2, + "type": operations.Type.TV_SHOW, + "include_meta": operations.IncludeMeta.ENABLE, + "x_plex_container_start": 0, + "x_plex_container_size": 50, + }) + if res.object is not None: # handle response pass @@ -716,9 +746,10 @@ actions: update: x-codeSamples: - lang: python - label: getRecentlyAdded + label: library source: |- from plex_api_client import PlexAPI + from plex_api_client.models import operations s = PlexAPI( access_token="", @@ -729,7 +760,28 @@ actions: device_name="Linux", ) - res = s.library.get_recently_added(x_plex_container_start=0, x_plex_container_size=50) + res = s.library.get_recently_added_library(request={ + "content_directory_id": 2, + "pinned_content_directory_id": [ + 3, + 5, + 7, + 13, + 12, + 1, + 6, + 14, + 2, + 10, + 16, + 17, + ], + "section_id": 2, + "type": operations.QueryParamType.TV_SHOW, + "include_meta": operations.QueryParamIncludeMeta.ENABLE, + "x_plex_container_start": 0, + "x_plex_container_size": 50, + }) if res.object is not None: # handle response @@ -869,7 +921,7 @@ actions: device_name="Linux", ) - res = s.library.get_search_library(section_key=9518, type_=operations.QueryParamType.TV_SHOW) + res = s.library.get_search_library(section_key=9518, type_=operations.GetSearchLibraryQueryParamType.TV_SHOW) if res.object is not None: # handle response @@ -896,8 +948,8 @@ actions: "section_key": 9518, "tag": operations.Tag.EDITION, "include_guids": operations.IncludeGuids.ENABLE, - "include_meta": operations.IncludeMeta.ENABLE, - "type": operations.Type.TV_SHOW, + "type": operations.GetLibraryItemsQueryParamType.TV_SHOW, + "include_meta": operations.GetLibraryItemsQueryParamIncludeMeta.ENABLE, "x_plex_container_start": 0, "x_plex_container_size": 50, }) @@ -1670,9 +1722,11 @@ actions: ) res = s.authentication.post_users_sign_in_data(request={ - "login": "username@email.com", - "password": "password123", - "verification_code": "123456", + "request_body": { + "login": "username@email.com", + "password": "password123", + "verification_code": "123456", + }, }) if res.user_plex_account is not None: diff --git a/docs/models/errors/getrecentlyaddedbadrequest.md b/docs/models/errors/getrecentlyaddedbadrequest.md deleted file mode 100644 index 0ffc9d8..0000000 --- a/docs/models/errors/getrecentlyaddedbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetRecentlyAddedErrors](../../models/errors/getrecentlyaddederrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddederrors.md b/docs/models/errors/getrecentlyaddederrors.md deleted file mode 100644 index 1fc2fe8..0000000 --- a/docs/models/errors/getrecentlyaddederrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedunauthorized.md b/docs/models/errors/getrecentlyaddedlibrarybadrequest.md similarity index 93% rename from docs/models/errors/getrecentlyaddedunauthorized.md rename to docs/models/errors/getrecentlyaddedlibrarybadrequest.md index 04aa91e..759c4d2 100644 --- a/docs/models/errors/getrecentlyaddedunauthorized.md +++ b/docs/models/errors/getrecentlyaddedlibrarybadrequest.md @@ -1,6 +1,6 @@ -# GetRecentlyAddedUnauthorized +# GetRecentlyAddedLibraryBadRequest -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. +Bad Request - A parameter was not specified, or was specified incorrectly. ## Fields diff --git a/docs/models/errors/getrecentlyaddedlibraryerrors.md b/docs/models/errors/getrecentlyaddedlibraryerrors.md index 6cbd55b..ec4df4f 100644 --- a/docs/models/errors/getrecentlyaddedlibraryerrors.md +++ b/docs/models/errors/getrecentlyaddedlibraryerrors.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | +| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md b/docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md new file mode 100644 index 0000000..3587f42 --- /dev/null +++ b/docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md @@ -0,0 +1,10 @@ +# GetRecentlyAddedLibraryLibraryErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedlibraryunauthorized.md b/docs/models/errors/getrecentlyaddedlibraryunauthorized.md new file mode 100644 index 0000000..c1c5cfc --- /dev/null +++ b/docs/models/errors/getrecentlyaddedlibraryunauthorized.md @@ -0,0 +1,11 @@ +# GetRecentlyAddedLibraryUnauthorized + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `errors` | List[[errors.GetRecentlyAddedLibraryLibraryErrors](../../models/errors/getrecentlyaddedlibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/director.md b/docs/models/operations/director.md index bc70d11..37b85a6 100644 --- a/docs/models/operations/director.md +++ b/docs/models/operations/director.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Peyton Reed | \ No newline at end of file +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | James Cameron | \ No newline at end of file diff --git a/docs/models/operations/field.md b/docs/models/operations/field.md index 5bd4312..a6348b3 100644 --- a/docs/models/operations/field.md +++ b/docs/models/operations/field.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | label | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Label | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | tag | -| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | bitrate | \ No newline at end of file +| `key` | *str* | :heavy_check_mark: | N/A | show.title | +| `title` | *str* | :heavy_check_mark: | N/A | Show Title | +| `type` | *str* | :heavy_check_mark: | N/A | string | +| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/fieldtype.md b/docs/models/operations/fieldtype.md index 285e18a..24b9178 100644 --- a/docs/models/operations/fieldtype.md +++ b/docs/models/operations/fieldtype.md @@ -5,5 +5,5 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | resolution | -| `operator` | List[[operations.Operator](../../models/operations/operator.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `type` | *str* | :heavy_check_mark: | N/A | tag | +| `operator` | List[[operations.Operator](../../models/operations/operator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/genre.md b/docs/models/operations/genre.md index ded259c..3c60b3f 100644 --- a/docs/models/operations/genre.md +++ b/docs/models/operations/genre.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Comedy | \ No newline at end of file +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Adventure | \ No newline at end of file diff --git a/docs/models/operations/getalllibrariesdirectory.md b/docs/models/operations/getalllibrariesdirectory.md index 8b42eb1..62c4f35 100644 --- a/docs/models/operations/getalllibrariesdirectory.md +++ b/docs/models/operations/getalllibrariesdirectory.md @@ -23,6 +23,6 @@ | `scanned_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | | `content` | *bool* | :heavy_check_mark: | N/A | true | | `directory` | *bool* | :heavy_check_mark: | N/A | true | -| `content_changed_at` | *int* | :heavy_check_mark: | N/A | 3192854 | +| `content_changed_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | | `hidden` | *int* | :heavy_check_mark: | N/A | 0 | | `location` | List[[operations.Location](../../models/operations/location.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsfield.md b/docs/models/operations/getlibrarydetailsfield.md new file mode 100644 index 0000000..e1d3db8 --- /dev/null +++ b/docs/models/operations/getlibrarydetailsfield.md @@ -0,0 +1,11 @@ +# GetLibraryDetailsField + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | label | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Label | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | tag | +| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | bitrate | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsfieldtype.md b/docs/models/operations/getlibrarydetailsfieldtype.md new file mode 100644 index 0000000..deeb29a --- /dev/null +++ b/docs/models/operations/getlibrarydetailsfieldtype.md @@ -0,0 +1,9 @@ +# GetLibraryDetailsFieldType + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | resolution | +| `operator` | List[[operations.GetLibraryDetailsOperator](../../models/operations/getlibrarydetailsoperator.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsmediacontainer.md b/docs/models/operations/getlibrarydetailsmediacontainer.md index 68a8bdd..ea93a95 100644 --- a/docs/models/operations/getlibrarydetailsmediacontainer.md +++ b/docs/models/operations/getlibrarydetailsmediacontainer.md @@ -19,4 +19,4 @@ | `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 65592 | | `directory` | List[[operations.GetLibraryDetailsDirectory](../../models/operations/getlibrarydetailsdirectory.md)] | :heavy_minus_sign: | N/A | | | `type` | List[[operations.GetLibraryDetailsType](../../models/operations/getlibrarydetailstype.md)] | :heavy_minus_sign: | N/A | | -| `field_type` | List[[operations.FieldType](../../models/operations/fieldtype.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `field_type` | List[[operations.GetLibraryDetailsFieldType](../../models/operations/getlibrarydetailsfieldtype.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsoperator.md b/docs/models/operations/getlibrarydetailsoperator.md new file mode 100644 index 0000000..38476e7 --- /dev/null +++ b/docs/models/operations/getlibrarydetailsoperator.md @@ -0,0 +1,9 @@ +# GetLibraryDetailsOperator + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | = | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailssort.md b/docs/models/operations/getlibrarydetailssort.md new file mode 100644 index 0000000..08b9ad1 --- /dev/null +++ b/docs/models/operations/getlibrarydetailssort.md @@ -0,0 +1,13 @@ +# GetLibraryDetailsSort + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | +| `default_direction` | *Optional[str]* | :heavy_minus_sign: | N/A | desc | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | random:desc | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1/firstCharacter | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | random | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Randomly | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailstype.md b/docs/models/operations/getlibrarydetailstype.md index 29af755..cb676c2 100644 --- a/docs/models/operations/getlibrarydetailstype.md +++ b/docs/models/operations/getlibrarydetailstype.md @@ -10,5 +10,5 @@ | `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | | `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | | `filter_` | List[[operations.GetLibraryDetailsFilter](../../models/operations/getlibrarydetailsfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.Sort](../../models/operations/sort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.Field](../../models/operations/field.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `sort` | List[[operations.GetLibraryDetailsSort](../../models/operations/getlibrarydetailssort.md)] | :heavy_minus_sign: | N/A | | +| `field` | List[[operations.GetLibraryDetailsField](../../models/operations/getlibrarydetailsfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsactivedirection.md b/docs/models/operations/getlibraryitemsactivedirection.md new file mode 100644 index 0000000..6ced7e8 --- /dev/null +++ b/docs/models/operations/getlibraryitemsactivedirection.md @@ -0,0 +1,12 @@ +# GetLibraryItemsActiveDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemscollection.md b/docs/models/operations/getlibraryitemscollection.md new file mode 100644 index 0000000..18fbcf8 --- /dev/null +++ b/docs/models/operations/getlibraryitemscollection.md @@ -0,0 +1,8 @@ +# GetLibraryItemsCollection + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Working NL Subs | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsdefaultdirection.md b/docs/models/operations/getlibraryitemsdefaultdirection.md new file mode 100644 index 0000000..b1bdea4 --- /dev/null +++ b/docs/models/operations/getlibraryitemsdefaultdirection.md @@ -0,0 +1,12 @@ +# GetLibraryItemsDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsflattenseasons.md b/docs/models/operations/getlibraryitemsflattenseasons.md new file mode 100644 index 0000000..1a8b8e6 --- /dev/null +++ b/docs/models/operations/getlibraryitemsflattenseasons.md @@ -0,0 +1,9 @@ +# GetLibraryItemsFlattenSeasons + + +## Values + +| Name | Value | +| ------- | ------- | +| `FALSE` | 0 | +| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemshasthumbnail.md b/docs/models/operations/getlibraryitemshasthumbnail.md new file mode 100644 index 0000000..ceb4ca0 --- /dev/null +++ b/docs/models/operations/getlibraryitemshasthumbnail.md @@ -0,0 +1,9 @@ +# GetLibraryItemsHasThumbnail + + +## Values + +| Name | Value | +| ------- | ------- | +| `FALSE` | 0 | +| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsimage.md b/docs/models/operations/getlibraryitemsimage.md index f3f36dc..4cf452f 100644 --- a/docs/models/operations/getlibraryitemsimage.md +++ b/docs/models/operations/getlibraryitemsimage.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetLibraryItemsLibraryResponseType](../../models/operations/getlibraryitemslibraryresponsetype.md) | :heavy_check_mark: | N/A | background | -| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | +| `type` | [operations.GetLibraryItemsLibraryResponse200Type](../../models/operations/getlibraryitemslibraryresponse200type.md) | :heavy_check_mark: | N/A | background | +| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryactivedirection.md b/docs/models/operations/getlibraryitemslibraryactivedirection.md new file mode 100644 index 0000000..5252490 --- /dev/null +++ b/docs/models/operations/getlibraryitemslibraryactivedirection.md @@ -0,0 +1,12 @@ +# GetLibraryItemsLibraryActiveDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibrarydefaultdirection.md b/docs/models/operations/getlibraryitemslibrarydefaultdirection.md new file mode 100644 index 0000000..111d709 --- /dev/null +++ b/docs/models/operations/getlibraryitemslibrarydefaultdirection.md @@ -0,0 +1,12 @@ +# GetLibraryItemsLibraryDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryfield.md b/docs/models/operations/getlibraryitemslibraryfield.md new file mode 100644 index 0000000..98986c4 --- /dev/null +++ b/docs/models/operations/getlibraryitemslibraryfield.md @@ -0,0 +1,11 @@ +# GetLibraryItemsLibraryField + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | show.title | +| `title` | *str* | :heavy_check_mark: | N/A | Show Title | +| `type` | *str* | :heavy_check_mark: | N/A | string | +| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryfieldtype.md b/docs/models/operations/getlibraryitemslibraryfieldtype.md new file mode 100644 index 0000000..979981b --- /dev/null +++ b/docs/models/operations/getlibraryitemslibraryfieldtype.md @@ -0,0 +1,9 @@ +# GetLibraryItemsLibraryFieldType + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `type` | *str* | :heavy_check_mark: | N/A | tag | +| `operator` | List[[operations.GetLibraryItemsLibraryOperator](../../models/operations/getlibraryitemslibraryoperator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryfilter.md b/docs/models/operations/getlibraryitemslibraryfilter.md new file mode 100644 index 0000000..e41c608 --- /dev/null +++ b/docs/models/operations/getlibraryitemslibraryfilter.md @@ -0,0 +1,12 @@ +# GetLibraryItemsLibraryFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `filter_` | *str* | :heavy_check_mark: | N/A | genre | +| `filter_type` | *str* | :heavy_check_mark: | N/A | string | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | +| `title` | *str* | :heavy_check_mark: | N/A | Genre | +| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryoperator.md b/docs/models/operations/getlibraryitemslibraryoperator.md new file mode 100644 index 0000000..822f9dd --- /dev/null +++ b/docs/models/operations/getlibraryitemslibraryoperator.md @@ -0,0 +1,9 @@ +# GetLibraryItemsLibraryOperator + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | = | +| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryresponse200type.md b/docs/models/operations/getlibraryitemslibraryresponse200type.md new file mode 100644 index 0000000..b4e85e1 --- /dev/null +++ b/docs/models/operations/getlibraryitemslibraryresponse200type.md @@ -0,0 +1,11 @@ +# GetLibraryItemsLibraryResponse200Type + + +## Values + +| Name | Value | +| -------------- | -------------- | +| `COVER_POSTER` | coverPoster | +| `BACKGROUND` | background | +| `SNAPSHOT` | snapshot | +| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryresponsetype.md b/docs/models/operations/getlibraryitemslibraryresponsetype.md index 1573fa0..4233637 100644 --- a/docs/models/operations/getlibraryitemslibraryresponsetype.md +++ b/docs/models/operations/getlibraryitemslibraryresponsetype.md @@ -1,11 +1,14 @@ # GetLibraryItemsLibraryResponseType -## Values +## Fields -| Name | Value | -| -------------- | -------------- | -| `COVER_POSTER` | coverPoster | -| `BACKGROUND` | background | -| `SNAPSHOT` | snapshot | -| `CLEAR_LOGO` | clearLogo | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *str* | :heavy_check_mark: | N/A | show | +| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *bool* | :heavy_check_mark: | N/A | false | +| `filter_` | List[[operations.GetLibraryItemsLibraryFilter](../../models/operations/getlibraryitemslibraryfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[operations.GetLibraryItemsLibrarySort](../../models/operations/getlibraryitemslibrarysort.md)] | :heavy_minus_sign: | N/A | | +| `field` | List[[operations.GetLibraryItemsLibraryField](../../models/operations/getlibraryitemslibraryfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibrarysort.md b/docs/models/operations/getlibraryitemslibrarysort.md new file mode 100644 index 0000000..ecc9e39 --- /dev/null +++ b/docs/models/operations/getlibraryitemslibrarysort.md @@ -0,0 +1,15 @@ +# GetLibraryItemsLibrarySort + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | N/A | titleSort | +| `title` | *str* | :heavy_check_mark: | N/A | Title | +| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | +| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `active_direction` | [Optional[operations.GetLibraryItemsLibraryActiveDirection]](../../models/operations/getlibraryitemslibraryactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `default_direction` | [Optional[operations.GetLibraryItemsLibraryDefaultDirection]](../../models/operations/getlibraryitemslibrarydefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibrarytype.md b/docs/models/operations/getlibraryitemslibrarytype.md index 685d8c0..5a15184 100644 --- a/docs/models/operations/getlibraryitemslibrarytype.md +++ b/docs/models/operations/getlibraryitemslibrarytype.md @@ -1,14 +1,14 @@ # GetLibraryItemsLibraryType +The type of media content -## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | show | -| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | -| `active` | *bool* | :heavy_check_mark: | N/A | false | -| `filter_` | List[[operations.GetLibraryItemsFilter](../../models/operations/getlibraryitemsfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.GetLibraryItemsSort](../../models/operations/getlibraryitemssort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.GetLibraryItemsField](../../models/operations/getlibraryitemsfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file + +## Values + +| Name | Value | +| --------- | --------- | +| `MOVIE` | movie | +| `TV_SHOW` | show | +| `SEASON` | season | +| `EPISODE` | episode | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmedia.md b/docs/models/operations/getlibraryitemsmedia.md index fbd787d..22fc327 100644 --- a/docs/models/operations/getlibraryitemsmedia.md +++ b/docs/models/operations/getlibraryitemsmedia.md @@ -3,21 +3,23 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 119534 | -| `duration` | *int* | :heavy_check_mark: | N/A | 11558112 | -| `bitrate` | *int* | :heavy_check_mark: | N/A | 25025 | -| `width` | *int* | :heavy_check_mark: | N/A | 3840 | -| `height` | *int* | :heavy_check_mark: | N/A | 2072 | -| `aspect_ratio` | *float* | :heavy_check_mark: | N/A | 1.85 | -| `audio_channels` | *int* | :heavy_check_mark: | N/A | 6 | -| `audio_codec` | *str* | :heavy_check_mark: | N/A | eac3 | -| `video_codec` | *str* | :heavy_check_mark: | N/A | hevc | -| `video_resolution` | *str* | :heavy_check_mark: | N/A | 4k | -| `container` | *str* | :heavy_check_mark: | N/A | mkv | -| `video_frame_rate` | *str* | :heavy_check_mark: | N/A | 24p | -| `video_profile` | *str* | :heavy_check_mark: | N/A | main 10 | -| `part` | List[[operations.GetLibraryItemsPart](../../models/operations/getlibraryitemspart.md)] | :heavy_check_mark: | N/A | | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 119534 | +| `duration` | *int* | :heavy_check_mark: | N/A | 11558112 | +| `bitrate` | *int* | :heavy_check_mark: | N/A | 25025 | +| `width` | *int* | :heavy_check_mark: | N/A | 3840 | +| `height` | *int* | :heavy_check_mark: | N/A | 2072 | +| `aspect_ratio` | *float* | :heavy_check_mark: | N/A | 1.85 | +| `audio_channels` | *int* | :heavy_check_mark: | N/A | 6 | +| `audio_codec` | *str* | :heavy_check_mark: | N/A | eac3 | +| `video_codec` | *str* | :heavy_check_mark: | N/A | hevc | +| `video_resolution` | *str* | :heavy_check_mark: | N/A | 4k | +| `container` | *str* | :heavy_check_mark: | N/A | mkv | +| `video_frame_rate` | *str* | :heavy_check_mark: | N/A | 24p | +| `video_profile` | *str* | :heavy_check_mark: | N/A | main 10 | +| `part` | List[[operations.GetLibraryItemsPart](../../models/operations/getlibraryitemspart.md)] | :heavy_check_mark: | N/A | | +| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `optimized_for_streaming` | [Optional[operations.GetLibraryItemsOptimizedForStreaming]](../../models/operations/getlibraryitemsoptimizedforstreaming.md) | :heavy_minus_sign: | N/A | 1 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmediacontainer.md b/docs/models/operations/getlibraryitemsmediacontainer.md index e31b614..a64754f 100644 --- a/docs/models/operations/getlibraryitemsmediacontainer.md +++ b/docs/models/operations/getlibraryitemsmediacontainer.md @@ -1,28 +1,33 @@ # GetLibraryItemsMediaContainer +The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | N/A | 70 | -| `total_size` | *int* | :heavy_check_mark: | N/A | 170 | -| `offset` | *int* | :heavy_check_mark: | N/A | 0 | -| `content` | *str* | :heavy_check_mark: | N/A | secondary | -| `allow_sync` | *bool* | :heavy_check_mark: | N/A | true | -| `art` | *str* | :heavy_check_mark: | N/A | /:/resources/movie-fanart.jpg | -| `identifier` | *str* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | -| `library_section_id` | [operations.LibrarySectionID](../../models/operations/librarysectionid.md) | :heavy_check_mark: | N/A | | -| `library_section_title` | *str* | :heavy_check_mark: | N/A | Movies | -| `library_section_uuid` | *str* | :heavy_check_mark: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | N/A | 1701731894 | -| `thumb` | *str* | :heavy_check_mark: | N/A | /:/resources/movie.png | -| `title1` | *str* | :heavy_check_mark: | N/A | Movies | -| `title2` | *str* | :heavy_check_mark: | N/A | Recently Released | -| `view_group` | *str* | :heavy_check_mark: | N/A | movie | -| `metadata` | List[[operations.GetLibraryItemsMetadata](../../models/operations/getlibraryitemsmetadata.md)] | :heavy_check_mark: | N/A | | -| `nocache` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 65592 | -| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `meta` | [Optional[operations.Meta]](../../models/operations/meta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `size` | *int* | :heavy_check_mark: | N/A | 70 | +| `total_size` | *int* | :heavy_check_mark: | N/A | 170 | +| `offset` | *int* | :heavy_check_mark: | N/A | 0 | +| `content` | *str* | :heavy_check_mark: | N/A | secondary | +| `allow_sync` | *bool* | :heavy_check_mark: | N/A | true | +| `art` | *str* | :heavy_check_mark: | N/A | /:/resources/movie-fanart.jpg | +| `identifier` | *str* | :heavy_check_mark: | N/A | com.plexapp.plugins.library | +| `library_section_id` | *int* | :heavy_check_mark: | N/A | 1 | +| `library_section_title` | *str* | :heavy_check_mark: | N/A | Movies | +| `library_section_uuid` | *str* | :heavy_check_mark: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | +| `media_tag_prefix` | *str* | :heavy_check_mark: | N/A | /system/bundle/media/flags/ | +| `media_tag_version` | *int* | :heavy_check_mark: | N/A | 1701731894 | +| `thumb` | *str* | :heavy_check_mark: | N/A | /:/resources/movie.png | +| `title1` | *str* | :heavy_check_mark: | N/A | Movies | +| `title2` | *str* | :heavy_check_mark: | N/A | Recently Released | +| `view_group` | *str* | :heavy_check_mark: | N/A | movie | +| `metadata` | List[[operations.GetLibraryItemsMetadata](../../models/operations/getlibraryitemsmetadata.md)] | :heavy_check_mark: | N/A | | +| `type` | List[[operations.GetLibraryItemsType](../../models/operations/getlibraryitemstype.md)] | :heavy_minus_sign: | N/A | | +| `field_type` | List[[operations.GetLibraryItemsFieldType](../../models/operations/getlibraryitemsfieldtype.md)] | :heavy_minus_sign: | N/A | | +| `nocache` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 65592 | +| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `meta` | [Optional[operations.GetLibraryItemsMeta]](../../models/operations/getlibraryitemsmeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmediaguid.md b/docs/models/operations/getlibraryitemsmediaguid.md new file mode 100644 index 0000000..762bb81 --- /dev/null +++ b/docs/models/operations/getlibraryitemsmediaguid.md @@ -0,0 +1,8 @@ +# GetLibraryItemsMediaGUID + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `id` | *str* | :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/getlibraryitemsmeta.md b/docs/models/operations/getlibraryitemsmeta.md new file mode 100644 index 0000000..6ac9d04 --- /dev/null +++ b/docs/models/operations/getlibraryitemsmeta.md @@ -0,0 +1,12 @@ +# GetLibraryItemsMeta + +The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `type` | List[[operations.GetLibraryItemsLibraryResponseType](../../models/operations/getlibraryitemslibraryresponsetype.md)] | :heavy_minus_sign: | N/A | +| `field_type` | List[[operations.GetLibraryItemsLibraryFieldType](../../models/operations/getlibraryitemslibraryfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmetadata.md b/docs/models/operations/getlibraryitemsmetadata.md index 49ae10f..9ddda53 100644 --- a/docs/models/operations/getlibraryitemsmetadata.md +++ b/docs/models/operations/getlibraryitemsmetadata.md @@ -8,12 +8,15 @@ | `rating_key` | *str* | :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` | *str* | :heavy_check_mark: | N/A | /library/metadata/58683 | | `guid` | *str* | :heavy_check_mark: | N/A | plex://movie/5d7768ba96b655001fdc0408 | -| `type` | [operations.GetLibraryItemsType](../../models/operations/getlibraryitemstype.md) | :heavy_check_mark: | The type of media content
| movie | +| `type` | [operations.GetLibraryItemsLibraryType](../../models/operations/getlibraryitemslibrarytype.md) | :heavy_check_mark: | The type of media content
| movie | | `title` | *str* | :heavy_check_mark: | N/A | Avatar: The Way of Water | | `summary` | *str* | :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. | | `added_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | | `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | 20th Century Studios | | `skip_children` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | +| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | | `slug` | *Optional[str]* | :heavy_minus_sign: | N/A | 4-for-texas | | `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | | `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 7.6 | @@ -21,8 +24,8 @@ | `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | | `season_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | | `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Return to Pandora. | -| `flatten_seasons` | [Optional[operations.FlattenSeasons]](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | N/A | 1 | -| `show_ordering` | [Optional[operations.ShowOrdering]](../../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)).
| dvd | +| `flatten_seasons` | [Optional[operations.GetLibraryItemsFlattenSeasons]](../../models/operations/getlibraryitemsflattenseasons.md) | :heavy_minus_sign: | N/A | 1 | +| `show_ordering` | [Optional[operations.GetLibraryItemsShowOrdering]](../../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)).
| dvd | | `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | | `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | | `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | @@ -38,6 +41,7 @@ | `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66 | | `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Caprica | | `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | +| `parent_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | | `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | | `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/art/1705716261 | | `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | @@ -46,10 +50,11 @@ | `country` | List[[operations.GetLibraryItemsCountry](../../models/operations/getlibraryitemscountry.md)] | :heavy_minus_sign: | N/A | | | `director` | List[[operations.GetLibraryItemsDirector](../../models/operations/getlibraryitemsdirector.md)] | :heavy_minus_sign: | N/A | | | `writer` | List[[operations.GetLibraryItemsWriter](../../models/operations/getlibraryitemswriter.md)] | :heavy_minus_sign: | N/A | | -| `collection` | List[[operations.Collection](../../models/operations/collection.md)] | :heavy_minus_sign: | N/A | | +| `collection` | List[[operations.GetLibraryItemsCollection](../../models/operations/getlibraryitemscollection.md)] | :heavy_minus_sign: | N/A | | | `role` | List[[operations.GetLibraryItemsRole](../../models/operations/getlibraryitemsrole.md)] | :heavy_minus_sign: | N/A | | -| `media_guid` | List[[operations.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`.
| | -| `ultra_blur_colors` | [Optional[operations.UltraBlurColors]](../../models/operations/ultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `media_guid` | List[[operations.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`.
| | +| `ultra_blur_colors` | [Optional[operations.GetLibraryItemsUltraBlurColors]](../../models/operations/getlibraryitemsultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `meta_data_rating` | List[[operations.GetLibraryItemsMetaDataRating](../../models/operations/getlibraryitemsmetadatarating.md)] | :heavy_minus_sign: | N/A | | | `image` | List[[operations.GetLibraryItemsImage](../../models/operations/getlibraryitemsimage.md)] | :heavy_minus_sign: | N/A | | | `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | Whale | | `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | diff --git a/docs/models/operations/getlibraryitemsmetadatarating.md b/docs/models/operations/getlibraryitemsmetadatarating.md new file mode 100644 index 0000000..1f47073 --- /dev/null +++ b/docs/models/operations/getlibraryitemsmetadatarating.md @@ -0,0 +1,10 @@ +# GetLibraryItemsMetaDataRating + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `image` | *str* | :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` | *str* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsoptimizedforstreaming.md b/docs/models/operations/getlibraryitemsoptimizedforstreaming.md new file mode 100644 index 0000000..9b1efbf --- /dev/null +++ b/docs/models/operations/getlibraryitemsoptimizedforstreaming.md @@ -0,0 +1,9 @@ +# GetLibraryItemsOptimizedForStreaming + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemspart.md b/docs/models/operations/getlibraryitemspart.md index 7230a9b..67692b1 100644 --- a/docs/models/operations/getlibraryitemspart.md +++ b/docs/models/operations/getlibraryitemspart.md @@ -13,5 +13,8 @@ | `container` | *str* | :heavy_check_mark: | The container format of the media file.
| mkv | | `video_profile` | *str* | :heavy_check_mark: | N/A | main 10 | | `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | | `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `has_thumbnail` | [Optional[operations.HasThumbnail]](../../models/operations/hasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file +| `has_thumbnail` | [Optional[operations.GetLibraryItemsHasThumbnail]](../../models/operations/getlibraryitemshasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | List[[operations.GetLibraryItemsStream](../../models/operations/getlibraryitemsstream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsqueryparamincludemeta.md b/docs/models/operations/getlibraryitemsqueryparamincludemeta.md new file mode 100644 index 0000000..6727f37 --- /dev/null +++ b/docs/models/operations/getlibraryitemsqueryparamincludemeta.md @@ -0,0 +1,12 @@ +# GetLibraryItemsQueryParamIncludeMeta + +Adds the Meta object to the response + + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsqueryparamtype.md b/docs/models/operations/getlibraryitemsqueryparamtype.md new file mode 100644 index 0000000..77694d5 --- /dev/null +++ b/docs/models/operations/getlibraryitemsqueryparamtype.md @@ -0,0 +1,19 @@ +# GetLibraryItemsQueryParamType + +The type of media to retrieve. +1 = movie +2 = show +3 = season +4 = episode +E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MOVIE` | 1 | +| `TV_SHOW` | 2 | +| `SEASON` | 3 | +| `EPISODE` | 4 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsrequest.md b/docs/models/operations/getlibraryitemsrequest.md index 36dca68..ce4916c 100644 --- a/docs/models/operations/getlibraryitemsrequest.md +++ b/docs/models/operations/getlibraryitemsrequest.md @@ -8,7 +8,7 @@ | `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | | `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | | | `include_guids` | [Optional[operations.IncludeGuids]](../../models/operations/includeguids.md) | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | -| `include_meta` | [Optional[operations.IncludeMeta]](../../models/operations/includemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `type` | [Optional[operations.Type]](../../models/operations/type.md) | :heavy_minus_sign: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `type` | [Optional[operations.GetLibraryItemsQueryParamType]](../../models/operations/getlibraryitemsqueryparamtype.md) | :heavy_minus_sign: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `include_meta` | [Optional[operations.GetLibraryItemsQueryParamIncludeMeta]](../../models/operations/getlibraryitemsqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | | `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | | `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsrole.md b/docs/models/operations/getlibraryitemsrole.md index 85d4f03..441a94e 100644 --- a/docs/models/operations/getlibraryitemsrole.md +++ b/docs/models/operations/getlibraryitemsrole.md @@ -3,6 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Sigourney Weaver | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | The ID of the tag or actor. | 294129 | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | The filter used to find the actor or tag. | actor=294129 | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail of the actor | https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg | +| `tag` | *Optional[str]* | :heavy_minus_sign: | The name of the tag or actor. | Mike Smith | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the tag. | 668e7e7b22bcad9064350c91 | +| `role` | *Optional[str]* | :heavy_minus_sign: | The role of the actor or tag in the media. | Self | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsshowordering.md b/docs/models/operations/getlibraryitemsshowordering.md new file mode 100644 index 0000000..f4330eb --- /dev/null +++ b/docs/models/operations/getlibraryitemsshowordering.md @@ -0,0 +1,20 @@ +# 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 | +| `TMDB_AIRING` | tmdbAiring | +| `AIRED` | aired | +| `DVD` | dvd | +| `ABSOLUTE` | absolute | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemssort.md b/docs/models/operations/getlibraryitemssort.md index dfef7cc..4f5adf5 100644 --- a/docs/models/operations/getlibraryitemssort.md +++ b/docs/models/operations/getlibraryitemssort.md @@ -3,13 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | titleSort | -| `title` | *str* | :heavy_check_mark: | N/A | Title | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `active_direction` | [Optional[operations.ActiveDirection]](../../models/operations/activedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `default_direction` | [Optional[operations.DefaultDirection]](../../models/operations/defaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | titleSort | +| `title` | *str* | :heavy_check_mark: | N/A | Title | +| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | +| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `active_direction` | [Optional[operations.GetLibraryItemsActiveDirection]](../../models/operations/getlibraryitemsactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `default_direction` | [Optional[operations.GetLibraryItemsDefaultDirection]](../../models/operations/getlibraryitemsdefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsstream.md b/docs/models/operations/getlibraryitemsstream.md new file mode 100644 index 0000000..b816365 --- /dev/null +++ b/docs/models/operations/getlibraryitemsstream.md @@ -0,0 +1,45 @@ +# GetLibraryItemsStream + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 272796 | +| `stream_type` | *int* | :heavy_check_mark: | Type of stream (1 = video, 2 = audio, 3 = subtitle) | 1 | +| `codec` | *str* | :heavy_check_mark: | Codec used by the stream | h264 | +| `index` | *int* | :heavy_check_mark: | The index of the stream | 0 | +| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the default stream | true | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is selected | true | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | The bitrate of the stream in kbps | 6273 | +| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | The color primaries of the video stream | bt709 | +| `color_range` | *Optional[str]* | :heavy_minus_sign: | The color range of the video stream | tv | +| `color_space` | *Optional[str]* | :heavy_minus_sign: | The color space of the video stream | bt709 | +| `color_trc` | *Optional[str]* | :heavy_minus_sign: | The transfer characteristics (TRC) of the video stream | bt709 | +| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | The bit depth of the video stream | 8 | +| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | The chroma location of the video stream | left | +| `stream_identifier` | *Optional[str]* | :heavy_minus_sign: | The identifier of the video stream | 2 | +| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | The chroma subsampling format | 4:2:0 | +| `coded_height` | *Optional[int]* | :heavy_minus_sign: | The coded height of the video stream | 1088 | +| `coded_width` | *Optional[int]* | :heavy_minus_sign: | The coded width of the video stream | 1920 | +| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | The frame rate of the video stream | 29.97 | +| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream has a scaling matrix | false | +| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `height` | *Optional[int]* | :heavy_minus_sign: | The height of the video stream | 1080 | +| `level` | *Optional[int]* | :heavy_minus_sign: | The level of the video codec | 40 | +| `profile` | *Optional[str]* | :heavy_minus_sign: | The profile of the video codec | main | +| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames | 4 | +| `scan_type` | *Optional[str]* | :heavy_minus_sign: | The scan type (progressive or interlaced) | progressive | +| `width` | *Optional[int]* | :heavy_minus_sign: | The width of the video stream | 1920 | +| `display_title` | *Optional[str]* | :heavy_minus_sign: | Display title of the stream | 1080p (H.264) | +| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | Extended display title of the stream | 1080p (H.264) | +| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams) | 2 | +| `language` | *Optional[str]* | :heavy_minus_sign: | The language of the stream (for audio/subtitle streams) | English | +| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag of the stream | en | +| `language_code` | *Optional[str]* | :heavy_minus_sign: | Language code of the stream | eng | +| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | The audio channel layout | stereo | +| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate of the audio stream in Hz | 48000 | +| `title` | *Optional[str]* | :heavy_minus_sign: | Title of the subtitle track (for subtitle streams) | English | +| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the subtitle stream can auto-sync | false | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemstype.md b/docs/models/operations/getlibraryitemstype.md index 8409929..d308beb 100644 --- a/docs/models/operations/getlibraryitemstype.md +++ b/docs/models/operations/getlibraryitemstype.md @@ -1,14 +1,14 @@ # GetLibraryItemsType -The type of media content +## Fields - -## Values - -| Name | Value | -| --------- | --------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *str* | :heavy_check_mark: | N/A | show | +| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *bool* | :heavy_check_mark: | N/A | false | +| `filter_` | List[[operations.GetLibraryItemsFilter](../../models/operations/getlibraryitemsfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[operations.GetLibraryItemsSort](../../models/operations/getlibraryitemssort.md)] | :heavy_minus_sign: | N/A | | +| `field` | List[[operations.GetLibraryItemsField](../../models/operations/getlibraryitemsfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsultrablurcolors.md b/docs/models/operations/getlibraryitemsultrablurcolors.md new file mode 100644 index 0000000..579f844 --- /dev/null +++ b/docs/models/operations/getlibraryitemsultrablurcolors.md @@ -0,0 +1,11 @@ +# GetLibraryItemsUltraBlurColors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | +| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | +| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | +| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getmetadatabyratingkeypart.md b/docs/models/operations/getmetadatabyratingkeypart.md index dad51de..37b4ccb 100644 --- a/docs/models/operations/getmetadatabyratingkeypart.md +++ b/docs/models/operations/getmetadatabyratingkeypart.md @@ -3,16 +3,16 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 15 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/15/1705637151/file.mp4 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141417 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Serenity (2005)/Serenity (2005).mp4 | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 40271948 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | -| `stream` | List[[operations.Stream](../../models/operations/stream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 15 | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/15/1705637151/file.mp4 | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141417 | +| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Serenity (2005)/Serenity (2005).mp4 | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 40271948 | +| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | +| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | +| `stream` | List[[operations.GetMetaDataByRatingKeyStream](../../models/operations/getmetadatabyratingkeystream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmetadatabyratingkeystream.md b/docs/models/operations/getmetadatabyratingkeystream.md new file mode 100644 index 0000000..a1f15e5 --- /dev/null +++ b/docs/models/operations/getmetadatabyratingkeystream.md @@ -0,0 +1,39 @@ +# GetMetaDataByRatingKeyStream + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 29 | +| `stream_type` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `default` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | +| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 128 | +| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | +| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | N/A | left | +| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | N/A | 14520 | +| `coded_height` | *Optional[int]* | :heavy_minus_sign: | N/A | 816 | +| `coded_width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1920 | +| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | N/A | bt709 | +| `color_range` | *Optional[str]* | :heavy_minus_sign: | N/A | tv | +| `color_space` | *Optional[str]* | :heavy_minus_sign: | N/A | bt709 | +| `color_trc` | *Optional[str]* | :heavy_minus_sign: | N/A | bt709 | +| `frame_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 24 | +| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 814 | +| `level` | *Optional[int]* | :heavy_minus_sign: | N/A | 40 | +| `profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | +| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | N/A | 4 | +| `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | +| `stream_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1920 | +| `display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | English (AAC Stereo) | +| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | English (AAC Stereo) | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | English | +| `language_tag` | *Optional[str]* | :heavy_minus_sign: | N/A | en | +| `language_code` | *Optional[str]* | :heavy_minus_sign: | N/A | eng | +| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 44100 | \ No newline at end of file diff --git a/docs/models/operations/getpinglobals.md b/docs/models/operations/getpinglobals.md index 4b7b1d0..eebe01e 100644 --- a/docs/models/operations/getpinglobals.md +++ b/docs/models/operations/getpinglobals.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `client_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Web | -| `device_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Linux | -| `client_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.133.0 | -| `client_platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Chrome | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `client_id` | *Optional[str]* | :heavy_minus_sign: | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
| gcgzw5rz2xovp84b4vha3a40 | +| `client_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Web | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Linux | +| `client_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.133.0 | +| `client_platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Chrome | \ No newline at end of file diff --git a/docs/models/operations/getpinrequest.md b/docs/models/operations/getpinrequest.md index 063af69..8a0b004 100644 --- a/docs/models/operations/getpinrequest.md +++ b/docs/models/operations/getpinrequest.md @@ -3,10 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `strong` | *Optional[bool]* | :heavy_minus_sign: | Determines the kind of code returned by the API call
Strong codes are used for Pin authentication flows
Non-Strong codes are used for `Plex.tv/link`
| | -| `client_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Web | -| `device_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Linux | -| `client_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.133.0 | -| `client_platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Chrome | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `strong` | *Optional[bool]* | :heavy_minus_sign: | Determines the kind of code returned by the API call
Strong codes are used for Pin authentication flows
Non-Strong codes are used for `Plex.tv/link`
| | +| `client_id` | *Optional[str]* | :heavy_minus_sign: | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
| gcgzw5rz2xovp84b4vha3a40 | +| `client_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Web | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Linux | +| `client_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.133.0 | +| `client_platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Chrome | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedactivedirection.md b/docs/models/operations/getrecentlyaddedactivedirection.md new file mode 100644 index 0000000..0ac1a46 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedactivedirection.md @@ -0,0 +1,12 @@ +# GetRecentlyAddedActiveDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddeddefaultdirection.md b/docs/models/operations/getrecentlyaddeddefaultdirection.md new file mode 100644 index 0000000..c51ef38 --- /dev/null +++ b/docs/models/operations/getrecentlyaddeddefaultdirection.md @@ -0,0 +1,12 @@ +# GetRecentlyAddedDefaultDirection + +The direction of the sort. Can be either `asc` or `desc`. + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `ASCENDING` | asc | +| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedfield.md b/docs/models/operations/getrecentlyaddedfield.md new file mode 100644 index 0000000..895118a --- /dev/null +++ b/docs/models/operations/getrecentlyaddedfield.md @@ -0,0 +1,11 @@ +# GetRecentlyAddedField + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | show.title | +| `title` | *str* | :heavy_check_mark: | N/A | Show Title | +| `type` | *str* | :heavy_check_mark: | N/A | string | +| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedfieldtype.md b/docs/models/operations/getrecentlyaddedfieldtype.md new file mode 100644 index 0000000..3f9ecf9 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedfieldtype.md @@ -0,0 +1,9 @@ +# GetRecentlyAddedFieldType + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `type` | *str* | :heavy_check_mark: | N/A | tag | +| `operator` | List[[operations.GetRecentlyAddedOperator](../../models/operations/getrecentlyaddedoperator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedfilter.md b/docs/models/operations/getrecentlyaddedfilter.md new file mode 100644 index 0000000..07d7f20 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedfilter.md @@ -0,0 +1,12 @@ +# GetRecentlyAddedFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `filter_` | *str* | :heavy_check_mark: | N/A | genre | +| `filter_type` | *str* | :heavy_check_mark: | N/A | string | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | +| `title` | *str* | :heavy_check_mark: | N/A | Genre | +| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedhubsresponsetype.md b/docs/models/operations/getrecentlyaddedhubsresponsetype.md new file mode 100644 index 0000000..eb8cad3 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedhubsresponsetype.md @@ -0,0 +1,11 @@ +# GetRecentlyAddedHubsResponseType + + +## Values + +| Name | Value | +| -------------- | -------------- | +| `COVER_POSTER` | coverPoster | +| `BACKGROUND` | background | +| `SNAPSHOT` | snapshot | +| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedhubstype.md b/docs/models/operations/getrecentlyaddedhubstype.md new file mode 100644 index 0000000..44e2f8e --- /dev/null +++ b/docs/models/operations/getrecentlyaddedhubstype.md @@ -0,0 +1,14 @@ +# GetRecentlyAddedHubsType + +The type of media content + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MOVIE` | movie | +| `TV_SHOW` | show | +| `SEASON` | season | +| `EPISODE` | episode | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedimage.md b/docs/models/operations/getrecentlyaddedimage.md new file mode 100644 index 0000000..212441e --- /dev/null +++ b/docs/models/operations/getrecentlyaddedimage.md @@ -0,0 +1,10 @@ +# GetRecentlyAddedImage + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | +| `type` | [operations.GetRecentlyAddedHubsResponseType](../../models/operations/getrecentlyaddedhubsresponsetype.md) | :heavy_check_mark: | N/A | background | +| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarycountry.md b/docs/models/operations/getrecentlyaddedlibrarycountry.md new file mode 100644 index 0000000..d646a11 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarycountry.md @@ -0,0 +1,8 @@ +# GetRecentlyAddedLibraryCountry + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarydirector.md b/docs/models/operations/getrecentlyaddedlibrarydirector.md new file mode 100644 index 0000000..068dd72 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarydirector.md @@ -0,0 +1,8 @@ +# GetRecentlyAddedLibraryDirector + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Peyton Reed | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryfilter.md b/docs/models/operations/getrecentlyaddedlibraryfilter.md new file mode 100644 index 0000000..00bd617 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibraryfilter.md @@ -0,0 +1,12 @@ +# GetRecentlyAddedLibraryFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `filter_` | *str* | :heavy_check_mark: | N/A | genre | +| `filter_type` | *str* | :heavy_check_mark: | N/A | string | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | +| `title` | *str* | :heavy_check_mark: | N/A | Genre | +| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarygenre.md b/docs/models/operations/getrecentlyaddedlibrarygenre.md new file mode 100644 index 0000000..f3a154a --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarygenre.md @@ -0,0 +1,8 @@ +# GetRecentlyAddedLibraryGenre + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Comedy | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarymedia.md b/docs/models/operations/getrecentlyaddedlibrarymedia.md new file mode 100644 index 0000000..5bdfb62 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarymedia.md @@ -0,0 +1,23 @@ +# GetRecentlyAddedLibraryMedia + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 120345 | +| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | +| `bitrate` | *Optional[float]* | :heavy_minus_sign: | N/A | 3623 | +| `width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1920 | +| `height` | *Optional[float]* | :heavy_minus_sign: | N/A | 804 | +| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | +| `audio_channels` | *Optional[float]* | :heavy_minus_sign: | N/A | 6 | +| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | ac3 | +| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | +| `video_resolution` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | +| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | +| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | +| `optimized_for_streaming` | *Optional[float]* | :heavy_minus_sign: | N/A | 0 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | +| `part` | List[[operations.GetRecentlyAddedLibraryPart](../../models/operations/getrecentlyaddedlibrarypart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarymediacontainer.md b/docs/models/operations/getrecentlyaddedlibrarymediacontainer.md new file mode 100644 index 0000000..1502774 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarymediacontainer.md @@ -0,0 +1,19 @@ +# GetRecentlyAddedLibraryMediaContainer + +The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `type` | List[[operations.GetRecentlyAddedLibraryType](../../models/operations/getrecentlyaddedlibrarytype.md)] | :heavy_minus_sign: | N/A | | +| `field_type` | List[[operations.FieldType](../../models/operations/fieldtype.md)] | :heavy_minus_sign: | N/A | | +| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 50 | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | +| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | +| `media_tag_version` | *Optional[float]* | :heavy_minus_sign: | N/A | 1680021154 | +| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `metadata` | List[[operations.GetRecentlyAddedLibraryMetadata](../../models/operations/getrecentlyaddedlibrarymetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarymetadata.md b/docs/models/operations/getrecentlyaddedlibrarymetadata.md new file mode 100644 index 0000000..c173362 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarymetadata.md @@ -0,0 +1,39 @@ +# GetRecentlyAddedLibraryMetadata + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `library_section_id` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | +| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | +| `rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 59398 | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398 | +| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5e161a83bea6ac004126e148 | +| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Marvel Studios | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Ant-Man and the Wasp: Quantumania | +| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | +| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible. | +| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 4.7 | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 8.3 | +| `year` | *Optional[float]* | :heavy_minus_sign: | N/A | 2023 | +| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Witness the beginning of a new dynasty. | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398/thumb/1681888010 | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398/art/1681888010 | +| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | +| `originally_available_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2023-02-15 00:00:00 +0000 UTC | +| `added_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681803215 | +| `updated_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681888010 | +| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | +| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | +| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59399 | +| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.rotten | +| `media` | List[[operations.GetRecentlyAddedLibraryMedia](../../models/operations/getrecentlyaddedlibrarymedia.md)] | :heavy_minus_sign: | N/A | | +| `genre` | List[[operations.GetRecentlyAddedLibraryGenre](../../models/operations/getrecentlyaddedlibrarygenre.md)] | :heavy_minus_sign: | N/A | | +| `director` | List[[operations.GetRecentlyAddedLibraryDirector](../../models/operations/getrecentlyaddedlibrarydirector.md)] | :heavy_minus_sign: | N/A | | +| `writer` | List[[operations.GetRecentlyAddedLibraryWriter](../../models/operations/getrecentlyaddedlibrarywriter.md)] | :heavy_minus_sign: | N/A | | +| `country` | List[[operations.GetRecentlyAddedLibraryCountry](../../models/operations/getrecentlyaddedlibrarycountry.md)] | :heavy_minus_sign: | N/A | | +| `role` | List[[operations.GetRecentlyAddedLibraryRole](../../models/operations/getrecentlyaddedlibraryrole.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarypart.md b/docs/models/operations/getrecentlyaddedlibrarypart.md new file mode 100644 index 0000000..e4a3ad0 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarypart.md @@ -0,0 +1,17 @@ +# GetRecentlyAddedLibraryPart + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 120353 | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/120353/1681803203/file.mp4 | +| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | +| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4 | +| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 3395307162 | +| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `has_thumbnail` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryrequest.md b/docs/models/operations/getrecentlyaddedlibraryrequest.md new file mode 100644 index 0000000..d2381dd --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibraryrequest.md @@ -0,0 +1,14 @@ +# GetRecentlyAddedLibraryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [operations.QueryParamType](../../models/operations/queryparamtype.md) | :heavy_check_mark: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `content_directory_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `pinned_content_directory_id` | List[*int*] | :heavy_minus_sign: | N/A | [
3,
5,
7,
13,
12,
1,
6,
14,
2,
10,
16,
17
] | +| `section_id` | *Optional[int]* | :heavy_minus_sign: | The library section ID for filtering content. | 2 | +| `include_meta` | [Optional[operations.QueryParamIncludeMeta]](../../models/operations/queryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | +| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | +| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryresponse.md b/docs/models/operations/getrecentlyaddedlibraryresponse.md new file mode 100644 index 0000000..01a8370 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibraryresponse.md @@ -0,0 +1,11 @@ +# GetRecentlyAddedLibraryResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetRecentlyAddedLibraryResponseBody]](../../models/operations/getrecentlyaddedlibraryresponsebody.md) | :heavy_minus_sign: | The recently added content | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryresponsebody.md b/docs/models/operations/getrecentlyaddedlibraryresponsebody.md new file mode 100644 index 0000000..bb63377 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibraryresponsebody.md @@ -0,0 +1,10 @@ +# GetRecentlyAddedLibraryResponseBody + +The recently added content + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetRecentlyAddedLibraryMediaContainer]](../../models/operations/getrecentlyaddedlibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryrole.md b/docs/models/operations/getrecentlyaddedlibraryrole.md new file mode 100644 index 0000000..0a0934b --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibraryrole.md @@ -0,0 +1,8 @@ +# GetRecentlyAddedLibraryRole + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Paul Rudd | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarytype.md b/docs/models/operations/getrecentlyaddedlibrarytype.md new file mode 100644 index 0000000..988d386 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarytype.md @@ -0,0 +1,14 @@ +# GetRecentlyAddedLibraryType + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *str* | :heavy_check_mark: | N/A | show | +| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *bool* | :heavy_check_mark: | N/A | false | +| `filter_` | List[[operations.GetRecentlyAddedLibraryFilter](../../models/operations/getrecentlyaddedlibraryfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[operations.Sort](../../models/operations/sort.md)] | :heavy_minus_sign: | N/A | | +| `field` | List[[operations.Field](../../models/operations/field.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarywriter.md b/docs/models/operations/getrecentlyaddedlibrarywriter.md new file mode 100644 index 0000000..bf07e58 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedlibrarywriter.md @@ -0,0 +1,8 @@ +# GetRecentlyAddedLibraryWriter + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Jeff Loveness | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmediacontainer.md b/docs/models/operations/getrecentlyaddedmediacontainer.md index e215d5c..7af4b84 100644 --- a/docs/models/operations/getrecentlyaddedmediacontainer.md +++ b/docs/models/operations/getrecentlyaddedmediacontainer.md @@ -5,10 +5,10 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 50 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `size` | *float* | :heavy_check_mark: | N/A | 50 | +| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | | | `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[float]* | :heavy_minus_sign: | N/A | 1680021154 | -| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `meta` | [Optional[operations.Meta]](../../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[[operations.GetRecentlyAddedMetadata](../../models/operations/getrecentlyaddedmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmetadata.md b/docs/models/operations/getrecentlyaddedmetadata.md index ea65efb..1f52a1c 100644 --- a/docs/models/operations/getrecentlyaddedmetadata.md +++ b/docs/models/operations/getrecentlyaddedmetadata.md @@ -3,37 +3,78 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | -| `rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 59398 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5e161a83bea6ac004126e148 | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Marvel Studios | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Ant-Man and the Wasp: Quantumania | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible. | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 4.7 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 8.3 | -| `year` | *Optional[float]* | :heavy_minus_sign: | N/A | 2023 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Witness the beginning of a new dynasty. | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398/thumb/1681888010 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398/art/1681888010 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | -| `originally_available_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2023-02-15 00:00:00 +0000 UTC | -| `added_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681803215 | -| `updated_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681888010 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59399 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.rotten | -| `media` | List[[operations.Media](../../models/operations/media.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.Genre](../../models/operations/genre.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.Director](../../models/operations/director.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.Writer](../../models/operations/writer.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.Country](../../models/operations/country.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.Role](../../models/operations/role.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `rating_key` | *str* | :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` | *str* | :heavy_check_mark: | N/A | /library/metadata/58683 | +| `guid` | *str* | :heavy_check_mark: | N/A | plex://movie/5d7768ba96b655001fdc0408 | +| `type` | [operations.GetRecentlyAddedHubsType](../../models/operations/getrecentlyaddedhubstype.md) | :heavy_check_mark: | The type of media content
| movie | +| `title` | *str* | :heavy_check_mark: | N/A | Avatar: The Way of Water | +| `summary` | *str* | :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. | +| `added_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | +| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | 20th Century Studios | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | +| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | +| `slug` | *Optional[str]* | :heavy_minus_sign: | N/A | 4-for-texas | +| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | +| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 7.6 | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 9.2 | +| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | +| `season_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | +| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Return to Pandora. | +| `flatten_seasons` | [Optional[operations.FlattenSeasons]](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | N/A | 1 | +| `show_ordering` | [Optional[operations.ShowOrdering]](../../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)).
| dvd | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/thumb/1703239236 | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/art/1703239236 | +| `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58683/banner/1703239236 | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 11558112 | +| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2022-12-14 00:00:00 +0000 UTC | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | +| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | +| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | +| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/58684 | +| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 66 | +| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66 | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Caprica | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | +| `parent_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | +| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | N/A | alice-in-borderland-2020 | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/art/1705716261 | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | +| `media` | List[[operations.Media](../../models/operations/media.md)] | :heavy_minus_sign: | The Media object is only included when type query is `4` or higher.
| | +| `genre` | List[[operations.Genre](../../models/operations/genre.md)] | :heavy_minus_sign: | N/A | | +| `country` | List[[operations.Country](../../models/operations/country.md)] | :heavy_minus_sign: | N/A | | +| `director` | List[[operations.Director](../../models/operations/director.md)] | :heavy_minus_sign: | N/A | | +| `writer` | List[[operations.Writer](../../models/operations/writer.md)] | :heavy_minus_sign: | N/A | | +| `collection` | List[[operations.Collection](../../models/operations/collection.md)] | :heavy_minus_sign: | N/A | | +| `role` | List[[operations.Role](../../models/operations/role.md)] | :heavy_minus_sign: | N/A | | +| `media_guid` | List[[operations.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`.
| | +| `ultra_blur_colors` | [Optional[operations.UltraBlurColors]](../../models/operations/ultrablurcolors.md) | :heavy_minus_sign: | N/A | | +| `meta_data_rating` | List[[operations.MetaDataRating](../../models/operations/metadatarating.md)] | :heavy_minus_sign: | N/A | | +| `image` | List[[operations.GetRecentlyAddedImage](../../models/operations/getrecentlyaddedimage.md)] | :heavy_minus_sign: | N/A | | +| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | Whale | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1682752242 | +| `original_title` | *Optional[str]* | :heavy_minus_sign: | N/A | 映画 ブラッククローバー 魔法帝の剣 | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 5222500 | +| `skip_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 14 | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | +| `child_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `has_premium_extras` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `has_premium_primary_extra` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent item.
| 66 | +| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c081b170e24001f2a7be4 | +| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | UCP | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66 | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Caprica | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2010 | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/thumb/1705716261 | +| `parent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66/theme/1705716261 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedoperator.md b/docs/models/operations/getrecentlyaddedoperator.md new file mode 100644 index 0000000..e70db1e --- /dev/null +++ b/docs/models/operations/getrecentlyaddedoperator.md @@ -0,0 +1,9 @@ +# GetRecentlyAddedOperator + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | = | +| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedrequest.md b/docs/models/operations/getrecentlyaddedrequest.md index 87ab7bf..732e680 100644 --- a/docs/models/operations/getrecentlyaddedrequest.md +++ b/docs/models/operations/getrecentlyaddedrequest.md @@ -5,5 +5,10 @@ | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `content_directory_id` | *int* | :heavy_check_mark: | The content directory ID. | | +| `type` | [operations.Type](../../models/operations/type.md) | :heavy_check_mark: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `pinned_content_directory_id` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of pinned content directory IDs. | | +| `section_id` | *Optional[int]* | :heavy_minus_sign: | The library section ID for filtering content. | 2 | +| `include_meta` | [Optional[operations.IncludeMeta]](../../models/operations/includemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | | `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | | `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedresponse.md b/docs/models/operations/getrecentlyaddedresponse.md index db317e8..71905de 100644 --- a/docs/models/operations/getrecentlyaddedresponse.md +++ b/docs/models/operations/getrecentlyaddedresponse.md @@ -8,4 +8,4 @@ | `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | | `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | | `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetRecentlyAddedResponseBody]](../../models/operations/getrecentlyaddedresponsebody.md) | :heavy_minus_sign: | The recently added content | \ No newline at end of file +| `object` | [Optional[operations.GetRecentlyAddedResponseBody]](../../models/operations/getrecentlyaddedresponsebody.md) | :heavy_minus_sign: | A successful response with recently added content. | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedresponsebody.md b/docs/models/operations/getrecentlyaddedresponsebody.md index 57c2b51..f2ea956 100644 --- a/docs/models/operations/getrecentlyaddedresponsebody.md +++ b/docs/models/operations/getrecentlyaddedresponsebody.md @@ -1,6 +1,6 @@ # GetRecentlyAddedResponseBody -The recently added content +A successful response with recently added content. ## Fields diff --git a/docs/models/operations/getrecentlyaddedsort.md b/docs/models/operations/getrecentlyaddedsort.md new file mode 100644 index 0000000..f4639a0 --- /dev/null +++ b/docs/models/operations/getrecentlyaddedsort.md @@ -0,0 +1,15 @@ +# GetRecentlyAddedSort + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | N/A | titleSort | +| `title` | *str* | :heavy_check_mark: | N/A | Title | +| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | +| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `active_direction` | [Optional[operations.GetRecentlyAddedActiveDirection]](../../models/operations/getrecentlyaddedactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `default_direction` | [Optional[operations.GetRecentlyAddedDefaultDirection]](../../models/operations/getrecentlyaddeddefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedtype.md b/docs/models/operations/getrecentlyaddedtype.md new file mode 100644 index 0000000..5b50cfb --- /dev/null +++ b/docs/models/operations/getrecentlyaddedtype.md @@ -0,0 +1,14 @@ +# GetRecentlyAddedType + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | +| `type` | *str* | :heavy_check_mark: | N/A | show | +| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | +| `active` | *bool* | :heavy_check_mark: | N/A | false | +| `filter_` | List[[operations.GetRecentlyAddedFilter](../../models/operations/getrecentlyaddedfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[operations.GetRecentlyAddedSort](../../models/operations/getrecentlyaddedsort.md)] | :heavy_minus_sign: | N/A | | +| `field` | List[[operations.GetRecentlyAddedField](../../models/operations/getrecentlyaddedfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibraryqueryparamtype.md b/docs/models/operations/getsearchlibraryqueryparamtype.md new file mode 100644 index 0000000..e06aac8 --- /dev/null +++ b/docs/models/operations/getsearchlibraryqueryparamtype.md @@ -0,0 +1,19 @@ +# GetSearchLibraryQueryParamType + +The type of media to retrieve. +1 = movie +2 = show +3 = season +4 = episode +E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MOVIE` | 1 | +| `TV_SHOW` | 2 | +| `SEASON` | 3 | +| `EPISODE` | 4 | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibraryrequest.md b/docs/models/operations/getsearchlibraryrequest.md index 20314fa..582cec7 100644 --- a/docs/models/operations/getsearchlibraryrequest.md +++ b/docs/models/operations/getsearchlibraryrequest.md @@ -6,4 +6,4 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.QueryParamType](../../models/operations/queryparamtype.md) | :heavy_check_mark: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file +| `type` | [operations.GetSearchLibraryQueryParamType](../../models/operations/getsearchlibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/models/operations/librarysectionid.md b/docs/models/operations/librarysectionid.md deleted file mode 100644 index 3ffb146..0000000 --- a/docs/models/operations/librarysectionid.md +++ /dev/null @@ -1,17 +0,0 @@ -# LibrarySectionID - - -## Supported Types - -### `int` - -```python -value: int = /* values here */ -``` - -### `str` - -```python -value: str = /* values here */ -``` - diff --git a/docs/models/operations/media.md b/docs/models/operations/media.md index 0058889..bc271c8 100644 --- a/docs/models/operations/media.md +++ b/docs/models/operations/media.md @@ -3,21 +3,23 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 120345 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | -| `bitrate` | *Optional[float]* | :heavy_minus_sign: | N/A | 3623 | -| `width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1920 | -| `height` | *Optional[float]* | :heavy_minus_sign: | N/A | 804 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | -| `audio_channels` | *Optional[float]* | :heavy_minus_sign: | N/A | 6 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | ac3 | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | -| `video_resolution` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | -| `optimized_for_streaming` | *Optional[float]* | :heavy_minus_sign: | N/A | 0 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | -| `part` | List[[operations.Part](../../models/operations/part.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 119534 | +| `duration` | *int* | :heavy_check_mark: | N/A | 11558112 | +| `bitrate` | *int* | :heavy_check_mark: | N/A | 25025 | +| `width` | *int* | :heavy_check_mark: | N/A | 3840 | +| `height` | *int* | :heavy_check_mark: | N/A | 2072 | +| `aspect_ratio` | *float* | :heavy_check_mark: | N/A | 1.85 | +| `audio_channels` | *int* | :heavy_check_mark: | N/A | 6 | +| `audio_codec` | *str* | :heavy_check_mark: | N/A | eac3 | +| `video_codec` | *str* | :heavy_check_mark: | N/A | hevc | +| `video_resolution` | *str* | :heavy_check_mark: | N/A | 4k | +| `container` | *str* | :heavy_check_mark: | N/A | mkv | +| `video_frame_rate` | *str* | :heavy_check_mark: | N/A | 24p | +| `video_profile` | *str* | :heavy_check_mark: | N/A | main 10 | +| `part` | List[[operations.Part](../../models/operations/part.md)] | :heavy_check_mark: | N/A | | +| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `optimized_for_streaming` | [Optional[operations.OptimizedForStreaming]](../../models/operations/optimizedforstreaming.md) | :heavy_minus_sign: | N/A | 1 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | \ No newline at end of file diff --git a/docs/models/operations/meta.md b/docs/models/operations/meta.md index 9c1573b..ed91292 100644 --- a/docs/models/operations/meta.md +++ b/docs/models/operations/meta.md @@ -6,7 +6,7 @@ The Meta object is only included in the response if the `includeMeta` parameter ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `type` | List[[operations.GetLibraryItemsLibraryType](../../models/operations/getlibraryitemslibrarytype.md)] | :heavy_minus_sign: | N/A | -| `field_type` | List[[operations.GetLibraryItemsFieldType](../../models/operations/getlibraryitemsfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `type` | List[[operations.GetRecentlyAddedType](../../models/operations/getrecentlyaddedtype.md)] | :heavy_minus_sign: | N/A | +| `field_type` | List[[operations.GetRecentlyAddedFieldType](../../models/operations/getrecentlyaddedfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/metadatarating.md b/docs/models/operations/metadatarating.md new file mode 100644 index 0000000..6c8903e --- /dev/null +++ b/docs/models/operations/metadatarating.md @@ -0,0 +1,10 @@ +# MetaDataRating + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `image` | *str* | :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` | *str* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/models/operations/operator.md b/docs/models/operations/operator.md index 17f6ac2..3255dfe 100644 --- a/docs/models/operations/operator.md +++ b/docs/models/operations/operator.md @@ -5,5 +5,5 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | = | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | is | \ No newline at end of file +| `key` | *str* | :heavy_check_mark: | N/A | = | +| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/optimizedforstreaming.md b/docs/models/operations/optimizedforstreaming.md new file mode 100644 index 0000000..15b4778 --- /dev/null +++ b/docs/models/operations/optimizedforstreaming.md @@ -0,0 +1,9 @@ +# OptimizedForStreaming + + +## 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 6f9f534..7d88e85 100644 --- a/docs/models/operations/part.md +++ b/docs/models/operations/part.md @@ -3,15 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 120353 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/120353/1681803203/file.mp4 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4 | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 3395307162 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `has_thumbnail` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 119542 | +| `key` | *str* | :heavy_check_mark: | N/A | /library/parts/119542/1680457526/file.mkv | +| `duration` | *int* | :heavy_check_mark: | N/A | 11558112 | +| `file` | *str* | :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` | *int* | :heavy_check_mark: | N/A | 36158371307 | +| `container` | *str* | :heavy_check_mark: | The container format of the media file.
| mkv | +| `video_profile` | *str* | :heavy_check_mark: | N/A | main 10 | +| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | dts | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | +| `has_thumbnail` | [Optional[operations.HasThumbnail]](../../models/operations/hasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | +| `stream` | List[[operations.Stream](../../models/operations/stream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataglobals.md b/docs/models/operations/postuserssignindataglobals.md new file mode 100644 index 0000000..90b221c --- /dev/null +++ b/docs/models/operations/postuserssignindataglobals.md @@ -0,0 +1,12 @@ +# PostUsersSignInDataGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `client_id` | *Optional[str]* | :heavy_minus_sign: | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
| gcgzw5rz2xovp84b4vha3a40 | +| `client_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Web | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Linux | +| `client_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.133.0 | +| `client_platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Chrome | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatarequest.md b/docs/models/operations/postuserssignindatarequest.md new file mode 100644 index 0000000..ebbb85b --- /dev/null +++ b/docs/models/operations/postuserssignindatarequest.md @@ -0,0 +1,13 @@ +# PostUsersSignInDataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `client_id` | *Optional[str]* | :heavy_minus_sign: | The unique identifier for the client application
This is used to track the client application and its usage
(UUID, serial number, or other number unique per device)
| gcgzw5rz2xovp84b4vha3a40 | +| `client_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Web | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | N/A | Linux | +| `client_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.133.0 | +| `client_platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Chrome | +| `request_body` | [Optional[operations.PostUsersSignInDataRequestBody]](../../models/operations/postuserssignindatarequestbody.md) | :heavy_minus_sign: | Login credentials | | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludemeta.md b/docs/models/operations/queryparamincludemeta.md new file mode 100644 index 0000000..b1a6e31 --- /dev/null +++ b/docs/models/operations/queryparamincludemeta.md @@ -0,0 +1,12 @@ +# QueryParamIncludeMeta + +Adds the Meta object to the response + + + +## Values + +| Name | Value | +| --------- | --------- | +| `DISABLE` | 0 | +| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/role.md b/docs/models/operations/role.md index b471ce7..6a0580c 100644 --- a/docs/models/operations/role.md +++ b/docs/models/operations/role.md @@ -3,6 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Paul Rudd | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | The ID of the tag or actor. | 294129 | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | The filter used to find the actor or tag. | actor=294129 | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail of the actor | https://metadata-static.plex.tv/2/people/27b85844536c39f3f9ac943aaad46608.jpg | +| `tag` | *Optional[str]* | :heavy_minus_sign: | The name of the tag or actor. | Mike Smith | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the tag. | 668e7e7b22bcad9064350c91 | +| `role` | *Optional[str]* | :heavy_minus_sign: | The role of the actor or tag in the media. | Self | \ No newline at end of file diff --git a/docs/models/operations/sort.md b/docs/models/operations/sort.md index b7bd4c5..98d6584 100644 --- a/docs/models/operations/sort.md +++ b/docs/models/operations/sort.md @@ -3,11 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `default_direction` | *Optional[str]* | :heavy_minus_sign: | N/A | desc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | random:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1/firstCharacter | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | random | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Randomly | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `key` | *str* | :heavy_check_mark: | N/A | titleSort | +| `title` | *str* | :heavy_check_mark: | N/A | Title | +| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | +| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `active_direction` | [Optional[operations.ActiveDirection]](../../models/operations/activedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `default_direction` | [Optional[operations.DefaultDirection]](../../models/operations/defaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | \ No newline at end of file diff --git a/docs/models/operations/stream.md b/docs/models/operations/stream.md index ca56add..44f404d 100644 --- a/docs/models/operations/stream.md +++ b/docs/models/operations/stream.md @@ -3,37 +3,43 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 29 | -| `stream_type` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `default` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 128 | -| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | -| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | N/A | left | -| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | N/A | 14520 | -| `coded_height` | *Optional[int]* | :heavy_minus_sign: | N/A | 816 | -| `coded_width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1920 | -| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | N/A | bt709 | -| `color_range` | *Optional[str]* | :heavy_minus_sign: | N/A | tv | -| `color_space` | *Optional[str]* | :heavy_minus_sign: | N/A | bt709 | -| `color_trc` | *Optional[str]* | :heavy_minus_sign: | N/A | bt709 | -| `frame_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 24 | -| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 814 | -| `level` | *Optional[int]* | :heavy_minus_sign: | N/A | 40 | -| `profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | N/A | 4 | -| `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `stream_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1920 | -| `display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | English (AAC Stereo) | -| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | English (AAC Stereo) | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | English | -| `language_tag` | *Optional[str]* | :heavy_minus_sign: | N/A | en | -| `language_code` | *Optional[str]* | :heavy_minus_sign: | N/A | eng | -| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 44100 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | N/A | 272796 | +| `stream_type` | *int* | :heavy_check_mark: | Type of stream (1 = video, 2 = audio, 3 = subtitle) | 1 | +| `codec` | *str* | :heavy_check_mark: | Codec used by the stream | h264 | +| `index` | *int* | :heavy_check_mark: | The index of the stream | 0 | +| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the default stream | true | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is selected | true | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | The bitrate of the stream in kbps | 6273 | +| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | The color primaries of the video stream | bt709 | +| `color_range` | *Optional[str]* | :heavy_minus_sign: | The color range of the video stream | tv | +| `color_space` | *Optional[str]* | :heavy_minus_sign: | The color space of the video stream | bt709 | +| `color_trc` | *Optional[str]* | :heavy_minus_sign: | The transfer characteristics (TRC) of the video stream | bt709 | +| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | The bit depth of the video stream | 8 | +| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | The chroma location of the video stream | left | +| `stream_identifier` | *Optional[str]* | :heavy_minus_sign: | The identifier of the video stream | 2 | +| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | The chroma subsampling format | 4:2:0 | +| `coded_height` | *Optional[int]* | :heavy_minus_sign: | The coded height of the video stream | 1088 | +| `coded_width` | *Optional[int]* | :heavy_minus_sign: | The coded width of the video stream | 1920 | +| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | The frame rate of the video stream | 29.97 | +| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream has a scaling matrix | false | +| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `height` | *Optional[int]* | :heavy_minus_sign: | The height of the video stream | 1080 | +| `level` | *Optional[int]* | :heavy_minus_sign: | The level of the video codec | 40 | +| `profile` | *Optional[str]* | :heavy_minus_sign: | The profile of the video codec | main | +| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames | 4 | +| `scan_type` | *Optional[str]* | :heavy_minus_sign: | The scan type (progressive or interlaced) | progressive | +| `width` | *Optional[int]* | :heavy_minus_sign: | The width of the video stream | 1920 | +| `display_title` | *Optional[str]* | :heavy_minus_sign: | Display title of the stream | 1080p (H.264) | +| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | Extended display title of the stream | 1080p (H.264) | +| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams) | 2 | +| `language` | *Optional[str]* | :heavy_minus_sign: | The language of the stream (for audio/subtitle streams) | English | +| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag of the stream | en | +| `language_code` | *Optional[str]* | :heavy_minus_sign: | Language code of the stream | eng | +| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | The audio channel layout | stereo | +| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate of the audio stream in Hz | 48000 | +| `title` | *Optional[str]* | :heavy_minus_sign: | Title of the subtitle track (for subtitle streams) | English | +| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the subtitle stream can auto-sync | false | \ No newline at end of file diff --git a/docs/models/operations/writer.md b/docs/models/operations/writer.md index 54f853a..7d84dc0 100644 --- a/docs/models/operations/writer.md +++ b/docs/models/operations/writer.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Jeff Loveness | \ No newline at end of file +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | James Cameron | \ No newline at end of file diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md index 3824977..330addc 100644 --- a/docs/sdks/authentication/README.md +++ b/docs/sdks/authentication/README.md @@ -174,9 +174,11 @@ s = PlexAPI( ) res = s.authentication.post_users_sign_in_data(request={ - "login": "username@email.com", - "password": "password123", - "verification_code": "123456", + "request_body": { + "login": "username@email.com", + "password": "password123", + "verification_code": "123456", + }, }) if res.user_plex_account is not None: @@ -187,11 +189,11 @@ if res.user_plex_account is not None: ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `request` | [operations.PostUsersSignInDataRequestBody](../../models/operations/postuserssignindatarequestbody.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.PostUsersSignInDataRequest](../../models/operations/postuserssignindatarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | ### Response diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md index 06abe0f..4b67789 100644 --- a/docs/sdks/hubs/README.md +++ b/docs/sdks/hubs/README.md @@ -9,6 +9,7 @@ Hubs are a structured two-dimensional container for media, generally represented ### Available Operations * [get_global_hubs](#get_global_hubs) - Get Global Hubs +* [get_recently_added](#get_recently_added) - Get Recently Added * [get_library_hubs](#get_library_hubs) - Get library specific hubs ## get_global_hubs @@ -58,6 +59,59 @@ if res.object is not None: | errors.SDKError | 4xx-5xx | */* | +## get_recently_added + +This endpoint will return the recently added content. + + +### Example Usage + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import operations + +s = PlexAPI( + access_token="", + client_id="gcgzw5rz2xovp84b4vha3a40", + client_name="Plex Web", + client_version="4.133.0", + client_platform="Chrome", + device_name="Linux", +) + +res = s.hubs.get_recently_added(request={ + "content_directory_id": 470161, + "type": operations.Type.TV_SHOW, + "section_id": 2, + "include_meta": operations.IncludeMeta.ENABLE, + "x_plex_container_start": 0, + "x_plex_container_size": 50, +}) + +if res.object is not None: + # handle response + pass + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetRecentlyAddedRequest](../../models/operations/getrecentlyaddedrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetRecentlyAddedResponse](../../models/operations/getrecentlyaddedresponse.md)** + +### Errors + +| Error Object | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4xx-5xx | */* | + + ## get_library_hubs This endpoint will return a list of library specific hubs diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index a3b28e7..c8fc0ef 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -9,7 +9,7 @@ API Calls interacting with Plex Media Server Libraries ### Available Operations * [get_file_hash](#get_file_hash) - Get Hash Value -* [get_recently_added](#get_recently_added) - Get Recently Added +* [get_recently_added_library](#get_recently_added_library) - Get Recently Added * [get_all_libraries](#get_all_libraries) - Get All Libraries * [get_library_details](#get_library_details) - Get Library Details * [delete_library](#delete_library) - Delete Library Section @@ -68,7 +68,7 @@ if res is not None: | errors.SDKError | 4xx-5xx | */* | -## get_recently_added +## get_recently_added_library This endpoint will return the recently added content. @@ -77,6 +77,7 @@ This endpoint will return the recently added content. ```python from plex_api_client import PlexAPI +from plex_api_client.models import operations s = PlexAPI( access_token="", @@ -87,7 +88,28 @@ s = PlexAPI( device_name="Linux", ) -res = s.library.get_recently_added(x_plex_container_start=0, x_plex_container_size=50) +res = s.library.get_recently_added_library(request={ + "type": operations.QueryParamType.TV_SHOW, + "content_directory_id": 2, + "pinned_content_directory_id": [ + 3, + 5, + 7, + 13, + 12, + 1, + 6, + 14, + 2, + 10, + 16, + 17, + ], + "section_id": 2, + "include_meta": operations.QueryParamIncludeMeta.ENABLE, + "x_plex_container_start": 0, + "x_plex_container_size": 50, +}) if res.object is not None: # handle response @@ -97,23 +119,22 @@ if res.object is not None: ### Parameters -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetRecentlyAddedLibraryRequest](../../models/operations/getrecentlyaddedlibraryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetRecentlyAddedResponse](../../models/operations/getrecentlyaddedresponse.md)** +**[operations.GetRecentlyAddedLibraryResponse](../../models/operations/getrecentlyaddedlibraryresponse.md)** ### Errors -| Error Object | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetRecentlyAddedBadRequest | 400 | application/json | -| errors.GetRecentlyAddedUnauthorized | 401 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Object | Status Code | Content Type | +| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | +| errors.GetRecentlyAddedLibraryBadRequest | 400 | application/json | +| errors.GetRecentlyAddedLibraryUnauthorized | 401 | application/json | +| errors.SDKError | 4xx-5xx | */* | ## get_all_libraries @@ -342,8 +363,8 @@ res = s.library.get_library_items(request={ "section_key": 9518, "tag": operations.Tag.EDITION, "include_guids": operations.IncludeGuids.ENABLE, - "include_meta": operations.IncludeMeta.ENABLE, - "type": operations.Type.TV_SHOW, + "type": operations.GetLibraryItemsQueryParamType.TV_SHOW, + "include_meta": operations.GetLibraryItemsQueryParamIncludeMeta.ENABLE, "x_plex_container_start": 0, "x_plex_container_size": 50, }) @@ -460,7 +481,7 @@ s = PlexAPI( device_name="Linux", ) -res = s.library.get_search_library(section_key=9518, type_=operations.QueryParamType.TV_SHOW) +res = s.library.get_search_library(section_key=9518, type_=operations.GetSearchLibraryQueryParamType.TV_SHOW) if res.object is not None: # handle response @@ -473,7 +494,7 @@ if res.object is not None: | Parameter | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.QueryParamType](../../models/operations/queryparamtype.md) | :heavy_check_mark: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | +| `type` | [operations.GetSearchLibraryQueryParamType](../../models/operations/getsearchlibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/pyproject.toml b/pyproject.toml index 47992c8..4a5ad93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "plex-api-client" -version = "0.13.1" +version = "0.14.0" description = "Python Client SDK Generated by Speakeasy" authors = ["Speakeasy",] readme = "README-PYPI.md" diff --git a/src/plex_api_client/authentication.py b/src/plex_api_client/authentication.py index f325d58..3273850 100644 --- a/src/plex_api_client/authentication.py +++ b/src/plex_api_client/authentication.py @@ -592,12 +592,10 @@ class Authentication(BaseSDK): def post_users_sign_in_data( self, *, - request: Optional[ - Union[ - operations.PostUsersSignInDataRequestBody, - operations.PostUsersSignInDataRequestBodyTypedDict, - ] - ] = None, + request: Union[ + operations.PostUsersSignInDataRequest, + operations.PostUsersSignInDataRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -622,10 +620,8 @@ class Authentication(BaseSDK): base_url = operations.POST_USERS_SIGN_IN_DATA_SERVERS[0] if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.PostUsersSignInDataRequestBody] - ) - request = cast(Optional[operations.PostUsersSignInDataRequestBody], request) + request = utils.unmarshal(request, operations.PostUsersSignInDataRequest) + request = cast(operations.PostUsersSignInDataRequest, request) req = self.build_request( method="POST", @@ -635,11 +631,18 @@ class Authentication(BaseSDK): request=request, request_body_required=False, request_has_path_params=False, - request_has_query_params=False, + request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", + _globals=operations.PostUsersSignInDataGlobals( + client_id=self.sdk_configuration.globals.client_id, + client_name=self.sdk_configuration.globals.client_name, + device_name=self.sdk_configuration.globals.device_name, + client_version=self.sdk_configuration.globals.client_version, + client_platform=self.sdk_configuration.globals.client_platform, + ), get_serialized_body=lambda: utils.serialize_request_body( - request, + request.request_body, False, True, "form", @@ -706,12 +709,10 @@ class Authentication(BaseSDK): async def post_users_sign_in_data_async( self, *, - request: Optional[ - Union[ - operations.PostUsersSignInDataRequestBody, - operations.PostUsersSignInDataRequestBodyTypedDict, - ] - ] = None, + request: Union[ + operations.PostUsersSignInDataRequest, + operations.PostUsersSignInDataRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -736,10 +737,8 @@ class Authentication(BaseSDK): base_url = operations.POST_USERS_SIGN_IN_DATA_SERVERS[0] if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.PostUsersSignInDataRequestBody] - ) - request = cast(Optional[operations.PostUsersSignInDataRequestBody], request) + request = utils.unmarshal(request, operations.PostUsersSignInDataRequest) + request = cast(operations.PostUsersSignInDataRequest, request) req = self.build_request_async( method="POST", @@ -749,11 +748,18 @@ class Authentication(BaseSDK): request=request, request_body_required=False, request_has_path_params=False, - request_has_query_params=False, + request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", + _globals=operations.PostUsersSignInDataGlobals( + client_id=self.sdk_configuration.globals.client_id, + client_name=self.sdk_configuration.globals.client_name, + device_name=self.sdk_configuration.globals.device_name, + client_version=self.sdk_configuration.globals.client_version, + client_platform=self.sdk_configuration.globals.client_platform, + ), get_serialized_body=lambda: utils.serialize_request_body( - request, + request.request_body, False, True, "form", diff --git a/src/plex_api_client/hubs.py b/src/plex_api_client/hubs.py index 32b2384..7157431 100644 --- a/src/plex_api_client/hubs.py +++ b/src/plex_api_client/hubs.py @@ -4,8 +4,8 @@ from .basesdk import BaseSDK from plex_api_client import utils from plex_api_client._hooks import HookContext from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET -from typing import Any, Optional +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from typing import Any, Optional, Union, cast class Hubs(BaseSDK): @@ -213,6 +213,184 @@ class Hubs(BaseSDK): http_res, ) + def get_recently_added( + self, + *, + request: Union[ + operations.GetRecentlyAddedRequest, + operations.GetRecentlyAddedRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + ) -> operations.GetRecentlyAddedResponse: + r"""Get Recently Added + + This endpoint will return the recently added content. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRecentlyAddedRequest) + request = cast(operations.GetRecentlyAddedRequest, request) + + req = self.build_request( + method="GET", + path="/hubs/home/recentlyAdded", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + operation_id="get-recently-added", + oauth2_scopes=[], + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "401", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRecentlyAddedResponse( + object=utils.unmarshal_json( + http_res.text, Optional[operations.GetRecentlyAddedResponseBody] + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "401", "4XX", "5XX"], "*"): + raise errors.SDKError( + "API error occurred", http_res.status_code, http_res.text, http_res + ) + + content_type = http_res.headers.get("Content-Type") + raise errors.SDKError( + f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", + http_res.status_code, + http_res.text, + http_res, + ) + + async def get_recently_added_async( + self, + *, + request: Union[ + operations.GetRecentlyAddedRequest, + operations.GetRecentlyAddedRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + ) -> operations.GetRecentlyAddedResponse: + r"""Get Recently Added + + This endpoint will return the recently added content. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRecentlyAddedRequest) + request = cast(operations.GetRecentlyAddedRequest, request) + + req = self.build_request_async( + method="GET", + path="/hubs/home/recentlyAdded", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + operation_id="get-recently-added", + oauth2_scopes=[], + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "401", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRecentlyAddedResponse( + object=utils.unmarshal_json( + http_res.text, Optional[operations.GetRecentlyAddedResponseBody] + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "401", "4XX", "5XX"], "*"): + raise errors.SDKError( + "API error occurred", http_res.status_code, http_res.text, http_res + ) + + content_type = http_res.headers.get("Content-Type") + raise errors.SDKError( + f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", + http_res.status_code, + http_res.text, + http_res, + ) + def get_library_hubs( self, *, diff --git a/src/plex_api_client/library.py b/src/plex_api_client/library.py index 803e129..6825567 100644 --- a/src/plex_api_client/library.py +++ b/src/plex_api_client/library.py @@ -203,22 +203,23 @@ class Library(BaseSDK): http_res, ) - def get_recently_added( + def get_recently_added_library( self, *, - x_plex_container_start: Optional[int] = 0, - x_plex_container_size: Optional[int] = 50, + request: Union[ + operations.GetRecentlyAddedLibraryRequest, + operations.GetRecentlyAddedLibraryRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, - ) -> operations.GetRecentlyAddedResponse: + ) -> operations.GetRecentlyAddedLibraryResponse: r"""Get Recently Added This endpoint will return the recently added content. - :param x_plex_container_start: The index of the first item to return. If not specified, the first item will be returned. If the number of items exceeds the limit, the response will be paginated. By default this is 0 - :param x_plex_container_size: The number of items to return. If not specified, all items will be returned. If the number of items exceeds the limit, the response will be paginated. By default this is 50 + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -231,10 +232,11 @@ class Library(BaseSDK): if server_url is not None: base_url = server_url - request = operations.GetRecentlyAddedRequest( - x_plex_container_start=x_plex_container_start, - x_plex_container_size=x_plex_container_size, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetRecentlyAddedLibraryRequest + ) + request = cast(operations.GetRecentlyAddedLibraryRequest, request) req = self.build_request( method="GET", @@ -261,7 +263,7 @@ class Library(BaseSDK): http_res = self.do_request( hook_ctx=HookContext( - operation_id="getRecentlyAdded", + operation_id="get-recently-added-library", oauth2_scopes=[], security_source=self.sdk_configuration.security, ), @@ -272,9 +274,10 @@ class Library(BaseSDK): data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetRecentlyAddedResponse( + return operations.GetRecentlyAddedLibraryResponse( object=utils.unmarshal_json( - http_res.text, Optional[operations.GetRecentlyAddedResponseBody] + http_res.text, + Optional[operations.GetRecentlyAddedLibraryResponseBody], ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -282,16 +285,16 @@ class Library(BaseSDK): ) if utils.match_response(http_res, "400", "application/json"): data = utils.unmarshal_json( - http_res.text, errors.GetRecentlyAddedBadRequestData + http_res.text, errors.GetRecentlyAddedLibraryBadRequestData ) data.raw_response = http_res - raise errors.GetRecentlyAddedBadRequest(data=data) + raise errors.GetRecentlyAddedLibraryBadRequest(data=data) if utils.match_response(http_res, "401", "application/json"): data = utils.unmarshal_json( - http_res.text, errors.GetRecentlyAddedUnauthorizedData + http_res.text, errors.GetRecentlyAddedLibraryUnauthorizedData ) data.raw_response = http_res - raise errors.GetRecentlyAddedUnauthorized(data=data) + raise errors.GetRecentlyAddedLibraryUnauthorized(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): raise errors.SDKError( "API error occurred", http_res.status_code, http_res.text, http_res @@ -305,22 +308,23 @@ class Library(BaseSDK): http_res, ) - async def get_recently_added_async( + async def get_recently_added_library_async( self, *, - x_plex_container_start: Optional[int] = 0, - x_plex_container_size: Optional[int] = 50, + request: Union[ + operations.GetRecentlyAddedLibraryRequest, + operations.GetRecentlyAddedLibraryRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, - ) -> operations.GetRecentlyAddedResponse: + ) -> operations.GetRecentlyAddedLibraryResponse: r"""Get Recently Added This endpoint will return the recently added content. - :param x_plex_container_start: The index of the first item to return. If not specified, the first item will be returned. If the number of items exceeds the limit, the response will be paginated. By default this is 0 - :param x_plex_container_size: The number of items to return. If not specified, all items will be returned. If the number of items exceeds the limit, the response will be paginated. By default this is 50 + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -333,10 +337,11 @@ class Library(BaseSDK): if server_url is not None: base_url = server_url - request = operations.GetRecentlyAddedRequest( - x_plex_container_start=x_plex_container_start, - x_plex_container_size=x_plex_container_size, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetRecentlyAddedLibraryRequest + ) + request = cast(operations.GetRecentlyAddedLibraryRequest, request) req = self.build_request_async( method="GET", @@ -363,7 +368,7 @@ class Library(BaseSDK): http_res = await self.do_request_async( hook_ctx=HookContext( - operation_id="getRecentlyAdded", + operation_id="get-recently-added-library", oauth2_scopes=[], security_source=self.sdk_configuration.security, ), @@ -374,9 +379,10 @@ class Library(BaseSDK): data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetRecentlyAddedResponse( + return operations.GetRecentlyAddedLibraryResponse( object=utils.unmarshal_json( - http_res.text, Optional[operations.GetRecentlyAddedResponseBody] + http_res.text, + Optional[operations.GetRecentlyAddedLibraryResponseBody], ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -384,16 +390,16 @@ class Library(BaseSDK): ) if utils.match_response(http_res, "400", "application/json"): data = utils.unmarshal_json( - http_res.text, errors.GetRecentlyAddedBadRequestData + http_res.text, errors.GetRecentlyAddedLibraryBadRequestData ) data.raw_response = http_res - raise errors.GetRecentlyAddedBadRequest(data=data) + raise errors.GetRecentlyAddedLibraryBadRequest(data=data) if utils.match_response(http_res, "401", "application/json"): data = utils.unmarshal_json( - http_res.text, errors.GetRecentlyAddedUnauthorizedData + http_res.text, errors.GetRecentlyAddedLibraryUnauthorizedData ) data.raw_response = http_res - raise errors.GetRecentlyAddedUnauthorized(data=data) + raise errors.GetRecentlyAddedLibraryUnauthorized(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): raise errors.SDKError( "API error occurred", http_res.status_code, http_res.text, http_res @@ -1519,7 +1525,7 @@ class Library(BaseSDK): self, *, section_key: int, - type_: operations.QueryParamType, + type_: operations.GetSearchLibraryQueryParamType, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -1638,7 +1644,7 @@ class Library(BaseSDK): self, *, section_key: int, - type_: operations.QueryParamType, + type_: operations.GetSearchLibraryQueryParamType, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, diff --git a/src/plex_api_client/models/errors/__init__.py b/src/plex_api_client/models/errors/__init__.py index c68be0a..a5327d2 100644 --- a/src/plex_api_client/models/errors/__init__.py +++ b/src/plex_api_client/models/errors/__init__.py @@ -150,6 +150,16 @@ from .get_meta_data_by_rating_key import ( GetMetaDataByRatingKeyUnauthorized, GetMetaDataByRatingKeyUnauthorizedData, ) +from .get_recently_added_library import ( + GetRecentlyAddedLibraryBadRequest, + GetRecentlyAddedLibraryBadRequestData, + GetRecentlyAddedLibraryErrors, + GetRecentlyAddedLibraryErrorsTypedDict, + GetRecentlyAddedLibraryLibraryErrors, + GetRecentlyAddedLibraryLibraryErrorsTypedDict, + GetRecentlyAddedLibraryUnauthorized, + GetRecentlyAddedLibraryUnauthorizedData, +) from .get_refresh_library_metadata import ( GetRefreshLibraryMetadataBadRequest, GetRefreshLibraryMetadataBadRequestData, @@ -370,16 +380,6 @@ from .getplaylists import ( GetPlaylistsUnauthorized, GetPlaylistsUnauthorizedData, ) -from .getrecentlyadded import ( - GetRecentlyAddedBadRequest, - GetRecentlyAddedBadRequestData, - GetRecentlyAddedErrors, - GetRecentlyAddedErrorsTypedDict, - GetRecentlyAddedLibraryErrors, - GetRecentlyAddedLibraryErrorsTypedDict, - GetRecentlyAddedUnauthorized, - GetRecentlyAddedUnauthorizedData, -) from .getresizedphoto import ( GetResizedPhotoBadRequest, GetResizedPhotoBadRequestData, @@ -987,14 +987,14 @@ __all__ = [ "GetPlaylistsPlaylistsErrorsTypedDict", "GetPlaylistsUnauthorized", "GetPlaylistsUnauthorizedData", - "GetRecentlyAddedBadRequest", - "GetRecentlyAddedBadRequestData", - "GetRecentlyAddedErrors", - "GetRecentlyAddedErrorsTypedDict", + "GetRecentlyAddedLibraryBadRequest", + "GetRecentlyAddedLibraryBadRequestData", "GetRecentlyAddedLibraryErrors", "GetRecentlyAddedLibraryErrorsTypedDict", - "GetRecentlyAddedUnauthorized", - "GetRecentlyAddedUnauthorizedData", + "GetRecentlyAddedLibraryLibraryErrors", + "GetRecentlyAddedLibraryLibraryErrorsTypedDict", + "GetRecentlyAddedLibraryUnauthorized", + "GetRecentlyAddedLibraryUnauthorizedData", "GetRefreshLibraryMetadataBadRequest", "GetRefreshLibraryMetadataBadRequestData", "GetRefreshLibraryMetadataErrors", diff --git a/src/plex_api_client/models/errors/getrecentlyadded.py b/src/plex_api_client/models/errors/get_recently_added_library.py similarity index 64% rename from src/plex_api_client/models/errors/getrecentlyadded.py rename to src/plex_api_client/models/errors/get_recently_added_library.py index e80a52b..e43175c 100644 --- a/src/plex_api_client/models/errors/getrecentlyadded.py +++ b/src/plex_api_client/models/errors/get_recently_added_library.py @@ -9,6 +9,41 @@ from typing import List, Optional, TypedDict from typing_extensions import Annotated, NotRequired +class GetRecentlyAddedLibraryLibraryErrorsTypedDict(TypedDict): + code: NotRequired[int] + message: NotRequired[str] + status: NotRequired[int] + + +class GetRecentlyAddedLibraryLibraryErrors(BaseModel): + code: Optional[int] = None + + message: Optional[str] = None + + status: Optional[int] = None + + +class GetRecentlyAddedLibraryUnauthorizedData(BaseModel): + errors: Optional[List[GetRecentlyAddedLibraryLibraryErrors]] = None + + raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( + None + ) + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetRecentlyAddedLibraryUnauthorized(Exception): + r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" + + data: GetRecentlyAddedLibraryUnauthorizedData + + def __init__(self, data: GetRecentlyAddedLibraryUnauthorizedData): + self.data = data + + def __str__(self) -> str: + return utils.marshal_json(self.data, GetRecentlyAddedLibraryUnauthorizedData) + + class GetRecentlyAddedLibraryErrorsTypedDict(TypedDict): code: NotRequired[int] message: NotRequired[str] @@ -23,7 +58,7 @@ class GetRecentlyAddedLibraryErrors(BaseModel): status: Optional[int] = None -class GetRecentlyAddedUnauthorizedData(BaseModel): +class GetRecentlyAddedLibraryBadRequestData(BaseModel): errors: Optional[List[GetRecentlyAddedLibraryErrors]] = None raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( @@ -32,48 +67,13 @@ class GetRecentlyAddedUnauthorizedData(BaseModel): r"""Raw HTTP response; suitable for custom response parsing""" -class GetRecentlyAddedUnauthorized(Exception): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetRecentlyAddedUnauthorizedData - - def __init__(self, data: GetRecentlyAddedUnauthorizedData): - self.data = data - - def __str__(self) -> str: - return utils.marshal_json(self.data, GetRecentlyAddedUnauthorizedData) - - -class GetRecentlyAddedErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetRecentlyAddedErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetRecentlyAddedBadRequestData(BaseModel): - errors: Optional[List[GetRecentlyAddedErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetRecentlyAddedBadRequest(Exception): +class GetRecentlyAddedLibraryBadRequest(Exception): r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - data: GetRecentlyAddedBadRequestData + data: GetRecentlyAddedLibraryBadRequestData - def __init__(self, data: GetRecentlyAddedBadRequestData): + def __init__(self, data: GetRecentlyAddedLibraryBadRequestData): self.data = data def __str__(self) -> str: - return utils.marshal_json(self.data, GetRecentlyAddedBadRequestData) + return utils.marshal_json(self.data, GetRecentlyAddedLibraryBadRequestData) diff --git a/src/plex_api_client/models/operations/__init__.py b/src/plex_api_client/models/operations/__init__.py index 6b735ae..bc5f6fe 100644 --- a/src/plex_api_client/models/operations/__init__.py +++ b/src/plex_api_client/models/operations/__init__.py @@ -88,38 +88,37 @@ from .get_banner_image import ( GetBannerImageResponseTypedDict, ) from .get_library_details import ( - Field, - FieldType, - FieldTypeTypedDict, - FieldTypedDict, GetLibraryDetailsDirectory, GetLibraryDetailsDirectoryTypedDict, + GetLibraryDetailsField, + GetLibraryDetailsFieldType, + GetLibraryDetailsFieldTypeTypedDict, + GetLibraryDetailsFieldTypedDict, GetLibraryDetailsFilter, GetLibraryDetailsFilterTypedDict, GetLibraryDetailsMediaContainer, GetLibraryDetailsMediaContainerTypedDict, + GetLibraryDetailsOperator, + GetLibraryDetailsOperatorTypedDict, GetLibraryDetailsRequest, GetLibraryDetailsRequestTypedDict, GetLibraryDetailsResponse, GetLibraryDetailsResponseBody, GetLibraryDetailsResponseBodyTypedDict, GetLibraryDetailsResponseTypedDict, + GetLibraryDetailsSort, + GetLibraryDetailsSortTypedDict, GetLibraryDetailsType, GetLibraryDetailsTypeTypedDict, IncludeDetails, - Operator, - OperatorTypedDict, - Sort, - SortTypedDict, ) from .get_library_items import ( - ActiveDirection, - Collection, - CollectionTypedDict, - DefaultDirection, - FlattenSeasons, + GetLibraryItemsActiveDirection, + GetLibraryItemsCollection, + GetLibraryItemsCollectionTypedDict, GetLibraryItemsCountry, GetLibraryItemsCountryTypedDict, + GetLibraryItemsDefaultDirection, GetLibraryItemsDirector, GetLibraryItemsDirectorTypedDict, GetLibraryItemsField, @@ -128,23 +127,47 @@ from .get_library_items import ( GetLibraryItemsFieldTypedDict, GetLibraryItemsFilter, GetLibraryItemsFilterTypedDict, + GetLibraryItemsFlattenSeasons, GetLibraryItemsGenre, GetLibraryItemsGenreTypedDict, + GetLibraryItemsHasThumbnail, GetLibraryItemsImage, GetLibraryItemsImageTypedDict, + GetLibraryItemsLibraryActiveDirection, + GetLibraryItemsLibraryDefaultDirection, + GetLibraryItemsLibraryField, + GetLibraryItemsLibraryFieldType, + GetLibraryItemsLibraryFieldTypeTypedDict, + GetLibraryItemsLibraryFieldTypedDict, + GetLibraryItemsLibraryFilter, + GetLibraryItemsLibraryFilterTypedDict, + GetLibraryItemsLibraryOperator, + GetLibraryItemsLibraryOperatorTypedDict, + GetLibraryItemsLibraryResponse200Type, GetLibraryItemsLibraryResponseType, + GetLibraryItemsLibraryResponseTypeTypedDict, + GetLibraryItemsLibrarySort, + GetLibraryItemsLibrarySortTypedDict, GetLibraryItemsLibraryType, - GetLibraryItemsLibraryTypeTypedDict, GetLibraryItemsMedia, GetLibraryItemsMediaContainer, GetLibraryItemsMediaContainerTypedDict, + GetLibraryItemsMediaGUID, + GetLibraryItemsMediaGUIDTypedDict, GetLibraryItemsMediaTypedDict, + GetLibraryItemsMeta, + GetLibraryItemsMetaDataRating, + GetLibraryItemsMetaDataRatingTypedDict, + GetLibraryItemsMetaTypedDict, GetLibraryItemsMetadata, GetLibraryItemsMetadataTypedDict, GetLibraryItemsOperator, GetLibraryItemsOperatorTypedDict, + GetLibraryItemsOptimizedForStreaming, GetLibraryItemsPart, GetLibraryItemsPartTypedDict, + GetLibraryItemsQueryParamIncludeMeta, + GetLibraryItemsQueryParamType, GetLibraryItemsRequest, GetLibraryItemsRequestTypedDict, GetLibraryItemsResponse, @@ -153,25 +176,19 @@ from .get_library_items import ( GetLibraryItemsResponseTypedDict, GetLibraryItemsRole, GetLibraryItemsRoleTypedDict, + GetLibraryItemsShowOrdering, GetLibraryItemsSort, GetLibraryItemsSortTypedDict, + GetLibraryItemsStream, + GetLibraryItemsStreamTypedDict, GetLibraryItemsType, + GetLibraryItemsTypeTypedDict, + GetLibraryItemsUltraBlurColors, + GetLibraryItemsUltraBlurColorsTypedDict, GetLibraryItemsWriter, GetLibraryItemsWriterTypedDict, - HasThumbnail, IncludeGuids, - IncludeMeta, - LibrarySectionID, - LibrarySectionIDTypedDict, - MediaGUID, - MediaGUIDTypedDict, - Meta, - MetaTypedDict, - ShowOrdering, Tag, - Type, - UltraBlurColors, - UltraBlurColorsTypedDict, ) from .get_media_providers import ( Action, @@ -216,6 +233,8 @@ from .get_meta_data_by_rating_key import ( GetMetaDataByRatingKeyResponseTypedDict, GetMetaDataByRatingKeyRole, GetMetaDataByRatingKeyRoleTypedDict, + GetMetaDataByRatingKeyStream, + GetMetaDataByRatingKeyStreamTypedDict, GetMetaDataByRatingKeyWriter, GetMetaDataByRatingKeyWriterTypedDict, Guids, @@ -224,8 +243,110 @@ from .get_meta_data_by_rating_key import ( ProducerTypedDict, Ratings, RatingsTypedDict, +) +from .get_recently_added import ( + Collection, + CollectionTypedDict, + Country, + CountryTypedDict, + Director, + DirectorTypedDict, + FlattenSeasons, + Genre, + GenreTypedDict, + GetRecentlyAddedActiveDirection, + GetRecentlyAddedDefaultDirection, + GetRecentlyAddedField, + GetRecentlyAddedFieldType, + GetRecentlyAddedFieldTypeTypedDict, + GetRecentlyAddedFieldTypedDict, + GetRecentlyAddedFilter, + GetRecentlyAddedFilterTypedDict, + GetRecentlyAddedHubsResponseType, + GetRecentlyAddedHubsType, + GetRecentlyAddedImage, + GetRecentlyAddedImageTypedDict, + GetRecentlyAddedMediaContainer, + GetRecentlyAddedMediaContainerTypedDict, + GetRecentlyAddedMetadata, + GetRecentlyAddedMetadataTypedDict, + GetRecentlyAddedOperator, + GetRecentlyAddedOperatorTypedDict, + GetRecentlyAddedRequest, + GetRecentlyAddedRequestTypedDict, + GetRecentlyAddedResponse, + GetRecentlyAddedResponseBody, + GetRecentlyAddedResponseBodyTypedDict, + GetRecentlyAddedResponseTypedDict, + GetRecentlyAddedSort, + GetRecentlyAddedSortTypedDict, + GetRecentlyAddedType, + GetRecentlyAddedTypeTypedDict, + HasThumbnail, + IncludeMeta, + Media, + MediaGUID, + MediaGUIDTypedDict, + MediaTypedDict, + Meta, + MetaDataRating, + MetaDataRatingTypedDict, + MetaTypedDict, + OptimizedForStreaming, + Part, + PartTypedDict, + Role, + RoleTypedDict, + ShowOrdering, Stream, StreamTypedDict, + Type, + UltraBlurColors, + UltraBlurColorsTypedDict, + Writer, + WriterTypedDict, +) +from .get_recently_added_library import ( + ActiveDirection, + DefaultDirection, + Field, + FieldType, + FieldTypeTypedDict, + FieldTypedDict, + GetRecentlyAddedLibraryCountry, + GetRecentlyAddedLibraryCountryTypedDict, + GetRecentlyAddedLibraryDirector, + GetRecentlyAddedLibraryDirectorTypedDict, + GetRecentlyAddedLibraryFilter, + GetRecentlyAddedLibraryFilterTypedDict, + GetRecentlyAddedLibraryGenre, + GetRecentlyAddedLibraryGenreTypedDict, + GetRecentlyAddedLibraryMedia, + GetRecentlyAddedLibraryMediaContainer, + GetRecentlyAddedLibraryMediaContainerTypedDict, + GetRecentlyAddedLibraryMediaTypedDict, + GetRecentlyAddedLibraryMetadata, + GetRecentlyAddedLibraryMetadataTypedDict, + GetRecentlyAddedLibraryPart, + GetRecentlyAddedLibraryPartTypedDict, + GetRecentlyAddedLibraryRequest, + GetRecentlyAddedLibraryRequestTypedDict, + GetRecentlyAddedLibraryResponse, + GetRecentlyAddedLibraryResponseBody, + GetRecentlyAddedLibraryResponseBodyTypedDict, + GetRecentlyAddedLibraryResponseTypedDict, + GetRecentlyAddedLibraryRole, + GetRecentlyAddedLibraryRoleTypedDict, + GetRecentlyAddedLibraryType, + GetRecentlyAddedLibraryTypeTypedDict, + GetRecentlyAddedLibraryWriter, + GetRecentlyAddedLibraryWriterTypedDict, + Operator, + OperatorTypedDict, + QueryParamIncludeMeta, + QueryParamType, + Sort, + SortTypedDict, ) from .get_refresh_library_metadata import ( Force, @@ -239,13 +360,13 @@ from .get_search_library import ( GetSearchLibraryMediaContainerTypedDict, GetSearchLibraryMetadata, GetSearchLibraryMetadataTypedDict, + GetSearchLibraryQueryParamType, GetSearchLibraryRequest, GetSearchLibraryRequestTypedDict, GetSearchLibraryResponse, GetSearchLibraryResponseBody, GetSearchLibraryResponseBodyTypedDict, GetSearchLibraryResponseTypedDict, - QueryParamType, ) from .get_server_identity import ( GetServerIdentityMediaContainer, @@ -515,32 +636,6 @@ from .getplaylists import ( PlaylistType, QueryParamSmart, ) -from .getrecentlyadded import ( - Country, - CountryTypedDict, - Director, - DirectorTypedDict, - Genre, - GenreTypedDict, - GetRecentlyAddedMediaContainer, - GetRecentlyAddedMediaContainerTypedDict, - GetRecentlyAddedMetadata, - GetRecentlyAddedMetadataTypedDict, - GetRecentlyAddedRequest, - GetRecentlyAddedRequestTypedDict, - GetRecentlyAddedResponse, - GetRecentlyAddedResponseBody, - GetRecentlyAddedResponseBodyTypedDict, - GetRecentlyAddedResponseTypedDict, - Media, - MediaTypedDict, - Part, - PartTypedDict, - Role, - RoleTypedDict, - Writer, - WriterTypedDict, -) from .getresizedphoto import ( GetResizedPhotoRequest, GetResizedPhotoRequestTypedDict, @@ -845,10 +940,14 @@ from .post_users_sign_in_data import ( PostUsersSignInDataDefaultSubtitleAccessibility, PostUsersSignInDataDefaultSubtitleForced, PostUsersSignInDataFeatures, + PostUsersSignInDataGlobals, + PostUsersSignInDataGlobalsTypedDict, PostUsersSignInDataMailingListStatus, PostUsersSignInDataMediaReviewsVisibility, + PostUsersSignInDataRequest, PostUsersSignInDataRequestBody, PostUsersSignInDataRequestBodyTypedDict, + PostUsersSignInDataRequestTypedDict, PostUsersSignInDataResponse, PostUsersSignInDataResponseTypedDict, PostUsersSignInDataServices, @@ -1083,16 +1182,24 @@ __all__ = [ "GetHomeDataResponseTypedDict", "GetLibraryDetailsDirectory", "GetLibraryDetailsDirectoryTypedDict", + "GetLibraryDetailsField", + "GetLibraryDetailsFieldType", + "GetLibraryDetailsFieldTypeTypedDict", + "GetLibraryDetailsFieldTypedDict", "GetLibraryDetailsFilter", "GetLibraryDetailsFilterTypedDict", "GetLibraryDetailsMediaContainer", "GetLibraryDetailsMediaContainerTypedDict", + "GetLibraryDetailsOperator", + "GetLibraryDetailsOperatorTypedDict", "GetLibraryDetailsRequest", "GetLibraryDetailsRequestTypedDict", "GetLibraryDetailsResponse", "GetLibraryDetailsResponseBody", "GetLibraryDetailsResponseBodyTypedDict", "GetLibraryDetailsResponseTypedDict", + "GetLibraryDetailsSort", + "GetLibraryDetailsSortTypedDict", "GetLibraryDetailsType", "GetLibraryDetailsTypeTypedDict", "GetLibraryHubsCountry", @@ -1121,8 +1228,12 @@ __all__ = [ "GetLibraryHubsRoleTypedDict", "GetLibraryHubsWriter", "GetLibraryHubsWriterTypedDict", + "GetLibraryItemsActiveDirection", + "GetLibraryItemsCollection", + "GetLibraryItemsCollectionTypedDict", "GetLibraryItemsCountry", "GetLibraryItemsCountryTypedDict", + "GetLibraryItemsDefaultDirection", "GetLibraryItemsDirector", "GetLibraryItemsDirectorTypedDict", "GetLibraryItemsField", @@ -1131,23 +1242,47 @@ __all__ = [ "GetLibraryItemsFieldTypedDict", "GetLibraryItemsFilter", "GetLibraryItemsFilterTypedDict", + "GetLibraryItemsFlattenSeasons", "GetLibraryItemsGenre", "GetLibraryItemsGenreTypedDict", + "GetLibraryItemsHasThumbnail", "GetLibraryItemsImage", "GetLibraryItemsImageTypedDict", + "GetLibraryItemsLibraryActiveDirection", + "GetLibraryItemsLibraryDefaultDirection", + "GetLibraryItemsLibraryField", + "GetLibraryItemsLibraryFieldType", + "GetLibraryItemsLibraryFieldTypeTypedDict", + "GetLibraryItemsLibraryFieldTypedDict", + "GetLibraryItemsLibraryFilter", + "GetLibraryItemsLibraryFilterTypedDict", + "GetLibraryItemsLibraryOperator", + "GetLibraryItemsLibraryOperatorTypedDict", + "GetLibraryItemsLibraryResponse200Type", "GetLibraryItemsLibraryResponseType", + "GetLibraryItemsLibraryResponseTypeTypedDict", + "GetLibraryItemsLibrarySort", + "GetLibraryItemsLibrarySortTypedDict", "GetLibraryItemsLibraryType", - "GetLibraryItemsLibraryTypeTypedDict", "GetLibraryItemsMedia", "GetLibraryItemsMediaContainer", "GetLibraryItemsMediaContainerTypedDict", + "GetLibraryItemsMediaGUID", + "GetLibraryItemsMediaGUIDTypedDict", "GetLibraryItemsMediaTypedDict", + "GetLibraryItemsMeta", + "GetLibraryItemsMetaDataRating", + "GetLibraryItemsMetaDataRatingTypedDict", + "GetLibraryItemsMetaTypedDict", "GetLibraryItemsMetadata", "GetLibraryItemsMetadataTypedDict", "GetLibraryItemsOperator", "GetLibraryItemsOperatorTypedDict", + "GetLibraryItemsOptimizedForStreaming", "GetLibraryItemsPart", "GetLibraryItemsPartTypedDict", + "GetLibraryItemsQueryParamIncludeMeta", + "GetLibraryItemsQueryParamType", "GetLibraryItemsRequest", "GetLibraryItemsRequestTypedDict", "GetLibraryItemsResponse", @@ -1156,9 +1291,15 @@ __all__ = [ "GetLibraryItemsResponseTypedDict", "GetLibraryItemsRole", "GetLibraryItemsRoleTypedDict", + "GetLibraryItemsShowOrdering", "GetLibraryItemsSort", "GetLibraryItemsSortTypedDict", + "GetLibraryItemsStream", + "GetLibraryItemsStreamTypedDict", "GetLibraryItemsType", + "GetLibraryItemsTypeTypedDict", + "GetLibraryItemsUltraBlurColors", + "GetLibraryItemsUltraBlurColorsTypedDict", "GetLibraryItemsWriter", "GetLibraryItemsWriterTypedDict", "GetMediaProvidersDirectory", @@ -1193,6 +1334,8 @@ __all__ = [ "GetMetaDataByRatingKeyResponseTypedDict", "GetMetaDataByRatingKeyRole", "GetMetaDataByRatingKeyRoleTypedDict", + "GetMetaDataByRatingKeyStream", + "GetMetaDataByRatingKeyStreamTypedDict", "GetMetaDataByRatingKeyWriter", "GetMetaDataByRatingKeyWriterTypedDict", "GetMetadataChildrenDirectory", @@ -1280,16 +1423,62 @@ __all__ = [ "GetPlaylistsResponseBody", "GetPlaylistsResponseBodyTypedDict", "GetPlaylistsResponseTypedDict", + "GetRecentlyAddedActiveDirection", + "GetRecentlyAddedDefaultDirection", + "GetRecentlyAddedField", + "GetRecentlyAddedFieldType", + "GetRecentlyAddedFieldTypeTypedDict", + "GetRecentlyAddedFieldTypedDict", + "GetRecentlyAddedFilter", + "GetRecentlyAddedFilterTypedDict", + "GetRecentlyAddedHubsResponseType", + "GetRecentlyAddedHubsType", + "GetRecentlyAddedImage", + "GetRecentlyAddedImageTypedDict", + "GetRecentlyAddedLibraryCountry", + "GetRecentlyAddedLibraryCountryTypedDict", + "GetRecentlyAddedLibraryDirector", + "GetRecentlyAddedLibraryDirectorTypedDict", + "GetRecentlyAddedLibraryFilter", + "GetRecentlyAddedLibraryFilterTypedDict", + "GetRecentlyAddedLibraryGenre", + "GetRecentlyAddedLibraryGenreTypedDict", + "GetRecentlyAddedLibraryMedia", + "GetRecentlyAddedLibraryMediaContainer", + "GetRecentlyAddedLibraryMediaContainerTypedDict", + "GetRecentlyAddedLibraryMediaTypedDict", + "GetRecentlyAddedLibraryMetadata", + "GetRecentlyAddedLibraryMetadataTypedDict", + "GetRecentlyAddedLibraryPart", + "GetRecentlyAddedLibraryPartTypedDict", + "GetRecentlyAddedLibraryRequest", + "GetRecentlyAddedLibraryRequestTypedDict", + "GetRecentlyAddedLibraryResponse", + "GetRecentlyAddedLibraryResponseBody", + "GetRecentlyAddedLibraryResponseBodyTypedDict", + "GetRecentlyAddedLibraryResponseTypedDict", + "GetRecentlyAddedLibraryRole", + "GetRecentlyAddedLibraryRoleTypedDict", + "GetRecentlyAddedLibraryType", + "GetRecentlyAddedLibraryTypeTypedDict", + "GetRecentlyAddedLibraryWriter", + "GetRecentlyAddedLibraryWriterTypedDict", "GetRecentlyAddedMediaContainer", "GetRecentlyAddedMediaContainerTypedDict", "GetRecentlyAddedMetadata", "GetRecentlyAddedMetadataTypedDict", + "GetRecentlyAddedOperator", + "GetRecentlyAddedOperatorTypedDict", "GetRecentlyAddedRequest", "GetRecentlyAddedRequestTypedDict", "GetRecentlyAddedResponse", "GetRecentlyAddedResponseBody", "GetRecentlyAddedResponseBodyTypedDict", "GetRecentlyAddedResponseTypedDict", + "GetRecentlyAddedSort", + "GetRecentlyAddedSortTypedDict", + "GetRecentlyAddedType", + "GetRecentlyAddedTypeTypedDict", "GetRefreshLibraryMetadataRequest", "GetRefreshLibraryMetadataRequestTypedDict", "GetRefreshLibraryMetadataResponse", @@ -1310,6 +1499,7 @@ __all__ = [ "GetSearchLibraryMediaContainerTypedDict", "GetSearchLibraryMetadata", "GetSearchLibraryMetadataTypedDict", + "GetSearchLibraryQueryParamType", "GetSearchLibraryRequest", "GetSearchLibraryRequestTypedDict", "GetSearchLibraryResponse", @@ -1502,8 +1692,6 @@ __all__ = [ "InternalPaymentMethod", "InternalPaymentMethodTypedDict", "Level", - "LibrarySectionID", - "LibrarySectionIDTypedDict", "Libtype", "Location", "LocationTypedDict", @@ -1532,6 +1720,8 @@ __all__ = [ "MediaReviewsVisibility", "MediaTypedDict", "Meta", + "MetaDataRating", + "MetaDataRatingTypedDict", "MetaTypedDict", "Metadata", "MetadataTypedDict", @@ -1541,6 +1731,7 @@ __all__ = [ "OnlyTransient", "Operator", "OperatorTypedDict", + "OptimizedForStreaming", "POST_USERS_SIGN_IN_DATA_SERVERS", "Part", "PartTypedDict", @@ -1571,10 +1762,14 @@ __all__ = [ "PostUsersSignInDataDefaultSubtitleAccessibility", "PostUsersSignInDataDefaultSubtitleForced", "PostUsersSignInDataFeatures", + "PostUsersSignInDataGlobals", + "PostUsersSignInDataGlobalsTypedDict", "PostUsersSignInDataMailingListStatus", "PostUsersSignInDataMediaReviewsVisibility", + "PostUsersSignInDataRequest", "PostUsersSignInDataRequestBody", "PostUsersSignInDataRequestBodyTypedDict", + "PostUsersSignInDataRequestTypedDict", "PostUsersSignInDataResponse", "PostUsersSignInDataResponseTypedDict", "PostUsersSignInDataServices", @@ -1596,6 +1791,7 @@ __all__ = [ "QueryParamFilter", "QueryParamFilterTypedDict", "QueryParamForce", + "QueryParamIncludeMeta", "QueryParamOnlyTransient", "QueryParamSmart", "QueryParamType", diff --git a/src/plex_api_client/models/operations/get_all_libraries.py b/src/plex_api_client/models/operations/get_all_libraries.py index 04e0da8..1ac39a3 100644 --- a/src/plex_api_client/models/operations/get_all_libraries.py +++ b/src/plex_api_client/models/operations/get_all_libraries.py @@ -42,6 +42,7 @@ class GetAllLibrariesDirectoryTypedDict(TypedDict): content: bool directory: bool content_changed_at: int + r"""Unix epoch datetime in seconds""" hidden: int location: List[LocationTypedDict] @@ -87,6 +88,7 @@ class GetAllLibrariesDirectory(BaseModel): directory: bool content_changed_at: Annotated[int, pydantic.Field(alias="contentChangedAt")] + r"""Unix epoch datetime in seconds""" hidden: int diff --git a/src/plex_api_client/models/operations/get_library_details.py b/src/plex_api_client/models/operations/get_library_details.py index 5822eba..2b24d88 100644 --- a/src/plex_api_client/models/operations/get_library_details.py +++ b/src/plex_api_client/models/operations/get_library_details.py @@ -95,7 +95,7 @@ class GetLibraryDetailsFilter(BaseModel): type: Optional[str] = None -class SortTypedDict(TypedDict): +class GetLibraryDetailsSortTypedDict(TypedDict): default: NotRequired[str] default_direction: NotRequired[str] desc_key: NotRequired[str] @@ -104,7 +104,7 @@ class SortTypedDict(TypedDict): title: NotRequired[str] -class Sort(BaseModel): +class GetLibraryDetailsSort(BaseModel): default: Optional[str] = None default_direction: Annotated[ @@ -122,14 +122,14 @@ class Sort(BaseModel): title: Optional[str] = None -class FieldTypedDict(TypedDict): +class GetLibraryDetailsFieldTypedDict(TypedDict): key: NotRequired[str] title: NotRequired[str] type: NotRequired[str] sub_type: NotRequired[str] -class Field(BaseModel): +class GetLibraryDetailsField(BaseModel): key: Optional[str] = None title: Optional[str] = None @@ -145,8 +145,8 @@ class GetLibraryDetailsTypeTypedDict(TypedDict): title: NotRequired[str] active: NotRequired[bool] filter_: NotRequired[List[GetLibraryDetailsFilterTypedDict]] - sort: NotRequired[List[SortTypedDict]] - field: NotRequired[List[FieldTypedDict]] + sort: NotRequired[List[GetLibraryDetailsSortTypedDict]] + field: NotRequired[List[GetLibraryDetailsFieldTypedDict]] class GetLibraryDetailsType(BaseModel): @@ -162,33 +162,37 @@ class GetLibraryDetailsType(BaseModel): Optional[List[GetLibraryDetailsFilter]], pydantic.Field(alias="Filter") ] = None - sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + sort: Annotated[ + Optional[List[GetLibraryDetailsSort]], pydantic.Field(alias="Sort") + ] = None - field: Annotated[Optional[List[Field]], pydantic.Field(alias="Field")] = None + field: Annotated[ + Optional[List[GetLibraryDetailsField]], pydantic.Field(alias="Field") + ] = None -class OperatorTypedDict(TypedDict): +class GetLibraryDetailsOperatorTypedDict(TypedDict): key: NotRequired[str] title: NotRequired[str] -class Operator(BaseModel): +class GetLibraryDetailsOperator(BaseModel): key: Optional[str] = None title: Optional[str] = None -class FieldTypeTypedDict(TypedDict): +class GetLibraryDetailsFieldTypeTypedDict(TypedDict): type: NotRequired[str] - operator: NotRequired[List[OperatorTypedDict]] + operator: NotRequired[List[GetLibraryDetailsOperatorTypedDict]] -class FieldType(BaseModel): +class GetLibraryDetailsFieldType(BaseModel): type: Optional[str] = None - operator: Annotated[Optional[List[Operator]], pydantic.Field(alias="Operator")] = ( - None - ) + operator: Annotated[ + Optional[List[GetLibraryDetailsOperator]], pydantic.Field(alias="Operator") + ] = None class GetLibraryDetailsMediaContainerTypedDict(TypedDict): @@ -206,7 +210,7 @@ class GetLibraryDetailsMediaContainerTypedDict(TypedDict): view_mode: NotRequired[int] directory: NotRequired[List[GetLibraryDetailsDirectoryTypedDict]] type: NotRequired[List[GetLibraryDetailsTypeTypedDict]] - field_type: NotRequired[List[FieldTypeTypedDict]] + field_type: NotRequired[List[GetLibraryDetailsFieldTypeTypedDict]] class GetLibraryDetailsMediaContainer(BaseModel): @@ -249,7 +253,7 @@ class GetLibraryDetailsMediaContainer(BaseModel): ] = None field_type: Annotated[ - Optional[List[FieldType]], pydantic.Field(alias="FieldType") + Optional[List[GetLibraryDetailsFieldType]], pydantic.Field(alias="FieldType") ] = None diff --git a/src/plex_api_client/models/operations/get_library_items.py b/src/plex_api_client/models/operations/get_library_items.py index df06afb..645ffda 100644 --- a/src/plex_api_client/models/operations/get_library_items.py +++ b/src/plex_api_client/models/operations/get_library_items.py @@ -7,7 +7,7 @@ import httpx from plex_api_client.types import BaseModel from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic -from typing import List, Optional, TypedDict, Union +from typing import List, Optional, TypedDict from typing_extensions import Annotated, NotRequired @@ -42,14 +42,7 @@ class IncludeGuids(int, Enum): ENABLE = 1 -class IncludeMeta(int, Enum): - r"""Adds the Meta object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class Type(int, Enum): +class GetLibraryItemsQueryParamType(int, Enum): r"""The type of media to retrieve. 1 = movie 2 = show @@ -65,6 +58,13 @@ class Type(int, Enum): EPISODE = 4 +class GetLibraryItemsQueryParamIncludeMeta(int, Enum): + r"""Adds the Meta object to the response""" + + DISABLE = 0 + ENABLE = 1 + + class GetLibraryItemsRequestTypedDict(TypedDict): section_key: int r"""The unique key of the Plex library. @@ -77,11 +77,7 @@ class GetLibraryItemsRequestTypedDict(TypedDict): r"""Adds the Guids object to the response """ - include_meta: NotRequired[IncludeMeta] - r"""Adds the Meta object to the response - - """ - type: NotRequired[Type] + type: NotRequired[GetLibraryItemsQueryParamType] r"""The type of media to retrieve. 1 = movie 2 = show @@ -89,6 +85,10 @@ class GetLibraryItemsRequestTypedDict(TypedDict): 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + """ + include_meta: NotRequired[GetLibraryItemsQueryParamIncludeMeta] + r"""Adds the Meta object to the response + """ x_plex_container_start: NotRequired[int] r"""The index of the first item to return. If not specified, the first item will be returned. @@ -129,17 +129,8 @@ class GetLibraryItemsRequest(BaseModel): """ - include_meta: Annotated[ - Optional[IncludeMeta], - pydantic.Field(alias="includeMeta"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeMeta.DISABLE - r"""Adds the Meta object to the response - - """ - type: Annotated[ - Optional[Type], + Optional[GetLibraryItemsQueryParamType], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The type of media to retrieve. @@ -151,6 +142,15 @@ class GetLibraryItemsRequest(BaseModel): """ + include_meta: Annotated[ + Optional[GetLibraryItemsQueryParamIncludeMeta], + pydantic.Field(alias="includeMeta"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = GetLibraryItemsQueryParamIncludeMeta.DISABLE + r"""Adds the Meta object to the response + + """ + x_plex_container_start: Annotated[ Optional[int], pydantic.Field(alias="X-Plex-Container-Start"), @@ -174,13 +174,161 @@ class GetLibraryItemsRequest(BaseModel): """ -LibrarySectionIDTypedDict = Union[int, str] +class GetLibraryItemsFilterTypedDict(TypedDict): + filter_: str + filter_type: str + key: str + title: str + type: str -LibrarySectionID = Union[int, str] +class GetLibraryItemsFilter(BaseModel): + filter_: Annotated[str, pydantic.Field(alias="filter")] + + filter_type: Annotated[str, pydantic.Field(alias="filterType")] + + key: str + + title: str + + type: str -class GetLibraryItemsType(str, Enum): +class GetLibraryItemsActiveDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class GetLibraryItemsDefaultDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class GetLibraryItemsSortTypedDict(TypedDict): + key: str + title: str + default: NotRequired[str] + active: NotRequired[bool] + active_direction: NotRequired[GetLibraryItemsActiveDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + default_direction: NotRequired[GetLibraryItemsDefaultDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + desc_key: NotRequired[str] + first_character_key: NotRequired[str] + + +class GetLibraryItemsSort(BaseModel): + key: str + + title: str + + default: Optional[str] = None + + active: Optional[bool] = None + + active_direction: Annotated[ + Optional[GetLibraryItemsActiveDirection], + pydantic.Field(alias="activeDirection"), + ] = GetLibraryItemsActiveDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + default_direction: Annotated[ + Optional[GetLibraryItemsDefaultDirection], + pydantic.Field(alias="defaultDirection"), + ] = GetLibraryItemsDefaultDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None + + first_character_key: Annotated[ + Optional[str], pydantic.Field(alias="firstCharacterKey") + ] = None + + +class GetLibraryItemsFieldTypedDict(TypedDict): + key: str + title: str + type: str + sub_type: NotRequired[str] + + +class GetLibraryItemsField(BaseModel): + key: str + + title: str + + type: str + + sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None + + +class GetLibraryItemsTypeTypedDict(TypedDict): + key: str + type: str + title: str + active: bool + filter_: NotRequired[List[GetLibraryItemsFilterTypedDict]] + sort: NotRequired[List[GetLibraryItemsSortTypedDict]] + field: NotRequired[List[GetLibraryItemsFieldTypedDict]] + + +class GetLibraryItemsType(BaseModel): + key: str + + type: str + + title: str + + active: bool + + filter_: Annotated[ + Optional[List[GetLibraryItemsFilter]], pydantic.Field(alias="Filter") + ] = None + + sort: Annotated[ + Optional[List[GetLibraryItemsSort]], pydantic.Field(alias="Sort") + ] = None + + field: Annotated[ + Optional[List[GetLibraryItemsField]], pydantic.Field(alias="Field") + ] = None + + +class GetLibraryItemsOperatorTypedDict(TypedDict): + key: str + title: str + + +class GetLibraryItemsOperator(BaseModel): + key: str + + title: str + + +class GetLibraryItemsFieldTypeTypedDict(TypedDict): + type: str + operator: List[GetLibraryItemsOperatorTypedDict] + + +class GetLibraryItemsFieldType(BaseModel): + type: str + + operator: Annotated[List[GetLibraryItemsOperator], pydantic.Field(alias="Operator")] + + +class GetLibraryItemsLibraryType(str, Enum): r"""The type of media content""" MOVIE = "movie" @@ -189,12 +337,12 @@ class GetLibraryItemsType(str, Enum): EPISODE = "episode" -class FlattenSeasons(str, Enum): +class GetLibraryItemsFlattenSeasons(str, Enum): FALSE = "0" TRUE = "1" -class ShowOrdering(str, Enum): +class GetLibraryItemsShowOrdering(str, Enum): r"""Setting that indicates the episode ordering for the show None = Library default, tmdbAiring = The Movie Database (Aired), @@ -211,11 +359,223 @@ class ShowOrdering(str, Enum): ABSOLUTE = "absolute" -class HasThumbnail(str, Enum): +class GetLibraryItemsOptimizedForStreaming(int, Enum): + DISABLE = 0 + ENABLE = 1 + + +class GetLibraryItemsHasThumbnail(str, Enum): FALSE = "0" TRUE = "1" +class GetLibraryItemsStreamTypedDict(TypedDict): + id: int + stream_type: int + r"""Type of stream (1 = video, 2 = audio, 3 = subtitle)""" + codec: str + r"""Codec used by the stream""" + index: int + r"""The index of the stream""" + default: NotRequired[bool] + r"""Indicates if this is the default stream""" + selected: NotRequired[bool] + r"""Indicates if the stream is selected""" + bitrate: NotRequired[int] + r"""The bitrate of the stream in kbps""" + color_primaries: NotRequired[str] + r"""The color primaries of the video stream""" + color_range: NotRequired[str] + r"""The color range of the video stream""" + color_space: NotRequired[str] + r"""The color space of the video stream""" + color_trc: NotRequired[str] + r"""The transfer characteristics (TRC) of the video stream""" + bit_depth: NotRequired[int] + r"""The bit depth of the video stream""" + chroma_location: NotRequired[str] + r"""The chroma location of the video stream""" + stream_identifier: NotRequired[str] + r"""The identifier of the video stream""" + chroma_subsampling: NotRequired[str] + r"""The chroma subsampling format""" + coded_height: NotRequired[int] + r"""The coded height of the video stream""" + coded_width: NotRequired[int] + r"""The coded width of the video stream""" + frame_rate: NotRequired[float] + r"""The frame rate of the video stream""" + has_scaling_matrix: NotRequired[bool] + r"""Indicates if the stream has a scaling matrix""" + hearing_impaired: NotRequired[bool] + closed_captions: NotRequired[bool] + embedded_in_video: NotRequired[str] + height: NotRequired[int] + r"""The height of the video stream""" + level: NotRequired[int] + r"""The level of the video codec""" + profile: NotRequired[str] + r"""The profile of the video codec""" + ref_frames: NotRequired[int] + r"""Number of reference frames""" + scan_type: NotRequired[str] + r"""The scan type (progressive or interlaced)""" + width: NotRequired[int] + r"""The width of the video stream""" + display_title: NotRequired[str] + r"""Display title of the stream""" + extended_display_title: NotRequired[str] + r"""Extended display title of the stream""" + channels: NotRequired[int] + r"""Number of audio channels (for audio streams)""" + language: NotRequired[str] + r"""The language of the stream (for audio/subtitle streams)""" + language_tag: NotRequired[str] + r"""Language tag of the stream""" + language_code: NotRequired[str] + r"""Language code of the stream""" + audio_channel_layout: NotRequired[str] + r"""The audio channel layout""" + sampling_rate: NotRequired[int] + r"""Sampling rate of the audio stream in Hz""" + title: NotRequired[str] + r"""Title of the subtitle track (for subtitle streams)""" + can_auto_sync: NotRequired[bool] + r"""Indicates if the subtitle stream can auto-sync""" + + +class GetLibraryItemsStream(BaseModel): + id: int + + stream_type: Annotated[int, pydantic.Field(alias="streamType")] + r"""Type of stream (1 = video, 2 = audio, 3 = subtitle)""" + + codec: str + r"""Codec used by the stream""" + + index: int + r"""The index of the stream""" + + default: Optional[bool] = None + r"""Indicates if this is the default stream""" + + selected: Optional[bool] = None + r"""Indicates if the stream is selected""" + + bitrate: Optional[int] = None + r"""The bitrate of the stream in kbps""" + + color_primaries: Annotated[ + Optional[str], pydantic.Field(alias="colorPrimaries") + ] = None + r"""The color primaries of the video stream""" + + color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None + r"""The color range of the video stream""" + + color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None + r"""The color space of the video stream""" + + color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None + r"""The transfer characteristics (TRC) of the video stream""" + + bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None + r"""The bit depth of the video stream""" + + chroma_location: Annotated[ + Optional[str], pydantic.Field(alias="chromaLocation") + ] = None + r"""The chroma location of the video stream""" + + stream_identifier: Annotated[ + Optional[str], pydantic.Field(alias="streamIdentifier") + ] = None + r"""The identifier of the video stream""" + + chroma_subsampling: Annotated[ + Optional[str], pydantic.Field(alias="chromaSubsampling") + ] = None + r"""The chroma subsampling format""" + + coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None + r"""The coded height of the video stream""" + + coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None + r"""The coded width of the video stream""" + + frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None + r"""The frame rate of the video stream""" + + has_scaling_matrix: Annotated[ + Optional[bool], pydantic.Field(alias="hasScalingMatrix") + ] = None + r"""Indicates if the stream has a scaling matrix""" + + hearing_impaired: Annotated[ + Optional[bool], pydantic.Field(alias="hearingImpaired") + ] = None + + closed_captions: Annotated[ + Optional[bool], pydantic.Field(alias="closedCaptions") + ] = None + + embedded_in_video: Annotated[ + Optional[str], pydantic.Field(alias="embeddedInVideo") + ] = None + + height: Optional[int] = None + r"""The height of the video stream""" + + level: Optional[int] = None + r"""The level of the video codec""" + + profile: Optional[str] = None + r"""The profile of the video codec""" + + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None + r"""Number of reference frames""" + + scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None + r"""The scan type (progressive or interlaced)""" + + width: Optional[int] = None + r"""The width of the video stream""" + + display_title: Annotated[Optional[str], pydantic.Field(alias="displayTitle")] = None + r"""Display title of the stream""" + + extended_display_title: Annotated[ + Optional[str], pydantic.Field(alias="extendedDisplayTitle") + ] = None + r"""Extended display title of the stream""" + + channels: Optional[int] = None + r"""Number of audio channels (for audio streams)""" + + language: Optional[str] = None + r"""The language of the stream (for audio/subtitle streams)""" + + language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None + r"""Language tag of the stream""" + + language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None + r"""Language code of the stream""" + + audio_channel_layout: Annotated[ + Optional[str], pydantic.Field(alias="audioChannelLayout") + ] = None + r"""The audio channel layout""" + + sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None + r"""Sampling rate of the audio stream in Hz""" + + title: Optional[str] = None + r"""Title of the subtitle track (for subtitle streams)""" + + can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None + r"""Indicates if the subtitle stream can auto-sync""" + + class GetLibraryItemsPartTypedDict(TypedDict): id: int key: str @@ -228,8 +588,11 @@ class GetLibraryItemsPartTypedDict(TypedDict): """ video_profile: str audio_profile: NotRequired[str] + has64bit_offsets: NotRequired[bool] + optimized_for_streaming: NotRequired[bool] indexes: NotRequired[str] - has_thumbnail: NotRequired[HasThumbnail] + has_thumbnail: NotRequired[GetLibraryItemsHasThumbnail] + stream: NotRequired[List[GetLibraryItemsStreamTypedDict]] class GetLibraryItemsPart(BaseModel): @@ -252,11 +615,23 @@ class GetLibraryItemsPart(BaseModel): audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + indexes: Optional[str] = None has_thumbnail: Annotated[ - Optional[HasThumbnail], pydantic.Field(alias="hasThumbnail") - ] = HasThumbnail.FALSE + Optional[GetLibraryItemsHasThumbnail], pydantic.Field(alias="hasThumbnail") + ] = GetLibraryItemsHasThumbnail.FALSE + + stream: Annotated[ + Optional[List[GetLibraryItemsStream]], pydantic.Field(alias="Stream") + ] = None class GetLibraryItemsMediaTypedDict(TypedDict): @@ -276,6 +651,8 @@ class GetLibraryItemsMediaTypedDict(TypedDict): part: List[GetLibraryItemsPartTypedDict] audio_profile: NotRequired[str] has_voice_activity: NotRequired[bool] + optimized_for_streaming: NotRequired[GetLibraryItemsOptimizedForStreaming] + has64bit_offsets: NotRequired[bool] class GetLibraryItemsMedia(BaseModel): @@ -313,6 +690,15 @@ class GetLibraryItemsMedia(BaseModel): Optional[bool], pydantic.Field(alias="hasVoiceActivity") ] = None + optimized_for_streaming: Annotated[ + Optional[GetLibraryItemsOptimizedForStreaming], + pydantic.Field(alias="optimizedForStreaming"), + ] = GetLibraryItemsOptimizedForStreaming.DISABLE + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + class GetLibraryItemsGenreTypedDict(TypedDict): tag: NotRequired[str] @@ -346,23 +732,50 @@ class GetLibraryItemsWriter(BaseModel): tag: Optional[str] = None -class CollectionTypedDict(TypedDict): +class GetLibraryItemsCollectionTypedDict(TypedDict): tag: NotRequired[str] -class Collection(BaseModel): +class GetLibraryItemsCollection(BaseModel): tag: Optional[str] = None class GetLibraryItemsRoleTypedDict(TypedDict): + id: NotRequired[int] + r"""The ID of the tag or actor.""" + filter_: NotRequired[str] + r"""The filter used to find the actor or tag.""" + thumb: NotRequired[str] + r"""The thumbnail of the actor""" tag: NotRequired[str] + r"""The name of the tag or actor.""" + tag_key: NotRequired[str] + r"""Unique identifier for the tag.""" + role: NotRequired[str] + r"""The role of the actor or tag in the media.""" class GetLibraryItemsRole(BaseModel): + id: Optional[int] = None + r"""The ID of the tag or actor.""" + + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + r"""The filter used to find the actor or tag.""" + + thumb: Optional[str] = None + r"""The thumbnail of the actor""" + tag: Optional[str] = None + r"""The name of the tag or actor.""" + + tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None + r"""Unique identifier for the tag.""" + + role: Optional[str] = None + r"""The role of the actor or tag in the media.""" -class MediaGUIDTypedDict(TypedDict): +class GetLibraryItemsMediaGUIDTypedDict(TypedDict): id: str r"""Can be one of the following formats: imdb://tt13015952, tmdb://2434012, tvdb://7945991 @@ -370,7 +783,7 @@ class MediaGUIDTypedDict(TypedDict): """ -class MediaGUID(BaseModel): +class GetLibraryItemsMediaGUID(BaseModel): id: str r"""Can be one of the following formats: imdb://tt13015952, tmdb://2434012, tvdb://7945991 @@ -378,14 +791,14 @@ class MediaGUID(BaseModel): """ -class UltraBlurColorsTypedDict(TypedDict): +class GetLibraryItemsUltraBlurColorsTypedDict(TypedDict): top_left: str top_right: str bottom_right: str bottom_left: str -class UltraBlurColors(BaseModel): +class GetLibraryItemsUltraBlurColors(BaseModel): top_left: Annotated[str, pydantic.Field(alias="topLeft")] top_right: Annotated[str, pydantic.Field(alias="topRight")] @@ -395,7 +808,27 @@ class UltraBlurColors(BaseModel): bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] -class GetLibraryItemsLibraryResponseType(str, Enum): +class GetLibraryItemsMetaDataRatingTypedDict(TypedDict): + image: str + r"""A URI or path to the rating image.""" + value: float + r"""The value of the rating.""" + type: str + r"""The type of rating (e.g., audience, critic).""" + + +class GetLibraryItemsMetaDataRating(BaseModel): + image: str + r"""A URI or path to the rating image.""" + + value: float + r"""The value of the rating.""" + + type: str + r"""The type of rating (e.g., audience, critic).""" + + +class GetLibraryItemsLibraryResponse200Type(str, Enum): COVER_POSTER = "coverPoster" BACKGROUND = "background" SNAPSHOT = "snapshot" @@ -404,14 +837,14 @@ class GetLibraryItemsLibraryResponseType(str, Enum): class GetLibraryItemsImageTypedDict(TypedDict): alt: str - type: GetLibraryItemsLibraryResponseType + type: GetLibraryItemsLibraryResponse200Type url: str class GetLibraryItemsImage(BaseModel): alt: str - type: GetLibraryItemsLibraryResponseType + type: GetLibraryItemsLibraryResponse200Type url: str @@ -424,7 +857,7 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): """ key: str guid: str - type: GetLibraryItemsType + type: GetLibraryItemsLibraryType r"""The type of media content """ @@ -434,6 +867,9 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): r"""Unix epoch datetime in seconds""" studio: NotRequired[str] skip_children: NotRequired[bool] + library_section_id: NotRequired[int] + library_section_title: NotRequired[str] + library_section_key: NotRequired[str] slug: NotRequired[str] content_rating: NotRequired[str] rating: NotRequired[float] @@ -441,8 +877,8 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): year: NotRequired[int] season_count: NotRequired[int] tagline: NotRequired[str] - flatten_seasons: NotRequired[FlattenSeasons] - show_ordering: NotRequired[ShowOrdering] + flatten_seasons: NotRequired[GetLibraryItemsFlattenSeasons] + show_ordering: NotRequired[GetLibraryItemsShowOrdering] r"""Setting that indicates the episode ordering for the show None = Library default, tmdbAiring = The Movie Database (Aired), @@ -467,6 +903,7 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): grandparent_key: NotRequired[str] grandparent_title: NotRequired[str] grandparent_thumb: NotRequired[str] + parent_slug: NotRequired[str] grandparent_slug: NotRequired[str] grandparent_art: NotRequired[str] grandparent_theme: NotRequired[str] @@ -478,13 +915,14 @@ class GetLibraryItemsMetadataTypedDict(TypedDict): country: NotRequired[List[GetLibraryItemsCountryTypedDict]] director: NotRequired[List[GetLibraryItemsDirectorTypedDict]] writer: NotRequired[List[GetLibraryItemsWriterTypedDict]] - collection: NotRequired[List[CollectionTypedDict]] + collection: NotRequired[List[GetLibraryItemsCollectionTypedDict]] role: NotRequired[List[GetLibraryItemsRoleTypedDict]] - media_guid: NotRequired[List[MediaGUIDTypedDict]] + media_guid: NotRequired[List[GetLibraryItemsMediaGUIDTypedDict]] r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. """ - ultra_blur_colors: NotRequired[UltraBlurColorsTypedDict] + ultra_blur_colors: NotRequired[GetLibraryItemsUltraBlurColorsTypedDict] + meta_data_rating: NotRequired[List[GetLibraryItemsMetaDataRatingTypedDict]] image: NotRequired[List[GetLibraryItemsImageTypedDict]] title_sort: NotRequired[str] view_count: NotRequired[int] @@ -524,7 +962,7 @@ class GetLibraryItemsMetadata(BaseModel): guid: str - type: GetLibraryItemsType + type: GetLibraryItemsLibraryType r"""The type of media content """ @@ -542,6 +980,18 @@ class GetLibraryItemsMetadata(BaseModel): None ) + library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="librarySectionID") + ] = None + + library_section_title: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionTitle") + ] = None + + library_section_key: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionKey") + ] = None + slug: Optional[str] = None content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( @@ -561,11 +1011,11 @@ class GetLibraryItemsMetadata(BaseModel): tagline: Optional[str] = None flatten_seasons: Annotated[ - Optional[FlattenSeasons], pydantic.Field(alias="flattenSeasons") - ] = FlattenSeasons.FALSE + Optional[GetLibraryItemsFlattenSeasons], pydantic.Field(alias="flattenSeasons") + ] = GetLibraryItemsFlattenSeasons.FALSE show_ordering: Annotated[ - Optional[ShowOrdering], pydantic.Field(alias="showOrdering") + Optional[GetLibraryItemsShowOrdering], pydantic.Field(alias="showOrdering") ] = None r"""Setting that indicates the episode ordering for the show None = Library default, @@ -625,6 +1075,8 @@ class GetLibraryItemsMetadata(BaseModel): Optional[str], pydantic.Field(alias="grandparentThumb") ] = None + parent_slug: Annotated[Optional[str], pydantic.Field(alias="parentSlug")] = None + grandparent_slug: Annotated[ Optional[str], pydantic.Field(alias="grandparentSlug") ] = None @@ -661,22 +1113,27 @@ class GetLibraryItemsMetadata(BaseModel): ] = None collection: Annotated[ - Optional[List[Collection]], pydantic.Field(alias="Collection") + Optional[List[GetLibraryItemsCollection]], pydantic.Field(alias="Collection") ] = None role: Annotated[ Optional[List[GetLibraryItemsRole]], pydantic.Field(alias="Role") ] = None - media_guid: Annotated[Optional[List[MediaGUID]], pydantic.Field(alias="Guid")] = ( - None - ) + media_guid: Annotated[ + Optional[List[GetLibraryItemsMediaGUID]], pydantic.Field(alias="Guid") + ] = None r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. """ ultra_blur_colors: Annotated[ - Optional[UltraBlurColors], pydantic.Field(alias="UltraBlurColors") + Optional[GetLibraryItemsUltraBlurColors], + pydantic.Field(alias="UltraBlurColors"), + ] = None + + meta_data_rating: Annotated[ + Optional[List[GetLibraryItemsMetaDataRating]], pydantic.Field(alias="Rating") ] = None image: Annotated[ @@ -743,7 +1200,7 @@ class GetLibraryItemsMetadata(BaseModel): parent_theme: Annotated[Optional[str], pydantic.Field(alias="parentTheme")] = None -class GetLibraryItemsFilterTypedDict(TypedDict): +class GetLibraryItemsLibraryFilterTypedDict(TypedDict): filter_: str filter_type: str key: str @@ -751,7 +1208,7 @@ class GetLibraryItemsFilterTypedDict(TypedDict): type: str -class GetLibraryItemsFilter(BaseModel): +class GetLibraryItemsLibraryFilter(BaseModel): filter_: Annotated[str, pydantic.Field(alias="filter")] filter_type: Annotated[str, pydantic.Field(alias="filterType")] @@ -763,30 +1220,30 @@ class GetLibraryItemsFilter(BaseModel): type: str -class ActiveDirection(str, Enum): +class GetLibraryItemsLibraryActiveDirection(str, Enum): r"""The direction of the sort. Can be either `asc` or `desc`.""" ASCENDING = "asc" DESCENDING = "desc" -class DefaultDirection(str, Enum): +class GetLibraryItemsLibraryDefaultDirection(str, Enum): r"""The direction of the sort. Can be either `asc` or `desc`.""" ASCENDING = "asc" DESCENDING = "desc" -class GetLibraryItemsSortTypedDict(TypedDict): +class GetLibraryItemsLibrarySortTypedDict(TypedDict): key: str title: str default: NotRequired[str] active: NotRequired[bool] - active_direction: NotRequired[ActiveDirection] + active_direction: NotRequired[GetLibraryItemsLibraryActiveDirection] r"""The direction of the sort. Can be either `asc` or `desc`. """ - default_direction: NotRequired[DefaultDirection] + default_direction: NotRequired[GetLibraryItemsLibraryDefaultDirection] r"""The direction of the sort. Can be either `asc` or `desc`. """ @@ -794,7 +1251,7 @@ class GetLibraryItemsSortTypedDict(TypedDict): first_character_key: NotRequired[str] -class GetLibraryItemsSort(BaseModel): +class GetLibraryItemsLibrarySort(BaseModel): key: str title: str @@ -804,15 +1261,17 @@ class GetLibraryItemsSort(BaseModel): active: Optional[bool] = None active_direction: Annotated[ - Optional[ActiveDirection], pydantic.Field(alias="activeDirection") - ] = ActiveDirection.ASCENDING + Optional[GetLibraryItemsLibraryActiveDirection], + pydantic.Field(alias="activeDirection"), + ] = GetLibraryItemsLibraryActiveDirection.ASCENDING r"""The direction of the sort. Can be either `asc` or `desc`. """ default_direction: Annotated[ - Optional[DefaultDirection], pydantic.Field(alias="defaultDirection") - ] = DefaultDirection.ASCENDING + Optional[GetLibraryItemsLibraryDefaultDirection], + pydantic.Field(alias="defaultDirection"), + ] = GetLibraryItemsLibraryDefaultDirection.ASCENDING r"""The direction of the sort. Can be either `asc` or `desc`. """ @@ -824,14 +1283,14 @@ class GetLibraryItemsSort(BaseModel): ] = None -class GetLibraryItemsFieldTypedDict(TypedDict): +class GetLibraryItemsLibraryFieldTypedDict(TypedDict): key: str title: str type: str sub_type: NotRequired[str] -class GetLibraryItemsField(BaseModel): +class GetLibraryItemsLibraryField(BaseModel): key: str title: str @@ -841,17 +1300,17 @@ class GetLibraryItemsField(BaseModel): sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None -class GetLibraryItemsLibraryTypeTypedDict(TypedDict): +class GetLibraryItemsLibraryResponseTypeTypedDict(TypedDict): key: str type: str title: str active: bool - filter_: NotRequired[List[GetLibraryItemsFilterTypedDict]] - sort: NotRequired[List[GetLibraryItemsSortTypedDict]] - field: NotRequired[List[GetLibraryItemsFieldTypedDict]] + filter_: NotRequired[List[GetLibraryItemsLibraryFilterTypedDict]] + sort: NotRequired[List[GetLibraryItemsLibrarySortTypedDict]] + field: NotRequired[List[GetLibraryItemsLibraryFieldTypedDict]] -class GetLibraryItemsLibraryType(BaseModel): +class GetLibraryItemsLibraryResponseType(BaseModel): key: str type: str @@ -861,60 +1320,65 @@ class GetLibraryItemsLibraryType(BaseModel): active: bool filter_: Annotated[ - Optional[List[GetLibraryItemsFilter]], pydantic.Field(alias="Filter") + Optional[List[GetLibraryItemsLibraryFilter]], pydantic.Field(alias="Filter") ] = None sort: Annotated[ - Optional[List[GetLibraryItemsSort]], pydantic.Field(alias="Sort") + Optional[List[GetLibraryItemsLibrarySort]], pydantic.Field(alias="Sort") ] = None field: Annotated[ - Optional[List[GetLibraryItemsField]], pydantic.Field(alias="Field") + Optional[List[GetLibraryItemsLibraryField]], pydantic.Field(alias="Field") ] = None -class GetLibraryItemsOperatorTypedDict(TypedDict): +class GetLibraryItemsLibraryOperatorTypedDict(TypedDict): key: str title: str -class GetLibraryItemsOperator(BaseModel): +class GetLibraryItemsLibraryOperator(BaseModel): key: str title: str -class GetLibraryItemsFieldTypeTypedDict(TypedDict): +class GetLibraryItemsLibraryFieldTypeTypedDict(TypedDict): type: str - operator: List[GetLibraryItemsOperatorTypedDict] + operator: List[GetLibraryItemsLibraryOperatorTypedDict] -class GetLibraryItemsFieldType(BaseModel): +class GetLibraryItemsLibraryFieldType(BaseModel): type: str - operator: Annotated[List[GetLibraryItemsOperator], pydantic.Field(alias="Operator")] + operator: Annotated[ + List[GetLibraryItemsLibraryOperator], pydantic.Field(alias="Operator") + ] -class MetaTypedDict(TypedDict): +class GetLibraryItemsMetaTypedDict(TypedDict): r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - type: NotRequired[List[GetLibraryItemsLibraryTypeTypedDict]] - field_type: NotRequired[List[GetLibraryItemsFieldTypeTypedDict]] + type: NotRequired[List[GetLibraryItemsLibraryResponseTypeTypedDict]] + field_type: NotRequired[List[GetLibraryItemsLibraryFieldTypeTypedDict]] -class Meta(BaseModel): +class GetLibraryItemsMeta(BaseModel): r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" type: Annotated[ - Optional[List[GetLibraryItemsLibraryType]], pydantic.Field(alias="Type") + Optional[List[GetLibraryItemsLibraryResponseType]], pydantic.Field(alias="Type") ] = None field_type: Annotated[ - Optional[List[GetLibraryItemsFieldType]], pydantic.Field(alias="FieldType") + Optional[List[GetLibraryItemsLibraryFieldType]], + pydantic.Field(alias="FieldType"), ] = None class GetLibraryItemsMediaContainerTypedDict(TypedDict): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + size: int total_size: int offset: int @@ -922,7 +1386,7 @@ class GetLibraryItemsMediaContainerTypedDict(TypedDict): allow_sync: bool art: str identifier: str - library_section_id: LibrarySectionIDTypedDict + library_section_id: int library_section_title: str library_section_uuid: str media_tag_prefix: str @@ -932,16 +1396,20 @@ class GetLibraryItemsMediaContainerTypedDict(TypedDict): title2: str view_group: str metadata: List[GetLibraryItemsMetadataTypedDict] + type: NotRequired[List[GetLibraryItemsTypeTypedDict]] + field_type: NotRequired[List[GetLibraryItemsFieldTypeTypedDict]] nocache: NotRequired[bool] view_mode: NotRequired[int] mixed_parents: NotRequired[bool] - meta: NotRequired[MetaTypedDict] + meta: NotRequired[GetLibraryItemsMetaTypedDict] r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. """ class GetLibraryItemsMediaContainer(BaseModel): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + size: int total_size: Annotated[int, pydantic.Field(alias="totalSize")] @@ -956,9 +1424,7 @@ class GetLibraryItemsMediaContainer(BaseModel): identifier: str - library_section_id: Annotated[ - LibrarySectionID, pydantic.Field(alias="librarySectionID") - ] + library_section_id: Annotated[int, pydantic.Field(alias="librarySectionID")] library_section_title: Annotated[str, pydantic.Field(alias="librarySectionTitle")] @@ -978,6 +1444,14 @@ class GetLibraryItemsMediaContainer(BaseModel): metadata: Annotated[List[GetLibraryItemsMetadata], pydantic.Field(alias="Metadata")] + type: Annotated[ + Optional[List[GetLibraryItemsType]], pydantic.Field(alias="Type") + ] = None + + field_type: Annotated[ + Optional[List[GetLibraryItemsFieldType]], pydantic.Field(alias="FieldType") + ] = None + nocache: Optional[bool] = None view_mode: Annotated[Optional[int], pydantic.Field(alias="viewMode")] = None @@ -986,7 +1460,7 @@ class GetLibraryItemsMediaContainer(BaseModel): None ) - meta: Annotated[Optional[Meta], pydantic.Field(alias="Meta")] = None + meta: Annotated[Optional[GetLibraryItemsMeta], pydantic.Field(alias="Meta")] = None r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. """ diff --git a/src/plex_api_client/models/operations/get_meta_data_by_rating_key.py b/src/plex_api_client/models/operations/get_meta_data_by_rating_key.py index 048025f..65fac2c 100644 --- a/src/plex_api_client/models/operations/get_meta_data_by_rating_key.py +++ b/src/plex_api_client/models/operations/get_meta_data_by_rating_key.py @@ -24,7 +24,7 @@ class GetMetaDataByRatingKeyRequest(BaseModel): r"""the id of the library item to return the children of.""" -class StreamTypedDict(TypedDict): +class GetMetaDataByRatingKeyStreamTypedDict(TypedDict): id: NotRequired[int] stream_type: NotRequired[int] default: NotRequired[bool] @@ -59,7 +59,7 @@ class StreamTypedDict(TypedDict): sampling_rate: NotRequired[int] -class Stream(BaseModel): +class GetMetaDataByRatingKeyStream(BaseModel): id: Optional[int] = None stream_type: Annotated[Optional[int], pydantic.Field(alias="streamType")] = None @@ -148,7 +148,7 @@ class GetMetaDataByRatingKeyPartTypedDict(TypedDict): has64bit_offsets: NotRequired[bool] optimized_for_streaming: NotRequired[bool] video_profile: NotRequired[str] - stream: NotRequired[List[StreamTypedDict]] + stream: NotRequired[List[GetMetaDataByRatingKeyStreamTypedDict]] class GetMetaDataByRatingKeyPart(BaseModel): @@ -176,7 +176,9 @@ class GetMetaDataByRatingKeyPart(BaseModel): video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - stream: Annotated[Optional[List[Stream]], pydantic.Field(alias="Stream")] = None + stream: Annotated[ + Optional[List[GetMetaDataByRatingKeyStream]], pydantic.Field(alias="Stream") + ] = None class GetMetaDataByRatingKeyMediaTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/get_recently_added.py b/src/plex_api_client/models/operations/get_recently_added.py new file mode 100644 index 0000000..edededa --- /dev/null +++ b/src/plex_api_client/models/operations/get_recently_added.py @@ -0,0 +1,1240 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import date +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional, TypedDict +from typing_extensions import Annotated, NotRequired + + +class Type(int, Enum): + r"""The type of media to retrieve. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + + MOVIE = 1 + TV_SHOW = 2 + SEASON = 3 + EPISODE = 4 + + +class IncludeMeta(int, Enum): + r"""Adds the Meta object to the response""" + + DISABLE = 0 + ENABLE = 1 + + +class GetRecentlyAddedRequestTypedDict(TypedDict): + content_directory_id: int + r"""The content directory ID.""" + type: Type + r"""The type of media to retrieve. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + pinned_content_directory_id: NotRequired[str] + r"""Comma-separated list of pinned content directory IDs.""" + section_id: NotRequired[int] + r"""The library section ID for filtering content.""" + include_meta: NotRequired[IncludeMeta] + r"""Adds the Meta object to the response + + """ + x_plex_container_start: NotRequired[int] + r"""The index of the first item to return. If not specified, the first item will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 0 + + """ + x_plex_container_size: NotRequired[int] + r"""The number of items to return. If not specified, all items will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 50 + + """ + + +class GetRecentlyAddedRequest(BaseModel): + content_directory_id: Annotated[ + int, + pydantic.Field(alias="contentDirectoryID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The content directory ID.""" + + type: Annotated[ + Type, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The type of media to retrieve. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + + pinned_content_directory_id: Annotated[ + Optional[str], + pydantic.Field(alias="pinnedContentDirectoryID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Comma-separated list of pinned content directory IDs.""" + + section_id: Annotated[ + Optional[int], + pydantic.Field(alias="sectionID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The library section ID for filtering content.""" + + include_meta: Annotated[ + Optional[IncludeMeta], + pydantic.Field(alias="includeMeta"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = IncludeMeta.DISABLE + r"""Adds the Meta object to the response + + """ + + x_plex_container_start: Annotated[ + Optional[int], + pydantic.Field(alias="X-Plex-Container-Start"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 0 + r"""The index of the first item to return. If not specified, the first item will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 0 + + """ + + x_plex_container_size: Annotated[ + Optional[int], + pydantic.Field(alias="X-Plex-Container-Size"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 50 + r"""The number of items to return. If not specified, all items will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 50 + + """ + + +class GetRecentlyAddedFilterTypedDict(TypedDict): + filter_: str + filter_type: str + key: str + title: str + type: str + + +class GetRecentlyAddedFilter(BaseModel): + filter_: Annotated[str, pydantic.Field(alias="filter")] + + filter_type: Annotated[str, pydantic.Field(alias="filterType")] + + key: str + + title: str + + type: str + + +class GetRecentlyAddedActiveDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class GetRecentlyAddedDefaultDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class GetRecentlyAddedSortTypedDict(TypedDict): + key: str + title: str + default: NotRequired[str] + active: NotRequired[bool] + active_direction: NotRequired[GetRecentlyAddedActiveDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + default_direction: NotRequired[GetRecentlyAddedDefaultDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + desc_key: NotRequired[str] + first_character_key: NotRequired[str] + + +class GetRecentlyAddedSort(BaseModel): + key: str + + title: str + + default: Optional[str] = None + + active: Optional[bool] = None + + active_direction: Annotated[ + Optional[GetRecentlyAddedActiveDirection], + pydantic.Field(alias="activeDirection"), + ] = GetRecentlyAddedActiveDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + default_direction: Annotated[ + Optional[GetRecentlyAddedDefaultDirection], + pydantic.Field(alias="defaultDirection"), + ] = GetRecentlyAddedDefaultDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None + + first_character_key: Annotated[ + Optional[str], pydantic.Field(alias="firstCharacterKey") + ] = None + + +class GetRecentlyAddedFieldTypedDict(TypedDict): + key: str + title: str + type: str + sub_type: NotRequired[str] + + +class GetRecentlyAddedField(BaseModel): + key: str + + title: str + + type: str + + sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None + + +class GetRecentlyAddedTypeTypedDict(TypedDict): + key: str + type: str + title: str + active: bool + filter_: NotRequired[List[GetRecentlyAddedFilterTypedDict]] + sort: NotRequired[List[GetRecentlyAddedSortTypedDict]] + field: NotRequired[List[GetRecentlyAddedFieldTypedDict]] + + +class GetRecentlyAddedType(BaseModel): + key: str + + type: str + + title: str + + active: bool + + filter_: Annotated[ + Optional[List[GetRecentlyAddedFilter]], pydantic.Field(alias="Filter") + ] = None + + sort: Annotated[ + Optional[List[GetRecentlyAddedSort]], pydantic.Field(alias="Sort") + ] = None + + field: Annotated[ + Optional[List[GetRecentlyAddedField]], pydantic.Field(alias="Field") + ] = None + + +class GetRecentlyAddedOperatorTypedDict(TypedDict): + key: str + title: str + + +class GetRecentlyAddedOperator(BaseModel): + key: str + + title: str + + +class GetRecentlyAddedFieldTypeTypedDict(TypedDict): + type: str + operator: List[GetRecentlyAddedOperatorTypedDict] + + +class GetRecentlyAddedFieldType(BaseModel): + type: str + + operator: Annotated[ + List[GetRecentlyAddedOperator], pydantic.Field(alias="Operator") + ] + + +class MetaTypedDict(TypedDict): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + + type: NotRequired[List[GetRecentlyAddedTypeTypedDict]] + field_type: NotRequired[List[GetRecentlyAddedFieldTypeTypedDict]] + + +class Meta(BaseModel): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + + type: Annotated[ + Optional[List[GetRecentlyAddedType]], pydantic.Field(alias="Type") + ] = None + + field_type: Annotated[ + Optional[List[GetRecentlyAddedFieldType]], pydantic.Field(alias="FieldType") + ] = None + + +class GetRecentlyAddedHubsType(str, Enum): + r"""The type of media content""" + + MOVIE = "movie" + TV_SHOW = "show" + SEASON = "season" + EPISODE = "episode" + + +class FlattenSeasons(str, Enum): + FALSE = "0" + TRUE = "1" + + +class ShowOrdering(str, Enum): + r"""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)). + + """ + + NONE = "None" + TMDB_AIRING = "tmdbAiring" + AIRED = "aired" + DVD = "dvd" + ABSOLUTE = "absolute" + + +class OptimizedForStreaming(int, Enum): + DISABLE = 0 + ENABLE = 1 + + +class HasThumbnail(str, Enum): + FALSE = "0" + TRUE = "1" + + +class StreamTypedDict(TypedDict): + id: int + stream_type: int + r"""Type of stream (1 = video, 2 = audio, 3 = subtitle)""" + codec: str + r"""Codec used by the stream""" + index: int + r"""The index of the stream""" + default: NotRequired[bool] + r"""Indicates if this is the default stream""" + selected: NotRequired[bool] + r"""Indicates if the stream is selected""" + bitrate: NotRequired[int] + r"""The bitrate of the stream in kbps""" + color_primaries: NotRequired[str] + r"""The color primaries of the video stream""" + color_range: NotRequired[str] + r"""The color range of the video stream""" + color_space: NotRequired[str] + r"""The color space of the video stream""" + color_trc: NotRequired[str] + r"""The transfer characteristics (TRC) of the video stream""" + bit_depth: NotRequired[int] + r"""The bit depth of the video stream""" + chroma_location: NotRequired[str] + r"""The chroma location of the video stream""" + stream_identifier: NotRequired[str] + r"""The identifier of the video stream""" + chroma_subsampling: NotRequired[str] + r"""The chroma subsampling format""" + coded_height: NotRequired[int] + r"""The coded height of the video stream""" + coded_width: NotRequired[int] + r"""The coded width of the video stream""" + frame_rate: NotRequired[float] + r"""The frame rate of the video stream""" + has_scaling_matrix: NotRequired[bool] + r"""Indicates if the stream has a scaling matrix""" + hearing_impaired: NotRequired[bool] + closed_captions: NotRequired[bool] + embedded_in_video: NotRequired[str] + height: NotRequired[int] + r"""The height of the video stream""" + level: NotRequired[int] + r"""The level of the video codec""" + profile: NotRequired[str] + r"""The profile of the video codec""" + ref_frames: NotRequired[int] + r"""Number of reference frames""" + scan_type: NotRequired[str] + r"""The scan type (progressive or interlaced)""" + width: NotRequired[int] + r"""The width of the video stream""" + display_title: NotRequired[str] + r"""Display title of the stream""" + extended_display_title: NotRequired[str] + r"""Extended display title of the stream""" + channels: NotRequired[int] + r"""Number of audio channels (for audio streams)""" + language: NotRequired[str] + r"""The language of the stream (for audio/subtitle streams)""" + language_tag: NotRequired[str] + r"""Language tag of the stream""" + language_code: NotRequired[str] + r"""Language code of the stream""" + audio_channel_layout: NotRequired[str] + r"""The audio channel layout""" + sampling_rate: NotRequired[int] + r"""Sampling rate of the audio stream in Hz""" + title: NotRequired[str] + r"""Title of the subtitle track (for subtitle streams)""" + can_auto_sync: NotRequired[bool] + r"""Indicates if the subtitle stream can auto-sync""" + + +class Stream(BaseModel): + id: int + + stream_type: Annotated[int, pydantic.Field(alias="streamType")] + r"""Type of stream (1 = video, 2 = audio, 3 = subtitle)""" + + codec: str + r"""Codec used by the stream""" + + index: int + r"""The index of the stream""" + + default: Optional[bool] = None + r"""Indicates if this is the default stream""" + + selected: Optional[bool] = None + r"""Indicates if the stream is selected""" + + bitrate: Optional[int] = None + r"""The bitrate of the stream in kbps""" + + color_primaries: Annotated[ + Optional[str], pydantic.Field(alias="colorPrimaries") + ] = None + r"""The color primaries of the video stream""" + + color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None + r"""The color range of the video stream""" + + color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None + r"""The color space of the video stream""" + + color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None + r"""The transfer characteristics (TRC) of the video stream""" + + bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None + r"""The bit depth of the video stream""" + + chroma_location: Annotated[ + Optional[str], pydantic.Field(alias="chromaLocation") + ] = None + r"""The chroma location of the video stream""" + + stream_identifier: Annotated[ + Optional[str], pydantic.Field(alias="streamIdentifier") + ] = None + r"""The identifier of the video stream""" + + chroma_subsampling: Annotated[ + Optional[str], pydantic.Field(alias="chromaSubsampling") + ] = None + r"""The chroma subsampling format""" + + coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None + r"""The coded height of the video stream""" + + coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None + r"""The coded width of the video stream""" + + frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None + r"""The frame rate of the video stream""" + + has_scaling_matrix: Annotated[ + Optional[bool], pydantic.Field(alias="hasScalingMatrix") + ] = None + r"""Indicates if the stream has a scaling matrix""" + + hearing_impaired: Annotated[ + Optional[bool], pydantic.Field(alias="hearingImpaired") + ] = None + + closed_captions: Annotated[ + Optional[bool], pydantic.Field(alias="closedCaptions") + ] = None + + embedded_in_video: Annotated[ + Optional[str], pydantic.Field(alias="embeddedInVideo") + ] = None + + height: Optional[int] = None + r"""The height of the video stream""" + + level: Optional[int] = None + r"""The level of the video codec""" + + profile: Optional[str] = None + r"""The profile of the video codec""" + + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None + r"""Number of reference frames""" + + scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None + r"""The scan type (progressive or interlaced)""" + + width: Optional[int] = None + r"""The width of the video stream""" + + display_title: Annotated[Optional[str], pydantic.Field(alias="displayTitle")] = None + r"""Display title of the stream""" + + extended_display_title: Annotated[ + Optional[str], pydantic.Field(alias="extendedDisplayTitle") + ] = None + r"""Extended display title of the stream""" + + channels: Optional[int] = None + r"""Number of audio channels (for audio streams)""" + + language: Optional[str] = None + r"""The language of the stream (for audio/subtitle streams)""" + + language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None + r"""Language tag of the stream""" + + language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None + r"""Language code of the stream""" + + audio_channel_layout: Annotated[ + Optional[str], pydantic.Field(alias="audioChannelLayout") + ] = None + r"""The audio channel layout""" + + sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None + r"""Sampling rate of the audio stream in Hz""" + + title: Optional[str] = None + r"""Title of the subtitle track (for subtitle streams)""" + + can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None + r"""Indicates if the subtitle stream can auto-sync""" + + +class PartTypedDict(TypedDict): + id: int + key: str + duration: int + file: str + size: int + container: str + r"""The container format of the media file. + + """ + video_profile: str + audio_profile: NotRequired[str] + has64bit_offsets: NotRequired[bool] + optimized_for_streaming: NotRequired[bool] + indexes: NotRequired[str] + has_thumbnail: NotRequired[HasThumbnail] + stream: NotRequired[List[StreamTypedDict]] + + +class Part(BaseModel): + id: int + + key: str + + duration: int + + file: str + + size: int + + container: str + r"""The container format of the media file. + + """ + + video_profile: Annotated[str, pydantic.Field(alias="videoProfile")] + + audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + + indexes: Optional[str] = None + + has_thumbnail: Annotated[ + Optional[HasThumbnail], pydantic.Field(alias="hasThumbnail") + ] = HasThumbnail.FALSE + + stream: Annotated[Optional[List[Stream]], pydantic.Field(alias="Stream")] = None + + +class MediaTypedDict(TypedDict): + id: int + duration: int + bitrate: int + width: int + height: int + aspect_ratio: float + audio_channels: int + audio_codec: str + video_codec: str + video_resolution: str + container: str + video_frame_rate: str + video_profile: str + part: List[PartTypedDict] + audio_profile: NotRequired[str] + has_voice_activity: NotRequired[bool] + optimized_for_streaming: NotRequired[OptimizedForStreaming] + has64bit_offsets: NotRequired[bool] + + +class Media(BaseModel): + id: int + + duration: int + + bitrate: int + + width: int + + height: int + + aspect_ratio: Annotated[float, pydantic.Field(alias="aspectRatio")] + + audio_channels: Annotated[int, pydantic.Field(alias="audioChannels")] + + audio_codec: Annotated[str, pydantic.Field(alias="audioCodec")] + + video_codec: Annotated[str, pydantic.Field(alias="videoCodec")] + + video_resolution: Annotated[str, pydantic.Field(alias="videoResolution")] + + container: str + + video_frame_rate: Annotated[str, pydantic.Field(alias="videoFrameRate")] + + video_profile: Annotated[str, pydantic.Field(alias="videoProfile")] + + part: Annotated[List[Part], pydantic.Field(alias="Part")] + + audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None + + has_voice_activity: Annotated[ + Optional[bool], pydantic.Field(alias="hasVoiceActivity") + ] = None + + optimized_for_streaming: Annotated[ + Optional[OptimizedForStreaming], pydantic.Field(alias="optimizedForStreaming") + ] = OptimizedForStreaming.DISABLE + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + +class GenreTypedDict(TypedDict): + tag: NotRequired[str] + + +class Genre(BaseModel): + tag: Optional[str] = None + + +class CountryTypedDict(TypedDict): + tag: NotRequired[str] + + +class Country(BaseModel): + tag: Optional[str] = None + + +class DirectorTypedDict(TypedDict): + tag: NotRequired[str] + + +class Director(BaseModel): + tag: Optional[str] = None + + +class WriterTypedDict(TypedDict): + tag: NotRequired[str] + + +class Writer(BaseModel): + tag: Optional[str] = None + + +class CollectionTypedDict(TypedDict): + tag: NotRequired[str] + + +class Collection(BaseModel): + tag: Optional[str] = None + + +class RoleTypedDict(TypedDict): + id: NotRequired[int] + r"""The ID of the tag or actor.""" + filter_: NotRequired[str] + r"""The filter used to find the actor or tag.""" + thumb: NotRequired[str] + r"""The thumbnail of the actor""" + tag: NotRequired[str] + r"""The name of the tag or actor.""" + tag_key: NotRequired[str] + r"""Unique identifier for the tag.""" + role: NotRequired[str] + r"""The role of the actor or tag in the media.""" + + +class Role(BaseModel): + id: Optional[int] = None + r"""The ID of the tag or actor.""" + + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + r"""The filter used to find the actor or tag.""" + + thumb: Optional[str] = None + r"""The thumbnail of the actor""" + + tag: Optional[str] = None + r"""The name of the tag or actor.""" + + tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None + r"""Unique identifier for the tag.""" + + role: Optional[str] = None + r"""The role of the actor or tag in the media.""" + + +class MediaGUIDTypedDict(TypedDict): + id: str + r"""Can be one of the following formats: + imdb://tt13015952, tmdb://2434012, tvdb://7945991 + + """ + + +class MediaGUID(BaseModel): + id: str + r"""Can be one of the following formats: + imdb://tt13015952, tmdb://2434012, tvdb://7945991 + + """ + + +class UltraBlurColorsTypedDict(TypedDict): + top_left: str + top_right: str + bottom_right: str + bottom_left: str + + +class UltraBlurColors(BaseModel): + top_left: Annotated[str, pydantic.Field(alias="topLeft")] + + top_right: Annotated[str, pydantic.Field(alias="topRight")] + + bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] + + bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] + + +class MetaDataRatingTypedDict(TypedDict): + image: str + r"""A URI or path to the rating image.""" + value: float + r"""The value of the rating.""" + type: str + r"""The type of rating (e.g., audience, critic).""" + + +class MetaDataRating(BaseModel): + image: str + r"""A URI or path to the rating image.""" + + value: float + r"""The value of the rating.""" + + type: str + r"""The type of rating (e.g., audience, critic).""" + + +class GetRecentlyAddedHubsResponseType(str, Enum): + COVER_POSTER = "coverPoster" + BACKGROUND = "background" + SNAPSHOT = "snapshot" + CLEAR_LOGO = "clearLogo" + + +class GetRecentlyAddedImageTypedDict(TypedDict): + alt: str + type: GetRecentlyAddedHubsResponseType + url: str + + +class GetRecentlyAddedImage(BaseModel): + alt: str + + type: GetRecentlyAddedHubsResponseType + + url: str + + +class GetRecentlyAddedMetadataTypedDict(TypedDict): + rating_key: str + r"""The rating key (Media ID) of this media item. + Note: This is always an integer, but is represented as a string in the API. + + """ + key: str + guid: str + type: GetRecentlyAddedHubsType + r"""The type of media content + + """ + title: str + summary: str + added_at: int + r"""Unix epoch datetime in seconds""" + studio: NotRequired[str] + skip_children: NotRequired[bool] + library_section_id: NotRequired[int] + library_section_title: NotRequired[str] + library_section_key: NotRequired[str] + slug: NotRequired[str] + content_rating: NotRequired[str] + rating: NotRequired[float] + audience_rating: NotRequired[float] + year: NotRequired[int] + season_count: NotRequired[int] + tagline: NotRequired[str] + flatten_seasons: NotRequired[FlattenSeasons] + show_ordering: NotRequired[ShowOrdering] + r"""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)). + + """ + thumb: NotRequired[str] + art: NotRequired[str] + banner: NotRequired[str] + duration: NotRequired[int] + originally_available_at: NotRequired[date] + updated_at: NotRequired[int] + r"""Unix epoch datetime in seconds""" + audience_rating_image: NotRequired[str] + chapter_source: NotRequired[str] + primary_extra_key: NotRequired[str] + rating_image: NotRequired[str] + grandparent_rating_key: NotRequired[str] + grandparent_guid: NotRequired[str] + grandparent_key: NotRequired[str] + grandparent_title: NotRequired[str] + grandparent_thumb: NotRequired[str] + parent_slug: NotRequired[str] + grandparent_slug: NotRequired[str] + grandparent_art: NotRequired[str] + grandparent_theme: NotRequired[str] + media: NotRequired[List[MediaTypedDict]] + r"""The Media object is only included when type query is `4` or higher. + + """ + genre: NotRequired[List[GenreTypedDict]] + country: NotRequired[List[CountryTypedDict]] + director: NotRequired[List[DirectorTypedDict]] + writer: NotRequired[List[WriterTypedDict]] + collection: NotRequired[List[CollectionTypedDict]] + role: NotRequired[List[RoleTypedDict]] + media_guid: NotRequired[List[MediaGUIDTypedDict]] + r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. + + """ + ultra_blur_colors: NotRequired[UltraBlurColorsTypedDict] + meta_data_rating: NotRequired[List[MetaDataRatingTypedDict]] + image: NotRequired[List[GetRecentlyAddedImageTypedDict]] + title_sort: NotRequired[str] + view_count: NotRequired[int] + last_viewed_at: NotRequired[int] + original_title: NotRequired[str] + view_offset: NotRequired[int] + skip_count: NotRequired[int] + index: NotRequired[int] + theme: NotRequired[str] + leaf_count: NotRequired[int] + viewed_leaf_count: NotRequired[int] + child_count: NotRequired[int] + has_premium_extras: NotRequired[str] + has_premium_primary_extra: NotRequired[str] + parent_rating_key: NotRequired[str] + r"""The rating key of the parent item. + + """ + parent_guid: NotRequired[str] + parent_studio: NotRequired[str] + parent_key: NotRequired[str] + parent_title: NotRequired[str] + parent_index: NotRequired[int] + parent_year: NotRequired[int] + parent_thumb: NotRequired[str] + parent_theme: NotRequired[str] + + +class GetRecentlyAddedMetadata(BaseModel): + rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] + r"""The rating key (Media ID) of this media item. + Note: This is always an integer, but is represented as a string in the API. + + """ + + key: str + + guid: str + + type: GetRecentlyAddedHubsType + r"""The type of media content + + """ + + title: str + + summary: str + + added_at: Annotated[int, pydantic.Field(alias="addedAt")] + r"""Unix epoch datetime in seconds""" + + studio: Optional[str] = None + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + + library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="librarySectionID") + ] = None + + library_section_title: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionTitle") + ] = None + + library_section_key: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionKey") + ] = None + + slug: Optional[str] = None + + content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( + None + ) + + rating: Optional[float] = None + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + + year: Optional[int] = None + + season_count: Annotated[Optional[int], pydantic.Field(alias="seasonCount")] = None + + tagline: Optional[str] = None + + flatten_seasons: Annotated[ + Optional[FlattenSeasons], pydantic.Field(alias="flattenSeasons") + ] = FlattenSeasons.FALSE + + show_ordering: Annotated[ + Optional[ShowOrdering], pydantic.Field(alias="showOrdering") + ] = None + r"""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)). + + """ + + thumb: Optional[str] = None + + art: Optional[str] = None + + banner: Optional[str] = None + + duration: Optional[int] = None + + originally_available_at: Annotated[ + Optional[date], pydantic.Field(alias="originallyAvailableAt") + ] = None + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""Unix epoch datetime in seconds""" + + audience_rating_image: Annotated[ + Optional[str], pydantic.Field(alias="audienceRatingImage") + ] = None + + chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( + None + ) + + primary_extra_key: Annotated[ + Optional[str], pydantic.Field(alias="primaryExtraKey") + ] = None + + rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + + grandparent_guid: Annotated[ + Optional[str], pydantic.Field(alias="grandparentGuid") + ] = None + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + + parent_slug: Annotated[Optional[str], pydantic.Field(alias="parentSlug")] = None + + grandparent_slug: Annotated[ + Optional[str], pydantic.Field(alias="grandparentSlug") + ] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + + media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None + r"""The Media object is only included when type query is `4` or higher. + + """ + + genre: Annotated[Optional[List[Genre]], pydantic.Field(alias="Genre")] = None + + country: Annotated[Optional[List[Country]], pydantic.Field(alias="Country")] = None + + director: Annotated[Optional[List[Director]], pydantic.Field(alias="Director")] = ( + None + ) + + writer: Annotated[Optional[List[Writer]], pydantic.Field(alias="Writer")] = None + + collection: Annotated[ + Optional[List[Collection]], pydantic.Field(alias="Collection") + ] = None + + role: Annotated[Optional[List[Role]], pydantic.Field(alias="Role")] = None + + media_guid: Annotated[Optional[List[MediaGUID]], pydantic.Field(alias="Guid")] = ( + None + ) + r"""The Guid object is only included in the response if the `includeGuids` parameter is set to `1`. + + """ + + ultra_blur_colors: Annotated[ + Optional[UltraBlurColors], pydantic.Field(alias="UltraBlurColors") + ] = None + + meta_data_rating: Annotated[ + Optional[List[MetaDataRating]], pydantic.Field(alias="Rating") + ] = None + + image: Annotated[ + Optional[List[GetRecentlyAddedImage]], pydantic.Field(alias="Image") + ] = None + + title_sort: Annotated[Optional[str], pydantic.Field(alias="titleSort")] = None + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + + original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( + None + ) + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + + skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None + + index: Optional[int] = None + + theme: Optional[str] = None + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + + child_count: Annotated[Optional[int], pydantic.Field(alias="childCount")] = None + + has_premium_extras: Annotated[ + Optional[str], pydantic.Field(alias="hasPremiumExtras") + ] = None + + has_premium_primary_extra: Annotated[ + Optional[str], pydantic.Field(alias="hasPremiumPrimaryExtra") + ] = None + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The rating key of the parent item. + + """ + + parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None + + parent_studio: Annotated[Optional[str], pydantic.Field(alias="parentStudio")] = None + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + + parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + + parent_theme: Annotated[Optional[str], pydantic.Field(alias="parentTheme")] = None + + +class GetRecentlyAddedMediaContainerTypedDict(TypedDict): + size: float + offset: NotRequired[int] + total_size: NotRequired[int] + identifier: NotRequired[str] + allow_sync: NotRequired[bool] + meta: NotRequired[MetaTypedDict] + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + """ + metadata: NotRequired[List[GetRecentlyAddedMetadataTypedDict]] + + +class GetRecentlyAddedMediaContainer(BaseModel): + size: float + + offset: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + + identifier: Optional[str] = None + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + meta: Annotated[Optional[Meta], pydantic.Field(alias="Meta")] = None + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. + + """ + + metadata: Annotated[ + Optional[List[GetRecentlyAddedMetadata]], pydantic.Field(alias="Metadata") + ] = None + + +class GetRecentlyAddedResponseBodyTypedDict(TypedDict): + r"""A successful response with recently added content.""" + + media_container: NotRequired[GetRecentlyAddedMediaContainerTypedDict] + + +class GetRecentlyAddedResponseBody(BaseModel): + r"""A successful response with recently added content.""" + + media_container: Annotated[ + Optional[GetRecentlyAddedMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetRecentlyAddedResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetRecentlyAddedResponseBodyTypedDict] + r"""A successful response with recently added content.""" + + +class GetRecentlyAddedResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetRecentlyAddedResponseBody] = None + r"""A successful response with recently added content.""" diff --git a/src/plex_api_client/models/operations/get_recently_added_library.py b/src/plex_api_client/models/operations/get_recently_added_library.py new file mode 100644 index 0000000..90fd93e --- /dev/null +++ b/src/plex_api_client/models/operations/get_recently_added_library.py @@ -0,0 +1,646 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import datetime +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional, TypedDict +from typing_extensions import Annotated, NotRequired + + +class QueryParamType(int, Enum): + r"""The type of media to retrieve. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + + MOVIE = 1 + TV_SHOW = 2 + SEASON = 3 + EPISODE = 4 + + +class QueryParamIncludeMeta(int, Enum): + r"""Adds the Meta object to the response""" + + DISABLE = 0 + ENABLE = 1 + + +class GetRecentlyAddedLibraryRequestTypedDict(TypedDict): + type: QueryParamType + r"""The type of media to retrieve. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + content_directory_id: NotRequired[int] + pinned_content_directory_id: NotRequired[List[int]] + section_id: NotRequired[int] + r"""The library section ID for filtering content.""" + include_meta: NotRequired[QueryParamIncludeMeta] + r"""Adds the Meta object to the response + + """ + x_plex_container_start: NotRequired[int] + r"""The index of the first item to return. If not specified, the first item will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 0 + + """ + x_plex_container_size: NotRequired[int] + r"""The number of items to return. If not specified, all items will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 50 + + """ + + +class GetRecentlyAddedLibraryRequest(BaseModel): + type: Annotated[ + QueryParamType, + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The type of media to retrieve. + 1 = movie + 2 = show + 3 = season + 4 = episode + E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries + + """ + + content_directory_id: Annotated[ + Optional[int], + pydantic.Field(alias="contentDirectoryID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + pinned_content_directory_id: Annotated[ + Optional[List[int]], + pydantic.Field(alias="pinnedContentDirectoryID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + section_id: Annotated[ + Optional[int], + pydantic.Field(alias="sectionID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The library section ID for filtering content.""" + + include_meta: Annotated[ + Optional[QueryParamIncludeMeta], + pydantic.Field(alias="includeMeta"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = QueryParamIncludeMeta.DISABLE + r"""Adds the Meta object to the response + + """ + + x_plex_container_start: Annotated[ + Optional[int], + pydantic.Field(alias="X-Plex-Container-Start"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 0 + r"""The index of the first item to return. If not specified, the first item will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 0 + + """ + + x_plex_container_size: Annotated[ + Optional[int], + pydantic.Field(alias="X-Plex-Container-Size"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 50 + r"""The number of items to return. If not specified, all items will be returned. + If the number of items exceeds the limit, the response will be paginated. + By default this is 50 + + """ + + +class GetRecentlyAddedLibraryFilterTypedDict(TypedDict): + filter_: str + filter_type: str + key: str + title: str + type: str + + +class GetRecentlyAddedLibraryFilter(BaseModel): + filter_: Annotated[str, pydantic.Field(alias="filter")] + + filter_type: Annotated[str, pydantic.Field(alias="filterType")] + + key: str + + title: str + + type: str + + +class ActiveDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class DefaultDirection(str, Enum): + r"""The direction of the sort. Can be either `asc` or `desc`.""" + + ASCENDING = "asc" + DESCENDING = "desc" + + +class SortTypedDict(TypedDict): + key: str + title: str + default: NotRequired[str] + active: NotRequired[bool] + active_direction: NotRequired[ActiveDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + default_direction: NotRequired[DefaultDirection] + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + desc_key: NotRequired[str] + first_character_key: NotRequired[str] + + +class Sort(BaseModel): + key: str + + title: str + + default: Optional[str] = None + + active: Optional[bool] = None + + active_direction: Annotated[ + Optional[ActiveDirection], pydantic.Field(alias="activeDirection") + ] = ActiveDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + default_direction: Annotated[ + Optional[DefaultDirection], pydantic.Field(alias="defaultDirection") + ] = DefaultDirection.ASCENDING + r"""The direction of the sort. Can be either `asc` or `desc`. + + """ + + desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None + + first_character_key: Annotated[ + Optional[str], pydantic.Field(alias="firstCharacterKey") + ] = None + + +class FieldTypedDict(TypedDict): + key: str + title: str + type: str + sub_type: NotRequired[str] + + +class Field(BaseModel): + key: str + + title: str + + type: str + + sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None + + +class GetRecentlyAddedLibraryTypeTypedDict(TypedDict): + key: str + type: str + title: str + active: bool + filter_: NotRequired[List[GetRecentlyAddedLibraryFilterTypedDict]] + sort: NotRequired[List[SortTypedDict]] + field: NotRequired[List[FieldTypedDict]] + + +class GetRecentlyAddedLibraryType(BaseModel): + key: str + + type: str + + title: str + + active: bool + + filter_: Annotated[ + Optional[List[GetRecentlyAddedLibraryFilter]], pydantic.Field(alias="Filter") + ] = None + + sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + + field: Annotated[Optional[List[Field]], pydantic.Field(alias="Field")] = None + + +class OperatorTypedDict(TypedDict): + key: str + title: str + + +class Operator(BaseModel): + key: str + + title: str + + +class FieldTypeTypedDict(TypedDict): + type: str + operator: List[OperatorTypedDict] + + +class FieldType(BaseModel): + type: str + + operator: Annotated[List[Operator], pydantic.Field(alias="Operator")] + + +class GetRecentlyAddedLibraryPartTypedDict(TypedDict): + id: NotRequired[float] + key: NotRequired[str] + duration: NotRequired[float] + file: NotRequired[str] + size: NotRequired[float] + container: NotRequired[str] + has64bit_offsets: NotRequired[bool] + has_thumbnail: NotRequired[float] + optimized_for_streaming: NotRequired[bool] + video_profile: NotRequired[str] + + +class GetRecentlyAddedLibraryPart(BaseModel): + id: Optional[float] = None + + key: Optional[str] = None + + duration: Optional[float] = None + + file: Optional[str] = None + + size: Optional[float] = None + + container: Optional[str] = None + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + has_thumbnail: Annotated[Optional[float], pydantic.Field(alias="hasThumbnail")] = ( + None + ) + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + + video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None + + +class GetRecentlyAddedLibraryMediaTypedDict(TypedDict): + id: NotRequired[float] + duration: NotRequired[float] + bitrate: NotRequired[float] + width: NotRequired[float] + height: NotRequired[float] + aspect_ratio: NotRequired[float] + audio_channels: NotRequired[float] + audio_codec: NotRequired[str] + video_codec: NotRequired[str] + video_resolution: NotRequired[float] + container: NotRequired[str] + video_frame_rate: NotRequired[str] + optimized_for_streaming: NotRequired[float] + has64bit_offsets: NotRequired[bool] + video_profile: NotRequired[str] + part: NotRequired[List[GetRecentlyAddedLibraryPartTypedDict]] + + +class GetRecentlyAddedLibraryMedia(BaseModel): + id: Optional[float] = None + + duration: Optional[float] = None + + bitrate: Optional[float] = None + + width: Optional[float] = None + + height: Optional[float] = None + + aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None + + audio_channels: Annotated[ + Optional[float], pydantic.Field(alias="audioChannels") + ] = None + + audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None + + video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None + + video_resolution: Annotated[ + Optional[float], pydantic.Field(alias="videoResolution") + ] = None + + container: Optional[str] = None + + video_frame_rate: Annotated[ + Optional[str], pydantic.Field(alias="videoFrameRate") + ] = None + + optimized_for_streaming: Annotated[ + Optional[float], pydantic.Field(alias="optimizedForStreaming") + ] = None + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None + + part: Annotated[ + Optional[List[GetRecentlyAddedLibraryPart]], pydantic.Field(alias="Part") + ] = None + + +class GetRecentlyAddedLibraryGenreTypedDict(TypedDict): + tag: NotRequired[str] + + +class GetRecentlyAddedLibraryGenre(BaseModel): + tag: Optional[str] = None + + +class GetRecentlyAddedLibraryDirectorTypedDict(TypedDict): + tag: NotRequired[str] + + +class GetRecentlyAddedLibraryDirector(BaseModel): + tag: Optional[str] = None + + +class GetRecentlyAddedLibraryWriterTypedDict(TypedDict): + tag: NotRequired[str] + + +class GetRecentlyAddedLibraryWriter(BaseModel): + tag: Optional[str] = None + + +class GetRecentlyAddedLibraryCountryTypedDict(TypedDict): + tag: NotRequired[str] + + +class GetRecentlyAddedLibraryCountry(BaseModel): + tag: Optional[str] = None + + +class GetRecentlyAddedLibraryRoleTypedDict(TypedDict): + tag: NotRequired[str] + + +class GetRecentlyAddedLibraryRole(BaseModel): + tag: Optional[str] = None + + +class GetRecentlyAddedLibraryMetadataTypedDict(TypedDict): + allow_sync: NotRequired[bool] + library_section_id: NotRequired[float] + library_section_title: NotRequired[str] + library_section_uuid: NotRequired[str] + rating_key: NotRequired[float] + key: NotRequired[str] + guid: NotRequired[str] + studio: NotRequired[str] + type: NotRequired[str] + title: NotRequired[str] + content_rating: NotRequired[str] + summary: NotRequired[str] + rating: NotRequired[float] + audience_rating: NotRequired[float] + year: NotRequired[float] + tagline: NotRequired[str] + thumb: NotRequired[str] + art: NotRequired[str] + duration: NotRequired[float] + originally_available_at: NotRequired[datetime] + added_at: NotRequired[float] + updated_at: NotRequired[float] + audience_rating_image: NotRequired[str] + chapter_source: NotRequired[str] + primary_extra_key: NotRequired[str] + rating_image: NotRequired[str] + media: NotRequired[List[GetRecentlyAddedLibraryMediaTypedDict]] + genre: NotRequired[List[GetRecentlyAddedLibraryGenreTypedDict]] + director: NotRequired[List[GetRecentlyAddedLibraryDirectorTypedDict]] + writer: NotRequired[List[GetRecentlyAddedLibraryWriterTypedDict]] + country: NotRequired[List[GetRecentlyAddedLibraryCountryTypedDict]] + role: NotRequired[List[GetRecentlyAddedLibraryRoleTypedDict]] + + +class GetRecentlyAddedLibraryMetadata(BaseModel): + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + library_section_id: Annotated[ + Optional[float], pydantic.Field(alias="librarySectionID") + ] = None + + library_section_title: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionTitle") + ] = None + + library_section_uuid: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionUUID") + ] = None + + rating_key: Annotated[Optional[float], pydantic.Field(alias="ratingKey")] = None + + key: Optional[str] = None + + guid: Optional[str] = None + + studio: Optional[str] = None + + type: Optional[str] = None + + title: Optional[str] = None + + content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( + None + ) + + summary: Optional[str] = None + + rating: Optional[float] = None + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + + year: Optional[float] = None + + tagline: Optional[str] = None + + thumb: Optional[str] = None + + art: Optional[str] = None + + duration: Optional[float] = None + + originally_available_at: Annotated[ + Optional[datetime], pydantic.Field(alias="originallyAvailableAt") + ] = None + + added_at: Annotated[Optional[float], pydantic.Field(alias="addedAt")] = None + + updated_at: Annotated[Optional[float], pydantic.Field(alias="updatedAt")] = None + + audience_rating_image: Annotated[ + Optional[str], pydantic.Field(alias="audienceRatingImage") + ] = None + + chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( + None + ) + + primary_extra_key: Annotated[ + Optional[str], pydantic.Field(alias="primaryExtraKey") + ] = None + + rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None + + media: Annotated[ + Optional[List[GetRecentlyAddedLibraryMedia]], pydantic.Field(alias="Media") + ] = None + + genre: Annotated[ + Optional[List[GetRecentlyAddedLibraryGenre]], pydantic.Field(alias="Genre") + ] = None + + director: Annotated[ + Optional[List[GetRecentlyAddedLibraryDirector]], + pydantic.Field(alias="Director"), + ] = None + + writer: Annotated[ + Optional[List[GetRecentlyAddedLibraryWriter]], pydantic.Field(alias="Writer") + ] = None + + country: Annotated[ + Optional[List[GetRecentlyAddedLibraryCountry]], pydantic.Field(alias="Country") + ] = None + + role: Annotated[ + Optional[List[GetRecentlyAddedLibraryRole]], pydantic.Field(alias="Role") + ] = None + + +class GetRecentlyAddedLibraryMediaContainerTypedDict(TypedDict): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + + type: NotRequired[List[GetRecentlyAddedLibraryTypeTypedDict]] + field_type: NotRequired[List[FieldTypeTypedDict]] + size: NotRequired[float] + allow_sync: NotRequired[bool] + identifier: NotRequired[str] + media_tag_prefix: NotRequired[str] + media_tag_version: NotRequired[float] + mixed_parents: NotRequired[bool] + metadata: NotRequired[List[GetRecentlyAddedLibraryMetadataTypedDict]] + + +class GetRecentlyAddedLibraryMediaContainer(BaseModel): + r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" + + type: Annotated[ + Optional[List[GetRecentlyAddedLibraryType]], pydantic.Field(alias="Type") + ] = None + + field_type: Annotated[ + Optional[List[FieldType]], pydantic.Field(alias="FieldType") + ] = None + + size: Optional[float] = None + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + identifier: Optional[str] = None + + media_tag_prefix: Annotated[ + Optional[str], pydantic.Field(alias="mediaTagPrefix") + ] = None + + media_tag_version: Annotated[ + Optional[float], pydantic.Field(alias="mediaTagVersion") + ] = None + + mixed_parents: Annotated[Optional[bool], pydantic.Field(alias="mixedParents")] = ( + None + ) + + metadata: Annotated[ + Optional[List[GetRecentlyAddedLibraryMetadata]], + pydantic.Field(alias="Metadata"), + ] = None + + +class GetRecentlyAddedLibraryResponseBodyTypedDict(TypedDict): + r"""The recently added content""" + + media_container: NotRequired[GetRecentlyAddedLibraryMediaContainerTypedDict] + + +class GetRecentlyAddedLibraryResponseBody(BaseModel): + r"""The recently added content""" + + media_container: Annotated[ + Optional[GetRecentlyAddedLibraryMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetRecentlyAddedLibraryResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetRecentlyAddedLibraryResponseBodyTypedDict] + r"""The recently added content""" + + +class GetRecentlyAddedLibraryResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetRecentlyAddedLibraryResponseBody] = None + r"""The recently added content""" diff --git a/src/plex_api_client/models/operations/get_search_library.py b/src/plex_api_client/models/operations/get_search_library.py index 50fa692..81af20c 100644 --- a/src/plex_api_client/models/operations/get_search_library.py +++ b/src/plex_api_client/models/operations/get_search_library.py @@ -10,7 +10,7 @@ from typing import List, Optional, TypedDict from typing_extensions import Annotated, NotRequired -class QueryParamType(int, Enum): +class GetSearchLibraryQueryParamType(int, Enum): r"""The type of media to retrieve. 1 = movie 2 = show @@ -32,7 +32,7 @@ class GetSearchLibraryRequestTypedDict(TypedDict): Note: This is unique in the context of the Plex server. """ - type: QueryParamType + type: GetSearchLibraryQueryParamType r"""The type of media to retrieve. 1 = movie 2 = show @@ -55,7 +55,7 @@ class GetSearchLibraryRequest(BaseModel): """ type: Annotated[ - QueryParamType, + GetSearchLibraryQueryParamType, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] r"""The type of media to retrieve. diff --git a/src/plex_api_client/models/operations/getpin.py b/src/plex_api_client/models/operations/getpin.py index 8abac94..cae70d0 100644 --- a/src/plex_api_client/models/operations/getpin.py +++ b/src/plex_api_client/models/operations/getpin.py @@ -22,6 +22,12 @@ GET_PIN_SERVERS = [ class GetPinGlobalsTypedDict(TypedDict): + client_id: NotRequired[str] + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ client_name: NotRequired[str] device_name: NotRequired[str] client_version: NotRequired[str] @@ -29,6 +35,17 @@ class GetPinGlobalsTypedDict(TypedDict): class GetPinGlobals(BaseModel): + client_id: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ + client_name: Annotated[ Optional[str], pydantic.Field(alias="X-Plex-Product"), @@ -60,6 +77,12 @@ class GetPinRequestTypedDict(TypedDict): Strong codes are used for Pin authentication flows Non-Strong codes are used for `Plex.tv/link` + """ + client_id: NotRequired[str] + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + """ client_name: NotRequired[str] device_name: NotRequired[str] @@ -78,6 +101,17 @@ class GetPinRequest(BaseModel): """ + client_id: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ + client_name: Annotated[ Optional[str], pydantic.Field(alias="X-Plex-Product"), diff --git a/src/plex_api_client/models/operations/getrecentlyadded.py b/src/plex_api_client/models/operations/getrecentlyadded.py deleted file mode 100644 index 075373d..0000000 --- a/src/plex_api_client/models/operations/getrecentlyadded.py +++ /dev/null @@ -1,387 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired - - -class GetRecentlyAddedRequestTypedDict(TypedDict): - x_plex_container_start: NotRequired[int] - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - x_plex_container_size: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetRecentlyAddedRequest(BaseModel): - x_plex_container_start: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Start"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - - x_plex_container_size: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Size"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 50 - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class PartTypedDict(TypedDict): - id: NotRequired[float] - key: NotRequired[str] - duration: NotRequired[float] - file: NotRequired[str] - size: NotRequired[float] - container: NotRequired[str] - has64bit_offsets: NotRequired[bool] - has_thumbnail: NotRequired[float] - optimized_for_streaming: NotRequired[bool] - video_profile: NotRequired[str] - - -class Part(BaseModel): - id: Optional[float] = None - - key: Optional[str] = None - - duration: Optional[float] = None - - file: Optional[str] = None - - size: Optional[float] = None - - container: Optional[str] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - has_thumbnail: Annotated[Optional[float], pydantic.Field(alias="hasThumbnail")] = ( - None - ) - - optimized_for_streaming: Annotated[ - Optional[bool], pydantic.Field(alias="optimizedForStreaming") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - -class MediaTypedDict(TypedDict): - id: NotRequired[float] - duration: NotRequired[float] - bitrate: NotRequired[float] - width: NotRequired[float] - height: NotRequired[float] - aspect_ratio: NotRequired[float] - audio_channels: NotRequired[float] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[float] - container: NotRequired[str] - video_frame_rate: NotRequired[str] - optimized_for_streaming: NotRequired[float] - has64bit_offsets: NotRequired[bool] - video_profile: NotRequired[str] - part: NotRequired[List[PartTypedDict]] - - -class Media(BaseModel): - id: Optional[float] = None - - duration: Optional[float] = None - - bitrate: Optional[float] = None - - width: Optional[float] = None - - height: Optional[float] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_channels: Annotated[ - Optional[float], pydantic.Field(alias="audioChannels") - ] = None - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[float], pydantic.Field(alias="videoResolution") - ] = None - - container: Optional[str] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - optimized_for_streaming: Annotated[ - Optional[float], pydantic.Field(alias="optimizedForStreaming") - ] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - part: Annotated[Optional[List[Part]], pydantic.Field(alias="Part")] = None - - -class GenreTypedDict(TypedDict): - tag: NotRequired[str] - - -class Genre(BaseModel): - tag: Optional[str] = None - - -class DirectorTypedDict(TypedDict): - tag: NotRequired[str] - - -class Director(BaseModel): - tag: Optional[str] = None - - -class WriterTypedDict(TypedDict): - tag: NotRequired[str] - - -class Writer(BaseModel): - tag: Optional[str] = None - - -class CountryTypedDict(TypedDict): - tag: NotRequired[str] - - -class Country(BaseModel): - tag: Optional[str] = None - - -class RoleTypedDict(TypedDict): - tag: NotRequired[str] - - -class Role(BaseModel): - tag: Optional[str] = None - - -class GetRecentlyAddedMetadataTypedDict(TypedDict): - allow_sync: NotRequired[bool] - library_section_id: NotRequired[float] - library_section_title: NotRequired[str] - library_section_uuid: NotRequired[str] - rating_key: NotRequired[float] - key: NotRequired[str] - guid: NotRequired[str] - studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - rating: NotRequired[float] - audience_rating: NotRequired[float] - year: NotRequired[float] - tagline: NotRequired[str] - thumb: NotRequired[str] - art: NotRequired[str] - duration: NotRequired[float] - originally_available_at: NotRequired[datetime] - added_at: NotRequired[float] - updated_at: NotRequired[float] - audience_rating_image: NotRequired[str] - chapter_source: NotRequired[str] - primary_extra_key: NotRequired[str] - rating_image: NotRequired[str] - media: NotRequired[List[MediaTypedDict]] - genre: NotRequired[List[GenreTypedDict]] - director: NotRequired[List[DirectorTypedDict]] - writer: NotRequired[List[WriterTypedDict]] - country: NotRequired[List[CountryTypedDict]] - role: NotRequired[List[RoleTypedDict]] - - -class GetRecentlyAddedMetadata(BaseModel): - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - library_section_id: Annotated[ - Optional[float], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - - rating_key: Annotated[Optional[float], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - studio: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - rating: Optional[float] = None - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - year: Optional[float] = None - - tagline: Optional[str] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - duration: Optional[float] = None - - originally_available_at: Annotated[ - Optional[datetime], pydantic.Field(alias="originallyAvailableAt") - ] = None - - added_at: Annotated[Optional[float], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[float], pydantic.Field(alias="updatedAt")] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None - - genre: Annotated[Optional[List[Genre]], pydantic.Field(alias="Genre")] = None - - director: Annotated[Optional[List[Director]], pydantic.Field(alias="Director")] = ( - None - ) - - writer: Annotated[Optional[List[Writer]], pydantic.Field(alias="Writer")] = None - - country: Annotated[Optional[List[Country]], pydantic.Field(alias="Country")] = None - - role: Annotated[Optional[List[Role]], pydantic.Field(alias="Role")] = None - - -class GetRecentlyAddedMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - allow_sync: NotRequired[bool] - identifier: NotRequired[str] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[float] - mixed_parents: NotRequired[bool] - metadata: NotRequired[List[GetRecentlyAddedMetadataTypedDict]] - - -class GetRecentlyAddedMediaContainer(BaseModel): - size: Optional[float] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - identifier: Optional[str] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[float], pydantic.Field(alias="mediaTagVersion") - ] = None - - mixed_parents: Annotated[Optional[bool], pydantic.Field(alias="mixedParents")] = ( - None - ) - - metadata: Annotated[ - Optional[List[GetRecentlyAddedMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetRecentlyAddedResponseBodyTypedDict(TypedDict): - r"""The recently added content""" - - media_container: NotRequired[GetRecentlyAddedMediaContainerTypedDict] - - -class GetRecentlyAddedResponseBody(BaseModel): - r"""The recently added content""" - - media_container: Annotated[ - Optional[GetRecentlyAddedMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetRecentlyAddedResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetRecentlyAddedResponseBodyTypedDict] - r"""The recently added content""" - - -class GetRecentlyAddedResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetRecentlyAddedResponseBody] = None - r"""The recently added content""" diff --git a/src/plex_api_client/models/operations/post_users_sign_in_data.py b/src/plex_api_client/models/operations/post_users_sign_in_data.py index 6fa9ecb..135e510 100644 --- a/src/plex_api_client/models/operations/post_users_sign_in_data.py +++ b/src/plex_api_client/models/operations/post_users_sign_in_data.py @@ -11,7 +11,7 @@ from plex_api_client.types import ( UNSET, UNSET_SENTINEL, ) -from plex_api_client.utils import FieldMetadata +from plex_api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic from pydantic import model_serializer from typing import List, Optional, TypedDict @@ -22,6 +22,56 @@ POST_USERS_SIGN_IN_DATA_SERVERS = [ ] +class PostUsersSignInDataGlobalsTypedDict(TypedDict): + client_id: NotRequired[str] + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ + client_name: NotRequired[str] + device_name: NotRequired[str] + client_version: NotRequired[str] + client_platform: NotRequired[str] + + +class PostUsersSignInDataGlobals(BaseModel): + client_id: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ + + client_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + client_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + client_platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + class PostUsersSignInDataRequestBodyTypedDict(TypedDict): r"""Login credentials""" @@ -49,6 +99,66 @@ class PostUsersSignInDataRequestBody(BaseModel): ] = None +class PostUsersSignInDataRequestTypedDict(TypedDict): + client_id: NotRequired[str] + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ + client_name: NotRequired[str] + device_name: NotRequired[str] + client_version: NotRequired[str] + client_platform: NotRequired[str] + request_body: NotRequired[PostUsersSignInDataRequestBodyTypedDict] + r"""Login credentials""" + + +class PostUsersSignInDataRequest(BaseModel): + client_id: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The unique identifier for the client application + This is used to track the client application and its usage + (UUID, serial number, or other number unique per device) + + """ + + client_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + client_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + client_platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + request_body: Annotated[ + Optional[PostUsersSignInDataRequestBody], + FieldMetadata( + request=RequestMetadata(media_type="application/x-www-form-urlencoded") + ), + ] = None + r"""Login credentials""" + + class PostUsersSignInDataMailingListStatus(str, Enum): r"""Your current mailing list status""" diff --git a/src/plex_api_client/plex.py b/src/plex_api_client/plex.py index e860977..16f834d 100644 --- a/src/plex_api_client/plex.py +++ b/src/plex_api_client/plex.py @@ -1004,6 +1004,7 @@ class Plex(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", _globals=operations.GetPinGlobals( + client_id=self.sdk_configuration.globals.client_id, client_name=self.sdk_configuration.globals.client_name, device_name=self.sdk_configuration.globals.device_name, client_version=self.sdk_configuration.globals.client_version, @@ -1099,6 +1100,7 @@ class Plex(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", _globals=operations.GetPinGlobals( + client_id=self.sdk_configuration.globals.client_id, client_name=self.sdk_configuration.globals.client_name, device_name=self.sdk_configuration.globals.device_name, client_version=self.sdk_configuration.globals.client_version, diff --git a/src/plex_api_client/sdkconfiguration.py b/src/plex_api_client/sdkconfiguration.py index fb7ddea..5446397 100644 --- a/src/plex_api_client/sdkconfiguration.py +++ b/src/plex_api_client/sdkconfiguration.py @@ -39,9 +39,9 @@ class SDKConfiguration: server_defaults: List[Dict[str, str]] = field(default_factory=List) language: str = "python" openapi_doc_version: str = "0.0.3" - sdk_version: str = "0.13.1" - gen_version: str = "2.421.3" - user_agent: str = "speakeasy-sdk/python 0.13.1 2.421.3 0.0.3 plex-api-client" + sdk_version: str = "0.14.0" + gen_version: str = "2.422.22" + user_agent: str = "speakeasy-sdk/python 0.14.0 2.422.22 0.0.3 plex-api-client" retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET) timeout_ms: Optional[int] = None