From cce6496a0631b1d86412e4ea8c79c493b29d6279 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Sat, 22 Jun 2024 00:23:04 +0000 Subject: [PATCH] ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.314.2 --- .speakeasy/gen.lock | 53 +- .speakeasy/gen.yaml | 3 +- .speakeasy/workflow.lock | 8 +- Makefile | 6 - README.md | 11 +- RELEASES.md | 12 +- codeSamples.yaml | 1658 +++++++++-------- .../errors/getbandwidthstatisticserrors.md | 10 + .../getbandwidthstatisticsresponsebody.md | 11 + .../errors/getresourcesstatisticserrors.md | 10 + .../getresourcesstatisticsresponsebody.md | 11 + docs/models/internal/globals.md | 2 +- docs/models/operations/filter_.md | 13 +- .../getbandwidthstatisticsaccount.md | 15 + .../getbandwidthstatisticsdevice.md | 12 + .../getbandwidthstatisticsmediacontainer.md | 11 + .../getbandwidthstatisticsrequest.md | 8 + .../getbandwidthstatisticsresponse.md | 11 + .../getbandwidthstatisticsresponsebody.md | 10 + .../getlibraryitemsmediacontainer.md | 2 +- .../operations/getlibraryitemsrequest.md | 9 +- .../operations/getmetadatachildrenrequest.md | 7 +- docs/models/operations/getpinglobals.md | 2 +- docs/models/operations/getpinresponsebody.md | 2 +- .../getresourcesstatisticsmediacontainer.md | 9 + .../getresourcesstatisticsrequest.md | 8 + .../getresourcesstatisticsresponse.md | 11 + .../getresourcesstatisticsresponsebody.md | 10 + .../operations/getsessionhistoryrequest.md | 11 + docs/models/operations/getsessionsmetadata.md | 78 +- docs/models/operations/getsessionsuser.md | 10 + docs/models/operations/gettokenglobals.md | 2 +- .../operations/gettopwatchedcontentcountry.md | 10 + .../operations/gettopwatchedcontentgenre.md | 10 + .../operations/gettopwatchedcontentguids.md | 8 + .../gettopwatchedcontentmediacontainer.md | 13 + .../gettopwatchedcontentmetadata.md | 39 + .../operations/gettopwatchedcontentrequest.md | 9 + .../gettopwatchedcontentresponse.md | 11 + .../gettopwatchedcontentresponsebody.md | 10 + .../operations/gettopwatchedcontentrole.md | 13 + docs/models/operations/getwatchlistrequest.md | 2 +- docs/models/operations/librarysectionid.md | 17 + docs/models/operations/pathparamfilter.md | 12 + docs/models/operations/statisticsbandwidth.md | 13 + docs/models/operations/statisticsresources.md | 13 + docs/models/operations/user.md | 8 +- docs/sdks/library/README.md | 62 +- docs/sdks/server/README.md | 4 +- docs/sdks/sessions/README.md | 12 +- docs/sdks/statistics/README.md | 82 + docs/sdks/watchlist/README.md | 2 +- setup.py | 2 +- src/plex_api/library.py | 71 +- src/plex_api/models/errors/__init__.py | 4 +- .../models/errors/getbandwidthstatistics.py | 32 + .../models/errors/getresourcesstatistics.py | 32 + src/plex_api/models/internal/globals.py | 3 +- src/plex_api/models/operations/__init__.py | 5 +- .../operations/getbandwidthstatistics.py | 92 + .../models/operations/getlibraryitems.py | 8 +- .../models/operations/getmetadatachildren.py | 2 + src/plex_api/models/operations/getpin.py | 5 +- .../operations/getresourcesstatistics.py | 63 + .../models/operations/getsessionhistory.py | 25 + src/plex_api/models/operations/getsessions.py | 4 +- src/plex_api/models/operations/gettoken.py | 2 +- .../models/operations/gettopwatchedcontent.py | 143 ++ .../models/operations/getwatchlist.py | 4 +- src/plex_api/playlists.py | 2 +- src/plex_api/sdkconfiguration.py | 7 +- src/plex_api/server.py | 4 +- src/plex_api/sessions.py | 10 +- src/plex_api/statistics.py | 142 ++ 74 files changed, 2123 insertions(+), 925 deletions(-) delete mode 100644 Makefile create mode 100644 docs/models/errors/getbandwidthstatisticserrors.md create mode 100644 docs/models/errors/getbandwidthstatisticsresponsebody.md create mode 100644 docs/models/errors/getresourcesstatisticserrors.md create mode 100644 docs/models/errors/getresourcesstatisticsresponsebody.md create mode 100644 docs/models/operations/getbandwidthstatisticsaccount.md create mode 100644 docs/models/operations/getbandwidthstatisticsdevice.md create mode 100644 docs/models/operations/getbandwidthstatisticsmediacontainer.md create mode 100644 docs/models/operations/getbandwidthstatisticsrequest.md create mode 100644 docs/models/operations/getbandwidthstatisticsresponse.md create mode 100644 docs/models/operations/getbandwidthstatisticsresponsebody.md create mode 100644 docs/models/operations/getresourcesstatisticsmediacontainer.md create mode 100644 docs/models/operations/getresourcesstatisticsrequest.md create mode 100644 docs/models/operations/getresourcesstatisticsresponse.md create mode 100644 docs/models/operations/getresourcesstatisticsresponsebody.md create mode 100644 docs/models/operations/getsessionhistoryrequest.md create mode 100644 docs/models/operations/getsessionsuser.md create mode 100644 docs/models/operations/gettopwatchedcontentcountry.md create mode 100644 docs/models/operations/gettopwatchedcontentgenre.md create mode 100644 docs/models/operations/gettopwatchedcontentguids.md create mode 100644 docs/models/operations/gettopwatchedcontentmediacontainer.md create mode 100644 docs/models/operations/gettopwatchedcontentmetadata.md create mode 100644 docs/models/operations/gettopwatchedcontentrequest.md create mode 100644 docs/models/operations/gettopwatchedcontentresponse.md create mode 100644 docs/models/operations/gettopwatchedcontentresponsebody.md create mode 100644 docs/models/operations/gettopwatchedcontentrole.md create mode 100644 docs/models/operations/librarysectionid.md create mode 100644 docs/models/operations/pathparamfilter.md create mode 100644 docs/models/operations/statisticsbandwidth.md create mode 100644 docs/models/operations/statisticsresources.md create mode 100644 src/plex_api/models/errors/getbandwidthstatistics.py create mode 100644 src/plex_api/models/errors/getresourcesstatistics.py create mode 100644 src/plex_api/models/operations/getbandwidthstatistics.py create mode 100644 src/plex_api/models/operations/getresourcesstatistics.py create mode 100644 src/plex_api/models/operations/gettopwatchedcontent.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 9147a2d..ddb126b 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: 37654ea0982ab5e87a9a9576014c9d19 + docChecksum: e73920abd3a55e8d249592f2e3090574 docVersion: 0.0.3 - speakeasyVersion: 1.308.1 - generationVersion: 2.342.6 - releaseVersion: 0.9.0 - configChecksum: d85cf2b27a6bc9ff213089b7d202adf0 + speakeasyVersion: 1.314.2 + generationVersion: 2.349.6 + releaseVersion: 0.10.0 + configChecksum: d3ab7f558ab12fa30efdcad9275e01b2 repoURL: https://github.com/LukeHagar/plexpy.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexpy.git @@ -15,7 +15,7 @@ features: python: additionalDependencies: 0.1.0 constsAndDefaults: 0.1.3 - core: 4.6.11 + core: 4.6.13 flattening: 2.81.1 globalSecurity: 2.83.5 globalSecurityCallbacks: 0.1.0 @@ -24,9 +24,11 @@ features: globals: 2.82.1 methodServerURLs: 2.82.1 nameOverrides: 2.81.2 + nullables: 0.1.0 responseFormat: 0.1.0 sdkHooks: 0.1.0 typeOverrides: 2.81.1 + unions: 2.82.8 generatedFiles: - src/plex_api/sdkconfiguration.py - src/plex_api/server.py @@ -46,7 +48,6 @@ generatedFiles: - src/plex_api/updater.py - src/plex_api/watchlist.py - src/plex_api/sdk.py - - Makefile - py.typed - pylintrc - scripts/publish.sh @@ -94,6 +95,7 @@ generatedFiles: - src/plex_api/models/operations/searchlibrary.py - src/plex_api/models/operations/getmetadata.py - src/plex_api/models/operations/getmetadatachildren.py + - src/plex_api/models/operations/gettopwatchedcontent.py - src/plex_api/models/operations/getondeck.py - src/plex_api/models/operations/logline.py - src/plex_api/models/operations/logmultiline.py @@ -110,6 +112,8 @@ generatedFiles: - src/plex_api/models/operations/gettransienttoken.py - src/plex_api/models/operations/getsourceconnectioninformation.py - src/plex_api/models/operations/getstatistics.py + - src/plex_api/models/operations/getresourcesstatistics.py + - src/plex_api/models/operations/getbandwidthstatistics.py - src/plex_api/models/operations/getsessions.py - src/plex_api/models/operations/getsessionhistory.py - src/plex_api/models/operations/gettranscodesessions.py @@ -172,6 +176,8 @@ generatedFiles: - src/plex_api/models/errors/gettransienttoken.py - src/plex_api/models/errors/getsourceconnectioninformation.py - src/plex_api/models/errors/getstatistics.py + - src/plex_api/models/errors/getresourcesstatistics.py + - src/plex_api/models/errors/getbandwidthstatistics.py - src/plex_api/models/errors/getsessions.py - src/plex_api/models/errors/getsessionhistory.py - src/plex_api/models/errors/gettranscodesessions.py @@ -331,6 +337,7 @@ generatedFiles: - docs/models/operations/deletelibraryresponse.md - docs/models/operations/tag.md - docs/models/operations/getlibraryitemsrequest.md + - docs/models/operations/librarysectionid.md - docs/models/operations/getlibraryitemspart.md - docs/models/operations/getlibraryitemsmedia.md - docs/models/operations/getlibraryitemsgenre.md @@ -372,6 +379,16 @@ generatedFiles: - docs/models/operations/getmetadatachildrenmediacontainer.md - docs/models/operations/getmetadatachildrenresponsebody.md - docs/models/operations/getmetadatachildrenresponse.md + - docs/models/operations/gettopwatchedcontentrequest.md + - docs/models/operations/gettopwatchedcontentgenre.md + - docs/models/operations/gettopwatchedcontentcountry.md + - docs/models/operations/gettopwatchedcontentguids.md + - docs/models/operations/gettopwatchedcontentrole.md + - docs/models/operations/user.md + - docs/models/operations/gettopwatchedcontentmetadata.md + - docs/models/operations/gettopwatchedcontentmediacontainer.md + - docs/models/operations/gettopwatchedcontentresponsebody.md + - docs/models/operations/gettopwatchedcontentresponse.md - docs/models/operations/getondeckstream.md - docs/models/operations/getondeckpart.md - docs/models/operations/getondeckmedia.md @@ -443,16 +460,30 @@ generatedFiles: - docs/models/operations/getstatisticsmediacontainer.md - docs/models/operations/getstatisticsresponsebody.md - docs/models/operations/getstatisticsresponse.md + - docs/models/operations/getresourcesstatisticsrequest.md + - docs/models/operations/statisticsresources.md + - docs/models/operations/getresourcesstatisticsmediacontainer.md + - docs/models/operations/getresourcesstatisticsresponsebody.md + - docs/models/operations/getresourcesstatisticsresponse.md + - docs/models/operations/getbandwidthstatisticsrequest.md + - docs/models/operations/getbandwidthstatisticsdevice.md + - docs/models/operations/getbandwidthstatisticsaccount.md + - docs/models/operations/statisticsbandwidth.md + - docs/models/operations/getbandwidthstatisticsmediacontainer.md + - docs/models/operations/getbandwidthstatisticsresponsebody.md + - docs/models/operations/getbandwidthstatisticsresponse.md - docs/models/operations/getsessionsstream.md - docs/models/operations/getsessionspart.md - docs/models/operations/getsessionsmedia.md - - docs/models/operations/user.md + - docs/models/operations/getsessionsuser.md - docs/models/operations/player.md - docs/models/operations/session.md - docs/models/operations/getsessionsmetadata.md - docs/models/operations/getsessionsmediacontainer.md - docs/models/operations/getsessionsresponsebody.md - docs/models/operations/getsessionsresponse.md + - docs/models/operations/filter_.md + - docs/models/operations/getsessionhistoryrequest.md - docs/models/operations/getsessionhistorymetadata.md - docs/models/operations/getsessionhistorymediacontainer.md - docs/models/operations/getsessionhistoryresponsebody.md @@ -474,7 +505,7 @@ generatedFiles: - docs/models/operations/skip.md - docs/models/operations/applyupdatesrequest.md - docs/models/operations/applyupdatesresponse.md - - docs/models/operations/filter_.md + - docs/models/operations/pathparamfilter.md - docs/models/operations/libtype.md - docs/models/operations/includecollections.md - docs/models/operations/includeexternalmedia.md @@ -591,6 +622,10 @@ generatedFiles: - docs/models/errors/getsourceconnectioninformationresponsebody.md - docs/models/errors/getstatisticserrors.md - docs/models/errors/getstatisticsresponsebody.md + - docs/models/errors/getresourcesstatisticserrors.md + - docs/models/errors/getresourcesstatisticsresponsebody.md + - docs/models/errors/getbandwidthstatisticserrors.md + - docs/models/errors/getbandwidthstatisticsresponsebody.md - docs/models/errors/getsessionserrors.md - docs/models/errors/getsessionsresponsebody.md - docs/models/errors/getsessionhistoryerrors.md diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 5595b02..e4a76c2 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -12,7 +12,7 @@ generation: auth: oAuth2ClientCredentialsEnabled: false python: - version: 0.9.0 + version: 0.10.0 additionalDependencies: dependencies: {} extraDependencies: @@ -36,3 +36,4 @@ python: packageName: plex-api-client projectUrls: {} responseFormat: envelope + templateVersion: v1 diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 9339a66..e374b31 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.308.1 sources: my-source: sourceNamespace: my-source - sourceRevisionDigest: sha256:81f7f998cfe018fdd7d478087dd59f1ba5b42fe34c83e644b84219fc32289522 - sourceBlobDigest: sha256:08634d44bed62921029e6a3ef66e9007734e0cd69163e144d07f9688dc752c7a + sourceRevisionDigest: sha256:d2ac21a5a9bdf30abc0674d57086961dd0c63057c2a6f15d8646b38ebd6e70d8 + sourceBlobDigest: sha256:5dc7702ea13445e7f12bb06b44f6ab67d67f0383b9bff2979405e22dffa79888 tags: - latest - main @@ -11,8 +11,8 @@ targets: plexpy: source: my-source sourceNamespace: my-source - sourceRevisionDigest: sha256:81f7f998cfe018fdd7d478087dd59f1ba5b42fe34c83e644b84219fc32289522 - sourceBlobDigest: sha256:08634d44bed62921029e6a3ef66e9007734e0cd69163e144d07f9688dc752c7a + sourceRevisionDigest: sha256:d2ac21a5a9bdf30abc0674d57086961dd0c63057c2a6f15d8646b38ebd6e70d8 + sourceBlobDigest: sha256:5dc7702ea13445e7f12bb06b44f6ab67d67f0383b9bff2979405e22dffa79888 outLocation: /github/workspace/repo workflow: workflowVersion: 1.0.0 diff --git a/Makefile b/Makefile deleted file mode 100644 index 5db216a..0000000 --- a/Makefile +++ /dev/null @@ -1,6 +0,0 @@ - -.PHONY: * -SHELL := bash - -publish: - ./scripts/publish.sh \ No newline at end of file diff --git a/README.md b/README.md index 324c081..58e8592 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ if res.object is not None: ### [server](docs/sdks/server/README.md) -* [get_server_capabilities](docs/sdks/server/README.md#get_server_capabilities) - Server Capabilities +* [get_server_capabilities](docs/sdks/server/README.md#get_server_capabilities) - Get Server Capabilities * [get_server_preferences](docs/sdks/server/README.md#get_server_preferences) - Get Server Preferences * [get_available_clients](docs/sdks/server/README.md#get_available_clients) - Get Available Clients * [get_devices](docs/sdks/server/README.md#get_devices) - Get Devices @@ -105,6 +105,7 @@ if res.object is not None: * [search_library](docs/sdks/library/README.md#search_library) - Search Library * [get_metadata](docs/sdks/library/README.md#get_metadata) - Get Items Metadata * [get_metadata_children](docs/sdks/library/README.md#get_metadata_children) - Get Items Children +* [get_top_watched_content](docs/sdks/library/README.md#get_top_watched_content) - Get Top Watched Content * [get_on_deck](docs/sdks/library/README.md#get_on_deck) - Get On Deck ### [log](docs/sdks/log/README.md) @@ -133,6 +134,8 @@ if res.object is not None: ### [statistics](docs/sdks/statistics/README.md) * [get_statistics](docs/sdks/statistics/README.md#get_statistics) - Get Media Statistics +* [get_resources_statistics](docs/sdks/statistics/README.md#get_resources_statistics) - Get Resources Statistics +* [get_bandwidth_statistics](docs/sdks/statistics/README.md#get_bandwidth_statistics) - Get Bandwidth Statistics ### [sessions](docs/sdks/sessions/README.md) @@ -319,18 +322,18 @@ if res.object is not None: ## Global Parameters -A parameter is configured globally. This parameter must be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed. +A parameter is configured globally. This parameter may be set on the SDK client instance itself during initialization. When configured as an option during SDK initialization, This global value will be used as the default on the operations that use it. When such operations are called, there is a place in each to override the global value, if needed. For example, you can set `X-Plex-Client-Identifier` to `'Postman'` at SDK initialization and then you do not have to pass the same value on calls to operations like `get_pin`. But if you want to do so you may, which will locally override the global setting. See the example code below for a demonstration. ### Available Globals -The following global parameter is available. The required parameter must be set when you initialize the SDK client. +The following global parameter is available. | Name | Type | Required | Description | | ---- | ---- |:--------:| ----------- | -| x_plex_client_identifier | str | ✔️ | The unique identifier for the client application +| x_plex_client_identifier | str | | 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) | diff --git a/RELEASES.md b/RELEASES.md index abe28ab..5fb36af 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -618,4 +618,14 @@ Based on: ### Generated - [python v0.9.0] . ### Releases -- [PyPI v0.9.0] https://pypi.org/project/plex-api-client/0.9.0 - . \ No newline at end of file +- [PyPI v0.9.0] https://pypi.org/project/plex-api-client/0.9.0 - . + +## 2024-06-22 00:22:03 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.314.2 (2.349.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.10.0] . +### Releases +- [PyPI v0.10.0] https://pypi.org/project/plex-api-client/0.10.0 - . \ No newline at end of file diff --git a/codeSamples.yaml b/codeSamples.yaml index 7388fcc..1a6725e 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -3,68 +3,11 @@ info: title: CodeSamples overlay for python target version: 0.0.0 actions: - - target: $["paths"]["/activities"]["get"] + - target: $["paths"]["/playlists/upload"]["post"] update: x-codeSamples: - lang: python - label: getServerActivities - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.activities.get_server_activities() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] - update: - x-codeSamples: - - lang: python - label: getMetadata - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_metadata(rating_key=8382.31) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/home"]["get"] - update: - x-codeSamples: - - lang: python - label: getHomeData - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.plex.get_home_data() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/hubs"]["get"] - update: - x-codeSamples: - - lang: python - label: getGlobalHubs + label: uploadPlaylist source: |- import plex_api from plex_api.models import operations @@ -75,36 +18,35 @@ actions: ) - res = s.hubs.get_global_hubs(count=1262.49, only_transient=operations.OnlyTransient.ONE) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/updater/apply"]["put"] - update: - x-codeSamples: - - lang: python - label: applyUpdates - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.updater.apply_updates(tonight=operations.Tonight.ONE, skip=operations.Skip.ONE) + res = s.playlists.upload_playlist(path='/home/barkley/playlist.m3u', force=operations.Force.ZERO) if res is not None: # handle response pass - - target: $["paths"]["/butler/{taskName}"]["delete"] + - target: $["paths"]["/security/resources"]["get"] update: x-codeSamples: - lang: python - label: stopTask + label: getSourceConnectionInformation + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.authentication.get_source_connection_information(source='server://client-identifier') + + if res is not None: + # handle response + pass + - target: $["paths"]["/photo/:/transcode"]["get"] + update: + x-codeSamples: + - lang: python + label: getResizedPhoto source: |- import plex_api from plex_api.models import operations @@ -115,16 +57,24 @@ actions: ) - res = s.butler.stop_task(task_name=operations.PathParamTaskName.BACKUP_DATABASE) + res = s.server.get_resized_photo(request=operations.GetResizedPhotoRequest( + width=110, + height=165, + opacity=100, + blur=20, + min_size=operations.MinSize.ONE, + upscale=operations.Upscale.ZERO, + url='/library/metadata/49564/thumb/1654258204', + )) if res is not None: # handle response pass - - target: $["paths"]["/log/networked"]["get"] + - target: $["paths"]["/servers"]["get"] update: x-codeSamples: - lang: python - label: enablePaperTrail + label: getServerList source: |- import plex_api @@ -134,31 +84,49 @@ actions: ) - res = s.log.enable_paper_trail() - - if res is not None: - # handle response - pass - - target: $["paths"]["/playlists"]["get"] - update: - x-codeSamples: - - lang: python - label: getPlaylists - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.get_playlists(playlist_type=operations.PlaylistType.AUDIO, smart=operations.QueryParamSmart.ZERO) + res = s.server.get_server_list() if res.object is not None: # handle response pass + - target: $["paths"]["/library/sections/{sectionId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: deleteLibrary + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.delete_library(section_id=1000) + + if res is not None: + # handle response + pass + - target: $["paths"]["/playlists/{playlistID}"]["delete"] + update: + x-codeSamples: + - lang: python + label: deletePlaylist + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.delete_playlist(playlist_id=216.22) + + if res is not None: + # handle response + pass - target: $["paths"]["/playlists/{playlistID}/items"]["put"] update: x-codeSamples: @@ -175,261 +143,6 @@ actions: res = s.playlists.add_playlist_contents(playlist_id=8502.01, uri='server://12345/com.plexapp.plugins.library/library/metadata/1', play_queue_id=123) - if res.object is not None: - # handle response - pass - - target: $["paths"]["/security/token"]["get"] - update: - x-codeSamples: - - lang: python - label: getTransientToken - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.authentication.get_transient_token(type=operations.GetTransientTokenQueryParamType.DELEGATION, scope=operations.Scope.ALL) - - if res is not None: - # handle response - pass - - target: $["paths"]["/transcode/sessions"]["get"] - update: - x-codeSamples: - - lang: python - label: getTranscodeSessions - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.sessions.get_transcode_sessions() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/devices"]["get"] - update: - x-codeSamples: - - lang: python - label: getDevices - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_devices() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/:/unscrobble"]["get"] - update: - x-codeSamples: - - lang: python - label: markUnplayed - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.media.mark_unplayed(key=59398) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/sections"]["get"] - update: - x-codeSamples: - - lang: python - label: getLibraries - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_libraries() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}"]["put"] - update: - x-codeSamples: - - lang: python - label: updatePlaylist - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.update_playlist(playlist_id=3915, title='', summary='') - - if res is not None: - # handle response - pass - - target: $["paths"]["/:/scrobble"]["get"] - update: - x-codeSamples: - - lang: python - label: markPlayed - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.media.mark_played(key=59398) - - if res is not None: - # handle response - pass - - target: $["paths"]["/hubs/search/voice"]["get"] - update: - x-codeSamples: - - lang: python - label: performVoiceSearch - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.search.perform_voice_search(query='dead+poop', section_id=4094.8, limit=5) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/sections/{sectionId}/{tag}"]["get"] - update: - x-codeSamples: - - lang: python - label: getLibraryItems - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_library_items(section_id='', tag=operations.Tag.GENRE) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists"]["post"] - update: - x-codeSamples: - - lang: python - label: createPlaylist - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.create_playlist(request=operations.CreatePlaylistRequest( - title='', - type=operations.QueryParamType.PHOTO, - smart=operations.Smart.ONE, - uri='https://inborn-brochure.biz', - )) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/identity"]["get"] - update: - x-codeSamples: - - lang: python - label: getServerIdentity - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_server_identity() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/:/progress"]["post"] - update: - x-codeSamples: - - lang: python - label: updatePlayProgress - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.media.update_play_progress(key='', time=90000, state='played') - - if res is not None: - # handle response - pass - - target: $["paths"]["/butler"]["get"] - update: - x-codeSamples: - - lang: python - label: getButlerTasks - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.butler.get_butler_tasks() - if res.object is not None: # handle response pass @@ -470,11 +183,89 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/updater/check"]["put"] + - target: $["paths"]["/hubs/search"]["get"] update: x-codeSamples: - lang: python - label: checkForUpdates + label: performSearch + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.search.perform_search(query='dylan', section_id=1516.53, limit=5) + + if res is not None: + # handle response + pass + - target: $["paths"]["/playlists/{playlistID}"]["get"] + update: + x-codeSamples: + - lang: python + label: getPlaylist + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.get_playlist(playlist_id=4109.48) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/log"]["post"] + update: + x-codeSamples: + - lang: python + label: logMultiLine + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.log.log_multi_line(request='level=4&message=Test%20message%201&source=postman + level=3&message=Test%20message%202&source=postman + level=1&message=Test%20message%203&source=postman') + + if res is not None: + # handle response + pass + - target: $["paths"]["/log/networked"]["get"] + update: + x-codeSamples: + - lang: python + label: enablePaperTrail + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.log.enable_paper_trail() + + if res is not None: + # handle response + pass + - target: $["paths"]["/playlists"]["post"] + update: + x-codeSamples: + - lang: python + label: createPlaylist source: |- import plex_api from plex_api.models import operations @@ -485,16 +276,21 @@ actions: ) - res = s.updater.check_for_updates(download=operations.Download.ONE) + res = s.playlists.create_playlist(request=operations.CreatePlaylistRequest( + title='', + type=operations.QueryParamType.PHOTO, + smart=operations.Smart.ONE, + uri='https://inborn-brochure.biz', + )) - if res is not None: + if res.object is not None: # handle response pass - - target: $["paths"]["/myplex/account"]["get"] + - target: $["paths"]["/statistics/resources"]["get"] update: x-codeSamples: - lang: python - label: getMyPlexAccount + label: getResourcesStatistics source: |- import plex_api @@ -504,7 +300,26 @@ actions: ) - res = s.server.get_my_plex_account() + res = s.statistics.get_resources_statistics(timespan=4) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/updater/status"]["get"] + update: + x-codeSamples: + - lang: python + label: getUpdateStatus + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.updater.get_update_status() if res.object is not None: # handle response @@ -528,11 +343,11 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/butler/{taskName}"]["post"] + - target: $["paths"]["/hubs"]["get"] update: x-codeSamples: - lang: python - label: startTask + label: getGlobalHubs source: |- import plex_api from plex_api.models import operations @@ -543,36 +358,35 @@ actions: ) - res = s.butler.start_task(task_name=operations.TaskName.CLEAN_OLD_BUNDLES) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/sections/{sectionId}/search"]["get"] - update: - x-codeSamples: - - lang: python - label: searchLibrary - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.search_library(section_id=933505, type=operations.Type.FOUR) + res = s.hubs.get_global_hubs(count=1262.49, only_transient=operations.OnlyTransient.ONE) if res.object is not None: # handle response pass - - target: $["paths"]["/playlists/upload"]["post"] + - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] update: x-codeSamples: - lang: python - label: uploadPlaylist + label: getMetadataChildren + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_metadata_children(rating_key=1539.14, include_elements='') + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/sections/watchlist/{filter}"]["get"] + update: + x-codeSamples: + - lang: python + label: getWatchlist source: |- import plex_api from plex_api.models import operations @@ -583,16 +397,90 @@ actions: ) - res = s.playlists.upload_playlist(path='/home/barkley/playlist.m3u', force=operations.Force.ZERO) + res = s.watchlist.get_watchlist(request=operations.GetWatchlistRequest( + filter_=operations.PathParamFilter.RELEASED, + x_plex_token='', + )) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/:/timeline"]["get"] + update: + x-codeSamples: + - lang: python + label: getTimeline + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.video.get_timeline(request=operations.GetTimelineRequest( + rating_key=23409, + key='/library/metadata/23409', + state=operations.State.PLAYING, + has_mde=1, + time=2000, + duration=10000, + context='home:hub.continueWatching', + play_queue_item_id=1, + play_back_time=2000, + row=1, + )) if res is not None: # handle response pass - - target: $["paths"]["/transcode/sessions/{sessionKey}"]["delete"] + - target: $["paths"]["/butler/{taskName}"]["delete"] update: x-codeSamples: - lang: python - label: stopTranscodeSession + label: stopTask + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.butler.stop_task(task_name=operations.PathParamTaskName.BACKUP_DATABASE) + + if res is not None: + # handle response + pass + - target: $["paths"]["/playlists"]["get"] + update: + x-codeSamples: + - lang: python + label: getPlaylists + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.get_playlists(playlist_type=operations.PlaylistType.AUDIO, smart=operations.QueryParamSmart.ZERO) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/myplex/account"]["get"] + update: + x-codeSamples: + - lang: python + label: getMyPlexAccount source: |- import plex_api @@ -602,7 +490,198 @@ actions: ) - res = s.sessions.stop_transcode_session(session_key='zz7llzqlx8w9vnrsbnwhbmep') + res = s.server.get_my_plex_account() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/sections/{sectionId}"]["get"] + update: + x-codeSamples: + - lang: python + label: getLibrary + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_library(section_id=1000, include_details=operations.IncludeDetails.ZERO) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/onDeck"]["get"] + update: + x-codeSamples: + - lang: python + label: getOnDeck + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_on_deck() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/status/sessions"]["get"] + update: + x-codeSamples: + - lang: python + label: getSessions + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.sessions.get_sessions() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/transcode/sessions"]["get"] + update: + x-codeSamples: + - lang: python + label: getTranscodeSessions + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.sessions.get_transcode_sessions() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/pins"]["post"] + update: + x-codeSamples: + - lang: python + label: getPin + source: |- + import plex_api + + s = plex_api.PlexAPI( + x_plex_client_identifier='Postman', + ) + + + res = s.plex.get_pin(x_plex_product='Postman', strong=False, x_plex_client_identifier='Postman') + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/sections"]["get"] + update: + x-codeSamples: + - lang: python + label: getLibraries + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_libraries() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/statistics/bandwidth"]["get"] + update: + x-codeSamples: + - lang: python + label: getBandwidthStatistics + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.statistics.get_bandwidth_statistics(timespan=4) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] + update: + x-codeSamples: + - lang: python + label: clearPlaylistContents + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.playlists.clear_playlist_contents(playlist_id=1893.18) + + if res is not None: + # handle response + pass + - target: $["paths"]["/status/sessions/history/all"]["get"] + update: + x-codeSamples: + - lang: python + label: getSessionHistory + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.sessions.get_session_history(sort='', account_id=1, filter_=operations.Filter(), library_section_id=12) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/activities/{activityUUID}"]["delete"] + update: + x-codeSamples: + - lang: python + label: cancelServerActivities + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.activities.cancel_server_activities(activity_uuid='25b71ed5-0f9d-461c-baa7-d404e9e10d3e') if res is not None: # handle response @@ -645,11 +724,11 @@ actions: if res.object is not None: # handle response pass - - target: $["paths"]["/hubs/search"]["get"] + - target: $["paths"]["/:/unscrobble"]["get"] update: x-codeSamples: - lang: python - label: performSearch + label: markUnplayed source: |- import plex_api @@ -659,16 +738,16 @@ actions: ) - res = s.search.perform_search(query='dylan', section_id=1516.53, limit=5) + res = s.media.mark_unplayed(key=59398) if res is not None: # handle response pass - - target: $["paths"]["/library/sections/{sectionId}"]["delete"] + - target: $["paths"]["/playlists/{playlistID}"]["put"] update: x-codeSamples: - lang: python - label: deleteLibrary + label: updatePlaylist source: |- import plex_api @@ -678,16 +757,56 @@ actions: ) - res = s.library.delete_library(section_id=1000) + res = s.playlists.update_playlist(playlist_id=3915, title='', summary='') if res is not None: # handle response pass - - target: $["paths"]["/servers"]["get"] + - target: $["paths"]["/updater/check"]["put"] update: x-codeSamples: - lang: python - label: getServerList + label: checkForUpdates + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.updater.check_for_updates(download=operations.Download.ONE) + + if res is not None: + # handle response + pass + - target: $["paths"]["/butler/{taskName}"]["post"] + update: + x-codeSamples: + - lang: python + label: startTask + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.butler.start_task(task_name=operations.TaskName.CLEAN_OLD_BUNDLES) + + if res is not None: + # handle response + pass + - target: $["paths"]["/library/hashes"]["get"] + update: + x-codeSamples: + - lang: python + label: getFileHash source: |- import plex_api @@ -697,16 +816,35 @@ actions: ) - res = s.server.get_server_list() + res = s.library.get_file_hash(url='file://C:\Image.png&type=13', type=4462.17) + + if res is not None: + # handle response + pass + - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] + update: + x-codeSamples: + - lang: python + label: getMetadata + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_metadata(rating_key=8382.31) if res.object is not None: # handle response pass - - target: $["paths"]["/activities/{activityUUID}"]["delete"] + - target: $["paths"]["/"]["get"] update: x-codeSamples: - lang: python - label: cancelServerActivities + label: getServerCapabilities source: |- import plex_api @@ -716,48 +854,49 @@ actions: ) - res = s.activities.cancel_server_activities(activity_uuid='25b71ed5-0f9d-461c-baa7-d404e9e10d3e') - - if res is not None: - # handle response - pass - - target: $["paths"]["/butler"]["delete"] - update: - x-codeSamples: - - lang: python - label: stopAllTasks - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.butler.stop_all_tasks() - - if res is not None: - # handle response - pass - - target: $["paths"]["/pins"]["post"] - update: - x-codeSamples: - - lang: python - label: getPin - source: |- - import plex_api - - s = plex_api.PlexAPI( - x_plex_client_identifier='Postman', - ) - - - res = s.plex.get_pin(x_plex_product='Postman', strong=False, x_plex_client_identifier='Postman') + res = s.server.get_server_capabilities() if res.object is not None: # handle response pass + - target: $["paths"]["/library/all/top"]["get"] + update: + x-codeSamples: + - lang: python + label: getTopWatchedContent + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_top_watched_content(type=505531, include_guids=1) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/transcode/sessions/{sessionKey}"]["delete"] + update: + x-codeSamples: + - lang: python + label: stopTranscodeSession + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.sessions.stop_transcode_session(session_key='zz7llzqlx8w9vnrsbnwhbmep') + + if res is not None: + # handle response + pass - target: $["paths"]["/playlists/{playlistID}/items"]["get"] update: x-codeSamples: @@ -812,243 +951,6 @@ actions: res = s.server.get_available_clients() - if res.object is not None: - # handle response - pass - - target: $["paths"]["/:/timeline"]["get"] - update: - x-codeSamples: - - lang: python - label: getTimeline - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.video.get_timeline(request=operations.GetTimelineRequest( - rating_key=23409, - key='/library/metadata/23409', - state=operations.State.PLAYING, - has_mde=1, - time=2000, - duration=10000, - context='home:hub.continueWatching', - play_queue_item_id=1, - play_back_time=2000, - row=1, - )) - - if res is not None: - # handle response - pass - - target: $["paths"]["/updater/status"]["get"] - update: - x-codeSamples: - - lang: python - label: getUpdateStatus - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.updater.get_update_status() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}"]["get"] - update: - x-codeSamples: - - lang: python - label: getPlaylist - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.get_playlist(playlist_id=4109.48) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/security/resources"]["get"] - update: - x-codeSamples: - - lang: python - label: getSourceConnectionInformation - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.authentication.get_source_connection_information(source='server://client-identifier') - - if res is not None: - # handle response - pass - - target: $["paths"]["/status/sessions"]["get"] - update: - x-codeSamples: - - lang: python - label: getSessions - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.sessions.get_sessions() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/photo/:/transcode"]["get"] - update: - x-codeSamples: - - lang: python - label: getResizedPhoto - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_resized_photo(request=operations.GetResizedPhotoRequest( - width=110, - height=165, - opacity=100, - blur=20, - min_size=operations.MinSize.ONE, - upscale=operations.Upscale.ZERO, - url='/library/metadata/49564/thumb/1654258204', - )) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/sections/{sectionId}"]["get"] - update: - x-codeSamples: - - lang: python - label: getLibrary - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_library(section_id=1000, include_details=operations.IncludeDetails.ZERO) - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/onDeck"]["get"] - update: - x-codeSamples: - - lang: python - label: getOnDeck - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_on_deck() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/log"]["post"] - update: - x-codeSamples: - - lang: python - label: logMultiLine - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.log.log_multi_line(request='level=4&message=Test%20message%201&source=postman - level=3&message=Test%20message%202&source=postman - level=1&message=Test%20message%203&source=postman') - - if res is not None: - # handle response - pass - - target: $["paths"]["/status/sessions/history/all"]["get"] - update: - x-codeSamples: - - lang: python - label: getSessionHistory - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.sessions.get_session_history() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/sections/watchlist/{filter}"]["get"] - update: - x-codeSamples: - - lang: python - label: getWatchlist - source: |- - import plex_api - from plex_api.models import operations - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.watchlist.get_watchlist(request=operations.GetWatchlistRequest( - filter_=operations.Filter.RELEASED, - x_plex_token='', - )) - if res.object is not None: # handle response pass @@ -1068,101 +970,6 @@ actions: res = s.search.get_search_results(query='110') - if res.object is not None: - # handle response - pass - - target: $["paths"]["/library/hashes"]["get"] - update: - x-codeSamples: - - lang: python - label: getFileHash - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_file_hash(url='file://C:\Image.png&type=13', type=4462.17) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/recentlyAdded"]["get"] - update: - x-codeSamples: - - lang: python - label: getRecentlyAdded - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_recently_added() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/playlists/{playlistID}"]["delete"] - update: - x-codeSamples: - - lang: python - label: deletePlaylist - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.playlists.delete_playlist(playlist_id=216.22) - - if res is not None: - # handle response - pass - - target: $["paths"]["/"]["get"] - update: - x-codeSamples: - - lang: python - label: getServerCapabilities - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_server_capabilities() - - if res.object is not None: - # handle response - pass - - target: $["paths"]["/:/prefs"]["get"] - update: - x-codeSamples: - - lang: python - label: getServerPreferences - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.server.get_server_preferences() - if res.object is not None: # handle response pass @@ -1185,11 +992,11 @@ actions: if res is not None: # handle response pass - - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] + - target: $["paths"]["/identity"]["get"] update: x-codeSamples: - lang: python - label: clearPlaylistContents + label: getServerIdentity source: |- import plex_api @@ -1199,30 +1006,68 @@ actions: ) - res = s.playlists.clear_playlist_contents(playlist_id=1893.18) - - if res is not None: - # handle response - pass - - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] - update: - x-codeSamples: - - lang: python - label: getMetadataChildren - source: |- - import plex_api - - s = plex_api.PlexAPI( - access_token="", - x_plex_client_identifier='Postman', - ) - - - res = s.library.get_metadata_children(rating_key=1539.14) + res = s.server.get_server_identity() if res.object is not None: # handle response pass + - target: $["paths"]["/activities"]["get"] + update: + x-codeSamples: + - lang: python + label: getServerActivities + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.activities.get_server_activities() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/home"]["get"] + update: + x-codeSamples: + - lang: python + label: getHomeData + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.plex.get_home_data() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/hubs/search/voice"]["get"] + update: + x-codeSamples: + - lang: python + label: performVoiceSearch + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.search.perform_voice_search(query='dead+poop', section_id=4094.8, limit=5) + + if res is not None: + # handle response + pass - target: $["paths"]["/log"]["get"] update: x-codeSamples: @@ -1243,3 +1088,216 @@ actions: if res is not None: # handle response pass + - target: $["paths"]["/:/prefs"]["get"] + update: + x-codeSamples: + - lang: python + label: getServerPreferences + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_server_preferences() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/devices"]["get"] + update: + x-codeSamples: + - lang: python + label: getDevices + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.server.get_devices() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/:/progress"]["post"] + update: + x-codeSamples: + - lang: python + label: updatePlayProgress + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.media.update_play_progress(key='', time=90000, state='played') + + if res is not None: + # handle response + pass + - target: $["paths"]["/:/scrobble"]["get"] + update: + x-codeSamples: + - lang: python + label: markPlayed + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.media.mark_played(key=59398) + + if res is not None: + # handle response + pass + - target: $["paths"]["/butler"]["delete"] + update: + x-codeSamples: + - lang: python + label: stopAllTasks + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.butler.stop_all_tasks() + + if res is not None: + # handle response + pass + - target: $["paths"]["/security/token"]["get"] + update: + x-codeSamples: + - lang: python + label: getTransientToken + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.authentication.get_transient_token(type=operations.GetTransientTokenQueryParamType.DELEGATION, scope=operations.Scope.ALL) + + if res is not None: + # handle response + pass + - target: $["paths"]["/library/sections/{sectionId}/search"]["get"] + update: + x-codeSamples: + - lang: python + label: searchLibrary + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.search_library(section_id=933505, type=operations.Type.FOUR) + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/updater/apply"]["put"] + update: + x-codeSamples: + - lang: python + label: applyUpdates + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.updater.apply_updates(tonight=operations.Tonight.ONE, skip=operations.Skip.ONE) + + if res is not None: + # handle response + pass + - target: $["paths"]["/butler"]["get"] + update: + x-codeSamples: + - lang: python + label: getButlerTasks + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.butler.get_butler_tasks() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/recentlyAdded"]["get"] + update: + x-codeSamples: + - lang: python + label: getRecentlyAdded + source: |- + import plex_api + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_recently_added() + + if res.object is not None: + # handle response + pass + - target: $["paths"]["/library/sections/{sectionId}/{tag}"]["get"] + update: + x-codeSamples: + - lang: python + label: getLibraryItems + source: |- + import plex_api + from plex_api.models import operations + + s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', + ) + + + res = s.library.get_library_items(section_id='', tag=operations.Tag.GENRE, include_guids=1) + + if res.object is not None: + # handle response + pass diff --git a/docs/models/errors/getbandwidthstatisticserrors.md b/docs/models/errors/getbandwidthstatisticserrors.md new file mode 100644 index 0000000..28a98ca --- /dev/null +++ b/docs/models/errors/getbandwidthstatisticserrors.md @@ -0,0 +1,10 @@ +# GetBandwidthStatisticsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *Optional[float]* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *Optional[float]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getbandwidthstatisticsresponsebody.md b/docs/models/errors/getbandwidthstatisticsresponsebody.md new file mode 100644 index 0000000..da8da48 --- /dev/null +++ b/docs/models/errors/getbandwidthstatisticsresponsebody.md @@ -0,0 +1,11 @@ +# GetBandwidthStatisticsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `errors` | List[[errors.GetBandwidthStatisticsErrors](../../models/errors/getbandwidthstatisticserrors.md)] | :heavy_minus_sign: | N/A | +| `raw_response` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getresourcesstatisticserrors.md b/docs/models/errors/getresourcesstatisticserrors.md new file mode 100644 index 0000000..6b8c32c --- /dev/null +++ b/docs/models/errors/getresourcesstatisticserrors.md @@ -0,0 +1,10 @@ +# GetResourcesStatisticsErrors + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `code` | *Optional[float]* | :heavy_minus_sign: | N/A | 1001 | +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | +| `status` | *Optional[float]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getresourcesstatisticsresponsebody.md b/docs/models/errors/getresourcesstatisticsresponsebody.md new file mode 100644 index 0000000..6cb0d15 --- /dev/null +++ b/docs/models/errors/getresourcesstatisticsresponsebody.md @@ -0,0 +1,11 @@ +# GetResourcesStatisticsResponseBody + +Unauthorized - Returned if the X-Plex-Token is missing from the header or query. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `errors` | List[[errors.GetResourcesStatisticsErrors](../../models/errors/getresourcesstatisticserrors.md)] | :heavy_minus_sign: | N/A | +| `raw_response` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/internal/globals.md b/docs/models/internal/globals.md index 12201d3..e2265e6 100644 --- a/docs/models/internal/globals.md +++ b/docs/models/internal/globals.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `x_plex_client_identifier` | *str* | :heavy_check_mark: | 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)
| Postman | \ No newline at end of file +| `x_plex_client_identifier` | *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)
| Postman | \ No newline at end of file diff --git a/docs/models/operations/filter_.md b/docs/models/operations/filter_.md index 2736d3d..6b3af5a 100644 --- a/docs/models/operations/filter_.md +++ b/docs/models/operations/filter_.md @@ -1,12 +1,11 @@ # Filter -Filter +Filters content by field and direction/equality +(Unknown if viewedAt is the only supported column) -## Values -| Name | Value | -| ----------- | ----------- | -| `ALL` | all | -| `AVAILABLE` | available | -| `RELEASED` | released | \ No newline at end of file +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsaccount.md b/docs/models/operations/getbandwidthstatisticsaccount.md new file mode 100644 index 0000000..1fa06e8 --- /dev/null +++ b/docs/models/operations/getbandwidthstatisticsaccount.md @@ -0,0 +1,15 @@ +# GetBandwidthStatisticsAccount + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 238960586 | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /accounts/238960586 | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Diane | +| `default_audio_language` | *Optional[str]* | :heavy_minus_sign: | N/A | en | +| `auto_select_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `default_subtitle_language` | *Optional[str]* | :heavy_minus_sign: | N/A | en | +| `subtitle_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsdevice.md b/docs/models/operations/getbandwidthstatisticsdevice.md new file mode 100644 index 0000000..55b4f8b --- /dev/null +++ b/docs/models/operations/getbandwidthstatisticsdevice.md @@ -0,0 +1,12 @@ +# GetBandwidthStatisticsDevice + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 208 | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Roku Express | +| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Roku | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 793095d235660625108ef785cc7646e9 | +| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1706470556 | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsmediacontainer.md b/docs/models/operations/getbandwidthstatisticsmediacontainer.md new file mode 100644 index 0000000..9c34355 --- /dev/null +++ b/docs/models/operations/getbandwidthstatisticsmediacontainer.md @@ -0,0 +1,11 @@ +# GetBandwidthStatisticsMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 5497 | +| `device` | List[[operations.GetBandwidthStatisticsDevice](../../models/operations/getbandwidthstatisticsdevice.md)] | :heavy_minus_sign: | N/A | | +| `account` | List[[operations.GetBandwidthStatisticsAccount](../../models/operations/getbandwidthstatisticsaccount.md)] | :heavy_minus_sign: | N/A | | +| `statistics_bandwidth` | List[[operations.StatisticsBandwidth](../../models/operations/statisticsbandwidth.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsrequest.md b/docs/models/operations/getbandwidthstatisticsrequest.md new file mode 100644 index 0000000..a107856 --- /dev/null +++ b/docs/models/operations/getbandwidthstatisticsrequest.md @@ -0,0 +1,8 @@ +# GetBandwidthStatisticsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsresponse.md b/docs/models/operations/getbandwidthstatisticsresponse.md new file mode 100644 index 0000000..559c930 --- /dev/null +++ b/docs/models/operations/getbandwidthstatisticsresponse.md @@ -0,0 +1,11 @@ +# GetBandwidthStatisticsResponse + + +## 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` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetBandwidthStatisticsResponseBody]](../../models/operations/getbandwidthstatisticsresponsebody.md) | :heavy_minus_sign: | Bandwidth Statistics | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsresponsebody.md b/docs/models/operations/getbandwidthstatisticsresponsebody.md new file mode 100644 index 0000000..5ae18ba --- /dev/null +++ b/docs/models/operations/getbandwidthstatisticsresponsebody.md @@ -0,0 +1,10 @@ +# GetBandwidthStatisticsResponseBody + +Bandwidth Statistics + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetBandwidthStatisticsMediaContainer]](../../models/operations/getbandwidthstatisticsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmediacontainer.md b/docs/models/operations/getlibraryitemsmediacontainer.md index 5df748f..c29c2c2 100644 --- a/docs/models/operations/getlibraryitemsmediacontainer.md +++ b/docs/models/operations/getlibraryitemsmediacontainer.md @@ -9,7 +9,7 @@ | `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | | `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/resources/movie-fanart.jpg | | `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `library_section_id` | [Optional[operations.LibrarySectionID]](../../models/operations/librarysectionid.md) | :heavy_minus_sign: | N/A | | | `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 | | `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | diff --git a/docs/models/operations/getlibraryitemsrequest.md b/docs/models/operations/getlibraryitemsrequest.md index 76537ba..c7ecabb 100644 --- a/docs/models/operations/getlibraryitemsrequest.md +++ b/docs/models/operations/getlibraryitemsrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `section_id` | *Any* | :heavy_check_mark: | the Id of the library to query | -| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `section_id` | *Any* | :heavy_check_mark: | the Id of the library to query | | +| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | | +| `include_guids` | *Optional[int]* | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrenrequest.md b/docs/models/operations/getmetadatachildrenrequest.md index 3ccf8f4..56e29d9 100644 --- a/docs/models/operations/getmetadatachildrenrequest.md +++ b/docs/models/operations/getmetadatachildrenrequest.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `rating_key` | *float* | :heavy_check_mark: | the id of the library item to return the children of. | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `rating_key` | *float* | :heavy_check_mark: | the id of the library item to return the children of. | +| `include_elements` | *Optional[str]* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)
| \ No newline at end of file diff --git a/docs/models/operations/getpinglobals.md b/docs/models/operations/getpinglobals.md index 7a124dd..519d677 100644 --- a/docs/models/operations/getpinglobals.md +++ b/docs/models/operations/getpinglobals.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `x_plex_client_identifier` | *str* | :heavy_check_mark: | 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)
| Postman | \ No newline at end of file +| `x_plex_client_identifier` | *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)
| Postman | \ No newline at end of file diff --git a/docs/models/operations/getpinresponsebody.md b/docs/models/operations/getpinresponsebody.md index d43e096..c912ecd 100644 --- a/docs/models/operations/getpinresponsebody.md +++ b/docs/models/operations/getpinresponsebody.md @@ -18,4 +18,4 @@ The Pin | `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2023-04-12 17:00:03 +0000 UTC | | `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2023-04-12 17:30:03 +0000 UTC | | `auth_token` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `new_registration` | *Optional[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file +| `new_registration` | *Optional[bool]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsmediacontainer.md b/docs/models/operations/getresourcesstatisticsmediacontainer.md new file mode 100644 index 0000000..eeb4f50 --- /dev/null +++ b/docs/models/operations/getresourcesstatisticsmediacontainer.md @@ -0,0 +1,9 @@ +# GetResourcesStatisticsMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 5497 | +| `statistics_resources` | List[[operations.StatisticsResources](../../models/operations/statisticsresources.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsrequest.md b/docs/models/operations/getresourcesstatisticsrequest.md new file mode 100644 index 0000000..26c1a52 --- /dev/null +++ b/docs/models/operations/getresourcesstatisticsrequest.md @@ -0,0 +1,8 @@ +# GetResourcesStatisticsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsresponse.md b/docs/models/operations/getresourcesstatisticsresponse.md new file mode 100644 index 0000000..aa219c2 --- /dev/null +++ b/docs/models/operations/getresourcesstatisticsresponse.md @@ -0,0 +1,11 @@ +# GetResourcesStatisticsResponse + + +## 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` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetResourcesStatisticsResponseBody]](../../models/operations/getresourcesstatisticsresponsebody.md) | :heavy_minus_sign: | Resource Statistics | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsresponsebody.md b/docs/models/operations/getresourcesstatisticsresponsebody.md new file mode 100644 index 0000000..4f0df8e --- /dev/null +++ b/docs/models/operations/getresourcesstatisticsresponsebody.md @@ -0,0 +1,10 @@ +# GetResourcesStatisticsResponseBody + +Resource Statistics + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetResourcesStatisticsMediaContainer]](../../models/operations/getresourcesstatisticsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsessionhistoryrequest.md b/docs/models/operations/getsessionhistoryrequest.md new file mode 100644 index 0000000..3a05ca4 --- /dev/null +++ b/docs/models/operations/getsessionhistoryrequest.md @@ -0,0 +1,11 @@ +# GetSessionHistoryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sort` | *Optional[str]* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)
| | +| `account_id` | *Optional[int]* | :heavy_minus_sign: | Filter results by those that are related to a specific users id
| 1 | +| `filter_` | [Optional[operations.Filter]](../../models/operations/filter_.md) | :heavy_minus_sign: | Filters content by field and direction/equality
(Unknown if viewedAt is the only supported column)
| {
"viewed-at-greater-than": {
"value": "viewedAt\u003e"
},
"viewed-at-greater-than-or-equal-to": {
"value": "viewedAt\u003e=\u003e"
},
"viewed-at-less-than": {
"value": "viewedAt\u003c"
}
} | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | Filters the results based on the id of a valid library section
| 12 | \ No newline at end of file diff --git a/docs/models/operations/getsessionsmetadata.md b/docs/models/operations/getsessionsmetadata.md index 9ed97c3..0221f20 100644 --- a/docs/models/operations/getsessionsmetadata.md +++ b/docs/models/operations/getsessionsmetadata.md @@ -3,42 +3,42 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705543312 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 186240 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://artist/5d07bbfd403c6402904a6480 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 39904 | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/thumb/1705310687 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Green Day | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://track/6535834f71f22f36f71a8e8f | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67085 | -| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 3 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/3 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Music | -| `music_analysis_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://album/65394d6d472b8ab03ef47f12 | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 67084 | -| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Reprise Records | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Saviors | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2024 | -| `rating_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 45885 | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 67085 | -| `session_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 203 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | The American Dream Is Killing Me | -| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | American Dream Is Killing Me | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | track | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705543314 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `media` | List[[operations.GetSessionsMedia](../../models/operations/getsessionsmedia.md)] | :heavy_minus_sign: | N/A | | -| `user` | [Optional[operations.User]](../../models/operations/user.md) | :heavy_minus_sign: | N/A | | -| `player` | [Optional[operations.Player]](../../models/operations/player.md) | :heavy_minus_sign: | N/A | | -| `session` | [Optional[operations.Session]](../../models/operations/session.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705543312 | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 186240 | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | +| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://artist/5d07bbfd403c6402904a6480 | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904 | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 39904 | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/thumb/1705310687 | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Green Day | +| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://track/6535834f71f22f36f71a8e8f | +| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67085 | +| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 3 | +| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/3 | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Music | +| `music_analysis_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://album/65394d6d472b8ab03ef47f12 | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084 | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 67084 | +| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Reprise Records | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Saviors | +| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2024 | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 45885 | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 67085 | +| `session_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 203 | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | The American Dream Is Killing Me | +| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | American Dream Is Killing Me | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | track | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705543314 | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | +| `media` | List[[operations.GetSessionsMedia](../../models/operations/getsessionsmedia.md)] | :heavy_minus_sign: | N/A | | +| `user` | [Optional[operations.GetSessionsUser]](../../models/operations/getsessionsuser.md) | :heavy_minus_sign: | N/A | | +| `player` | [Optional[operations.Player]](../../models/operations/player.md) | :heavy_minus_sign: | N/A | | +| `session` | [Optional[operations.Session]](../../models/operations/session.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsessionsuser.md b/docs/models/operations/getsessionsuser.md new file mode 100644 index 0000000..0738993 --- /dev/null +++ b/docs/models/operations/getsessionsuser.md @@ -0,0 +1,10 @@ +# GetSessionsUser + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661 | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Blindkitty38 | \ No newline at end of file diff --git a/docs/models/operations/gettokenglobals.md b/docs/models/operations/gettokenglobals.md index 45424a8..ecfb080 100644 --- a/docs/models/operations/gettokenglobals.md +++ b/docs/models/operations/gettokenglobals.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `x_plex_client_identifier` | *str* | :heavy_check_mark: | 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)
| Postman | \ No newline at end of file +| `x_plex_client_identifier` | *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)
| Postman | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentcountry.md b/docs/models/operations/gettopwatchedcontentcountry.md new file mode 100644 index 0000000..137f941 --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentcountry.md @@ -0,0 +1,10 @@ +# GetTopWatchedContentCountry + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 116 | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | country=116 | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentgenre.md b/docs/models/operations/gettopwatchedcontentgenre.md new file mode 100644 index 0000000..a13d819 --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentgenre.md @@ -0,0 +1,10 @@ +# GetTopWatchedContentGenre + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 184 | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | genre=184 | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Thriller | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentguids.md b/docs/models/operations/gettopwatchedcontentguids.md new file mode 100644 index 0000000..0aed329 --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentguids.md @@ -0,0 +1,8 @@ +# GetTopWatchedContentGuids + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | tvdb://2337 | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentmediacontainer.md b/docs/models/operations/gettopwatchedcontentmediacontainer.md new file mode 100644 index 0000000..96ca55b --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentmediacontainer.md @@ -0,0 +1,13 @@ +# GetTopWatchedContentMediaContainer + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `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[int]* | :heavy_minus_sign: | N/A | 1698860922 | +| `metadata` | List[[operations.GetTopWatchedContentMetadata](../../models/operations/gettopwatchedcontentmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentmetadata.md b/docs/models/operations/gettopwatchedcontentmetadata.md new file mode 100644 index 0000000..692e725 --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentmetadata.md @@ -0,0 +1,39 @@ +# GetTopWatchedContentMetadata + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 17 | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17 | +| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5d77683f6f4521001ea9dc53 | +| `slug` | *Optional[str]* | :heavy_minus_sign: | N/A | waterloo-road | +| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Universal Pictures | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Serenity | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | +| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | +| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. | +| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 9.1 | +| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2005 | +| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | They aim to misbehave. | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17/thumb/1705637165 | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17/art/1705637165 | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141417 | +| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2005-09-29 00:00:00 +0000 UTC | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 222 | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 100 | +| `child_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 13 | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705637164 | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705637165 | +| `global_view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 80 | +| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | +| `genre` | List[[operations.GetTopWatchedContentGenre](../../models/operations/gettopwatchedcontentgenre.md)] | :heavy_minus_sign: | N/A | | +| `country` | List[[operations.GetTopWatchedContentCountry](../../models/operations/gettopwatchedcontentcountry.md)] | :heavy_minus_sign: | N/A | | +| `guids` | List[[operations.GetTopWatchedContentGuids](../../models/operations/gettopwatchedcontentguids.md)] | :heavy_minus_sign: | N/A | | +| `role` | List[[operations.GetTopWatchedContentRole](../../models/operations/gettopwatchedcontentrole.md)] | :heavy_minus_sign: | N/A | | +| `user` | List[[operations.User](../../models/operations/user.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentrequest.md b/docs/models/operations/gettopwatchedcontentrequest.md new file mode 100644 index 0000000..d2cd03f --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentrequest.md @@ -0,0 +1,9 @@ +# GetTopWatchedContentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `type` | *int* | :heavy_check_mark: | the library type (1 - movies, 2 - shows, 3 - music) | | +| `include_guids` | *Optional[int]* | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentresponse.md b/docs/models/operations/gettopwatchedcontentresponse.md new file mode 100644 index 0000000..e3c39d5 --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentresponse.md @@ -0,0 +1,11 @@ +# GetTopWatchedContentResponse + + +## 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` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetTopWatchedContentResponseBody]](../../models/operations/gettopwatchedcontentresponsebody.md) | :heavy_minus_sign: | The metadata of the library item. | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentresponsebody.md b/docs/models/operations/gettopwatchedcontentresponsebody.md new file mode 100644 index 0000000..4861624 --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentresponsebody.md @@ -0,0 +1,10 @@ +# GetTopWatchedContentResponseBody + +The metadata of the library item. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetTopWatchedContentMediaContainer]](../../models/operations/gettopwatchedcontentmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentrole.md b/docs/models/operations/gettopwatchedcontentrole.md new file mode 100644 index 0000000..3887c4b --- /dev/null +++ b/docs/models/operations/gettopwatchedcontentrole.md @@ -0,0 +1,13 @@ +# GetTopWatchedContentRole + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 220 | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | actor=220 | +| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Dennis Keiffer | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 5d77683554f42c001f8c4708 | +| `role` | *Optional[str]* | :heavy_minus_sign: | N/A | Bar Guy (uncredited) | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg | \ No newline at end of file diff --git a/docs/models/operations/getwatchlistrequest.md b/docs/models/operations/getwatchlistrequest.md index 5b55ec3..03df5ad 100644 --- a/docs/models/operations/getwatchlistrequest.md +++ b/docs/models/operations/getwatchlistrequest.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `filter_` | [operations.Filter](../../models/operations/filter_.md) | :heavy_check_mark: | Filter | +| `filter_` | [operations.PathParamFilter](../../models/operations/pathparamfilter.md) | :heavy_check_mark: | Filter | | `x_plex_token` | *str* | :heavy_check_mark: | User Token | | `sort` | *Optional[str]* | :heavy_minus_sign: | In the format "field:dir". Available fields are "watchlistedAt" (Added At),
"titleSort" (Title), "originallyAvailableAt" (Release Date), or "rating" (Critic Rating).
"dir" can be "asc" or "desc"
| | `libtype` | [Optional[operations.Libtype]](../../models/operations/libtype.md) | :heavy_minus_sign: | The type of library to filter. Can be "movie" or "show", or all if not present.
| diff --git a/docs/models/operations/librarysectionid.md b/docs/models/operations/librarysectionid.md new file mode 100644 index 0000000..3ffb146 --- /dev/null +++ b/docs/models/operations/librarysectionid.md @@ -0,0 +1,17 @@ +# LibrarySectionID + + +## Supported Types + +### `int` + +```python +value: int = /* values here */ +``` + +### `str` + +```python +value: str = /* values here */ +``` + diff --git a/docs/models/operations/pathparamfilter.md b/docs/models/operations/pathparamfilter.md new file mode 100644 index 0000000..f3d9441 --- /dev/null +++ b/docs/models/operations/pathparamfilter.md @@ -0,0 +1,12 @@ +# PathParamFilter + +Filter + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `ALL` | all | +| `AVAILABLE` | available | +| `RELEASED` | released | \ No newline at end of file diff --git a/docs/models/operations/statisticsbandwidth.md b/docs/models/operations/statisticsbandwidth.md new file mode 100644 index 0000000..98dcd5e --- /dev/null +++ b/docs/models/operations/statisticsbandwidth.md @@ -0,0 +1,13 @@ +# StatisticsBandwidth + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `account_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 238960586 | +| `device_id` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `timespan` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | +| `at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1718387650 | +| `lan` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `bytes` | *Optional[int]* | :heavy_minus_sign: | N/A | 22 | \ No newline at end of file diff --git a/docs/models/operations/statisticsresources.md b/docs/models/operations/statisticsresources.md new file mode 100644 index 0000000..f059a31 --- /dev/null +++ b/docs/models/operations/statisticsresources.md @@ -0,0 +1,13 @@ +# StatisticsResources + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `timespan` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | +| `at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1718384427 | +| `host_cpu_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.276 | +| `process_cpu_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 0.025 | +| `host_memory_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 17.026 | +| `process_memory_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 0.493 | \ No newline at end of file diff --git a/docs/models/operations/user.md b/docs/models/operations/user.md index edba98e..8ad5b79 100644 --- a/docs/models/operations/user.md +++ b/docs/models/operations/user.md @@ -3,8 +3,6 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Blindkitty38 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 220 | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index d98ef6a..96e8b6f 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -18,6 +18,7 @@ API Calls interacting with Plex Media Server Libraries * [search_library](#search_library) - Search Library * [get_metadata](#get_metadata) - Get Items Metadata * [get_metadata_children](#get_metadata_children) - Get Items Children +* [get_top_watched_content](#get_top_watched_content) - Get Top Watched Content * [get_on_deck](#get_on_deck) - Get On Deck ## get_file_hash @@ -293,7 +294,7 @@ s = plex_api.PlexAPI( ) -res = s.library.get_library_items(section_id='', tag=operations.Tag.GENRE) +res = s.library.get_library_items(section_id='', tag=operations.Tag.GENRE, include_guids=1) if res.object is not None: # handle response @@ -303,10 +304,11 @@ if res.object is not None: ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `section_id` | *Any* | :heavy_check_mark: | the Id of the library to query | -| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `section_id` | *Any* | :heavy_check_mark: | the Id of the library to query | | +| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | | +| `include_guids` | *Optional[int]* | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | ### Response @@ -477,7 +479,7 @@ s = plex_api.PlexAPI( ) -res = s.library.get_metadata_children(rating_key=1539.14) +res = s.library.get_metadata_children(rating_key=1539.14, include_elements='') if res.object is not None: # handle response @@ -487,9 +489,10 @@ if res.object is not None: ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `rating_key` | *float* | :heavy_check_mark: | the id of the library item to return the children of. | +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `rating_key` | *float* | :heavy_check_mark: | the id of the library item to return the children of. | +| `include_elements` | *Optional[str]* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)
| ### Response @@ -502,6 +505,47 @@ if res.object is not None: | errors.GetMetadataChildrenResponseBody | 401 | application/json | | errors.SDKError | 4xx-5xx | */* | +## get_top_watched_content + +This endpoint will return the top watched content from libraries of a certain type + + +### Example Usage + +```python +import plex_api + +s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', +) + + +res = s.library.get_top_watched_content(type=505531, include_guids=1) + +if res.object is not None: + # handle response + pass + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `type` | *int* | :heavy_check_mark: | the library type (1 - movies, 2 - shows, 3 - music) | | +| `include_guids` | *Optional[int]* | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | + + +### Response + +**[operations.GetTopWatchedContentResponse](../../models/operations/gettopwatchedcontentresponse.md)** +### Errors + +| Error Object | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4xx-5xx | */* | + ## get_on_deck This endpoint will return the on deck content. diff --git a/docs/sdks/server/README.md b/docs/sdks/server/README.md index 2775b6a..c7f87ce 100644 --- a/docs/sdks/server/README.md +++ b/docs/sdks/server/README.md @@ -8,7 +8,7 @@ Operations against the Plex Media Server System. ### Available Operations -* [get_server_capabilities](#get_server_capabilities) - Server Capabilities +* [get_server_capabilities](#get_server_capabilities) - Get Server Capabilities * [get_server_preferences](#get_server_preferences) - Get Server Preferences * [get_available_clients](#get_available_clients) - Get Available Clients * [get_devices](#get_devices) - Get Devices @@ -19,7 +19,7 @@ Operations against the Plex Media Server System. ## get_server_capabilities -Server Capabilities +Get Server Capabilities ### Example Usage diff --git a/docs/sdks/sessions/README.md b/docs/sdks/sessions/README.md index 1da54d9..a4de93f 100644 --- a/docs/sdks/sessions/README.md +++ b/docs/sdks/sessions/README.md @@ -55,6 +55,7 @@ This will Retrieve a listing of all history views. ```python import plex_api +from plex_api.models import operations s = plex_api.PlexAPI( access_token="", @@ -62,7 +63,7 @@ s = plex_api.PlexAPI( ) -res = s.sessions.get_session_history() +res = s.sessions.get_session_history(sort='', account_id=1, filter_=operations.Filter(), library_section_id=12) if res.object is not None: # handle response @@ -70,6 +71,15 @@ if res.object is not None: ``` +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sort` | *Optional[str]* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)
| | +| `account_id` | *Optional[int]* | :heavy_minus_sign: | Filter results by those that are related to a specific users id
| 1 | +| `filter_` | [Optional[operations.Filter]](../../models/operations/filter_.md) | :heavy_minus_sign: | Filters content by field and direction/equality
(Unknown if viewedAt is the only supported column)
| {
"viewed-at-greater-than": {
"value": "viewedAt\u003e"
},
"viewed-at-greater-than-or-equal-to": {
"value": "viewedAt\u003e=\u003e"
},
"viewed-at-less-than": {
"value": "viewedAt\u003c"
}
} | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | Filters the results based on the id of a valid library section
| 12 | + ### Response diff --git a/docs/sdks/statistics/README.md b/docs/sdks/statistics/README.md index 36f135e..e07c308 100644 --- a/docs/sdks/statistics/README.md +++ b/docs/sdks/statistics/README.md @@ -9,6 +9,8 @@ API Calls that perform operations with Plex Media Server Statistics ### Available Operations * [get_statistics](#get_statistics) - Get Media Statistics +* [get_resources_statistics](#get_resources_statistics) - Get Resources Statistics +* [get_bandwidth_statistics](#get_bandwidth_statistics) - Get Bandwidth Statistics ## get_statistics @@ -49,3 +51,83 @@ if res.object is not None: | -------------------------------- | -------------------------------- | -------------------------------- | | errors.GetStatisticsResponseBody | 401 | application/json | | errors.SDKError | 4xx-5xx | */* | + +## get_resources_statistics + +This will return the resources for the server + +### Example Usage + +```python +import plex_api + +s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', +) + + +res = s.statistics.get_resources_statistics(timespan=4) + +if res.object is not None: + # handle response + pass + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | + + +### Response + +**[operations.GetResourcesStatisticsResponse](../../models/operations/getresourcesstatisticsresponse.md)** +### Errors + +| Error Object | Status Code | Content Type | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| errors.GetResourcesStatisticsResponseBody | 401 | application/json | +| errors.SDKError | 4xx-5xx | */* | + +## get_bandwidth_statistics + +This will return the bandwidth statistics for the server + +### Example Usage + +```python +import plex_api + +s = plex_api.PlexAPI( + access_token="", + x_plex_client_identifier='Postman', +) + + +res = s.statistics.get_bandwidth_statistics(timespan=4) + +if res.object is not None: + # handle response + pass + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | + + +### Response + +**[operations.GetBandwidthStatisticsResponse](../../models/operations/getbandwidthstatisticsresponse.md)** +### Errors + +| Error Object | Status Code | Content Type | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| errors.GetBandwidthStatisticsResponseBody | 401 | application/json | +| errors.SDKError | 4xx-5xx | */* | diff --git a/docs/sdks/watchlist/README.md b/docs/sdks/watchlist/README.md index 992e422..3c74cdc 100644 --- a/docs/sdks/watchlist/README.md +++ b/docs/sdks/watchlist/README.md @@ -27,7 +27,7 @@ s = plex_api.PlexAPI( res = s.watchlist.get_watchlist(request=operations.GetWatchlistRequest( - filter_=operations.Filter.RELEASED, + filter_=operations.PathParamFilter.RELEASED, x_plex_token='', )) diff --git a/setup.py b/setup.py index 6cf12b9..4192374 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ except FileNotFoundError: setuptools.setup( name='plex-api-client', - version='0.9.0', + version='0.10.0', author='LukeHagar', description='Python Client SDK Generated by Speakeasy', url='https://github.com/LukeHagar/plexpy.git', diff --git a/src/plex_api/library.py b/src/plex_api/library.py index 3740fe7..9c99c9f 100644 --- a/src/plex_api/library.py +++ b/src/plex_api/library.py @@ -393,7 +393,7 @@ class Library: - def get_library_items(self, section_id: Any, tag: operations.Tag) -> operations.GetLibraryItemsResponse: + def get_library_items(self, section_id: Any, tag: operations.Tag, include_guids: Optional[int] = None) -> operations.GetLibraryItemsResponse: r"""Get Library Items Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values: - `all`: All items in the section. @@ -420,6 +420,7 @@ class Library: request = operations.GetLibraryItemsRequest( section_id=section_id, tag=tag, + include_guids=include_guids, ) base_url = utils.template_url(*self.sdk_configuration.get_server_details()) @@ -431,6 +432,7 @@ class Library: else: headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(request), **query_params } headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent client = self.sdk_configuration.client @@ -706,13 +708,14 @@ class Library: - def get_metadata_children(self, rating_key: float) -> operations.GetMetadataChildrenResponse: + def get_metadata_children(self, rating_key: float, include_elements: Optional[str] = None) -> operations.GetMetadataChildrenResponse: r"""Get Items Children This endpoint will return the children of of a library item specified with the ratingKey. """ hook_ctx = HookContext(operation_id='getMetadataChildren', oauth2_scopes=[], security_source=self.sdk_configuration.security) request = operations.GetMetadataChildrenRequest( rating_key=rating_key, + include_elements=include_elements, ) base_url = utils.template_url(*self.sdk_configuration.get_server_details()) @@ -724,6 +727,7 @@ class Library: else: headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(request), **query_params } headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent client = self.sdk_configuration.client @@ -776,6 +780,69 @@ class Library: + def get_top_watched_content(self, type_: int, include_guids: Optional[int] = None) -> operations.GetTopWatchedContentResponse: + r"""Get Top Watched Content + This endpoint will return the top watched content from libraries of a certain type + """ + hook_ctx = HookContext(operation_id='getTopWatchedContent', oauth2_scopes=[], security_source=self.sdk_configuration.security) + request = operations.GetTopWatchedContentRequest( + type=type_, + include_guids=include_guids, + ) + + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) + + url = base_url + '/library/all/top' + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + + query_params = { **utils.get_query_params(request), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client + + try: + req = client.prepare_request(requests_http.Request('GET', url, params=query_params, headers=headers)) + req = self.sdk_configuration.get_hooks().before_request(BeforeRequestContext(hook_ctx), req) + http_res = client.send(req) + except Exception as e: + _, e = self.sdk_configuration.get_hooks().after_error(AfterErrorContext(hook_ctx), None, e) + if e is not None: + raise e + + if utils.match_status_codes(['4XX','5XX'], http_res.status_code): + result, e = self.sdk_configuration.get_hooks().after_error(AfterErrorContext(hook_ctx), http_res, None) + if e is not None: + raise e + if result is not None: + http_res = result + else: + http_res = self.sdk_configuration.get_hooks().after_success(AfterSuccessContext(hook_ctx), http_res) + + + + res = operations.GetTopWatchedContentResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type') or '', raw_response=http_res) + + if http_res.status_code == 200: + # pylint: disable=no-else-return + if utils.match_content_type(http_res.headers.get('Content-Type') or '', 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[operations.GetTopWatchedContentResponseBody]) + res.object = out + else: + content_type = http_res.headers.get('Content-Type') + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: + raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) + + return res + + + def get_on_deck(self) -> operations.GetOnDeckResponse: r"""Get On Deck This endpoint will return the on deck content. diff --git a/src/plex_api/models/errors/__init__.py b/src/plex_api/models/errors/__init__.py index 9811411..2edd086 100644 --- a/src/plex_api/models/errors/__init__.py +++ b/src/plex_api/models/errors/__init__.py @@ -10,6 +10,7 @@ from .deletelibrary import * from .deleteplaylist import * from .enablepapertrail import * from .getavailableclients import * +from .getbandwidthstatistics import * from .getbutlertasks import * from .getdevices import * from .getfilehash import * @@ -29,6 +30,7 @@ from .getplaylistcontents import * from .getplaylists import * from .getrecentlyadded import * from .getresizedphoto import * +from .getresourcesstatistics import * from .getsearchresults import * from .getserveractivities import * from .getservercapabilities import * @@ -64,4 +66,4 @@ from .updateplaylist import * from .updateplayprogress import * from .uploadplaylist import * -__all__ = ["AddPlaylistContentsErrors","AddPlaylistContentsResponseBody","ApplyUpdatesErrors","ApplyUpdatesResponseBody","CancelServerActivitiesErrors","CancelServerActivitiesResponseBody","CheckForUpdatesErrors","CheckForUpdatesResponseBody","ClearPlaylistContentsErrors","ClearPlaylistContentsResponseBody","CreatePlaylistErrors","CreatePlaylistResponseBody","DeleteLibraryErrors","DeleteLibraryResponseBody","DeletePlaylistErrors","DeletePlaylistResponseBody","EnablePaperTrailErrors","EnablePaperTrailResponseBody","Errors","GetAvailableClientsErrors","GetAvailableClientsResponseBody","GetButlerTasksErrors","GetButlerTasksResponseBody","GetDevicesErrors","GetDevicesResponseBody","GetFileHashErrors","GetFileHashResponseBody","GetGlobalHubsErrors","GetGlobalHubsResponseBody","GetHomeDataErrors","GetHomeDataResponseBody","GetLibrariesErrors","GetLibrariesResponseBody","GetLibraryErrors","GetLibraryHubsErrors","GetLibraryHubsResponseBody","GetLibraryItemsErrors","GetLibraryItemsResponseBody","GetLibraryResponseBody","GetMetadataChildrenErrors","GetMetadataChildrenResponseBody","GetMetadataErrors","GetMetadataResponseBody","GetMyPlexAccountErrors","GetMyPlexAccountResponseBody","GetOnDeckErrors","GetOnDeckResponseBody","GetPinErrors","GetPinResponseBody","GetPlaylistContentsErrors","GetPlaylistContentsResponseBody","GetPlaylistErrors","GetPlaylistResponseBody","GetPlaylistsErrors","GetPlaylistsResponseBody","GetRecentlyAddedErrors","GetRecentlyAddedResponseBody","GetResizedPhotoErrors","GetResizedPhotoResponseBody","GetSearchResultsErrors","GetSearchResultsResponseBody","GetServerActivitiesErrors","GetServerActivitiesResponseBody","GetServerCapabilitiesResponseBody","GetServerIdentityErrors","GetServerIdentityResponseBody","GetServerListErrors","GetServerListResponseBody","GetServerPreferencesErrors","GetServerPreferencesResponseBody","GetSessionHistoryErrors","GetSessionHistoryResponseBody","GetSessionsErrors","GetSessionsResponseBody","GetSourceConnectionInformationErrors","GetSourceConnectionInformationResponseBody","GetStatisticsErrors","GetStatisticsResponseBody","GetTimelineErrors","GetTimelineResponseBody","GetTokenErrors","GetTokenResponseBody","GetTranscodeSessionsErrors","GetTranscodeSessionsResponseBody","GetTransientTokenErrors","GetTransientTokenResponseBody","GetUpdateStatusErrors","GetUpdateStatusResponseBody","GetWatchlistErrors","GetWatchlistResponseBody","LogLineErrors","LogLineResponseBody","LogMultiLineErrors","LogMultiLineResponseBody","MarkPlayedErrors","MarkPlayedResponseBody","MarkUnplayedErrors","MarkUnplayedResponseBody","PerformSearchErrors","PerformSearchResponseBody","PerformVoiceSearchErrors","PerformVoiceSearchResponseBody","RefreshLibraryErrors","RefreshLibraryResponseBody","SDKError","SearchLibraryErrors","SearchLibraryResponseBody","StartAllTasksErrors","StartAllTasksResponseBody","StartTaskErrors","StartTaskResponseBody","StartUniversalTranscodeErrors","StartUniversalTranscodeResponseBody","StopAllTasksErrors","StopAllTasksResponseBody","StopTaskErrors","StopTaskResponseBody","StopTranscodeSessionErrors","StopTranscodeSessionResponseBody","UpdatePlayProgressErrors","UpdatePlayProgressResponseBody","UpdatePlaylistErrors","UpdatePlaylistResponseBody","UploadPlaylistErrors","UploadPlaylistResponseBody"] +__all__ = ["AddPlaylistContentsErrors","AddPlaylistContentsResponseBody","ApplyUpdatesErrors","ApplyUpdatesResponseBody","CancelServerActivitiesErrors","CancelServerActivitiesResponseBody","CheckForUpdatesErrors","CheckForUpdatesResponseBody","ClearPlaylistContentsErrors","ClearPlaylistContentsResponseBody","CreatePlaylistErrors","CreatePlaylistResponseBody","DeleteLibraryErrors","DeleteLibraryResponseBody","DeletePlaylistErrors","DeletePlaylistResponseBody","EnablePaperTrailErrors","EnablePaperTrailResponseBody","Errors","GetAvailableClientsErrors","GetAvailableClientsResponseBody","GetBandwidthStatisticsErrors","GetBandwidthStatisticsResponseBody","GetButlerTasksErrors","GetButlerTasksResponseBody","GetDevicesErrors","GetDevicesResponseBody","GetFileHashErrors","GetFileHashResponseBody","GetGlobalHubsErrors","GetGlobalHubsResponseBody","GetHomeDataErrors","GetHomeDataResponseBody","GetLibrariesErrors","GetLibrariesResponseBody","GetLibraryErrors","GetLibraryHubsErrors","GetLibraryHubsResponseBody","GetLibraryItemsErrors","GetLibraryItemsResponseBody","GetLibraryResponseBody","GetMetadataChildrenErrors","GetMetadataChildrenResponseBody","GetMetadataErrors","GetMetadataResponseBody","GetMyPlexAccountErrors","GetMyPlexAccountResponseBody","GetOnDeckErrors","GetOnDeckResponseBody","GetPinErrors","GetPinResponseBody","GetPlaylistContentsErrors","GetPlaylistContentsResponseBody","GetPlaylistErrors","GetPlaylistResponseBody","GetPlaylistsErrors","GetPlaylistsResponseBody","GetRecentlyAddedErrors","GetRecentlyAddedResponseBody","GetResizedPhotoErrors","GetResizedPhotoResponseBody","GetResourcesStatisticsErrors","GetResourcesStatisticsResponseBody","GetSearchResultsErrors","GetSearchResultsResponseBody","GetServerActivitiesErrors","GetServerActivitiesResponseBody","GetServerCapabilitiesResponseBody","GetServerIdentityErrors","GetServerIdentityResponseBody","GetServerListErrors","GetServerListResponseBody","GetServerPreferencesErrors","GetServerPreferencesResponseBody","GetSessionHistoryErrors","GetSessionHistoryResponseBody","GetSessionsErrors","GetSessionsResponseBody","GetSourceConnectionInformationErrors","GetSourceConnectionInformationResponseBody","GetStatisticsErrors","GetStatisticsResponseBody","GetTimelineErrors","GetTimelineResponseBody","GetTokenErrors","GetTokenResponseBody","GetTranscodeSessionsErrors","GetTranscodeSessionsResponseBody","GetTransientTokenErrors","GetTransientTokenResponseBody","GetUpdateStatusErrors","GetUpdateStatusResponseBody","GetWatchlistErrors","GetWatchlistResponseBody","LogLineErrors","LogLineResponseBody","LogMultiLineErrors","LogMultiLineResponseBody","MarkPlayedErrors","MarkPlayedResponseBody","MarkUnplayedErrors","MarkUnplayedResponseBody","PerformSearchErrors","PerformSearchResponseBody","PerformVoiceSearchErrors","PerformVoiceSearchResponseBody","RefreshLibraryErrors","RefreshLibraryResponseBody","SDKError","SearchLibraryErrors","SearchLibraryResponseBody","StartAllTasksErrors","StartAllTasksResponseBody","StartTaskErrors","StartTaskResponseBody","StartUniversalTranscodeErrors","StartUniversalTranscodeResponseBody","StopAllTasksErrors","StopAllTasksResponseBody","StopTaskErrors","StopTaskResponseBody","StopTranscodeSessionErrors","StopTranscodeSessionResponseBody","UpdatePlayProgressErrors","UpdatePlayProgressResponseBody","UpdatePlaylistErrors","UpdatePlaylistResponseBody","UploadPlaylistErrors","UploadPlaylistResponseBody"] diff --git a/src/plex_api/models/errors/getbandwidthstatistics.py b/src/plex_api/models/errors/getbandwidthstatistics.py new file mode 100644 index 0000000..fb872d9 --- /dev/null +++ b/src/plex_api/models/errors/getbandwidthstatistics.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from dataclasses_json import Undefined, dataclass_json +from plex_api import utils +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetBandwidthStatisticsErrors: + code: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('code'), 'exclude': lambda f: f is None }}) + message: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('message'), 'exclude': lambda f: f is None }}) + status: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) + +@dataclasses.dataclass +class GetBandwidthStatisticsResponseBody(Exception): + r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" + errors: Optional[List[GetBandwidthStatisticsErrors]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('errors'), 'exclude': lambda f: f is None }}) + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'exclude': lambda f: True }}) + r"""Raw HTTP response; suitable for custom response parsing""" + + + def __str__(self) -> str: + return utils.marshal_json(self, type(self)) diff --git a/src/plex_api/models/errors/getresourcesstatistics.py b/src/plex_api/models/errors/getresourcesstatistics.py new file mode 100644 index 0000000..abdb2ba --- /dev/null +++ b/src/plex_api/models/errors/getresourcesstatistics.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from dataclasses_json import Undefined, dataclass_json +from plex_api import utils +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetResourcesStatisticsErrors: + code: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('code'), 'exclude': lambda f: f is None }}) + message: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('message'), 'exclude': lambda f: f is None }}) + status: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) + +@dataclasses.dataclass +class GetResourcesStatisticsResponseBody(Exception): + r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" + errors: Optional[List[GetResourcesStatisticsErrors]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('errors'), 'exclude': lambda f: f is None }}) + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'exclude': lambda f: True }}) + r"""Raw HTTP response; suitable for custom response parsing""" + + + def __str__(self) -> str: + return utils.marshal_json(self, type(self)) diff --git a/src/plex_api/models/internal/globals.py b/src/plex_api/models/internal/globals.py index 05f8737..d72e7f6 100644 --- a/src/plex_api/models/internal/globals.py +++ b/src/plex_api/models/internal/globals.py @@ -2,11 +2,12 @@ from __future__ import annotations import dataclasses +from typing import Optional @dataclasses.dataclass class Globals: - x_plex_client_identifier: str = dataclasses.field(metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }}) + x_plex_client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }}) 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) diff --git a/src/plex_api/models/operations/__init__.py b/src/plex_api/models/operations/__init__.py index 0518aba..bf09e1f 100644 --- a/src/plex_api/models/operations/__init__.py +++ b/src/plex_api/models/operations/__init__.py @@ -10,6 +10,7 @@ from .deletelibrary import * from .deleteplaylist import * from .enablepapertrail import * from .getavailableclients import * +from .getbandwidthstatistics import * from .getbutlertasks import * from .getdevices import * from .getfilehash import * @@ -29,6 +30,7 @@ from .getplaylistcontents import * from .getplaylists import * from .getrecentlyadded import * from .getresizedphoto import * +from .getresourcesstatistics import * from .getsearchresults import * from .getserveractivities import * from .getservercapabilities import * @@ -41,6 +43,7 @@ from .getsourceconnectioninformation import * from .getstatistics import * from .gettimeline import * from .gettoken import * +from .gettopwatchedcontent import * from .gettranscodesessions import * from .gettransienttoken import * from .getupdatestatus import * @@ -63,4 +66,4 @@ from .updateplaylist import * from .updateplayprogress import * from .uploadplaylist import * -__all__ = ["Account","Activity","AddPlaylistContentsMediaContainer","AddPlaylistContentsMetadata","AddPlaylistContentsRequest","AddPlaylistContentsResponse","AddPlaylistContentsResponseBody","ApplyUpdatesRequest","ApplyUpdatesResponse","ButlerTask","ButlerTasks","CancelServerActivitiesRequest","CancelServerActivitiesResponse","CheckForUpdatesRequest","CheckForUpdatesResponse","ClearPlaylistContentsRequest","ClearPlaylistContentsResponse","Context","Country","CreatePlaylistMediaContainer","CreatePlaylistMetadata","CreatePlaylistRequest","CreatePlaylistResponse","CreatePlaylistResponseBody","DeleteLibraryRequest","DeleteLibraryResponse","DeletePlaylistRequest","DeletePlaylistResponse","Device","Director","Directory","Download","EnablePaperTrailResponse","Field","FieldType","Filter","Force","GET_PIN_SERVERS","GET_TOKEN_SERVERS","GET_WATCHLIST_SERVERS","Genre","GetAvailableClientsMediaContainer","GetAvailableClientsResponse","GetAvailableClientsResponseBody","GetButlerTasksResponse","GetButlerTasksResponseBody","GetDevicesMediaContainer","GetDevicesResponse","GetDevicesResponseBody","GetFileHashRequest","GetFileHashResponse","GetGlobalHubsMediaContainer","GetGlobalHubsMetadata","GetGlobalHubsRequest","GetGlobalHubsResponse","GetGlobalHubsResponseBody","GetHomeDataResponse","GetHomeDataResponseBody","GetLibrariesDirectory","GetLibrariesLocation","GetLibrariesMediaContainer","GetLibrariesResponse","GetLibrariesResponseBody","GetLibraryDirectory","GetLibraryFilter","GetLibraryHubsCountry","GetLibraryHubsDirector","GetLibraryHubsGenre","GetLibraryHubsHub","GetLibraryHubsMedia","GetLibraryHubsMediaContainer","GetLibraryHubsMetadata","GetLibraryHubsPart","GetLibraryHubsRequest","GetLibraryHubsResponse","GetLibraryHubsResponseBody","GetLibraryHubsRole","GetLibraryHubsWriter","GetLibraryItemsCountry","GetLibraryItemsDirector","GetLibraryItemsGenre","GetLibraryItemsMedia","GetLibraryItemsMediaContainer","GetLibraryItemsMetadata","GetLibraryItemsPart","GetLibraryItemsRequest","GetLibraryItemsResponse","GetLibraryItemsResponseBody","GetLibraryItemsRole","GetLibraryItemsWriter","GetLibraryMediaContainer","GetLibraryRequest","GetLibraryResponse","GetLibraryResponseBody","GetLibraryType","GetMetadataChildrenDirectory","GetMetadataChildrenMediaContainer","GetMetadataChildrenMetadata","GetMetadataChildrenRequest","GetMetadataChildrenResponse","GetMetadataChildrenResponseBody","GetMetadataCountry","GetMetadataDirector","GetMetadataGenre","GetMetadataMedia","GetMetadataMediaContainer","GetMetadataMetadata","GetMetadataPart","GetMetadataRequest","GetMetadataResponse","GetMetadataResponseBody","GetMetadataRole","GetMetadataWriter","GetMyPlexAccountResponse","GetMyPlexAccountResponseBody","GetOnDeckGuids","GetOnDeckMedia","GetOnDeckMediaContainer","GetOnDeckMetadata","GetOnDeckPart","GetOnDeckResponse","GetOnDeckResponseBody","GetOnDeckStream","GetPinGlobals","GetPinRequest","GetPinResponse","GetPinResponseBody","GetPlaylistContentsCountry","GetPlaylistContentsDirector","GetPlaylistContentsGenre","GetPlaylistContentsMedia","GetPlaylistContentsMediaContainer","GetPlaylistContentsMetadata","GetPlaylistContentsPart","GetPlaylistContentsRequest","GetPlaylistContentsResponse","GetPlaylistContentsResponseBody","GetPlaylistContentsRole","GetPlaylistContentsWriter","GetPlaylistMediaContainer","GetPlaylistMetadata","GetPlaylistRequest","GetPlaylistResponse","GetPlaylistResponseBody","GetPlaylistsMediaContainer","GetPlaylistsMetadata","GetPlaylistsRequest","GetPlaylistsResponse","GetPlaylistsResponseBody","GetRecentlyAddedMediaContainer","GetRecentlyAddedMetadata","GetRecentlyAddedResponse","GetRecentlyAddedResponseBody","GetResizedPhotoRequest","GetResizedPhotoResponse","GetSearchResultsCountry","GetSearchResultsDirector","GetSearchResultsGenre","GetSearchResultsMedia","GetSearchResultsMediaContainer","GetSearchResultsMetadata","GetSearchResultsPart","GetSearchResultsRequest","GetSearchResultsResponse","GetSearchResultsResponseBody","GetSearchResultsRole","GetSearchResultsWriter","GetServerActivitiesMediaContainer","GetServerActivitiesResponse","GetServerActivitiesResponseBody","GetServerCapabilitiesResponse","GetServerCapabilitiesResponseBody","GetServerIdentityMediaContainer","GetServerIdentityResponse","GetServerIdentityResponseBody","GetServerListMediaContainer","GetServerListResponse","GetServerListResponseBody","GetServerListServer","GetServerPreferencesMediaContainer","GetServerPreferencesResponse","GetServerPreferencesResponseBody","GetSessionHistoryMediaContainer","GetSessionHistoryMetadata","GetSessionHistoryResponse","GetSessionHistoryResponseBody","GetSessionsMedia","GetSessionsMediaContainer","GetSessionsMetadata","GetSessionsPart","GetSessionsResponse","GetSessionsResponseBody","GetSessionsStream","GetSourceConnectionInformationRequest","GetSourceConnectionInformationResponse","GetStatisticsDevice","GetStatisticsMediaContainer","GetStatisticsRequest","GetStatisticsResponse","GetStatisticsResponseBody","GetTimelineRequest","GetTimelineResponse","GetTokenGlobals","GetTokenLocation","GetTokenRequest","GetTokenResponse","GetTokenResponseBody","GetTranscodeSessionsMediaContainer","GetTranscodeSessionsResponse","GetTranscodeSessionsResponseBody","GetTransientTokenQueryParamType","GetTransientTokenRequest","GetTransientTokenResponse","GetUpdateStatusMediaContainer","GetUpdateStatusResponse","GetUpdateStatusResponseBody","GetWatchlistRequest","GetWatchlistResponse","GetWatchlistResponseBody","Guids","Hub","Image","IncludeCollections","IncludeDetails","IncludeExternalMedia","Level","Libtype","Location","LogLineRequest","LogLineResponse","LogMultiLineResponse","MarkPlayedRequest","MarkPlayedResponse","MarkUnplayedRequest","MarkUnplayedResponse","Media","MediaContainer","Metadata","MinSize","MyPlex","OnlyTransient","Operator","Part","PathParamTaskName","PerformSearchRequest","PerformSearchResponse","PerformVoiceSearchRequest","PerformVoiceSearchResponse","Player","PlaylistType","Producer","Provider","QueryParamOnlyTransient","QueryParamSmart","QueryParamType","Ratings","RefreshLibraryRequest","RefreshLibraryResponse","Release","Role","Scope","SearchLibraryMediaContainer","SearchLibraryMetadata","SearchLibraryRequest","SearchLibraryResponse","SearchLibraryResponseBody","Server","Session","Setting","Skip","Smart","Sort","StartAllTasksResponse","StartTaskRequest","StartTaskResponse","StartUniversalTranscodeRequest","StartUniversalTranscodeResponse","State","StatisticsMedia","StopAllTasksResponse","StopTaskRequest","StopTaskResponse","StopTranscodeSessionRequest","StopTranscodeSessionResponse","Stream","Tag","TaskName","Tonight","TranscodeSession","Type","UpdatePlayProgressRequest","UpdatePlayProgressResponse","UpdatePlaylistRequest","UpdatePlaylistResponse","UploadPlaylistRequest","UploadPlaylistResponse","Upscale","User","Writer"] +__all__ = ["Account","Activity","AddPlaylistContentsMediaContainer","AddPlaylistContentsMetadata","AddPlaylistContentsRequest","AddPlaylistContentsResponse","AddPlaylistContentsResponseBody","ApplyUpdatesRequest","ApplyUpdatesResponse","ButlerTask","ButlerTasks","CancelServerActivitiesRequest","CancelServerActivitiesResponse","CheckForUpdatesRequest","CheckForUpdatesResponse","ClearPlaylistContentsRequest","ClearPlaylistContentsResponse","Context","Country","CreatePlaylistMediaContainer","CreatePlaylistMetadata","CreatePlaylistRequest","CreatePlaylistResponse","CreatePlaylistResponseBody","DeleteLibraryRequest","DeleteLibraryResponse","DeletePlaylistRequest","DeletePlaylistResponse","Device","Director","Directory","Download","EnablePaperTrailResponse","Field","FieldType","Filter","Force","GET_PIN_SERVERS","GET_TOKEN_SERVERS","GET_WATCHLIST_SERVERS","Genre","GetAvailableClientsMediaContainer","GetAvailableClientsResponse","GetAvailableClientsResponseBody","GetBandwidthStatisticsAccount","GetBandwidthStatisticsDevice","GetBandwidthStatisticsMediaContainer","GetBandwidthStatisticsRequest","GetBandwidthStatisticsResponse","GetBandwidthStatisticsResponseBody","GetButlerTasksResponse","GetButlerTasksResponseBody","GetDevicesMediaContainer","GetDevicesResponse","GetDevicesResponseBody","GetFileHashRequest","GetFileHashResponse","GetGlobalHubsMediaContainer","GetGlobalHubsMetadata","GetGlobalHubsRequest","GetGlobalHubsResponse","GetGlobalHubsResponseBody","GetHomeDataResponse","GetHomeDataResponseBody","GetLibrariesDirectory","GetLibrariesLocation","GetLibrariesMediaContainer","GetLibrariesResponse","GetLibrariesResponseBody","GetLibraryDirectory","GetLibraryFilter","GetLibraryHubsCountry","GetLibraryHubsDirector","GetLibraryHubsGenre","GetLibraryHubsHub","GetLibraryHubsMedia","GetLibraryHubsMediaContainer","GetLibraryHubsMetadata","GetLibraryHubsPart","GetLibraryHubsRequest","GetLibraryHubsResponse","GetLibraryHubsResponseBody","GetLibraryHubsRole","GetLibraryHubsWriter","GetLibraryItemsCountry","GetLibraryItemsDirector","GetLibraryItemsGenre","GetLibraryItemsMedia","GetLibraryItemsMediaContainer","GetLibraryItemsMetadata","GetLibraryItemsPart","GetLibraryItemsRequest","GetLibraryItemsResponse","GetLibraryItemsResponseBody","GetLibraryItemsRole","GetLibraryItemsWriter","GetLibraryMediaContainer","GetLibraryRequest","GetLibraryResponse","GetLibraryResponseBody","GetLibraryType","GetMetadataChildrenDirectory","GetMetadataChildrenMediaContainer","GetMetadataChildrenMetadata","GetMetadataChildrenRequest","GetMetadataChildrenResponse","GetMetadataChildrenResponseBody","GetMetadataCountry","GetMetadataDirector","GetMetadataGenre","GetMetadataMedia","GetMetadataMediaContainer","GetMetadataMetadata","GetMetadataPart","GetMetadataRequest","GetMetadataResponse","GetMetadataResponseBody","GetMetadataRole","GetMetadataWriter","GetMyPlexAccountResponse","GetMyPlexAccountResponseBody","GetOnDeckGuids","GetOnDeckMedia","GetOnDeckMediaContainer","GetOnDeckMetadata","GetOnDeckPart","GetOnDeckResponse","GetOnDeckResponseBody","GetOnDeckStream","GetPinGlobals","GetPinRequest","GetPinResponse","GetPinResponseBody","GetPlaylistContentsCountry","GetPlaylistContentsDirector","GetPlaylistContentsGenre","GetPlaylistContentsMedia","GetPlaylistContentsMediaContainer","GetPlaylistContentsMetadata","GetPlaylistContentsPart","GetPlaylistContentsRequest","GetPlaylistContentsResponse","GetPlaylistContentsResponseBody","GetPlaylistContentsRole","GetPlaylistContentsWriter","GetPlaylistMediaContainer","GetPlaylistMetadata","GetPlaylistRequest","GetPlaylistResponse","GetPlaylistResponseBody","GetPlaylistsMediaContainer","GetPlaylistsMetadata","GetPlaylistsRequest","GetPlaylistsResponse","GetPlaylistsResponseBody","GetRecentlyAddedMediaContainer","GetRecentlyAddedMetadata","GetRecentlyAddedResponse","GetRecentlyAddedResponseBody","GetResizedPhotoRequest","GetResizedPhotoResponse","GetResourcesStatisticsMediaContainer","GetResourcesStatisticsRequest","GetResourcesStatisticsResponse","GetResourcesStatisticsResponseBody","GetSearchResultsCountry","GetSearchResultsDirector","GetSearchResultsGenre","GetSearchResultsMedia","GetSearchResultsMediaContainer","GetSearchResultsMetadata","GetSearchResultsPart","GetSearchResultsRequest","GetSearchResultsResponse","GetSearchResultsResponseBody","GetSearchResultsRole","GetSearchResultsWriter","GetServerActivitiesMediaContainer","GetServerActivitiesResponse","GetServerActivitiesResponseBody","GetServerCapabilitiesResponse","GetServerCapabilitiesResponseBody","GetServerIdentityMediaContainer","GetServerIdentityResponse","GetServerIdentityResponseBody","GetServerListMediaContainer","GetServerListResponse","GetServerListResponseBody","GetServerListServer","GetServerPreferencesMediaContainer","GetServerPreferencesResponse","GetServerPreferencesResponseBody","GetSessionHistoryMediaContainer","GetSessionHistoryMetadata","GetSessionHistoryRequest","GetSessionHistoryResponse","GetSessionHistoryResponseBody","GetSessionsMedia","GetSessionsMediaContainer","GetSessionsMetadata","GetSessionsPart","GetSessionsResponse","GetSessionsResponseBody","GetSessionsStream","GetSessionsUser","GetSourceConnectionInformationRequest","GetSourceConnectionInformationResponse","GetStatisticsDevice","GetStatisticsMediaContainer","GetStatisticsRequest","GetStatisticsResponse","GetStatisticsResponseBody","GetTimelineRequest","GetTimelineResponse","GetTokenGlobals","GetTokenLocation","GetTokenRequest","GetTokenResponse","GetTokenResponseBody","GetTopWatchedContentCountry","GetTopWatchedContentGenre","GetTopWatchedContentGuids","GetTopWatchedContentMediaContainer","GetTopWatchedContentMetadata","GetTopWatchedContentRequest","GetTopWatchedContentResponse","GetTopWatchedContentResponseBody","GetTopWatchedContentRole","GetTranscodeSessionsMediaContainer","GetTranscodeSessionsResponse","GetTranscodeSessionsResponseBody","GetTransientTokenQueryParamType","GetTransientTokenRequest","GetTransientTokenResponse","GetUpdateStatusMediaContainer","GetUpdateStatusResponse","GetUpdateStatusResponseBody","GetWatchlistRequest","GetWatchlistResponse","GetWatchlistResponseBody","Guids","Hub","Image","IncludeCollections","IncludeDetails","IncludeExternalMedia","Level","LibrarySectionID","Libtype","Location","LogLineRequest","LogLineResponse","LogMultiLineResponse","MarkPlayedRequest","MarkPlayedResponse","MarkUnplayedRequest","MarkUnplayedResponse","Media","MediaContainer","Metadata","MinSize","MyPlex","OnlyTransient","Operator","Part","PathParamFilter","PathParamTaskName","PerformSearchRequest","PerformSearchResponse","PerformVoiceSearchRequest","PerformVoiceSearchResponse","Player","PlaylistType","Producer","Provider","QueryParamOnlyTransient","QueryParamSmart","QueryParamType","Ratings","RefreshLibraryRequest","RefreshLibraryResponse","Release","Role","Scope","SearchLibraryMediaContainer","SearchLibraryMetadata","SearchLibraryRequest","SearchLibraryResponse","SearchLibraryResponseBody","Server","Session","Setting","Skip","Smart","Sort","StartAllTasksResponse","StartTaskRequest","StartTaskResponse","StartUniversalTranscodeRequest","StartUniversalTranscodeResponse","State","StatisticsBandwidth","StatisticsMedia","StatisticsResources","StopAllTasksResponse","StopTaskRequest","StopTaskResponse","StopTranscodeSessionRequest","StopTranscodeSessionResponse","Stream","Tag","TaskName","Tonight","TranscodeSession","Type","UpdatePlayProgressRequest","UpdatePlayProgressResponse","UpdatePlaylistRequest","UpdatePlaylistResponse","UploadPlaylistRequest","UploadPlaylistResponse","Upscale","User","Writer"] diff --git a/src/plex_api/models/operations/getbandwidthstatistics.py b/src/plex_api/models/operations/getbandwidthstatistics.py new file mode 100644 index 0000000..ec3af9a --- /dev/null +++ b/src/plex_api/models/operations/getbandwidthstatistics.py @@ -0,0 +1,92 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from dataclasses_json import Undefined, dataclass_json +from plex_api import utils +from typing import List, Optional + + +@dataclasses.dataclass +class GetBandwidthStatisticsRequest: + timespan: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'Timespan', 'style': 'form', 'explode': True }}) + r"""The timespan to retrieve statistics for + the exact meaning of this parameter is not known + """ + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetBandwidthStatisticsDevice: + id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }}) + platform: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('platform'), 'exclude': lambda f: f is None }}) + client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('clientIdentifier'), 'exclude': lambda f: f is None }}) + created_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetBandwidthStatisticsAccount: + id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }}) + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }}) + default_audio_language: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('defaultAudioLanguage'), 'exclude': lambda f: f is None }}) + auto_select_audio: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('autoSelectAudio'), 'exclude': lambda f: f is None }}) + default_subtitle_language: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('defaultSubtitleLanguage'), 'exclude': lambda f: f is None }}) + subtitle_mode: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('subtitleMode'), 'exclude': lambda f: f is None }}) + thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class StatisticsBandwidth: + account_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountID'), 'exclude': lambda f: f is None }}) + device_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('deviceID'), 'exclude': lambda f: f is None }}) + timespan: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('timespan'), 'exclude': lambda f: f is None }}) + at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('at'), 'exclude': lambda f: f is None }}) + lan: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('lan'), 'exclude': lambda f: f is None }}) + bytes: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bytes'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetBandwidthStatisticsMediaContainer: + size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }}) + device: Optional[List[GetBandwidthStatisticsDevice]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Device'), 'exclude': lambda f: f is None }}) + account: Optional[List[GetBandwidthStatisticsAccount]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Account'), 'exclude': lambda f: f is None }}) + statistics_bandwidth: Optional[List[StatisticsBandwidth]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('StatisticsBandwidth'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetBandwidthStatisticsResponseBody: + r"""Bandwidth Statistics""" + media_container: Optional[GetBandwidthStatisticsMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }}) + + + + +@dataclasses.dataclass +class GetBandwidthStatisticsResponse: + content_type: str = dataclasses.field() + r"""HTTP response content type for this operation""" + status_code: int = dataclasses.field() + r"""HTTP response status code for this operation""" + raw_response: requests_http.Response = dataclasses.field() + r"""Raw HTTP response; suitable for custom response parsing""" + object: Optional[GetBandwidthStatisticsResponseBody] = dataclasses.field(default=None) + r"""Bandwidth Statistics""" + + diff --git a/src/plex_api/models/operations/getlibraryitems.py b/src/plex_api/models/operations/getlibraryitems.py index 965d726..0af3ed7 100644 --- a/src/plex_api/models/operations/getlibraryitems.py +++ b/src/plex_api/models/operations/getlibraryitems.py @@ -7,7 +7,7 @@ from dataclasses_json import Undefined, dataclass_json from datetime import date from enum import Enum from plex_api import utils -from typing import Any, List, Optional +from typing import Any, List, Optional, Union class Tag(str, Enum): @@ -39,6 +39,8 @@ class GetLibraryItemsRequest: r"""the Id of the library to query""" tag: Tag = dataclasses.field(metadata={'path_param': { 'field_name': 'tag', 'style': 'simple', 'explode': False }}) r"""A key representing a specific tag within the section.""" + include_guids: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'includeGuids', 'style': 'form', 'explode': True }}) + r"""Adds the Guids object to the response""" @@ -189,7 +191,7 @@ class GetLibraryItemsMediaContainer: allow_sync: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('allowSync'), 'exclude': lambda f: f is None }}) art: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('art'), 'exclude': lambda f: f is None }}) identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('identifier'), 'exclude': lambda f: f is None }}) - library_section_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionID'), 'exclude': lambda f: f is None }}) + library_section_id: Optional[LibrarySectionID] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionID'), 'exclude': lambda f: f is None }}) library_section_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionTitle'), 'exclude': lambda f: f is None }}) library_section_uuid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionUUID'), 'exclude': lambda f: f is None }}) media_tag_prefix: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('mediaTagPrefix'), 'exclude': lambda f: f is None }}) @@ -226,3 +228,5 @@ class GetLibraryItemsResponse: r"""The contents of the library by section and tag""" + +LibrarySectionID = Union[int, str] diff --git a/src/plex_api/models/operations/getmetadatachildren.py b/src/plex_api/models/operations/getmetadatachildren.py index 2930e23..956173a 100644 --- a/src/plex_api/models/operations/getmetadatachildren.py +++ b/src/plex_api/models/operations/getmetadatachildren.py @@ -12,6 +12,8 @@ from typing import List, Optional class GetMetadataChildrenRequest: rating_key: float = dataclasses.field(metadata={'path_param': { 'field_name': 'ratingKey', 'style': 'simple', 'explode': False }}) r"""the id of the library item to return the children of.""" + include_elements: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'includeElements', 'style': 'form', 'explode': True }}) + r"""Adds additional elements to the response. Supported types are (Stream)""" diff --git a/src/plex_api/models/operations/getpin.py b/src/plex_api/models/operations/getpin.py index d4e3685..5719edd 100644 --- a/src/plex_api/models/operations/getpin.py +++ b/src/plex_api/models/operations/getpin.py @@ -16,7 +16,7 @@ GET_PIN_SERVERS = [ @dataclasses.dataclass class GetPinGlobals: - x_plex_client_identifier: str = dataclasses.field(metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }}) + x_plex_client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }}) 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) @@ -64,6 +64,7 @@ class Location: @dataclasses.dataclass class GetPinResponseBody: r"""The Pin""" + UNSET='__SPEAKEASY_UNSET__' id: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) r"""PinID for use with authentication""" code: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('code'), 'exclude': lambda f: f is None }}) @@ -80,7 +81,7 @@ class GetPinResponseBody: created_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'exclude': lambda f: f is None }}) expires_at: Optional[datetime] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('expiresAt'), 'encoder': utils.datetimeisoformat(True), 'decoder': dateutil.parser.isoparse, 'exclude': lambda f: f is None }}) auth_token: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('authToken'), 'exclude': lambda f: f is None }}) - new_registration: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('newRegistration'), 'exclude': lambda f: f is None }}) + new_registration: Optional[bool] = dataclasses.field(default=UNSET, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('newRegistration'), 'exclude': lambda f: f is GetPinResponseBody.UNSET }}) diff --git a/src/plex_api/models/operations/getresourcesstatistics.py b/src/plex_api/models/operations/getresourcesstatistics.py new file mode 100644 index 0000000..9bd8e72 --- /dev/null +++ b/src/plex_api/models/operations/getresourcesstatistics.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from dataclasses_json import Undefined, dataclass_json +from plex_api import utils +from typing import List, Optional + + +@dataclasses.dataclass +class GetResourcesStatisticsRequest: + timespan: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'Timespan', 'style': 'form', 'explode': True }}) + r"""The timespan to retrieve statistics for + the exact meaning of this parameter is not known + """ + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class StatisticsResources: + timespan: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('timespan'), 'exclude': lambda f: f is None }}) + at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('at'), 'exclude': lambda f: f is None }}) + host_cpu_utilization: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hostCpuUtilization'), 'exclude': lambda f: f is None }}) + process_cpu_utilization: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('processCpuUtilization'), 'exclude': lambda f: f is None }}) + host_memory_utilization: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hostMemoryUtilization'), 'exclude': lambda f: f is None }}) + process_memory_utilization: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('processMemoryUtilization'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetResourcesStatisticsMediaContainer: + size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }}) + statistics_resources: Optional[List[StatisticsResources]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('StatisticsResources'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetResourcesStatisticsResponseBody: + r"""Resource Statistics""" + media_container: Optional[GetResourcesStatisticsMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }}) + + + + +@dataclasses.dataclass +class GetResourcesStatisticsResponse: + content_type: str = dataclasses.field() + r"""HTTP response content type for this operation""" + status_code: int = dataclasses.field() + r"""HTTP response status code for this operation""" + raw_response: requests_http.Response = dataclasses.field() + r"""Raw HTTP response; suitable for custom response parsing""" + object: Optional[GetResourcesStatisticsResponseBody] = dataclasses.field(default=None) + r"""Resource Statistics""" + + diff --git a/src/plex_api/models/operations/getsessionhistory.py b/src/plex_api/models/operations/getsessionhistory.py index bb42797..55bad4e 100644 --- a/src/plex_api/models/operations/getsessionhistory.py +++ b/src/plex_api/models/operations/getsessionhistory.py @@ -9,6 +9,31 @@ from plex_api import utils from typing import List, Optional +@dataclasses.dataclass +class Filter: + r"""Filters content by field and direction/equality + (Unknown if viewedAt is the only supported column) + """ + + + + +@dataclasses.dataclass +class GetSessionHistoryRequest: + sort: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'sort', 'style': 'form', 'explode': True }}) + r"""Sorts the results by the specified field followed by the direction (asc, desc)""" + account_id: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'accountId', 'style': 'form', 'explode': True }}) + r"""Filter results by those that are related to a specific users id""" + filter_: Optional[Filter] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'filter', 'style': 'form', 'explode': True }}) + r"""Filters content by field and direction/equality + (Unknown if viewedAt is the only supported column) + """ + library_section_id: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'librarySectionID', 'style': 'form', 'explode': True }}) + r"""Filters the results based on the id of a valid library section""" + + + + @dataclass_json(undefined=Undefined.EXCLUDE) @dataclasses.dataclass class GetSessionHistoryMetadata: diff --git a/src/plex_api/models/operations/getsessions.py b/src/plex_api/models/operations/getsessions.py index 58da2ce..b34e76f 100644 --- a/src/plex_api/models/operations/getsessions.py +++ b/src/plex_api/models/operations/getsessions.py @@ -69,7 +69,7 @@ class GetSessionsMedia: @dataclass_json(undefined=Undefined.EXCLUDE) @dataclasses.dataclass -class User: +class GetSessionsUser: id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }}) title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title'), 'exclude': lambda f: f is None }}) @@ -146,7 +146,7 @@ class GetSessionsMetadata: updated_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('updatedAt'), 'exclude': lambda f: f is None }}) view_offset: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('viewOffset'), 'exclude': lambda f: f is None }}) media: Optional[List[GetSessionsMedia]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Media'), 'exclude': lambda f: f is None }}) - user: Optional[User] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('User'), 'exclude': lambda f: f is None }}) + user: Optional[GetSessionsUser] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('User'), 'exclude': lambda f: f is None }}) player: Optional[Player] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Player'), 'exclude': lambda f: f is None }}) session: Optional[Session] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Session'), 'exclude': lambda f: f is None }}) diff --git a/src/plex_api/models/operations/gettoken.py b/src/plex_api/models/operations/gettoken.py index b5961f2..4634798 100644 --- a/src/plex_api/models/operations/gettoken.py +++ b/src/plex_api/models/operations/gettoken.py @@ -16,7 +16,7 @@ GET_TOKEN_SERVERS = [ @dataclasses.dataclass class GetTokenGlobals: - x_plex_client_identifier: str = dataclasses.field(metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }}) + x_plex_client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }}) 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) diff --git a/src/plex_api/models/operations/gettopwatchedcontent.py b/src/plex_api/models/operations/gettopwatchedcontent.py new file mode 100644 index 0000000..ef45fbb --- /dev/null +++ b/src/plex_api/models/operations/gettopwatchedcontent.py @@ -0,0 +1,143 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from dataclasses_json import Undefined, dataclass_json +from datetime import date +from plex_api import utils +from typing import List, Optional + + +@dataclasses.dataclass +class GetTopWatchedContentRequest: + type: int = dataclasses.field(metadata={'query_param': { 'field_name': 'type', 'style': 'form', 'explode': True }}) + r"""the library type (1 - movies, 2 - shows, 3 - music)""" + include_guids: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'includeGuids', 'style': 'form', 'explode': True }}) + r"""Adds the Guids object to the response""" + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentGenre: + id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + filter_: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('filter'), 'exclude': lambda f: f is None }}) + tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('tag'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentCountry: + id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + filter_: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('filter'), 'exclude': lambda f: f is None }}) + tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('tag'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentGuids: + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentRole: + id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + filter_: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('filter'), 'exclude': lambda f: f is None }}) + tag: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('tag'), 'exclude': lambda f: f is None }}) + tag_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('tagKey'), 'exclude': lambda f: f is None }}) + role: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('role'), 'exclude': lambda f: f is None }}) + thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class User: + id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentMetadata: + rating_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('ratingKey'), 'exclude': lambda f: f is None }}) + key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }}) + guid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('guid'), 'exclude': lambda f: f is None }}) + slug: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('slug'), 'exclude': lambda f: f is None }}) + studio: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('studio'), 'exclude': lambda f: f is None }}) + type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type'), 'exclude': lambda f: f is None }}) + title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title'), 'exclude': lambda f: f is None }}) + library_section_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionTitle'), 'exclude': lambda f: f is None }}) + library_section_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionID'), 'exclude': lambda f: f is None }}) + library_section_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionKey'), 'exclude': lambda f: f is None }}) + content_rating: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('contentRating'), 'exclude': lambda f: f is None }}) + summary: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('summary'), 'exclude': lambda f: f is None }}) + index: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('index'), 'exclude': lambda f: f is None }}) + audience_rating: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audienceRating'), 'exclude': lambda f: f is None }}) + year: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('year'), 'exclude': lambda f: f is None }}) + tagline: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('tagline'), 'exclude': lambda f: f is None }}) + thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }}) + art: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('art'), 'exclude': lambda f: f is None }}) + duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }}) + originally_available_at: Optional[date] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('originallyAvailableAt'), 'encoder': utils.dateisoformat(True), 'decoder': utils.datefromisoformat, 'exclude': lambda f: f is None }}) + leaf_count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('leafCount'), 'exclude': lambda f: f is None }}) + viewed_leaf_count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('viewedLeafCount'), 'exclude': lambda f: f is None }}) + child_count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('childCount'), 'exclude': lambda f: f is None }}) + added_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('addedAt'), 'exclude': lambda f: f is None }}) + updated_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('updatedAt'), 'exclude': lambda f: f is None }}) + global_view_count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('globalViewCount'), 'exclude': lambda f: f is None }}) + audience_rating_image: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audienceRatingImage'), 'exclude': lambda f: f is None }}) + genre: Optional[List[GetTopWatchedContentGenre]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Genre'), 'exclude': lambda f: f is None }}) + country: Optional[List[GetTopWatchedContentCountry]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Country'), 'exclude': lambda f: f is None }}) + guids: Optional[List[GetTopWatchedContentGuids]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Guid'), 'exclude': lambda f: f is None }}) + role: Optional[List[GetTopWatchedContentRole]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Role'), 'exclude': lambda f: f is None }}) + user: Optional[List[User]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('User'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentMediaContainer: + size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }}) + allow_sync: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('allowSync'), 'exclude': lambda f: f is None }}) + identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('identifier'), 'exclude': lambda f: f is None }}) + media_tag_prefix: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('mediaTagPrefix'), 'exclude': lambda f: f is None }}) + media_tag_version: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('mediaTagVersion'), 'exclude': lambda f: f is None }}) + metadata: Optional[List[GetTopWatchedContentMetadata]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Metadata'), 'exclude': lambda f: f is None }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class GetTopWatchedContentResponseBody: + r"""The metadata of the library item.""" + media_container: Optional[GetTopWatchedContentMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }}) + + + + +@dataclasses.dataclass +class GetTopWatchedContentResponse: + content_type: str = dataclasses.field() + r"""HTTP response content type for this operation""" + status_code: int = dataclasses.field() + r"""HTTP response status code for this operation""" + raw_response: requests_http.Response = dataclasses.field() + r"""Raw HTTP response; suitable for custom response parsing""" + object: Optional[GetTopWatchedContentResponseBody] = dataclasses.field(default=None) + r"""The metadata of the library item.""" + + diff --git a/src/plex_api/models/operations/getwatchlist.py b/src/plex_api/models/operations/getwatchlist.py index 690662b..1520880 100644 --- a/src/plex_api/models/operations/getwatchlist.py +++ b/src/plex_api/models/operations/getwatchlist.py @@ -15,7 +15,7 @@ GET_WATCHLIST_SERVERS = [ ] -class Filter(str, Enum): +class PathParamFilter(str, Enum): r"""Filter""" ALL = 'all' AVAILABLE = 'available' @@ -42,7 +42,7 @@ class IncludeExternalMedia(int, Enum): @dataclasses.dataclass class GetWatchlistRequest: - filter_: Filter = dataclasses.field(metadata={'path_param': { 'field_name': 'filter', 'style': 'simple', 'explode': False }}) + filter_: PathParamFilter = dataclasses.field(metadata={'path_param': { 'field_name': 'filter', 'style': 'simple', 'explode': False }}) r"""Filter""" x_plex_token: str = dataclasses.field(metadata={'query_param': { 'field_name': 'X-Plex-Token', 'style': 'form', 'explode': True }}) r"""User Token""" diff --git a/src/plex_api/playlists.py b/src/plex_api/playlists.py index ebb54ee..b1ebc70 100644 --- a/src/plex_api/playlists.py +++ b/src/plex_api/playlists.py @@ -276,7 +276,7 @@ class Playlists: res = operations.DeletePlaylistResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type') or '', raw_response=http_res) - if http_res.status_code == 200: + if http_res.status_code == 204: pass elif http_res.status_code == 400 or http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) diff --git a/src/plex_api/sdkconfiguration.py b/src/plex_api/sdkconfiguration.py index 14e57a2..e97df8e 100644 --- a/src/plex_api/sdkconfiguration.py +++ b/src/plex_api/sdkconfiguration.py @@ -19,7 +19,6 @@ SERVERS = [ class ServerProtocol(str, Enum): - r"""The protocol to use when connecting to your plex server.""" HTTP = 'http' HTTPS = 'https' @@ -34,9 +33,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.9.0' - gen_version: str = '2.342.6' - user_agent: str = 'speakeasy-sdk/python 0.9.0 2.342.6 0.0.3 plex-api-client' + sdk_version: str = '0.10.0' + gen_version: str = '2.349.6' + user_agent: str = 'speakeasy-sdk/python 0.10.0 2.349.6 0.0.3 plex-api-client' retry_config: Optional[RetryConfig] = None def __post_init__(self): diff --git a/src/plex_api/server.py b/src/plex_api/server.py index 2eac9e4..d73aaba 100644 --- a/src/plex_api/server.py +++ b/src/plex_api/server.py @@ -17,8 +17,8 @@ class Server: def get_server_capabilities(self) -> operations.GetServerCapabilitiesResponse: - r"""Server Capabilities - Server Capabilities + r"""Get Server Capabilities + Get Server Capabilities """ hook_ctx = HookContext(operation_id='getServerCapabilities', oauth2_scopes=[], security_source=self.sdk_configuration.security) base_url = utils.template_url(*self.sdk_configuration.get_server_details()) diff --git a/src/plex_api/sessions.py b/src/plex_api/sessions.py index 7ffe79b..18378a3 100644 --- a/src/plex_api/sessions.py +++ b/src/plex_api/sessions.py @@ -82,11 +82,18 @@ class Sessions: - def get_session_history(self) -> operations.GetSessionHistoryResponse: + def get_session_history(self, sort: Optional[str] = None, account_id: Optional[int] = None, filter_: Optional[operations.Filter] = None, library_section_id: Optional[int] = None) -> operations.GetSessionHistoryResponse: r"""Get Session History This will Retrieve a listing of all history views. """ hook_ctx = HookContext(operation_id='getSessionHistory', oauth2_scopes=[], security_source=self.sdk_configuration.security) + request = operations.GetSessionHistoryRequest( + sort=sort, + account_id=account_id, + filter_=filter_, + library_section_id=library_section_id, + ) + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) url = base_url + '/status/sessions/history/all' @@ -96,6 +103,7 @@ class Sessions: else: headers, query_params = utils.get_security(self.sdk_configuration.security) + query_params = { **utils.get_query_params(request), **query_params } headers['Accept'] = 'application/json' headers['user-agent'] = self.sdk_configuration.user_agent client = self.sdk_configuration.client diff --git a/src/plex_api/statistics.py b/src/plex_api/statistics.py index a4153b5..ab4b6e5 100644 --- a/src/plex_api/statistics.py +++ b/src/plex_api/statistics.py @@ -86,4 +86,146 @@ class Statistics: return res + + def get_resources_statistics(self, timespan: Optional[int] = None) -> operations.GetResourcesStatisticsResponse: + r"""Get Resources Statistics + This will return the resources for the server + """ + hook_ctx = HookContext(operation_id='getResourcesStatistics', oauth2_scopes=[], security_source=self.sdk_configuration.security) + request = operations.GetResourcesStatisticsRequest( + timespan=timespan, + ) + + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) + + url = base_url + '/statistics/resources' + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + + query_params = { **utils.get_query_params(request), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client + + try: + req = client.prepare_request(requests_http.Request('GET', url, params=query_params, headers=headers)) + req = self.sdk_configuration.get_hooks().before_request(BeforeRequestContext(hook_ctx), req) + http_res = client.send(req) + except Exception as e: + _, e = self.sdk_configuration.get_hooks().after_error(AfterErrorContext(hook_ctx), None, e) + if e is not None: + raise e + + if utils.match_status_codes(['400','401','4XX','5XX'], http_res.status_code): + result, e = self.sdk_configuration.get_hooks().after_error(AfterErrorContext(hook_ctx), http_res, None) + if e is not None: + raise e + if result is not None: + http_res = result + else: + http_res = self.sdk_configuration.get_hooks().after_success(AfterSuccessContext(hook_ctx), http_res) + + + + res = operations.GetResourcesStatisticsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type') or '', raw_response=http_res) + + if http_res.status_code == 200: + # pylint: disable=no-else-return + if utils.match_content_type(http_res.headers.get('Content-Type') or '', 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[operations.GetResourcesStatisticsResponseBody]) + res.object = out + else: + content_type = http_res.headers.get('Content-Type') + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code == 400 or http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: + raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + elif http_res.status_code == 401: + # pylint: disable=no-else-return + if utils.match_content_type(http_res.headers.get('Content-Type') or '', 'application/json'): + out = utils.unmarshal_json(http_res.text, errors.GetResourcesStatisticsResponseBody) + out.raw_response = http_res + raise out + else: + content_type = http_res.headers.get('Content-Type') + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) + + return res + + + + def get_bandwidth_statistics(self, timespan: Optional[int] = None) -> operations.GetBandwidthStatisticsResponse: + r"""Get Bandwidth Statistics + This will return the bandwidth statistics for the server + """ + hook_ctx = HookContext(operation_id='getBandwidthStatistics', oauth2_scopes=[], security_source=self.sdk_configuration.security) + request = operations.GetBandwidthStatisticsRequest( + timespan=timespan, + ) + + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) + + url = base_url + '/statistics/bandwidth' + + if callable(self.sdk_configuration.security): + headers, query_params = utils.get_security(self.sdk_configuration.security()) + else: + headers, query_params = utils.get_security(self.sdk_configuration.security) + + query_params = { **utils.get_query_params(request), **query_params } + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + client = self.sdk_configuration.client + + try: + req = client.prepare_request(requests_http.Request('GET', url, params=query_params, headers=headers)) + req = self.sdk_configuration.get_hooks().before_request(BeforeRequestContext(hook_ctx), req) + http_res = client.send(req) + except Exception as e: + _, e = self.sdk_configuration.get_hooks().after_error(AfterErrorContext(hook_ctx), None, e) + if e is not None: + raise e + + if utils.match_status_codes(['400','401','4XX','5XX'], http_res.status_code): + result, e = self.sdk_configuration.get_hooks().after_error(AfterErrorContext(hook_ctx), http_res, None) + if e is not None: + raise e + if result is not None: + http_res = result + else: + http_res = self.sdk_configuration.get_hooks().after_success(AfterSuccessContext(hook_ctx), http_res) + + + + res = operations.GetBandwidthStatisticsResponse(status_code=http_res.status_code, content_type=http_res.headers.get('Content-Type') or '', raw_response=http_res) + + if http_res.status_code == 200: + # pylint: disable=no-else-return + if utils.match_content_type(http_res.headers.get('Content-Type') or '', 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[operations.GetBandwidthStatisticsResponseBody]) + res.object = out + else: + content_type = http_res.headers.get('Content-Type') + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code == 400 or http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: + raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + elif http_res.status_code == 401: + # pylint: disable=no-else-return + if utils.match_content_type(http_res.headers.get('Content-Type') or '', 'application/json'): + out = utils.unmarshal_json(http_res.text, errors.GetBandwidthStatisticsResponseBody) + out.raw_response = http_res + raise out + else: + content_type = http_res.headers.get('Content-Type') + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + else: + raise errors.SDKError('unknown status code received', http_res.status_code, http_res.text, http_res) + + return res + +