mirror of
https://github.com/LukeHagar/plexpy.git
synced 2025-12-06 04:20:52 +00:00
ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.487.0
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
lockVersion: 2.0.0
|
||||
id: 3eeea668-4ef4-464e-a888-bdfa023bedf5
|
||||
management:
|
||||
docChecksum: 14b35829d4be91a88269761c3ed01426
|
||||
docChecksum: 7dec92ab9151a1b5a35df5faa81811ba
|
||||
docVersion: 0.0.3
|
||||
speakeasyVersion: 1.484.1
|
||||
generationVersion: 2.503.2
|
||||
releaseVersion: 0.21.2
|
||||
configChecksum: 8b6dcb5cd25065d9fbc63e5ede1119c9
|
||||
speakeasyVersion: 1.487.0
|
||||
generationVersion: 2.506.0
|
||||
releaseVersion: 0.22.0
|
||||
configChecksum: 02e21ec9a82866d44b79d54a1ec21b1d
|
||||
repoURL: https://github.com/LukeHagar/plexpy.git
|
||||
repoSubDirectory: .
|
||||
installationURL: https://github.com/LukeHagar/plexpy.git
|
||||
@@ -15,7 +15,7 @@ features:
|
||||
python:
|
||||
additionalDependencies: 1.0.0
|
||||
constsAndDefaults: 1.0.5
|
||||
core: 5.10.9
|
||||
core: 5.11.0
|
||||
defaultEnabledRetries: 0.2.0
|
||||
deprecations: 3.0.2
|
||||
downloadStreams: 1.0.1
|
||||
@@ -275,6 +275,10 @@ generatedFiles:
|
||||
- docs/models/errors/getuserfriendserrors.md
|
||||
- docs/models/errors/getuserfriendsplexerrors.md
|
||||
- docs/models/errors/getuserfriendsunauthorized.md
|
||||
- docs/models/errors/getusersbadrequest.md
|
||||
- docs/models/errors/getuserserrors.md
|
||||
- docs/models/errors/getusersunauthorized.md
|
||||
- docs/models/errors/getusersuserserrors.md
|
||||
- docs/models/errors/getwatchlistbadrequest.md
|
||||
- docs/models/errors/getwatchlisterrors.md
|
||||
- docs/models/errors/getwatchlistunauthorized.md
|
||||
@@ -352,6 +356,12 @@ generatedFiles:
|
||||
- docs/models/operations/addplaylistcontentsrequest.md
|
||||
- docs/models/operations/addplaylistcontentsresponse.md
|
||||
- docs/models/operations/addplaylistcontentsresponsebody.md
|
||||
- docs/models/operations/alllibraries.md
|
||||
- docs/models/operations/allowcameraupload.md
|
||||
- docs/models/operations/allowchannels.md
|
||||
- docs/models/operations/allowsubtitleadmin.md
|
||||
- docs/models/operations/allowsync.md
|
||||
- docs/models/operations/allowtuners.md
|
||||
- docs/models/operations/applyupdatesrequest.md
|
||||
- docs/models/operations/applyupdatesresponse.md
|
||||
- docs/models/operations/autoselectsubtitle.md
|
||||
@@ -714,6 +724,7 @@ generatedFiles:
|
||||
- docs/models/operations/gettopwatchedcontentresponse.md
|
||||
- docs/models/operations/gettopwatchedcontentresponsebody.md
|
||||
- docs/models/operations/gettopwatchedcontentrole.md
|
||||
- docs/models/operations/gettopwatchedcontentuser.md
|
||||
- docs/models/operations/gettranscodesessionsmediacontainer.md
|
||||
- docs/models/operations/gettranscodesessionsresponse.md
|
||||
- docs/models/operations/gettranscodesessionsresponsebody.md
|
||||
@@ -724,11 +735,17 @@ generatedFiles:
|
||||
- docs/models/operations/getupdatestatusresponse.md
|
||||
- docs/models/operations/getupdatestatusresponsebody.md
|
||||
- docs/models/operations/getuserfriendsresponse.md
|
||||
- docs/models/operations/getusersmediacontainer.md
|
||||
- docs/models/operations/getusersrequest.md
|
||||
- docs/models/operations/getusersresponse.md
|
||||
- docs/models/operations/getusersresponsebody.md
|
||||
- docs/models/operations/getusersserver.md
|
||||
- docs/models/operations/getwatchlistrequest.md
|
||||
- docs/models/operations/getwatchlistresponse.md
|
||||
- docs/models/operations/getwatchlistresponsebody.md
|
||||
- docs/models/operations/guids.md
|
||||
- docs/models/operations/hasthumbnail.md
|
||||
- docs/models/operations/home.md
|
||||
- docs/models/operations/hub.md
|
||||
- docs/models/operations/image.md
|
||||
- docs/models/operations/includecollections.md
|
||||
@@ -764,9 +781,11 @@ generatedFiles:
|
||||
- docs/models/operations/onlytransient.md
|
||||
- docs/models/operations/operator.md
|
||||
- docs/models/operations/optimizedforstreaming.md
|
||||
- docs/models/operations/owned.md
|
||||
- docs/models/operations/part.md
|
||||
- docs/models/operations/pastsubscription.md
|
||||
- docs/models/operations/pathparamtaskname.md
|
||||
- docs/models/operations/pending.md
|
||||
- docs/models/operations/performsearchrequest.md
|
||||
- docs/models/operations/performsearchresponse.md
|
||||
- docs/models/operations/performvoicesearchrequest.md
|
||||
@@ -794,6 +813,7 @@ generatedFiles:
|
||||
- docs/models/operations/postuserssignindatauserprofile.md
|
||||
- docs/models/operations/postuserssignindatawatchedindicator.md
|
||||
- docs/models/operations/producer.md
|
||||
- docs/models/operations/protected.md
|
||||
- docs/models/operations/protocol.md
|
||||
- docs/models/operations/provider.md
|
||||
- docs/models/operations/queryparamfilter.md
|
||||
@@ -807,6 +827,7 @@ generatedFiles:
|
||||
- docs/models/operations/ratings.md
|
||||
- docs/models/operations/release.md
|
||||
- docs/models/operations/responsebody.md
|
||||
- docs/models/operations/restricted.md
|
||||
- docs/models/operations/role.md
|
||||
- docs/models/operations/scope.md
|
||||
- docs/models/operations/searchresult.md
|
||||
@@ -872,6 +893,7 @@ generatedFiles:
|
||||
- docs/sdks/sessions/README.md
|
||||
- docs/sdks/statistics/README.md
|
||||
- docs/sdks/updater/README.md
|
||||
- docs/sdks/users/README.md
|
||||
- docs/sdks/video/README.md
|
||||
- docs/sdks/watchlist/README.md
|
||||
- poetry.toml
|
||||
@@ -921,6 +943,7 @@ generatedFiles:
|
||||
- src/plex_api_client/models/errors/get_server_identity.py
|
||||
- src/plex_api_client/models/errors/get_server_resources.py
|
||||
- src/plex_api_client/models/errors/get_thumb_image.py
|
||||
- src/plex_api_client/models/errors/get_users.py
|
||||
- src/plex_api_client/models/errors/get_watch_list.py
|
||||
- src/plex_api_client/models/errors/getavailableclients.py
|
||||
- src/plex_api_client/models/errors/getbandwidthstatistics.py
|
||||
@@ -1001,6 +1024,7 @@ generatedFiles:
|
||||
- src/plex_api_client/models/operations/get_server_identity.py
|
||||
- src/plex_api_client/models/operations/get_server_resources.py
|
||||
- src/plex_api_client/models/operations/get_thumb_image.py
|
||||
- src/plex_api_client/models/operations/get_users.py
|
||||
- src/plex_api_client/models/operations/get_watch_list.py
|
||||
- src/plex_api_client/models/operations/getavailableclients.py
|
||||
- src/plex_api_client/models/operations/getbandwidthstatistics.py
|
||||
@@ -1066,6 +1090,7 @@ generatedFiles:
|
||||
- src/plex_api_client/types/__init__.py
|
||||
- src/plex_api_client/types/basemodel.py
|
||||
- src/plex_api_client/updater.py
|
||||
- src/plex_api_client/users.py
|
||||
- src/plex_api_client/utils/__init__.py
|
||||
- src/plex_api_client/utils/annotations.py
|
||||
- src/plex_api_client/utils/enums.py
|
||||
@@ -2093,5 +2118,29 @@ examples:
|
||||
application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]}
|
||||
"401":
|
||||
application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]}
|
||||
get-users:
|
||||
"":
|
||||
parameters:
|
||||
header:
|
||||
X-Plex-Client-Identifier: "3381b62b-9ab7-4e37-827b-203e9809eb58"
|
||||
X-Plex-Product: "Plex for Roku"
|
||||
X-Plex-Device: "Roku 3"
|
||||
X-Plex-Device-Name: "Chrome"
|
||||
X-Plex-Device-Screen-Resolution: "1487x1165,2560x1440"
|
||||
X-Plex-Version: "2.4.1"
|
||||
X-Plex-Platform: "Roku"
|
||||
X-Plex-Features: "external-media,indirect-media,hub-style-list"
|
||||
X-Plex-Model: "4200X"
|
||||
X-Plex-Session-Id: "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca"
|
||||
X-Plex-Language: "en"
|
||||
X-Plex-Platform-Version: "4.3 build 1057"
|
||||
X-Plex-Token: "CV5xoxjTpFKUzBTShsaf"
|
||||
responses:
|
||||
"200":
|
||||
application/xml: "0xa9CdebeF9E"
|
||||
"400":
|
||||
application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]}
|
||||
"401":
|
||||
application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]}
|
||||
examplesVersion: 1.0.0
|
||||
generatedTests: {}
|
||||
|
||||
@@ -13,7 +13,7 @@ generation:
|
||||
oAuth2ClientCredentialsEnabled: true
|
||||
oAuth2PasswordEnabled: false
|
||||
python:
|
||||
version: 0.21.2
|
||||
version: 0.22.0
|
||||
additionalDependencies:
|
||||
dev: {}
|
||||
main: {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
speakeasyVersion: 1.484.1
|
||||
speakeasyVersion: 1.487.0
|
||||
sources:
|
||||
my-source:
|
||||
sourceNamespace: my-source
|
||||
@@ -8,19 +8,19 @@ sources:
|
||||
- latest
|
||||
plexapi:
|
||||
sourceNamespace: plexapi
|
||||
sourceRevisionDigest: sha256:0b88c8bfc41def63e19e91fdd4d51bab07cb947cc3d39d2b44e8523a209cec10
|
||||
sourceBlobDigest: sha256:89d5b8427d4fb61b25751aebbaf71f9613958e9e91073fc084fed2c2ec62ce55
|
||||
sourceRevisionDigest: sha256:e6ab335dd91a4165f4510e4a3af8a55819c6310b7e66251266d2384376f3ccae
|
||||
sourceBlobDigest: sha256:89d1b1133e400c89f0d06efe5e5168f5ba25a413e1ab8380d442d6b233e2e5a9
|
||||
tags:
|
||||
- latest
|
||||
- speakeasy-sdk-regen-1738800087
|
||||
- speakeasy-sdk-regen-1738886477
|
||||
targets:
|
||||
plexpy:
|
||||
source: plexapi
|
||||
sourceNamespace: plexapi
|
||||
sourceRevisionDigest: sha256:0b88c8bfc41def63e19e91fdd4d51bab07cb947cc3d39d2b44e8523a209cec10
|
||||
sourceBlobDigest: sha256:89d5b8427d4fb61b25751aebbaf71f9613958e9e91073fc084fed2c2ec62ce55
|
||||
sourceRevisionDigest: sha256:e6ab335dd91a4165f4510e4a3af8a55819c6310b7e66251266d2384376f3ccae
|
||||
sourceBlobDigest: sha256:89d1b1133e400c89f0d06efe5e5168f5ba25a413e1ab8380d442d6b233e2e5a9
|
||||
codeSamplesNamespace: code-samples-python-plexpy
|
||||
codeSamplesRevisionDigest: sha256:e060abd1e6124c442333335008e39e994ede6ecf685a0d1e0e1c0813fc496ca5
|
||||
codeSamplesRevisionDigest: sha256:7c876b753cb5ce60e78319a51e8a0a436679e86c4e4a90d423d73532459dac53
|
||||
workflow:
|
||||
workflowVersion: 1.0.0
|
||||
speakeasyVersion: latest
|
||||
|
||||
@@ -299,6 +299,10 @@ asyncio.run(main())
|
||||
* [check_for_updates](docs/sdks/updater/README.md#check_for_updates) - Checking for updates
|
||||
* [apply_updates](docs/sdks/updater/README.md#apply_updates) - Apply Updates
|
||||
|
||||
### [users](docs/sdks/users/README.md)
|
||||
|
||||
* [get_users](docs/sdks/users/README.md#get_users) - Get list of all connected users
|
||||
|
||||
### [video](docs/sdks/video/README.md)
|
||||
|
||||
* [get_timeline](docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item
|
||||
|
||||
12
RELEASES.md
12
RELEASES.md
@@ -918,4 +918,14 @@ Based on:
|
||||
### Generated
|
||||
- [python v0.21.2] .
|
||||
### Releases
|
||||
- [PyPI v0.21.2] https://pypi.org/project/plex-api-client/0.21.2 - .
|
||||
- [PyPI v0.21.2] https://pypi.org/project/plex-api-client/0.21.2 - .
|
||||
|
||||
## 2025-02-07 00:01:02
|
||||
### Changes
|
||||
Based on:
|
||||
- OpenAPI Doc
|
||||
- Speakeasy CLI 1.487.0 (2.506.0) https://github.com/speakeasy-api/speakeasy
|
||||
### Generated
|
||||
- [python v0.22.0] .
|
||||
### Releases
|
||||
- [PyPI v0.22.0] https://pypi.org/project/plex-api-client/0.22.0 - .
|
||||
@@ -1470,6 +1470,36 @@ actions:
|
||||
|
||||
# Handle response
|
||||
print(res.user_plex_account)
|
||||
- target: $["paths"]["/users"]["get"]
|
||||
update:
|
||||
x-codeSamples:
|
||||
- lang: python
|
||||
label: users
|
||||
source: |-
|
||||
from plex_api_client import PlexAPI
|
||||
|
||||
with PlexAPI() as plex_api:
|
||||
|
||||
res = plex_api.users.get_users(request={
|
||||
"client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58",
|
||||
"client_name": "Plex for Roku",
|
||||
"device_nickname": "Roku 3",
|
||||
"device_name": "Chrome",
|
||||
"device_screen_resolution": "1487x1165,2560x1440",
|
||||
"client_version": "2.4.1",
|
||||
"platform": "Roku",
|
||||
"client_features": "external-media,indirect-media,hub-style-list",
|
||||
"model": "4200X",
|
||||
"x_plex_session_id": "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca",
|
||||
"x_plex_language": "en",
|
||||
"platform_version": "4.3 build 1057",
|
||||
"x_plex_token": "CV5xoxjTpFKUzBTShsaf",
|
||||
})
|
||||
|
||||
assert res.body is not None
|
||||
|
||||
# Handle response
|
||||
print(res.body)
|
||||
- target: $["paths"]["/users/signin"]["post"]
|
||||
update:
|
||||
x-codeSamples:
|
||||
|
||||
11
docs/models/errors/getusersbadrequest.md
Normal file
11
docs/models/errors/getusersbadrequest.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# GetUsersBadRequest
|
||||
|
||||
Bad Request - A parameter was not specified, or was specified incorrectly.
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- |
|
||||
| `errors` | List[[errors.GetUsersErrors](../../models/errors/getuserserrors.md)] | :heavy_minus_sign: | N/A |
|
||||
| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |
|
||||
10
docs/models/errors/getuserserrors.md
Normal file
10
docs/models/errors/getuserserrors.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# GetUsersErrors
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- |
|
||||
| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 |
|
||||
| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing |
|
||||
| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 |
|
||||
11
docs/models/errors/getusersunauthorized.md
Normal file
11
docs/models/errors/getusersunauthorized.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# GetUsersUnauthorized
|
||||
|
||||
Unauthorized - Returned if the X-Plex-Token is missing from the header or query.
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
|
||||
| `errors` | List[[errors.GetUsersUsersErrors](../../models/errors/getusersuserserrors.md)] | :heavy_minus_sign: | N/A |
|
||||
| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing |
|
||||
10
docs/models/errors/getusersuserserrors.md
Normal file
10
docs/models/errors/getusersuserserrors.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# GetUsersUsersErrors
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- |
|
||||
| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 |
|
||||
| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated |
|
||||
| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 |
|
||||
11
docs/models/operations/alllibraries.md
Normal file
11
docs/models/operations/alllibraries.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# AllLibraries
|
||||
|
||||
Indicates if the user has access to all libraries.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/allowcameraupload.md
Normal file
11
docs/models/operations/allowcameraupload.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# AllowCameraUpload
|
||||
|
||||
Indicates if the user is allowed to upload from a camera.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/allowchannels.md
Normal file
11
docs/models/operations/allowchannels.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# AllowChannels
|
||||
|
||||
Indicates if the user has access to channels.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/allowsubtitleadmin.md
Normal file
11
docs/models/operations/allowsubtitleadmin.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# AllowSubtitleAdmin
|
||||
|
||||
Indicates if the user can manage subtitles.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/allowsync.md
Normal file
11
docs/models/operations/allowsync.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# AllowSync
|
||||
|
||||
Indicates if the user is allowed to sync media.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/allowtuners.md
Normal file
11
docs/models/operations/allowtuners.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# AllowTuners
|
||||
|
||||
Indicates if the user is allowed to use tuners.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
@@ -36,4 +36,4 @@
|
||||
| `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 | |
|
||||
| `user` | List[[operations.GetTopWatchedContentUser](../../models/operations/gettopwatchedcontentuser.md)] | :heavy_minus_sign: | N/A | |
|
||||
8
docs/models/operations/gettopwatchedcontentuser.md
Normal file
8
docs/models/operations/gettopwatchedcontentuser.md
Normal file
@@ -0,0 +1,8 @@
|
||||
# GetTopWatchedContentUser
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||
| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 220 |
|
||||
15
docs/models/operations/getusersmediacontainer.md
Normal file
15
docs/models/operations/getusersmediacontainer.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# GetUsersMediaContainer
|
||||
|
||||
Container holding user and server details.
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- |
|
||||
| `friendly_name` | *str* | :heavy_check_mark: | The friendly name of the Plex instance. | myPlex |
|
||||
| `identifier` | *str* | :heavy_check_mark: | N/A | com.plexapp.plugins.myplex |
|
||||
| `machine_identifier` | *str* | :heavy_check_mark: | Unique Machine identifier of the Plex server. | 3dff4c4da3b1229a649aa574a9e2b419a684a20e |
|
||||
| `total_size` | *int* | :heavy_check_mark: | Total number of users. | 30 |
|
||||
| `size` | *int* | :heavy_check_mark: | Number of users in the current response. | 30 |
|
||||
| `user` | List[[operations.User](../../models/operations/user.md)] | :heavy_check_mark: | List of users with access to the Plex server. | |
|
||||
20
docs/models/operations/getusersrequest.md
Normal file
20
docs/models/operations/getusersrequest.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# GetUsersRequest
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 |
|
||||
| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf |
|
||||
| `client_name` | *Optional[str]* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku |
|
||||
| `device_nickname` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 |
|
||||
| `device_name` | *Optional[str]* | :heavy_minus_sign: | The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.) | Chrome |
|
||||
| `device_screen_resolution` | *Optional[str]* | :heavy_minus_sign: | The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440) | 1487x1165,2560x1440 |
|
||||
| `client_version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application. | 2.4.1 |
|
||||
| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client application. | Roku |
|
||||
| `client_features` | *Optional[str]* | :heavy_minus_sign: | The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list) | external-media,indirect-media,hub-style-list |
|
||||
| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X |
|
||||
| `x_plex_session_id` | *Optional[str]* | :heavy_minus_sign: | The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca) | 97e136ef-4ddd-4ff3-89a7-a5820c96c2ca |
|
||||
| `x_plex_language` | *Optional[str]* | :heavy_minus_sign: | The language of the client application. | en |
|
||||
| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 |
|
||||
11
docs/models/operations/getusersresponse.md
Normal file
11
docs/models/operations/getusersresponse.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# GetUsersResponse
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation |
|
||||
| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation |
|
||||
| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing |
|
||||
| `body` | *Optional[bytes]* | :heavy_minus_sign: | N/A |
|
||||
10
docs/models/operations/getusersresponsebody.md
Normal file
10
docs/models/operations/getusersresponsebody.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# GetUsersResponseBody
|
||||
|
||||
Successful response with media container data in XML
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |
|
||||
| `media_container` | [Optional[operations.GetUsersMediaContainer]](../../models/operations/getusersmediacontainer.md) | :heavy_minus_sign: | Container holding user and server details. |
|
||||
16
docs/models/operations/getusersserver.md
Normal file
16
docs/models/operations/getusersserver.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# GetUsersServer
|
||||
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
||||
| `id` | *int* | :heavy_check_mark: | Unique ID of the server of the connected user | 907759180 |
|
||||
| `server_id` | *int* | :heavy_check_mark: | ID of the actual Plex server. | 9999999 |
|
||||
| `machine_identifier` | *str* | :heavy_check_mark: | Machine identifier of the Plex server. | fbb8aa6be6e0c997c6268bc2b4431c8807f70a3 |
|
||||
| `name` | *str* | :heavy_check_mark: | Name of the Plex server of the connected user. | ConnectedUserFlix |
|
||||
| `last_seen_at` | *int* | :heavy_check_mark: | N/A | 1556281940 |
|
||||
| `num_libraries` | *int* | :heavy_check_mark: | Number of libraries in the server this user has access to. | 16 |
|
||||
| `all_libraries` | [Optional[operations.AllLibraries]](../../models/operations/alllibraries.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `owned` | [Optional[operations.Owned]](../../models/operations/owned.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `pending` | [Optional[operations.Pending]](../../models/operations/pending.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
11
docs/models/operations/home.md
Normal file
11
docs/models/operations/home.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Home
|
||||
|
||||
Indicates if the user is part of a home group.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/owned.md
Normal file
11
docs/models/operations/owned.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Owned
|
||||
|
||||
Indicates if the user owns the server.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/pending.md
Normal file
11
docs/models/operations/pending.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Pending
|
||||
|
||||
Indicates if the server is pending approval.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/protected.md
Normal file
11
docs/models/operations/protected.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Protected
|
||||
|
||||
Indicates whether the account is protected.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
11
docs/models/operations/restricted.md
Normal file
11
docs/models/operations/restricted.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Restricted
|
||||
|
||||
Indicates if the user has restricted access.
|
||||
|
||||
|
||||
## Values
|
||||
|
||||
| Name | Value |
|
||||
| --------- | --------- |
|
||||
| `DISABLE` | 0 |
|
||||
| `ENABLE` | 1 |
|
||||
@@ -3,6 +3,25 @@
|
||||
|
||||
## Fields
|
||||
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ |
|
||||
| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 220 |
|
||||
| Field | Type | Required | Description | Example |
|
||||
| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `id` | *int* | :heavy_check_mark: | User's unique ID. | 22526914 |
|
||||
| `title` | *str* | :heavy_check_mark: | User's display name. | Plex User |
|
||||
| `username` | *str* | :heavy_check_mark: | User's username. | zgfuc7krcqfimrmb9lsl5j |
|
||||
| `email` | *str* | :heavy_check_mark: | User's email address. | zgfuc7krcqfimrmb9lsl5j@protonmail.com |
|
||||
| `thumb` | *str* | :heavy_check_mark: | URL to the user's avatar image. | https://plex.tv/users/3346028014e93acd/avatar?c=1731605021 |
|
||||
| `server` | List[[operations.GetUsersServer](../../models/operations/getusersserver.md)] | :heavy_check_mark: | List of servers owned by the user. | |
|
||||
| `recommendations_playlist_id` | *OptionalNullable[str]* | :heavy_minus_sign: | ID of the user's recommendation playlist. | |
|
||||
| `protected` | [Optional[operations.Protected]](../../models/operations/protected.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `home` | [Optional[operations.Home]](../../models/operations/home.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `allow_tuners` | [Optional[operations.AllowTuners]](../../models/operations/allowtuners.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `allow_sync` | [Optional[operations.AllowSync]](../../models/operations/allowsync.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `allow_camera_upload` | [Optional[operations.AllowCameraUpload]](../../models/operations/allowcameraupload.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `allow_channels` | [Optional[operations.AllowChannels]](../../models/operations/allowchannels.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `allow_subtitle_admin` | [Optional[operations.AllowSubtitleAdmin]](../../models/operations/allowsubtitleadmin.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
| `filter_all` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for all content. | |
|
||||
| `filter_movies` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for movies. | |
|
||||
| `filter_music` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for music. | |
|
||||
| `filter_photos` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for photos. | |
|
||||
| `filter_television` | *Optional[str]* | :heavy_minus_sign: | Filters applied for television. | |
|
||||
| `restricted` | [Optional[operations.Restricted]](../../models/operations/restricted.md) | :heavy_minus_sign: | N/A | 1 |
|
||||
62
docs/sdks/users/README.md
Normal file
62
docs/sdks/users/README.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Users
|
||||
(*users*)
|
||||
|
||||
## Overview
|
||||
|
||||
### Available Operations
|
||||
|
||||
* [get_users](#get_users) - Get list of all connected users
|
||||
|
||||
## get_users
|
||||
|
||||
Get list of all users that are friends and have library access with the provided Plex authentication token
|
||||
|
||||
### Example Usage
|
||||
|
||||
```python
|
||||
from plex_api_client import PlexAPI
|
||||
|
||||
with PlexAPI() as plex_api:
|
||||
|
||||
res = plex_api.users.get_users(request={
|
||||
"client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58",
|
||||
"x_plex_token": "CV5xoxjTpFKUzBTShsaf",
|
||||
"client_name": "Plex for Roku",
|
||||
"device_nickname": "Roku 3",
|
||||
"device_name": "Chrome",
|
||||
"device_screen_resolution": "1487x1165,2560x1440",
|
||||
"client_version": "2.4.1",
|
||||
"platform": "Roku",
|
||||
"client_features": "external-media,indirect-media,hub-style-list",
|
||||
"model": "4200X",
|
||||
"x_plex_session_id": "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca",
|
||||
"x_plex_language": "en",
|
||||
"platform_version": "4.3 build 1057",
|
||||
})
|
||||
|
||||
assert res.body is not None
|
||||
|
||||
# Handle response
|
||||
print(res.body)
|
||||
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
| Parameter | Type | Required | Description |
|
||||
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
|
||||
| `request` | [operations.GetUsersRequest](../../models/operations/getusersrequest.md) | :heavy_check_mark: | The request object to use for the request. |
|
||||
| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. |
|
||||
| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. |
|
||||
|
||||
### Response
|
||||
|
||||
**[operations.GetUsersResponse](../../models/operations/getusersresponse.md)**
|
||||
|
||||
### Errors
|
||||
|
||||
| Error Type | Status Code | Content Type |
|
||||
| --------------------------- | --------------------------- | --------------------------- |
|
||||
| errors.GetUsersBadRequest | 400 | application/json |
|
||||
| errors.GetUsersUnauthorized | 401 | application/json |
|
||||
| errors.SDKError | 4XX, 5XX | \*/\* |
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "plex-api-client"
|
||||
version = "0.21.2"
|
||||
version = "0.22.0"
|
||||
description = "Python Client SDK Generated by Speakeasy"
|
||||
authors = [{ name = "Speakeasy" },]
|
||||
readme = "README-PYPI.md"
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
import importlib.metadata
|
||||
|
||||
__title__: str = "plex-api-client"
|
||||
__version__: str = "0.21.2"
|
||||
__version__: str = "0.22.0"
|
||||
__openapi_doc_version__: str = "0.0.3"
|
||||
__gen_version__: str = "2.503.2"
|
||||
__user_agent__: str = "speakeasy-sdk/python 0.21.2 2.503.2 0.0.3 plex-api-client"
|
||||
__gen_version__: str = "2.506.0"
|
||||
__user_agent__: str = "speakeasy-sdk/python 0.22.0 2.506.0 0.0.3 plex-api-client"
|
||||
|
||||
try:
|
||||
if __package__ is not None:
|
||||
|
||||
@@ -234,6 +234,16 @@ from .get_thumb_image import (
|
||||
GetThumbImageUnauthorized,
|
||||
GetThumbImageUnauthorizedData,
|
||||
)
|
||||
from .get_users import (
|
||||
GetUsersBadRequest,
|
||||
GetUsersBadRequestData,
|
||||
GetUsersErrors,
|
||||
GetUsersErrorsTypedDict,
|
||||
GetUsersUnauthorized,
|
||||
GetUsersUnauthorizedData,
|
||||
GetUsersUsersErrors,
|
||||
GetUsersUsersErrorsTypedDict,
|
||||
)
|
||||
from .get_watch_list import (
|
||||
GetWatchListBadRequest,
|
||||
GetWatchListBadRequestData,
|
||||
@@ -1234,6 +1244,14 @@ __all__ = [
|
||||
"GetUserFriendsPlexErrorsTypedDict",
|
||||
"GetUserFriendsUnauthorized",
|
||||
"GetUserFriendsUnauthorizedData",
|
||||
"GetUsersBadRequest",
|
||||
"GetUsersBadRequestData",
|
||||
"GetUsersErrors",
|
||||
"GetUsersErrorsTypedDict",
|
||||
"GetUsersUnauthorized",
|
||||
"GetUsersUnauthorizedData",
|
||||
"GetUsersUsersErrors",
|
||||
"GetUsersUsersErrorsTypedDict",
|
||||
"GetWatchListBadRequest",
|
||||
"GetWatchListBadRequestData",
|
||||
"GetWatchListErrors",
|
||||
|
||||
79
src/plex_api_client/models/errors/get_users.py
Normal file
79
src/plex_api_client/models/errors/get_users.py
Normal file
@@ -0,0 +1,79 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
import httpx
|
||||
from plex_api_client import utils
|
||||
from plex_api_client.types import BaseModel
|
||||
import pydantic
|
||||
from typing import List, Optional
|
||||
from typing_extensions import Annotated, NotRequired, TypedDict
|
||||
|
||||
|
||||
class GetUsersUsersErrorsTypedDict(TypedDict):
|
||||
code: NotRequired[int]
|
||||
message: NotRequired[str]
|
||||
status: NotRequired[int]
|
||||
|
||||
|
||||
class GetUsersUsersErrors(BaseModel):
|
||||
code: Optional[int] = None
|
||||
|
||||
message: Optional[str] = None
|
||||
|
||||
status: Optional[int] = None
|
||||
|
||||
|
||||
class GetUsersUnauthorizedData(BaseModel):
|
||||
errors: Optional[List[GetUsersUsersErrors]] = None
|
||||
|
||||
raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = (
|
||||
None
|
||||
)
|
||||
r"""Raw HTTP response; suitable for custom response parsing"""
|
||||
|
||||
|
||||
class GetUsersUnauthorized(Exception):
|
||||
r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query."""
|
||||
|
||||
data: GetUsersUnauthorizedData
|
||||
|
||||
def __init__(self, data: GetUsersUnauthorizedData):
|
||||
self.data = data
|
||||
|
||||
def __str__(self) -> str:
|
||||
return utils.marshal_json(self.data, GetUsersUnauthorizedData)
|
||||
|
||||
|
||||
class GetUsersErrorsTypedDict(TypedDict):
|
||||
code: NotRequired[int]
|
||||
message: NotRequired[str]
|
||||
status: NotRequired[int]
|
||||
|
||||
|
||||
class GetUsersErrors(BaseModel):
|
||||
code: Optional[int] = None
|
||||
|
||||
message: Optional[str] = None
|
||||
|
||||
status: Optional[int] = None
|
||||
|
||||
|
||||
class GetUsersBadRequestData(BaseModel):
|
||||
errors: Optional[List[GetUsersErrors]] = None
|
||||
|
||||
raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = (
|
||||
None
|
||||
)
|
||||
r"""Raw HTTP response; suitable for custom response parsing"""
|
||||
|
||||
|
||||
class GetUsersBadRequest(Exception):
|
||||
r"""Bad Request - A parameter was not specified, or was specified incorrectly."""
|
||||
|
||||
data: GetUsersBadRequestData
|
||||
|
||||
def __init__(self, data: GetUsersBadRequestData):
|
||||
self.data = data
|
||||
|
||||
def __str__(self) -> str:
|
||||
return utils.marshal_json(self.data, GetUsersBadRequestData)
|
||||
@@ -482,6 +482,32 @@ from .get_thumb_image import (
|
||||
GetThumbImageResponse,
|
||||
GetThumbImageResponseTypedDict,
|
||||
)
|
||||
from .get_users import (
|
||||
AllLibraries,
|
||||
AllowCameraUpload,
|
||||
AllowChannels,
|
||||
AllowSubtitleAdmin,
|
||||
AllowSync,
|
||||
AllowTuners,
|
||||
GET_USERS_SERVERS,
|
||||
GetUsersMediaContainer,
|
||||
GetUsersMediaContainerTypedDict,
|
||||
GetUsersRequest,
|
||||
GetUsersRequestTypedDict,
|
||||
GetUsersResponse,
|
||||
GetUsersResponseBody,
|
||||
GetUsersResponseBodyTypedDict,
|
||||
GetUsersResponseTypedDict,
|
||||
GetUsersServer,
|
||||
GetUsersServerTypedDict,
|
||||
Home,
|
||||
Owned,
|
||||
Pending,
|
||||
Protected,
|
||||
Restricted,
|
||||
User,
|
||||
UserTypedDict,
|
||||
)
|
||||
from .get_watch_list import (
|
||||
Filter,
|
||||
GET_WATCH_LIST_SERVERS,
|
||||
@@ -929,8 +955,8 @@ from .gettopwatchedcontent import (
|
||||
GetTopWatchedContentResponseTypedDict,
|
||||
GetTopWatchedContentRole,
|
||||
GetTopWatchedContentRoleTypedDict,
|
||||
User,
|
||||
UserTypedDict,
|
||||
GetTopWatchedContentUser,
|
||||
GetTopWatchedContentUserTypedDict,
|
||||
)
|
||||
from .gettranscodesessions import (
|
||||
GetTranscodeSessionsMediaContainer,
|
||||
@@ -1108,6 +1134,12 @@ __all__ = [
|
||||
"AddPlaylistContentsResponseBody",
|
||||
"AddPlaylistContentsResponseBodyTypedDict",
|
||||
"AddPlaylistContentsResponseTypedDict",
|
||||
"AllLibraries",
|
||||
"AllowCameraUpload",
|
||||
"AllowChannels",
|
||||
"AllowSubtitleAdmin",
|
||||
"AllowSync",
|
||||
"AllowTuners",
|
||||
"ApplyUpdatesRequest",
|
||||
"ApplyUpdatesRequestTypedDict",
|
||||
"ApplyUpdatesResponse",
|
||||
@@ -1189,6 +1221,7 @@ __all__ = [
|
||||
"GET_SERVER_RESOURCES_SERVERS",
|
||||
"GET_TOKEN_BY_PIN_ID_SERVERS",
|
||||
"GET_TOKEN_DETAILS_SERVERS",
|
||||
"GET_USERS_SERVERS",
|
||||
"GET_USER_FRIENDS_SERVERS",
|
||||
"GET_WATCH_LIST_SERVERS",
|
||||
"Genre",
|
||||
@@ -1797,6 +1830,8 @@ __all__ = [
|
||||
"GetTopWatchedContentResponseTypedDict",
|
||||
"GetTopWatchedContentRole",
|
||||
"GetTopWatchedContentRoleTypedDict",
|
||||
"GetTopWatchedContentUser",
|
||||
"GetTopWatchedContentUserTypedDict",
|
||||
"GetTranscodeSessionsMediaContainer",
|
||||
"GetTranscodeSessionsMediaContainerTypedDict",
|
||||
"GetTranscodeSessionsResponse",
|
||||
@@ -1816,6 +1851,16 @@ __all__ = [
|
||||
"GetUpdateStatusResponseTypedDict",
|
||||
"GetUserFriendsResponse",
|
||||
"GetUserFriendsResponseTypedDict",
|
||||
"GetUsersMediaContainer",
|
||||
"GetUsersMediaContainerTypedDict",
|
||||
"GetUsersRequest",
|
||||
"GetUsersRequestTypedDict",
|
||||
"GetUsersResponse",
|
||||
"GetUsersResponseBody",
|
||||
"GetUsersResponseBodyTypedDict",
|
||||
"GetUsersResponseTypedDict",
|
||||
"GetUsersServer",
|
||||
"GetUsersServerTypedDict",
|
||||
"GetWatchListRequest",
|
||||
"GetWatchListRequestTypedDict",
|
||||
"GetWatchListResponse",
|
||||
@@ -1825,6 +1870,7 @@ __all__ = [
|
||||
"Guids",
|
||||
"GuidsTypedDict",
|
||||
"HasThumbnail",
|
||||
"Home",
|
||||
"Hub",
|
||||
"HubTypedDict",
|
||||
"Image",
|
||||
@@ -1880,12 +1926,14 @@ __all__ = [
|
||||
"Operator",
|
||||
"OperatorTypedDict",
|
||||
"OptimizedForStreaming",
|
||||
"Owned",
|
||||
"POST_USERS_SIGN_IN_DATA_SERVERS",
|
||||
"Part",
|
||||
"PartTypedDict",
|
||||
"PastSubscription",
|
||||
"PastSubscriptionTypedDict",
|
||||
"PathParamTaskName",
|
||||
"Pending",
|
||||
"PerformSearchRequest",
|
||||
"PerformSearchRequestTypedDict",
|
||||
"PerformSearchResponse",
|
||||
@@ -1929,6 +1977,7 @@ __all__ = [
|
||||
"PostUsersSignInDataWatchedIndicator",
|
||||
"Producer",
|
||||
"ProducerTypedDict",
|
||||
"Protected",
|
||||
"Protocol",
|
||||
"Provider",
|
||||
"ProviderTypedDict",
|
||||
@@ -1947,6 +1996,7 @@ __all__ = [
|
||||
"ReleaseTypedDict",
|
||||
"ResponseBody",
|
||||
"ResponseBodyTypedDict",
|
||||
"Restricted",
|
||||
"Role",
|
||||
"RoleTypedDict",
|
||||
"Scope",
|
||||
|
||||
476
src/plex_api_client/models/operations/get_users.py
Normal file
476
src/plex_api_client/models/operations/get_users.py
Normal file
@@ -0,0 +1,476 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from __future__ import annotations
|
||||
from enum import Enum
|
||||
import httpx
|
||||
from plex_api_client.types import (
|
||||
BaseModel,
|
||||
Nullable,
|
||||
OptionalNullable,
|
||||
UNSET,
|
||||
UNSET_SENTINEL,
|
||||
)
|
||||
from plex_api_client.utils import FieldMetadata, HeaderMetadata
|
||||
import pydantic
|
||||
from pydantic import model_serializer
|
||||
from typing import List, Optional
|
||||
from typing_extensions import Annotated, NotRequired, TypedDict
|
||||
|
||||
GET_USERS_SERVERS = [
|
||||
"https://plex.tv/api",
|
||||
]
|
||||
|
||||
|
||||
class GetUsersRequestTypedDict(TypedDict):
|
||||
client_id: str
|
||||
r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)"""
|
||||
x_plex_token: str
|
||||
r"""An authentication token, obtained from plex.tv"""
|
||||
client_name: NotRequired[str]
|
||||
r"""The name of the client application. (Plex Web, Plex Media Server, etc.)"""
|
||||
device_nickname: NotRequired[str]
|
||||
r"""A relatively friendly name for the client device"""
|
||||
device_name: NotRequired[str]
|
||||
r"""The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.)"""
|
||||
device_screen_resolution: NotRequired[str]
|
||||
r"""The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440)"""
|
||||
client_version: NotRequired[str]
|
||||
r"""The version of the client application."""
|
||||
platform: NotRequired[str]
|
||||
r"""The platform of the client application."""
|
||||
client_features: NotRequired[str]
|
||||
r"""The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list)"""
|
||||
model: NotRequired[str]
|
||||
r"""A potentially less friendly identifier for the device model"""
|
||||
x_plex_session_id: NotRequired[str]
|
||||
r"""The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca)"""
|
||||
x_plex_language: NotRequired[str]
|
||||
r"""The language of the client application."""
|
||||
platform_version: NotRequired[str]
|
||||
r"""The version of the platform"""
|
||||
|
||||
|
||||
class GetUsersRequest(BaseModel):
|
||||
client_id: Annotated[
|
||||
str,
|
||||
pydantic.Field(alias="X-Plex-Client-Identifier"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
]
|
||||
r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)"""
|
||||
|
||||
x_plex_token: Annotated[
|
||||
str,
|
||||
pydantic.Field(alias="X-Plex-Token"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
]
|
||||
r"""An authentication token, obtained from plex.tv"""
|
||||
|
||||
client_name: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Product"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The name of the client application. (Plex Web, Plex Media Server, etc.)"""
|
||||
|
||||
device_nickname: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Device"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""A relatively friendly name for the client device"""
|
||||
|
||||
device_name: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Device-Name"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.)"""
|
||||
|
||||
device_screen_resolution: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Device-Screen-Resolution"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440)"""
|
||||
|
||||
client_version: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Version"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The version of the client application."""
|
||||
|
||||
platform: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Platform"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The platform of the client application."""
|
||||
|
||||
client_features: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Features"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list)"""
|
||||
|
||||
model: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Model"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""A potentially less friendly identifier for the device model"""
|
||||
|
||||
x_plex_session_id: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Session-Id"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca)"""
|
||||
|
||||
x_plex_language: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Language"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The language of the client application."""
|
||||
|
||||
platform_version: Annotated[
|
||||
Optional[str],
|
||||
pydantic.Field(alias="X-Plex-Platform-Version"),
|
||||
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
||||
] = None
|
||||
r"""The version of the platform"""
|
||||
|
||||
|
||||
class Protected(int, Enum):
|
||||
r"""Indicates whether the account is protected."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class Home(int, Enum):
|
||||
r"""Indicates if the user is part of a home group."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class AllowTuners(int, Enum):
|
||||
r"""Indicates if the user is allowed to use tuners."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class AllowSync(int, Enum):
|
||||
r"""Indicates if the user is allowed to sync media."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class AllowCameraUpload(int, Enum):
|
||||
r"""Indicates if the user is allowed to upload from a camera."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class AllowChannels(int, Enum):
|
||||
r"""Indicates if the user has access to channels."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class AllowSubtitleAdmin(int, Enum):
|
||||
r"""Indicates if the user can manage subtitles."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class Restricted(int, Enum):
|
||||
r"""Indicates if the user has restricted access."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class AllLibraries(int, Enum):
|
||||
r"""Indicates if the user has access to all libraries."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class Owned(int, Enum):
|
||||
r"""Indicates if the user owns the server."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class Pending(int, Enum):
|
||||
r"""Indicates if the server is pending approval."""
|
||||
|
||||
DISABLE = 0
|
||||
ENABLE = 1
|
||||
|
||||
|
||||
class GetUsersServerTypedDict(TypedDict):
|
||||
id: int
|
||||
r"""Unique ID of the server of the connected user"""
|
||||
server_id: int
|
||||
r"""ID of the actual Plex server."""
|
||||
machine_identifier: str
|
||||
r"""Machine identifier of the Plex server."""
|
||||
name: str
|
||||
r"""Name of the Plex server of the connected user."""
|
||||
last_seen_at: int
|
||||
num_libraries: int
|
||||
r"""Number of libraries in the server this user has access to."""
|
||||
all_libraries: NotRequired[AllLibraries]
|
||||
owned: NotRequired[Owned]
|
||||
pending: NotRequired[Pending]
|
||||
|
||||
|
||||
class GetUsersServer(BaseModel):
|
||||
id: int
|
||||
r"""Unique ID of the server of the connected user"""
|
||||
|
||||
server_id: int
|
||||
r"""ID of the actual Plex server."""
|
||||
|
||||
machine_identifier: str
|
||||
r"""Machine identifier of the Plex server."""
|
||||
|
||||
name: str
|
||||
r"""Name of the Plex server of the connected user."""
|
||||
|
||||
last_seen_at: int
|
||||
|
||||
num_libraries: int
|
||||
r"""Number of libraries in the server this user has access to."""
|
||||
|
||||
all_libraries: Optional[AllLibraries] = AllLibraries.DISABLE
|
||||
|
||||
owned: Optional[Owned] = Owned.DISABLE
|
||||
|
||||
pending: Optional[Pending] = Pending.DISABLE
|
||||
|
||||
|
||||
class UserTypedDict(TypedDict):
|
||||
id: int
|
||||
r"""User's unique ID."""
|
||||
title: str
|
||||
r"""User's display name."""
|
||||
username: str
|
||||
r"""User's username."""
|
||||
email: str
|
||||
r"""User's email address."""
|
||||
thumb: str
|
||||
r"""URL to the user's avatar image."""
|
||||
server: List[GetUsersServerTypedDict]
|
||||
r"""List of servers owned by the user."""
|
||||
recommendations_playlist_id: NotRequired[Nullable[str]]
|
||||
r"""ID of the user's recommendation playlist."""
|
||||
protected: NotRequired[Protected]
|
||||
home: NotRequired[Home]
|
||||
allow_tuners: NotRequired[AllowTuners]
|
||||
allow_sync: NotRequired[AllowSync]
|
||||
allow_camera_upload: NotRequired[AllowCameraUpload]
|
||||
allow_channels: NotRequired[AllowChannels]
|
||||
allow_subtitle_admin: NotRequired[AllowSubtitleAdmin]
|
||||
filter_all: NotRequired[Nullable[str]]
|
||||
r"""Filters applied for all content."""
|
||||
filter_movies: NotRequired[Nullable[str]]
|
||||
r"""Filters applied for movies."""
|
||||
filter_music: NotRequired[Nullable[str]]
|
||||
r"""Filters applied for music."""
|
||||
filter_photos: NotRequired[Nullable[str]]
|
||||
r"""Filters applied for photos."""
|
||||
filter_television: NotRequired[str]
|
||||
r"""Filters applied for television."""
|
||||
restricted: NotRequired[Restricted]
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
id: int
|
||||
r"""User's unique ID."""
|
||||
|
||||
title: str
|
||||
r"""User's display name."""
|
||||
|
||||
username: str
|
||||
r"""User's username."""
|
||||
|
||||
email: str
|
||||
r"""User's email address."""
|
||||
|
||||
thumb: str
|
||||
r"""URL to the user's avatar image."""
|
||||
|
||||
server: List[GetUsersServer]
|
||||
r"""List of servers owned by the user."""
|
||||
|
||||
recommendations_playlist_id: OptionalNullable[str] = UNSET
|
||||
r"""ID of the user's recommendation playlist."""
|
||||
|
||||
protected: Optional[Protected] = Protected.DISABLE
|
||||
|
||||
home: Optional[Home] = Home.DISABLE
|
||||
|
||||
allow_tuners: Optional[AllowTuners] = AllowTuners.DISABLE
|
||||
|
||||
allow_sync: Optional[AllowSync] = AllowSync.DISABLE
|
||||
|
||||
allow_camera_upload: Optional[AllowCameraUpload] = AllowCameraUpload.DISABLE
|
||||
|
||||
allow_channels: Optional[AllowChannels] = AllowChannels.DISABLE
|
||||
|
||||
allow_subtitle_admin: Optional[AllowSubtitleAdmin] = AllowSubtitleAdmin.DISABLE
|
||||
|
||||
filter_all: OptionalNullable[str] = UNSET
|
||||
r"""Filters applied for all content."""
|
||||
|
||||
filter_movies: OptionalNullable[str] = UNSET
|
||||
r"""Filters applied for movies."""
|
||||
|
||||
filter_music: OptionalNullable[str] = UNSET
|
||||
r"""Filters applied for music."""
|
||||
|
||||
filter_photos: OptionalNullable[str] = UNSET
|
||||
r"""Filters applied for photos."""
|
||||
|
||||
filter_television: Optional[str] = None
|
||||
r"""Filters applied for television."""
|
||||
|
||||
restricted: Optional[Restricted] = Restricted.DISABLE
|
||||
|
||||
@model_serializer(mode="wrap")
|
||||
def serialize_model(self, handler):
|
||||
optional_fields = [
|
||||
"recommendationsPlaylistId",
|
||||
"protected",
|
||||
"home",
|
||||
"allowTuners",
|
||||
"allowSync",
|
||||
"allowCameraUpload",
|
||||
"allowChannels",
|
||||
"allowSubtitleAdmin",
|
||||
"filterAll",
|
||||
"filterMovies",
|
||||
"filterMusic",
|
||||
"filterPhotos",
|
||||
"filterTelevision",
|
||||
"restricted",
|
||||
]
|
||||
nullable_fields = [
|
||||
"recommendationsPlaylistId",
|
||||
"filterAll",
|
||||
"filterMovies",
|
||||
"filterMusic",
|
||||
"filterPhotos",
|
||||
]
|
||||
null_default_fields = []
|
||||
|
||||
serialized = handler(self)
|
||||
|
||||
m = {}
|
||||
|
||||
for n, f in self.model_fields.items():
|
||||
k = f.alias or n
|
||||
val = serialized.get(k)
|
||||
serialized.pop(k, None)
|
||||
|
||||
optional_nullable = k in optional_fields and k in nullable_fields
|
||||
is_set = (
|
||||
self.__pydantic_fields_set__.intersection({n})
|
||||
or k in null_default_fields
|
||||
) # pylint: disable=no-member
|
||||
|
||||
if val is not None and val != UNSET_SENTINEL:
|
||||
m[k] = val
|
||||
elif val != UNSET_SENTINEL and (
|
||||
not k in optional_fields or (optional_nullable and is_set)
|
||||
):
|
||||
m[k] = val
|
||||
|
||||
return m
|
||||
|
||||
|
||||
class GetUsersMediaContainerTypedDict(TypedDict):
|
||||
r"""Container holding user and server details."""
|
||||
|
||||
friendly_name: str
|
||||
r"""The friendly name of the Plex instance."""
|
||||
identifier: str
|
||||
machine_identifier: str
|
||||
r"""Unique Machine identifier of the Plex server."""
|
||||
total_size: int
|
||||
r"""Total number of users."""
|
||||
size: int
|
||||
r"""Number of users in the current response."""
|
||||
user: List[UserTypedDict]
|
||||
r"""List of users with access to the Plex server."""
|
||||
|
||||
|
||||
class GetUsersMediaContainer(BaseModel):
|
||||
r"""Container holding user and server details."""
|
||||
|
||||
friendly_name: str
|
||||
r"""The friendly name of the Plex instance."""
|
||||
|
||||
identifier: str
|
||||
|
||||
machine_identifier: str
|
||||
r"""Unique Machine identifier of the Plex server."""
|
||||
|
||||
total_size: int
|
||||
r"""Total number of users."""
|
||||
|
||||
size: int
|
||||
r"""Number of users in the current response."""
|
||||
|
||||
user: List[User]
|
||||
r"""List of users with access to the Plex server."""
|
||||
|
||||
|
||||
class GetUsersResponseBodyTypedDict(TypedDict):
|
||||
r"""Successful response with media container data in XML"""
|
||||
|
||||
media_container: NotRequired[GetUsersMediaContainerTypedDict]
|
||||
r"""Container holding user and server details."""
|
||||
|
||||
|
||||
class GetUsersResponseBody(BaseModel):
|
||||
r"""Successful response with media container data in XML"""
|
||||
|
||||
media_container: Optional[GetUsersMediaContainer] = None
|
||||
r"""Container holding user and server details."""
|
||||
|
||||
|
||||
class GetUsersResponseTypedDict(TypedDict):
|
||||
content_type: str
|
||||
r"""HTTP response content type for this operation"""
|
||||
status_code: int
|
||||
r"""HTTP response status code for this operation"""
|
||||
raw_response: httpx.Response
|
||||
r"""Raw HTTP response; suitable for custom response parsing"""
|
||||
body: NotRequired[bytes]
|
||||
|
||||
|
||||
class GetUsersResponse(BaseModel):
|
||||
content_type: str
|
||||
r"""HTTP response content type for this operation"""
|
||||
|
||||
status_code: int
|
||||
r"""HTTP response status code for this operation"""
|
||||
|
||||
raw_response: httpx.Response
|
||||
r"""Raw HTTP response; suitable for custom response parsing"""
|
||||
|
||||
body: Optional[bytes] = None
|
||||
@@ -129,11 +129,11 @@ class GetTopWatchedContentRole(BaseModel):
|
||||
thumb: Optional[str] = None
|
||||
|
||||
|
||||
class UserTypedDict(TypedDict):
|
||||
class GetTopWatchedContentUserTypedDict(TypedDict):
|
||||
id: NotRequired[int]
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
class GetTopWatchedContentUser(BaseModel):
|
||||
id: Optional[int] = None
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ class GetTopWatchedContentMetadataTypedDict(TypedDict):
|
||||
country: NotRequired[List[GetTopWatchedContentCountryTypedDict]]
|
||||
guids: NotRequired[List[GetTopWatchedContentGuidsTypedDict]]
|
||||
role: NotRequired[List[GetTopWatchedContentRoleTypedDict]]
|
||||
user: NotRequired[List[UserTypedDict]]
|
||||
user: NotRequired[List[GetTopWatchedContentUserTypedDict]]
|
||||
|
||||
|
||||
class GetTopWatchedContentMetadata(BaseModel):
|
||||
@@ -261,7 +261,9 @@ class GetTopWatchedContentMetadata(BaseModel):
|
||||
Optional[List[GetTopWatchedContentRole]], pydantic.Field(alias="Role")
|
||||
] = None
|
||||
|
||||
user: Annotated[Optional[List[User]], pydantic.Field(alias="User")] = None
|
||||
user: Annotated[
|
||||
Optional[List[GetTopWatchedContentUser]], pydantic.Field(alias="User")
|
||||
] = None
|
||||
|
||||
|
||||
class GetTopWatchedContentMediaContainerTypedDict(TypedDict):
|
||||
|
||||
@@ -24,6 +24,7 @@ from plex_api_client.sessions import Sessions
|
||||
from plex_api_client.statistics import Statistics
|
||||
from plex_api_client.types import OptionalNullable, UNSET
|
||||
from plex_api_client.updater import Updater
|
||||
from plex_api_client.users import Users
|
||||
from plex_api_client.video import Video
|
||||
from plex_api_client.watchlist import Watchlist
|
||||
from typing import Any, Callable, Dict, List, Optional, Union, cast
|
||||
@@ -134,6 +135,7 @@ class PlexAPI(BaseSDK):
|
||||
Updates to the status can be observed via the Event API.
|
||||
|
||||
"""
|
||||
users: Users
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -255,6 +257,7 @@ class PlexAPI(BaseSDK):
|
||||
self.statistics = Statistics(self.sdk_configuration)
|
||||
self.sessions = Sessions(self.sdk_configuration)
|
||||
self.updater = Updater(self.sdk_configuration)
|
||||
self.users = Users(self.sdk_configuration)
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
222
src/plex_api_client/users.py
Normal file
222
src/plex_api_client/users.py
Normal file
@@ -0,0 +1,222 @@
|
||||
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
||||
|
||||
from .basesdk import BaseSDK
|
||||
from plex_api_client import utils
|
||||
from plex_api_client._hooks import HookContext
|
||||
from plex_api_client.models import errors, operations
|
||||
from plex_api_client.types import BaseModel, OptionalNullable, UNSET
|
||||
from typing import Any, Mapping, Optional, Union, cast
|
||||
|
||||
|
||||
class Users(BaseSDK):
|
||||
def get_users(
|
||||
self,
|
||||
*,
|
||||
request: Union[operations.GetUsersRequest, operations.GetUsersRequestTypedDict],
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> operations.GetUsersResponse:
|
||||
r"""Get list of all connected users
|
||||
|
||||
Get list of all users that are friends and have library access with the provided Plex authentication token
|
||||
|
||||
:param request: The request object to send.
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = operations.GET_USERS_SERVERS[0]
|
||||
|
||||
if not isinstance(request, BaseModel):
|
||||
request = utils.unmarshal(request, operations.GetUsersRequest)
|
||||
request = cast(operations.GetUsersRequest, request)
|
||||
|
||||
req = self._build_request(
|
||||
method="GET",
|
||||
path="/users",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=False,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/xml",
|
||||
http_headers=http_headers,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
||||
|
||||
http_res = self.do_request(
|
||||
hook_ctx=HookContext(
|
||||
operation_id="get-users", oauth2_scopes=[], security_source=None
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "4XX", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/xml"):
|
||||
http_res_bytes = utils.stream_to_bytes(http_res)
|
||||
return operations.GetUsersResponse(
|
||||
body=http_res_bytes,
|
||||
status_code=http_res.status_code,
|
||||
content_type=http_res.headers.get("Content-Type") or "",
|
||||
raw_response=http_res,
|
||||
)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = utils.unmarshal_json(
|
||||
http_res.text, errors.GetUsersBadRequestData
|
||||
)
|
||||
response_data.raw_response = http_res
|
||||
raise errors.GetUsersBadRequest(data=response_data)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = utils.unmarshal_json(
|
||||
http_res.text, errors.GetUsersUnauthorizedData
|
||||
)
|
||||
response_data.raw_response = http_res
|
||||
raise errors.GetUsersUnauthorized(data=response_data)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.SDKError(
|
||||
"API error occurred", http_res.status_code, http_res_text, http_res
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.SDKError(
|
||||
"API error occurred", http_res.status_code, http_res_text, http_res
|
||||
)
|
||||
|
||||
content_type = http_res.headers.get("Content-Type")
|
||||
http_res_text = utils.stream_to_text(http_res)
|
||||
raise errors.SDKError(
|
||||
f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
|
||||
http_res.status_code,
|
||||
http_res_text,
|
||||
http_res,
|
||||
)
|
||||
|
||||
async def get_users_async(
|
||||
self,
|
||||
*,
|
||||
request: Union[operations.GetUsersRequest, operations.GetUsersRequestTypedDict],
|
||||
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
||||
server_url: Optional[str] = None,
|
||||
timeout_ms: Optional[int] = None,
|
||||
http_headers: Optional[Mapping[str, str]] = None,
|
||||
) -> operations.GetUsersResponse:
|
||||
r"""Get list of all connected users
|
||||
|
||||
Get list of all users that are friends and have library access with the provided Plex authentication token
|
||||
|
||||
:param request: The request object to send.
|
||||
:param retries: Override the default retry configuration for this method
|
||||
:param server_url: Override the default server URL for this method
|
||||
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
||||
:param http_headers: Additional headers to set or replace on requests.
|
||||
"""
|
||||
base_url = None
|
||||
url_variables = None
|
||||
if timeout_ms is None:
|
||||
timeout_ms = self.sdk_configuration.timeout_ms
|
||||
|
||||
if server_url is not None:
|
||||
base_url = server_url
|
||||
else:
|
||||
base_url = operations.GET_USERS_SERVERS[0]
|
||||
|
||||
if not isinstance(request, BaseModel):
|
||||
request = utils.unmarshal(request, operations.GetUsersRequest)
|
||||
request = cast(operations.GetUsersRequest, request)
|
||||
|
||||
req = self._build_request_async(
|
||||
method="GET",
|
||||
path="/users",
|
||||
base_url=base_url,
|
||||
url_variables=url_variables,
|
||||
request=request,
|
||||
request_body_required=False,
|
||||
request_has_path_params=False,
|
||||
request_has_query_params=False,
|
||||
user_agent_header="user-agent",
|
||||
accept_header_value="application/xml",
|
||||
http_headers=http_headers,
|
||||
timeout_ms=timeout_ms,
|
||||
)
|
||||
|
||||
if retries == UNSET:
|
||||
if self.sdk_configuration.retry_config is not UNSET:
|
||||
retries = self.sdk_configuration.retry_config
|
||||
|
||||
retry_config = None
|
||||
if isinstance(retries, utils.RetryConfig):
|
||||
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
||||
|
||||
http_res = await self.do_request_async(
|
||||
hook_ctx=HookContext(
|
||||
operation_id="get-users", oauth2_scopes=[], security_source=None
|
||||
),
|
||||
request=req,
|
||||
error_status_codes=["400", "401", "4XX", "5XX"],
|
||||
retry_config=retry_config,
|
||||
)
|
||||
|
||||
response_data: Any = None
|
||||
if utils.match_response(http_res, "200", "application/xml"):
|
||||
http_res_bytes = await utils.stream_to_bytes_async(http_res)
|
||||
return operations.GetUsersResponse(
|
||||
body=http_res_bytes,
|
||||
status_code=http_res.status_code,
|
||||
content_type=http_res.headers.get("Content-Type") or "",
|
||||
raw_response=http_res,
|
||||
)
|
||||
if utils.match_response(http_res, "400", "application/json"):
|
||||
response_data = utils.unmarshal_json(
|
||||
http_res.text, errors.GetUsersBadRequestData
|
||||
)
|
||||
response_data.raw_response = http_res
|
||||
raise errors.GetUsersBadRequest(data=response_data)
|
||||
if utils.match_response(http_res, "401", "application/json"):
|
||||
response_data = utils.unmarshal_json(
|
||||
http_res.text, errors.GetUsersUnauthorizedData
|
||||
)
|
||||
response_data.raw_response = http_res
|
||||
raise errors.GetUsersUnauthorized(data=response_data)
|
||||
if utils.match_response(http_res, "4XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.SDKError(
|
||||
"API error occurred", http_res.status_code, http_res_text, http_res
|
||||
)
|
||||
if utils.match_response(http_res, "5XX", "*"):
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.SDKError(
|
||||
"API error occurred", http_res.status_code, http_res_text, http_res
|
||||
)
|
||||
|
||||
content_type = http_res.headers.get("Content-Type")
|
||||
http_res_text = await utils.stream_to_text_async(http_res)
|
||||
raise errors.SDKError(
|
||||
f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
|
||||
http_res.status_code,
|
||||
http_res_text,
|
||||
http_res,
|
||||
)
|
||||
Reference in New Issue
Block a user