From 16b440ccd14e595015499a8f385ef31c99f6328c Mon Sep 17 00:00:00 2001 From: cloudpdf-sdk-bot Date: Tue, 27 Oct 2026 11:47:58 +0000 Subject: [PATCH] chore: generate CloudPDF Python SDK 3.0.0a17 --- .fern/metadata.json | 4 +- cloudpdf-generation.json | 8 +- pyproject.toml | 2 +- reference.md | 706 +++++++++++++++++- src/cloudpdf/__init__.py | 305 +++++++- src/cloudpdf/core/client_wrapper.py | 4 +- src/cloudpdf/doc/client.py | 115 +++ src/cloudpdf/doc/raw_client.py | 173 +++++ src/cloudpdf/documents/__init__.py | 3 + src/cloudpdf/documents/client.py | 24 + src/cloudpdf/documents/layers/__init__.py | 4 + src/cloudpdf/documents/layers/client.py | 226 ++++++ src/cloudpdf/documents/layers/raw_client.py | 352 +++++++++ src/cloudpdf/errors/__init__.py | 3 + src/cloudpdf/errors/not_implemented_error.py | 11 + src/cloudpdf/shares/__init__.py | 93 +++ src/cloudpdf/shares/client.py | 230 +++++- src/cloudpdf/shares/raw_client.py | 290 ++++++- src/cloudpdf/shares/types/__init__.py | 104 +++ .../types/shares_create_request_layer_mode.py | 5 + .../shares_create_request_visitor_identity.py | 28 + ...res_create_request_visitor_identity_ask.py | 5 + ..._create_request_visitor_identity_fields.py | 44 ++ ...st_visitor_identity_fields_display_name.py | 5 + ...e_request_visitor_identity_fields_email.py | 5 + ...st_visitor_identity_fields_organization.py | 5 + ...tor_identity_fields_organizational_unit.py | 7 + ...e_request_visitor_identity_fields_title.py | 5 + ...hares_exchange_request_visitor_identity.py | 29 + .../types/shares_update_request_layer_mode.py | 5 + .../shares_update_request_visitor_identity.py | 28 + ...res_update_request_visitor_identity_ask.py | 5 + ..._update_request_visitor_identity_fields.py | 44 ++ ...st_visitor_identity_fields_display_name.py | 5 + ...e_request_visitor_identity_fields_email.py | 5 + ...st_visitor_identity_fields_organization.py | 5 + ...tor_identity_fields_organizational_unit.py | 7 + ...e_request_visitor_identity_fields_title.py | 5 + src/cloudpdf/shares/visitors/__init__.py | 4 + src/cloudpdf/shares/visitors/client.py | 228 ++++++ src/cloudpdf/shares/visitors/raw_client.py | 284 +++++++ src/cloudpdf/types/__init__.py | 319 +++++++- .../types/admin_error_payload_error.py | 1 + .../types/doc_download_link200response.py | 22 + .../types/doc_download_link404response.py | 5 + .../types/doc_download_link501response.py | 5 + .../documents_layers_delete403response.py | 5 + .../documents_layers_delete404response.py | 5 + .../documents_layers_delete409response.py | 5 + .../types/documents_layers_list200response.py | 25 + ...ents_layers_list200response_layers_item.py | 36 + .../types/documents_layers_list400response.py | 5 + .../types/documents_layers_list403response.py | 5 + .../types/documents_layers_list404response.py | 5 + .../types/engine_error_payload_code.py | 2 + .../types/shares_archive200response.py | 20 + .../types/shares_archive200response_share.py | 66 ++ ...res_archive200response_share_layer_mode.py | 5 + ...chive200response_share_visitor_identity.py | 28 + ...e200response_share_visitor_identity_ask.py | 7 + ...0response_share_visitor_identity_fields.py | 48 ++ ...re_visitor_identity_fields_display_name.py | 7 + ...nse_share_visitor_identity_fields_email.py | 7 + ...re_visitor_identity_fields_organization.py | 7 + ...tor_identity_fields_organizational_unit.py | 7 + ...nse_share_visitor_identity_fields_title.py | 7 + .../types/shares_archive404response.py | 5 + .../types/shares_create200response_share.py | 23 +- ...ares_create200response_share_layer_mode.py | 5 + ...reate200response_share_visitor_identity.py | 28 + ...e200response_share_visitor_identity_ask.py | 7 + ...0response_share_visitor_identity_fields.py | 48 ++ ...re_visitor_identity_fields_display_name.py | 7 + ...nse_share_visitor_identity_fields_email.py | 7 + ...re_visitor_identity_fields_organization.py | 7 + ...tor_identity_fields_organizational_unit.py | 7 + ...nse_share_visitor_identity_fields_title.py | 7 + ...esponse.py => shares_delete404response.py} | 2 +- .../types/shares_delete409response.py | 5 + .../types/shares_exchange200response.py | 6 + .../shares_exchange200response_layer_mode.py | 5 + .../shares_exchange200response_visitor.py | 28 + ...nge200response_visitor_identity_request.py | 36 + ...esponse_visitor_identity_request_fields.py | 48 ++ ...or_identity_request_fields_display_name.py | 7 + ...e_visitor_identity_request_fields_email.py | 7 + ...or_identity_request_fields_organization.py | 7 + ...tity_request_fields_organizational_unit.py | 7 + ...e_visitor_identity_request_fields_title.py | 7 + ...e_visitor_identity_request_invalid_item.py | 7 + ...e_visitor_identity_request_missing_item.py | 7 + .../types/shares_get200response_share.py | 23 +- .../shares_get200response_share_layer_mode.py | 5 + ...s_get200response_share_visitor_identity.py | 28 + ...t200response_share_visitor_identity_ask.py | 5 + ...0response_share_visitor_identity_fields.py | 48 ++ ...re_visitor_identity_fields_display_name.py | 7 + ...nse_share_visitor_identity_fields_email.py | 5 + ...re_visitor_identity_fields_organization.py | 7 + ...tor_identity_fields_organizational_unit.py | 7 + ...nse_share_visitor_identity_fields_title.py | 5 + .../shares_list200response_shares_item.py | 23 +- ..._list200response_shares_item_layer_mode.py | 5 + ...00response_shares_item_visitor_identity.py | 30 + ...sponse_shares_item_visitor_identity_ask.py | 7 + ...nse_shares_item_visitor_identity_fields.py | 48 ++ ...em_visitor_identity_fields_display_name.py | 7 + ...ares_item_visitor_identity_fields_email.py | 7 + ...em_visitor_identity_fields_organization.py | 7 + ...tor_identity_fields_organizational_unit.py | 7 + ...ares_item_visitor_identity_fields_title.py | 7 + .../types/shares_update200response_share.py | 23 +- ...ares_update200response_share_layer_mode.py | 5 + ...pdate200response_share_visitor_identity.py | 28 + ...e200response_share_visitor_identity_ask.py | 7 + ...0response_share_visitor_identity_fields.py | 48 ++ ...re_visitor_identity_fields_display_name.py | 7 + ...nse_share_visitor_identity_fields_email.py | 7 + ...re_visitor_identity_fields_organization.py | 7 + ...tor_identity_fields_organizational_unit.py | 7 + ...nse_share_visitor_identity_fields_title.py | 7 + .../types/shares_update409response.py | 5 + .../types/shares_visitors_delete_response.py | 5 + .../types/shares_visitors_list200response.py | 25 + ..._visitors_list200response_visitors_item.py | 37 + ...s_list200response_visitors_item_answers.py | 29 + ...ors_list200response_visitors_item_layer.py | 24 + .../types/shares_visitors_list400response.py | 5 + .../types/shares_visitors_list404response.py | 5 + 129 files changed, 4910 insertions(+), 63 deletions(-) create mode 100644 src/cloudpdf/documents/layers/__init__.py create mode 100644 src/cloudpdf/documents/layers/client.py create mode 100644 src/cloudpdf/documents/layers/raw_client.py create mode 100644 src/cloudpdf/errors/not_implemented_error.py create mode 100644 src/cloudpdf/shares/types/__init__.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_layer_mode.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_ask.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_title.py create mode 100644 src/cloudpdf/shares/types/shares_exchange_request_visitor_identity.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_layer_mode.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_ask.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_title.py create mode 100644 src/cloudpdf/shares/visitors/__init__.py create mode 100644 src/cloudpdf/shares/visitors/client.py create mode 100644 src/cloudpdf/shares/visitors/raw_client.py create mode 100644 src/cloudpdf/types/doc_download_link200response.py create mode 100644 src/cloudpdf/types/doc_download_link404response.py create mode 100644 src/cloudpdf/types/doc_download_link501response.py create mode 100644 src/cloudpdf/types/documents_layers_delete403response.py create mode 100644 src/cloudpdf/types/documents_layers_delete404response.py create mode 100644 src/cloudpdf/types/documents_layers_delete409response.py create mode 100644 src/cloudpdf/types/documents_layers_list200response.py create mode 100644 src/cloudpdf/types/documents_layers_list200response_layers_item.py create mode 100644 src/cloudpdf/types/documents_layers_list400response.py create mode 100644 src/cloudpdf/types/documents_layers_list403response.py create mode 100644 src/cloudpdf/types/documents_layers_list404response.py create mode 100644 src/cloudpdf/types/shares_archive200response.py create mode 100644 src/cloudpdf/types/shares_archive200response_share.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_layer_mode.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_ask.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_title.py create mode 100644 src/cloudpdf/types/shares_archive404response.py create mode 100644 src/cloudpdf/types/shares_create200response_share_layer_mode.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_ask.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_fields.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_title.py rename src/cloudpdf/types/{shares_delete_response.py => shares_delete404response.py} (72%) create mode 100644 src/cloudpdf/types/shares_delete409response.py create mode 100644 src/cloudpdf/types/shares_exchange200response_layer_mode.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_display_name.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_email.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organization.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organizational_unit.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_title.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_invalid_item.py create mode 100644 src/cloudpdf/types/shares_exchange200response_visitor_identity_request_missing_item.py create mode 100644 src/cloudpdf/types/shares_get200response_share_layer_mode.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_ask.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_fields.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_title.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_layer_mode.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_ask.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_title.py create mode 100644 src/cloudpdf/types/shares_update200response_share_layer_mode.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_ask.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_fields.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_display_name.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_email.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organization.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organizational_unit.py create mode 100644 src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_title.py create mode 100644 src/cloudpdf/types/shares_update409response.py create mode 100644 src/cloudpdf/types/shares_visitors_delete_response.py create mode 100644 src/cloudpdf/types/shares_visitors_list200response.py create mode 100644 src/cloudpdf/types/shares_visitors_list200response_visitors_item.py create mode 100644 src/cloudpdf/types/shares_visitors_list200response_visitors_item_answers.py create mode 100644 src/cloudpdf/types/shares_visitors_list200response_visitors_item_layer.py create mode 100644 src/cloudpdf/types/shares_visitors_list400response.py create mode 100644 src/cloudpdf/types/shares_visitors_list404response.py diff --git a/.fern/metadata.json b/.fern/metadata.json index b61ffa4..6ee7c28 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -7,9 +7,9 @@ "client_class_name": "CloudPDFClient", "environment_class_name": "CloudPDFEnvironment" }, - "originGitCommit": "7ded7de29f4cc0dc9da18042fca6afd5c9557bfc", + "originGitCommit": "07aa3f26c82243b36a5ec94f7072130c7298d977", "originGitCommitIsDirty": false, "invokedBy": "ci", - "requestedVersion": "3.0.0a16", + "requestedVersion": "3.0.0a17", "ciProvider": "github" } \ No newline at end of file diff --git a/cloudpdf-generation.json b/cloudpdf-generation.json index c8e0722..2ade0f4 100644 --- a/cloudpdf-generation.json +++ b/cloudpdf-generation.json @@ -1,12 +1,12 @@ { "language": "python", - "canonicalVersion": "3.0.0-next.16", - "sdkVersion": "3.0.0a16", + "canonicalVersion": "3.0.0-next.17", + "sdkVersion": "3.0.0a17", "source": { "repository": "embedpdf/embed-pdf-viewer", "openapi": "cloudpdf/contract/openapi.json", - "openapiSha256": "06543c26918bd79d426bf242c5a3091cdb7d298d3ac3296addabee2be80edb15", - "gitCommit": "7ded7de29f4cc0dc9da18042fca6afd5c9557bfc", + "openapiSha256": "8fa53cef2776eb0de9ec50c263aa547b309a04d1a2ecb6ee54b6338d6698dc00", + "gitCommit": "07aa3f26c82243b36a5ec94f7072130c7298d977", "gitCommitIsDirty": false }, "fern": { diff --git a/pyproject.toml b/pyproject.toml index c93c7a5..b2c26d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ dynamic = ["version"] [tool.poetry] name = "cloudpdf" -version = "3.0.0a16" +version = "3.0.0a17" description = "The official Python SDK for the CloudPDF API." readme = "README.md" authors = ["CloudPDF "] diff --git a/reference.md b/reference.md index 48ec97a..7fa3bb4 100644 --- a/reference.md +++ b/reference.md @@ -289,6 +289,103 @@ client.doc.download( + + + + +
client.doc.download_link(...) -> DocDownloadLink200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +The link opens the layer as it is when created: once the layer changes, it answers 404, so create it right before handing it over. It downloads that one file and nothing else, and a password-protected document is checked when the link is created. Deployments that verify tokens with their own keys (JWKS) mint links on their backend: a doc token with `layer_name`, a `download: { docVersion, mode: "incremental" }` claim and a short `exp`, passed as `link` on the versioned download URL. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from cloudpdf import CloudPDFClient + +client = CloudPDFClient( + token="", + base_url="https://yourhost.com/path/to/api", +) + +client.doc.download_link( + doc_id="docId", + layer_name="layerName", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**doc_id:** `str` + +
+
+ +
+
+ +**layer_name:** `str` + +
+
+ +
+
+ +**document_password:** `typing.Optional[str]` — Base64-encoded password for an encrypted document. Valid only with the API token (403 anywhere else). An encrypted document answers 422 DocPasswordRequired when the header is absent. Viewer doc JWTs use the SDK password-session flow instead. + +
+
+ +
+
+ +**expires_in:** `typing.Optional[int]` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
@@ -563,7 +660,7 @@ client.doc.text(
-Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. Mounted only when the deployment can sign (HS256 mode). +Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. A link that asks its visitors who they are on open returns 422 VisitorIdentityRequired until the required answers are given; `error.details` carries `fields` (what the link asks), `missing`, `invalid`, `purpose` and `privacyUrl`. A link that asks before the first change issues the session at once with `visitor.identityRequest`, and writes answer 403 VisitorIdentityRequired with the same details until the visitor exchanges again with their answers. Answers that can not be taken answer 422 on any link. Mounted only when the deployment can sign (HS256 mode).
@@ -619,6 +716,30 @@ client.shares.exchange(
+**visitor_handle:** `typing.Optional[str]` + +
+
+ +
+
+ +**restart:** `typing.Optional[bool]` + +
+
+ +
+
+ +**visitor_identity:** `typing.Optional[SharesExchangeRequestVisitorIdentity]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -701,6 +822,14 @@ client.shares.list(
+**archived:** `typing.Optional[bool]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -793,6 +922,14 @@ client.shares.create(
+**layer_mode:** `typing.Optional[SharesCreateRequestLayerMode]` + +
+
+ +
+
+ **layer_name:** `typing.Optional[str]`
@@ -801,6 +938,30 @@ client.shares.create(
+**keep_visitor_layers:** `typing.Optional[bool]` + +
+
+ +
+
+ +**visitor_idle_seconds:** `typing.Optional[int]` + +
+
+ +
+
+ +**visitor_identity:** `typing.Optional[SharesCreateRequestVisitorIdentity]` + +
+
+ +
+
+ **origins:** `typing.Optional[typing.List[str]]`
@@ -1034,6 +1195,46 @@ client.shares.update(
+**layer_mode:** `typing.Optional[SharesUpdateRequestLayerMode]` + +
+
+ +
+
+ +**layer_name:** `typing.Optional[str]` + +
+
+ +
+
+ +**keep_visitor_layers:** `typing.Optional[bool]` + +
+
+ +
+
+ +**visitor_idle_seconds:** `typing.Optional[int]` + +
+
+ +
+
+ +**visitor_identity:** `typing.Optional[SharesUpdateRequestVisitorIdentity]` + +
+
+ +
+
+ **scope:** `typing.Optional[typing.List[str]]`
@@ -1094,11 +1295,24 @@ client.shares.update(
-## Tenants -
client.tenants.list(...) -> TenantsList200Response +
client.shares.archive(...) -> SharesArchive200Response +
+
+ +#### 📝 Description +
+
+
+ +Archiving is final: an archived link never exchanges again, and to share again you create a new link. Pausing (`disabled`) is the reversible stop. An archived link no longer counts as using its shared layer, so that layer can be deleted. +
+
+
+
+ #### 🔌 Usage
@@ -1115,7 +1329,10 @@ client = CloudPDFClient( base_url="https://yourhost.com/path/to/api", ) -client.tenants.list() +client.shares.archive( + tenant_id="tenantId", + share_id="shareId", +) ```
@@ -1131,7 +1348,7 @@ client.tenants.list()
-**limit:** `typing.Optional[int]` +**tenant_id:** `str`
@@ -1139,7 +1356,7 @@ client.tenants.list()
-**cursor:** `typing.Optional[str]` +**share_id:** `str`
@@ -1159,7 +1376,8 @@ client.tenants.list()
-
client.tenants.create(...) -> TenantsCreate200Response +## Tenants +
client.tenants.list(...) -> TenantsList200Response
@@ -1179,9 +1397,7 @@ client = CloudPDFClient( base_url="https://yourhost.com/path/to/api", ) -client.tenants.create( - id="id", -) +client.tenants.list() ```
@@ -1197,7 +1413,7 @@ client.tenants.create(
-**id:** `str` +**limit:** `typing.Optional[int]`
@@ -1205,7 +1421,7 @@ client.tenants.create(
-**name:** `typing.Optional[str]` +**cursor:** `typing.Optional[str]`
@@ -1225,7 +1441,7 @@ client.tenants.create(
-
client.tenants.get(...) -> TenantsGet200Response +
client.tenants.create(...) -> TenantsCreate200Response
@@ -1245,8 +1461,8 @@ client = CloudPDFClient( base_url="https://yourhost.com/path/to/api", ) -client.tenants.get( - tenant_id="tenantId", +client.tenants.create( + id="id", ) ``` @@ -1263,7 +1479,15 @@ client.tenants.get(
-**tenant_id:** `str` +**id:** `str` + +
+
+ +
+
+ +**name:** `typing.Optional[str]`
@@ -1283,24 +1507,10 @@ client.tenants.get(
-
client.tenants.delete(...) -
-
- -#### 📝 Description - -
-
- +
client.tenants.get(...) -> TenantsGet200Response
-Destroys the tenant and everything in its namespace — documents, layers, stored bytes, audit history. Irreversible. -
-
-
-
- #### 🔌 Usage
@@ -1317,7 +1527,7 @@ client = CloudPDFClient( base_url="https://yourhost.com/path/to/api", ) -client.tenants.delete( +client.tenants.get( tenant_id="tenantId", ) @@ -1355,11 +1565,83 @@ client.tenants.delete(
-
client.tenants.resume(...) +
client.tenants.delete(...)
-#### 🔌 Usage +#### 📝 Description + +
+
+ +
+
+ +Destroys the tenant and everything in its namespace — documents, layers, stored bytes, audit history. Irreversible. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from cloudpdf import CloudPDFClient + +client = CloudPDFClient( + token="", + base_url="https://yourhost.com/path/to/api", +) + +client.tenants.delete( + tenant_id="tenantId", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `str` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.tenants.resume(...) +
+
+ +#### 🔌 Usage
@@ -6493,3 +6775,359 @@ client.doc.metadata.custom.get(
+## Documents Layers +
client.documents.layers.list(...) -> DocumentsLayersList200Response +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from cloudpdf import CloudPDFClient + +client = CloudPDFClient( + token="", + base_url="https://yourhost.com/path/to/api", +) + +client.documents.layers.list( + tenant_id="tenantId", + id="id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `str` + +
+
+ +
+
+ +**id:** `str` + +
+
+ +
+
+ +**limit:** `typing.Optional[int]` + +
+
+ +
+
+ +**cursor:** `typing.Optional[str]` + +
+
+ +
+
+ +**share_id:** `typing.Optional[str]` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.documents.layers.delete(...) +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from cloudpdf import CloudPDFClient + +client = CloudPDFClient( + token="", + base_url="https://yourhost.com/path/to/api", +) + +client.documents.layers.delete( + tenant_id="tenantId", + id="id", + layer_name="layerName", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `str` + +
+
+ +
+
+ +**id:** `str` + +
+
+ +
+
+ +**layer_name:** `str` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +## Shares Visitors +
client.shares.visitors.list(...) -> SharesVisitorsList200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +An archived link's visitors are listed too. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from cloudpdf import CloudPDFClient + +client = CloudPDFClient( + token="", + base_url="https://yourhost.com/path/to/api", +) + +client.shares.visitors.list( + tenant_id="tenantId", + share_id="shareId", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `str` + +
+
+ +
+
+ +**share_id:** `str` + +
+
+ +
+
+ +**limit:** `typing.Optional[int]` + +
+
+ +
+
+ +**cursor:** `typing.Optional[str]` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ +
client.shares.visitors.delete(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Their handle brings them back as a new visitor, who is asked again. Deleting a visitor already deleted changes nothing. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from cloudpdf import CloudPDFClient + +client = CloudPDFClient( + token="", + base_url="https://yourhost.com/path/to/api", +) + +client.shares.visitors.delete( + tenant_id="tenantId", + share_id="shareId", + visitor_id="visitorId", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**tenant_id:** `str` + +
+
+ +
+
+ +**share_id:** `str` + +
+
+ +
+
+ +**visitor_id:** `str` + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ + +
+
+
+ diff --git a/src/cloudpdf/__init__.py b/src/cloudpdf/__init__.py index eddd196..09dd051 100644 --- a/src/cloudpdf/__init__.py +++ b/src/cloudpdf/__init__.py @@ -1213,6 +1213,9 @@ DocChanges404Response, DocChanges409Response, DocChanges413Response, + DocDownloadLink200Response, + DocDownloadLink404Response, + DocDownloadLink501Response, DocDownloadResponse, DocFormsDeleteWidget200Response, DocFormsDeleteWidget400Response, @@ -1558,6 +1561,14 @@ DocumentsInit200Response_Deduped, DocumentsInit200Response_Resumed, DocumentsInit400Response, + DocumentsLayersDelete403Response, + DocumentsLayersDelete404Response, + DocumentsLayersDelete409Response, + DocumentsLayersList200Response, + DocumentsLayersList200ResponseLayersItem, + DocumentsLayersList400Response, + DocumentsLayersList403Response, + DocumentsLayersList404Response, DocumentsList200Response, DocumentsList200ResponseDocumentsItem, DocumentsList200ResponseDocumentsItemState, @@ -1905,13 +1916,46 @@ PdfLinkTarget_Unsupported, PdfLinkTarget_Uri, PdfPageActions, + SharesArchive200Response, + SharesArchive200ResponseShare, + SharesArchive200ResponseShareLayerMode, + SharesArchive200ResponseShareVisitorIdentity, + SharesArchive200ResponseShareVisitorIdentityAsk, + SharesArchive200ResponseShareVisitorIdentityFields, + SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName, + SharesArchive200ResponseShareVisitorIdentityFieldsEmail, + SharesArchive200ResponseShareVisitorIdentityFieldsOrganization, + SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + SharesArchive200ResponseShareVisitorIdentityFieldsTitle, + SharesArchive404Response, SharesCreate200Response, SharesCreate200ResponseShare, + SharesCreate200ResponseShareLayerMode, + SharesCreate200ResponseShareVisitorIdentity, + SharesCreate200ResponseShareVisitorIdentityAsk, + SharesCreate200ResponseShareVisitorIdentityFields, + SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName, + SharesCreate200ResponseShareVisitorIdentityFieldsEmail, + SharesCreate200ResponseShareVisitorIdentityFieldsOrganization, + SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + SharesCreate200ResponseShareVisitorIdentityFieldsTitle, SharesCreate400Response, SharesCreate403Response, SharesCreate404Response, - SharesDeleteResponse, + SharesDelete404Response, + SharesDelete409Response, SharesExchange200Response, + SharesExchange200ResponseLayerMode, + SharesExchange200ResponseVisitor, + SharesExchange200ResponseVisitorIdentityRequest, + SharesExchange200ResponseVisitorIdentityRequestFields, + SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName, + SharesExchange200ResponseVisitorIdentityRequestFieldsEmail, + SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization, + SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit, + SharesExchange200ResponseVisitorIdentityRequestFieldsTitle, + SharesExchange200ResponseVisitorIdentityRequestInvalidItem, + SharesExchange200ResponseVisitorIdentityRequestMissingItem, SharesExchange400Response, SharesExchange403Response, SharesExchange404Response, @@ -1919,14 +1963,49 @@ SharesExchange422Response, SharesGet200Response, SharesGet200ResponseShare, + SharesGet200ResponseShareLayerMode, + SharesGet200ResponseShareVisitorIdentity, + SharesGet200ResponseShareVisitorIdentityAsk, + SharesGet200ResponseShareVisitorIdentityFields, + SharesGet200ResponseShareVisitorIdentityFieldsDisplayName, + SharesGet200ResponseShareVisitorIdentityFieldsEmail, + SharesGet200ResponseShareVisitorIdentityFieldsOrganization, + SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + SharesGet200ResponseShareVisitorIdentityFieldsTitle, SharesGet404Response, SharesList200Response, SharesList200ResponseSharesItem, + SharesList200ResponseSharesItemLayerMode, + SharesList200ResponseSharesItemVisitorIdentity, + SharesList200ResponseSharesItemVisitorIdentityAsk, + SharesList200ResponseSharesItemVisitorIdentityFields, + SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName, + SharesList200ResponseSharesItemVisitorIdentityFieldsEmail, + SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization, + SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit, + SharesList200ResponseSharesItemVisitorIdentityFieldsTitle, SharesList400Response, SharesUpdate200Response, SharesUpdate200ResponseShare, + SharesUpdate200ResponseShareLayerMode, + SharesUpdate200ResponseShareVisitorIdentity, + SharesUpdate200ResponseShareVisitorIdentityAsk, + SharesUpdate200ResponseShareVisitorIdentityFields, + SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName, + SharesUpdate200ResponseShareVisitorIdentityFieldsEmail, + SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization, + SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + SharesUpdate200ResponseShareVisitorIdentityFieldsTitle, SharesUpdate400Response, SharesUpdate404Response, + SharesUpdate409Response, + SharesVisitorsDeleteResponse, + SharesVisitorsList200Response, + SharesVisitorsList200ResponseVisitorsItem, + SharesVisitorsList200ResponseVisitorsItemAnswers, + SharesVisitorsList200ResponseVisitorsItemLayer, + SharesVisitorsList400Response, + SharesVisitorsList404Response, TenantsCreate200Response, TenantsCreate200ResponseTenant, TenantsCreate200ResponseTenantStatus, @@ -1998,6 +2077,7 @@ ForbiddenError, GoneError, NotFoundError, + NotImplementedError, UnprocessableEntityError, ) from . import deployment, doc, documents, shares, tenants, tokens @@ -2017,6 +2097,27 @@ DocumentsInitRequestUploadPreference, ListDocumentsRequestState, ) + from .shares import ( + SharesCreateRequestLayerMode, + SharesCreateRequestVisitorIdentity, + SharesCreateRequestVisitorIdentityAsk, + SharesCreateRequestVisitorIdentityFields, + SharesCreateRequestVisitorIdentityFieldsDisplayName, + SharesCreateRequestVisitorIdentityFieldsEmail, + SharesCreateRequestVisitorIdentityFieldsOrganization, + SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit, + SharesCreateRequestVisitorIdentityFieldsTitle, + SharesExchangeRequestVisitorIdentity, + SharesUpdateRequestLayerMode, + SharesUpdateRequestVisitorIdentity, + SharesUpdateRequestVisitorIdentityAsk, + SharesUpdateRequestVisitorIdentityFields, + SharesUpdateRequestVisitorIdentityFieldsDisplayName, + SharesUpdateRequestVisitorIdentityFieldsEmail, + SharesUpdateRequestVisitorIdentityFieldsOrganization, + SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit, + SharesUpdateRequestVisitorIdentityFieldsTitle, + ) from .version import __version__ _dynamic_imports: typing.Dict[str, str] = { "AdminErrorPayload": ".types", @@ -3234,6 +3335,9 @@ "DocChanges409Response": ".types", "DocChanges413Response": ".types", "DocChangesRequestChangesItem": ".doc", + "DocDownloadLink200Response": ".types", + "DocDownloadLink404Response": ".types", + "DocDownloadLink501Response": ".types", "DocDownloadResponse": ".types", "DocFormsDeleteWidget200Response": ".types", "DocFormsDeleteWidget400Response": ".types", @@ -3589,6 +3693,14 @@ "DocumentsInit400Response": ".types", "DocumentsInitRequestDedupMode": ".documents", "DocumentsInitRequestUploadPreference": ".documents", + "DocumentsLayersDelete403Response": ".types", + "DocumentsLayersDelete404Response": ".types", + "DocumentsLayersDelete409Response": ".types", + "DocumentsLayersList200Response": ".types", + "DocumentsLayersList200ResponseLayersItem": ".types", + "DocumentsLayersList400Response": ".types", + "DocumentsLayersList403Response": ".types", + "DocumentsLayersList404Response": ".types", "DocumentsList200Response": ".types", "DocumentsList200ResponseDocumentsItem": ".types", "DocumentsList200ResponseDocumentsItemState": ".types", @@ -3817,6 +3929,7 @@ "MetadataPatchTrapped": ".types", "MutationMeta": ".types", "NotFoundError": ".errors", + "NotImplementedError": ".errors", "OutlineItem": ".types", "OutlineItemDraft": ".types", "OutlineItemPatch": ".types", @@ -3940,28 +4053,115 @@ "PdfLinkTarget_Unsupported": ".types", "PdfLinkTarget_Uri": ".types", "PdfPageActions": ".types", + "SharesArchive200Response": ".types", + "SharesArchive200ResponseShare": ".types", + "SharesArchive200ResponseShareLayerMode": ".types", + "SharesArchive200ResponseShareVisitorIdentity": ".types", + "SharesArchive200ResponseShareVisitorIdentityAsk": ".types", + "SharesArchive200ResponseShareVisitorIdentityFields": ".types", + "SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName": ".types", + "SharesArchive200ResponseShareVisitorIdentityFieldsEmail": ".types", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganization": ".types", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesArchive200ResponseShareVisitorIdentityFieldsTitle": ".types", + "SharesArchive404Response": ".types", "SharesCreate200Response": ".types", "SharesCreate200ResponseShare": ".types", + "SharesCreate200ResponseShareLayerMode": ".types", + "SharesCreate200ResponseShareVisitorIdentity": ".types", + "SharesCreate200ResponseShareVisitorIdentityAsk": ".types", + "SharesCreate200ResponseShareVisitorIdentityFields": ".types", + "SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName": ".types", + "SharesCreate200ResponseShareVisitorIdentityFieldsEmail": ".types", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganization": ".types", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesCreate200ResponseShareVisitorIdentityFieldsTitle": ".types", "SharesCreate400Response": ".types", "SharesCreate403Response": ".types", "SharesCreate404Response": ".types", - "SharesDeleteResponse": ".types", + "SharesCreateRequestLayerMode": ".shares", + "SharesCreateRequestVisitorIdentity": ".shares", + "SharesCreateRequestVisitorIdentityAsk": ".shares", + "SharesCreateRequestVisitorIdentityFields": ".shares", + "SharesCreateRequestVisitorIdentityFieldsDisplayName": ".shares", + "SharesCreateRequestVisitorIdentityFieldsEmail": ".shares", + "SharesCreateRequestVisitorIdentityFieldsOrganization": ".shares", + "SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit": ".shares", + "SharesCreateRequestVisitorIdentityFieldsTitle": ".shares", + "SharesDelete404Response": ".types", + "SharesDelete409Response": ".types", "SharesExchange200Response": ".types", + "SharesExchange200ResponseLayerMode": ".types", + "SharesExchange200ResponseVisitor": ".types", + "SharesExchange200ResponseVisitorIdentityRequest": ".types", + "SharesExchange200ResponseVisitorIdentityRequestFields": ".types", + "SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName": ".types", + "SharesExchange200ResponseVisitorIdentityRequestFieldsEmail": ".types", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization": ".types", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit": ".types", + "SharesExchange200ResponseVisitorIdentityRequestFieldsTitle": ".types", + "SharesExchange200ResponseVisitorIdentityRequestInvalidItem": ".types", + "SharesExchange200ResponseVisitorIdentityRequestMissingItem": ".types", "SharesExchange400Response": ".types", "SharesExchange403Response": ".types", "SharesExchange404Response": ".types", "SharesExchange410Response": ".types", "SharesExchange422Response": ".types", + "SharesExchangeRequestVisitorIdentity": ".shares", "SharesGet200Response": ".types", "SharesGet200ResponseShare": ".types", + "SharesGet200ResponseShareLayerMode": ".types", + "SharesGet200ResponseShareVisitorIdentity": ".types", + "SharesGet200ResponseShareVisitorIdentityAsk": ".types", + "SharesGet200ResponseShareVisitorIdentityFields": ".types", + "SharesGet200ResponseShareVisitorIdentityFieldsDisplayName": ".types", + "SharesGet200ResponseShareVisitorIdentityFieldsEmail": ".types", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganization": ".types", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesGet200ResponseShareVisitorIdentityFieldsTitle": ".types", "SharesGet404Response": ".types", "SharesList200Response": ".types", "SharesList200ResponseSharesItem": ".types", + "SharesList200ResponseSharesItemLayerMode": ".types", + "SharesList200ResponseSharesItemVisitorIdentity": ".types", + "SharesList200ResponseSharesItemVisitorIdentityAsk": ".types", + "SharesList200ResponseSharesItemVisitorIdentityFields": ".types", + "SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName": ".types", + "SharesList200ResponseSharesItemVisitorIdentityFieldsEmail": ".types", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization": ".types", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesList200ResponseSharesItemVisitorIdentityFieldsTitle": ".types", "SharesList400Response": ".types", "SharesUpdate200Response": ".types", "SharesUpdate200ResponseShare": ".types", + "SharesUpdate200ResponseShareLayerMode": ".types", + "SharesUpdate200ResponseShareVisitorIdentity": ".types", + "SharesUpdate200ResponseShareVisitorIdentityAsk": ".types", + "SharesUpdate200ResponseShareVisitorIdentityFields": ".types", + "SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName": ".types", + "SharesUpdate200ResponseShareVisitorIdentityFieldsEmail": ".types", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization": ".types", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesUpdate200ResponseShareVisitorIdentityFieldsTitle": ".types", "SharesUpdate400Response": ".types", "SharesUpdate404Response": ".types", + "SharesUpdate409Response": ".types", + "SharesUpdateRequestLayerMode": ".shares", + "SharesUpdateRequestVisitorIdentity": ".shares", + "SharesUpdateRequestVisitorIdentityAsk": ".shares", + "SharesUpdateRequestVisitorIdentityFields": ".shares", + "SharesUpdateRequestVisitorIdentityFieldsDisplayName": ".shares", + "SharesUpdateRequestVisitorIdentityFieldsEmail": ".shares", + "SharesUpdateRequestVisitorIdentityFieldsOrganization": ".shares", + "SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit": ".shares", + "SharesUpdateRequestVisitorIdentityFieldsTitle": ".shares", + "SharesVisitorsDeleteResponse": ".types", + "SharesVisitorsList200Response": ".types", + "SharesVisitorsList200ResponseVisitorsItem": ".types", + "SharesVisitorsList200ResponseVisitorsItemAnswers": ".types", + "SharesVisitorsList200ResponseVisitorsItemLayer": ".types", + "SharesVisitorsList400Response": ".types", + "SharesVisitorsList404Response": ".types", "TenantsCreate200Response": ".types", "TenantsCreate200ResponseTenant": ".types", "TenantsCreate200ResponseTenantStatus": ".types", @@ -5272,6 +5472,9 @@ def __dir__(): "DocChanges409Response", "DocChanges413Response", "DocChangesRequestChangesItem", + "DocDownloadLink200Response", + "DocDownloadLink404Response", + "DocDownloadLink501Response", "DocDownloadResponse", "DocFormsDeleteWidget200Response", "DocFormsDeleteWidget400Response", @@ -5627,6 +5830,14 @@ def __dir__(): "DocumentsInit400Response", "DocumentsInitRequestDedupMode", "DocumentsInitRequestUploadPreference", + "DocumentsLayersDelete403Response", + "DocumentsLayersDelete404Response", + "DocumentsLayersDelete409Response", + "DocumentsLayersList200Response", + "DocumentsLayersList200ResponseLayersItem", + "DocumentsLayersList400Response", + "DocumentsLayersList403Response", + "DocumentsLayersList404Response", "DocumentsList200Response", "DocumentsList200ResponseDocumentsItem", "DocumentsList200ResponseDocumentsItemState", @@ -5855,6 +6066,7 @@ def __dir__(): "MetadataPatchTrapped", "MutationMeta", "NotFoundError", + "NotImplementedError", "OutlineItem", "OutlineItemDraft", "OutlineItemPatch", @@ -5978,28 +6190,115 @@ def __dir__(): "PdfLinkTarget_Unsupported", "PdfLinkTarget_Uri", "PdfPageActions", + "SharesArchive200Response", + "SharesArchive200ResponseShare", + "SharesArchive200ResponseShareLayerMode", + "SharesArchive200ResponseShareVisitorIdentity", + "SharesArchive200ResponseShareVisitorIdentityAsk", + "SharesArchive200ResponseShareVisitorIdentityFields", + "SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesArchive200ResponseShareVisitorIdentityFieldsEmail", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganization", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesArchive200ResponseShareVisitorIdentityFieldsTitle", + "SharesArchive404Response", "SharesCreate200Response", "SharesCreate200ResponseShare", + "SharesCreate200ResponseShareLayerMode", + "SharesCreate200ResponseShareVisitorIdentity", + "SharesCreate200ResponseShareVisitorIdentityAsk", + "SharesCreate200ResponseShareVisitorIdentityFields", + "SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesCreate200ResponseShareVisitorIdentityFieldsEmail", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganization", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesCreate200ResponseShareVisitorIdentityFieldsTitle", "SharesCreate400Response", "SharesCreate403Response", "SharesCreate404Response", - "SharesDeleteResponse", + "SharesCreateRequestLayerMode", + "SharesCreateRequestVisitorIdentity", + "SharesCreateRequestVisitorIdentityAsk", + "SharesCreateRequestVisitorIdentityFields", + "SharesCreateRequestVisitorIdentityFieldsDisplayName", + "SharesCreateRequestVisitorIdentityFieldsEmail", + "SharesCreateRequestVisitorIdentityFieldsOrganization", + "SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit", + "SharesCreateRequestVisitorIdentityFieldsTitle", + "SharesDelete404Response", + "SharesDelete409Response", "SharesExchange200Response", + "SharesExchange200ResponseLayerMode", + "SharesExchange200ResponseVisitor", + "SharesExchange200ResponseVisitorIdentityRequest", + "SharesExchange200ResponseVisitorIdentityRequestFields", + "SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName", + "SharesExchange200ResponseVisitorIdentityRequestFieldsEmail", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit", + "SharesExchange200ResponseVisitorIdentityRequestFieldsTitle", + "SharesExchange200ResponseVisitorIdentityRequestInvalidItem", + "SharesExchange200ResponseVisitorIdentityRequestMissingItem", "SharesExchange400Response", "SharesExchange403Response", "SharesExchange404Response", "SharesExchange410Response", "SharesExchange422Response", + "SharesExchangeRequestVisitorIdentity", "SharesGet200Response", "SharesGet200ResponseShare", + "SharesGet200ResponseShareLayerMode", + "SharesGet200ResponseShareVisitorIdentity", + "SharesGet200ResponseShareVisitorIdentityAsk", + "SharesGet200ResponseShareVisitorIdentityFields", + "SharesGet200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesGet200ResponseShareVisitorIdentityFieldsEmail", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganization", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesGet200ResponseShareVisitorIdentityFieldsTitle", "SharesGet404Response", "SharesList200Response", "SharesList200ResponseSharesItem", + "SharesList200ResponseSharesItemLayerMode", + "SharesList200ResponseSharesItemVisitorIdentity", + "SharesList200ResponseSharesItemVisitorIdentityAsk", + "SharesList200ResponseSharesItemVisitorIdentityFields", + "SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName", + "SharesList200ResponseSharesItemVisitorIdentityFieldsEmail", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit", + "SharesList200ResponseSharesItemVisitorIdentityFieldsTitle", "SharesList400Response", "SharesUpdate200Response", "SharesUpdate200ResponseShare", + "SharesUpdate200ResponseShareLayerMode", + "SharesUpdate200ResponseShareVisitorIdentity", + "SharesUpdate200ResponseShareVisitorIdentityAsk", + "SharesUpdate200ResponseShareVisitorIdentityFields", + "SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesUpdate200ResponseShareVisitorIdentityFieldsEmail", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesUpdate200ResponseShareVisitorIdentityFieldsTitle", "SharesUpdate400Response", "SharesUpdate404Response", + "SharesUpdate409Response", + "SharesUpdateRequestLayerMode", + "SharesUpdateRequestVisitorIdentity", + "SharesUpdateRequestVisitorIdentityAsk", + "SharesUpdateRequestVisitorIdentityFields", + "SharesUpdateRequestVisitorIdentityFieldsDisplayName", + "SharesUpdateRequestVisitorIdentityFieldsEmail", + "SharesUpdateRequestVisitorIdentityFieldsOrganization", + "SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit", + "SharesUpdateRequestVisitorIdentityFieldsTitle", + "SharesVisitorsDeleteResponse", + "SharesVisitorsList200Response", + "SharesVisitorsList200ResponseVisitorsItem", + "SharesVisitorsList200ResponseVisitorsItemAnswers", + "SharesVisitorsList200ResponseVisitorsItemLayer", + "SharesVisitorsList400Response", + "SharesVisitorsList404Response", "TenantsCreate200Response", "TenantsCreate200ResponseTenant", "TenantsCreate200ResponseTenantStatus", diff --git a/src/cloudpdf/core/client_wrapper.py b/src/cloudpdf/core/client_wrapper.py index c01b1ec..09a1f55 100644 --- a/src/cloudpdf/core/client_wrapper.py +++ b/src/cloudpdf/core/client_wrapper.py @@ -33,12 +33,12 @@ def get_headers(self) -> typing.Dict[str, str]: import platform headers: typing.Dict[str, str] = { - "User-Agent": "cloudpdf/3.0.0a16", + "User-Agent": "cloudpdf/3.0.0a17", "X-Fern-Language": "Python", "X-Fern-Runtime": f"python/{platform.python_version()}", "X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}", "X-Fern-SDK-Name": "cloudpdf", - "X-Fern-SDK-Version": "3.0.0a16", + "X-Fern-SDK-Version": "3.0.0a17", **(self.get_custom_headers() or {}), } token = self._get_token() diff --git a/src/cloudpdf/doc/client.py b/src/cloudpdf/doc/client.py index 15c306d..884494c 100644 --- a/src/cloudpdf/doc/client.py +++ b/src/cloudpdf/doc/client.py @@ -7,6 +7,7 @@ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ..core.request_options import RequestOptions from ..types.doc_changes200response import DocChanges200Response +from ..types.doc_download_link200response import DocDownloadLink200Response from ..types.doc_head200response import DocHead200Response from ..types.doc_manifest200response import DocManifest200Response from ..types.doc_text200response import DocText200Response @@ -189,6 +190,59 @@ def download( ) as r: yield from r.data + def download_link( + self, + doc_id: str, + layer_name: str, + *, + document_password: typing.Optional[str] = None, + expires_in: typing.Optional[int] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> DocDownloadLink200Response: + """ + The link opens the layer as it is when created: once the layer changes, it answers 404, so create it right before handing it over. It downloads that one file and nothing else, and a password-protected document is checked when the link is created. Deployments that verify tokens with their own keys (JWKS) mint links on their backend: a doc token with `layer_name`, a `download: { docVersion, mode: "incremental" }` claim and a short `exp`, passed as `link` on the versioned download URL. + + Parameters + ---------- + doc_id : str + + layer_name : str + + document_password : typing.Optional[str] + Base64-encoded password for an encrypted document. Valid only with the API token (403 anywhere else). An encrypted document answers 422 DocPasswordRequired when the header is absent. Viewer doc JWTs use the SDK password-session flow instead. + + expires_in : typing.Optional[int] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + DocDownloadLink200Response + OK + + Examples + -------- + from cloudpdf import CloudPDFClient + + client = CloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + client.doc.download_link( + doc_id="docId", + layer_name="layerName", + ) + """ + _response = self._raw_client.download_link( + doc_id, + layer_name, + document_password=document_password, + expires_in=expires_in, + request_options=request_options, + ) + return _response.data + def manifest( self, doc_id: str, @@ -595,6 +649,67 @@ async def main() -> None: async for _chunk in r.data: yield _chunk + async def download_link( + self, + doc_id: str, + layer_name: str, + *, + document_password: typing.Optional[str] = None, + expires_in: typing.Optional[int] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> DocDownloadLink200Response: + """ + The link opens the layer as it is when created: once the layer changes, it answers 404, so create it right before handing it over. It downloads that one file and nothing else, and a password-protected document is checked when the link is created. Deployments that verify tokens with their own keys (JWKS) mint links on their backend: a doc token with `layer_name`, a `download: { docVersion, mode: "incremental" }` claim and a short `exp`, passed as `link` on the versioned download URL. + + Parameters + ---------- + doc_id : str + + layer_name : str + + document_password : typing.Optional[str] + Base64-encoded password for an encrypted document. Valid only with the API token (403 anywhere else). An encrypted document answers 422 DocPasswordRequired when the header is absent. Viewer doc JWTs use the SDK password-session flow instead. + + expires_in : typing.Optional[int] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + DocDownloadLink200Response + OK + + Examples + -------- + import asyncio + + from cloudpdf import AsyncCloudPDFClient + + client = AsyncCloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.doc.download_link( + doc_id="docId", + layer_name="layerName", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.download_link( + doc_id, + layer_name, + document_password=document_password, + expires_in=expires_in, + request_options=request_options, + ) + return _response.data + async def manifest( self, doc_id: str, diff --git a/src/cloudpdf/doc/raw_client.py b/src/cloudpdf/doc/raw_client.py index 51f6930..7d2cf9e 100644 --- a/src/cloudpdf/doc/raw_client.py +++ b/src/cloudpdf/doc/raw_client.py @@ -16,7 +16,10 @@ from ..errors.conflict_error import ConflictError from ..errors.content_too_large_error import ContentTooLargeError from ..errors.not_found_error import NotFoundError +from ..errors.not_implemented_error import NotImplementedError from ..types.doc_changes200response import DocChanges200Response +from ..types.doc_download_link200response import DocDownloadLink200Response +from ..types.doc_download_link501response import DocDownloadLink501Response from ..types.doc_head200response import DocHead200Response from ..types.doc_manifest200response import DocManifest200Response from ..types.doc_text200response import DocText200Response @@ -272,6 +275,91 @@ def _stream() -> HttpResponse[typing.Iterator[bytes]]: yield _stream() + def download_link( + self, + doc_id: str, + layer_name: str, + *, + document_password: typing.Optional[str] = None, + expires_in: typing.Optional[int] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[DocDownloadLink200Response]: + """ + The link opens the layer as it is when created: once the layer changes, it answers 404, so create it right before handing it over. It downloads that one file and nothing else, and a password-protected document is checked when the link is created. Deployments that verify tokens with their own keys (JWKS) mint links on their backend: a doc token with `layer_name`, a `download: { docVersion, mode: "incremental" }` claim and a short `exp`, passed as `link` on the versioned download URL. + + Parameters + ---------- + doc_id : str + + layer_name : str + + document_password : typing.Optional[str] + Base64-encoded password for an encrypted document. Valid only with the API token (403 anywhere else). An encrypted document answers 422 DocPasswordRequired when the header is absent. Viewer doc JWTs use the SDK password-session flow instead. + + expires_in : typing.Optional[int] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[DocDownloadLink200Response] + OK + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/docs/{encode_path_param(doc_id)}/layers/{encode_path_param(layer_name)}/download-link", + method="POST", + json={ + "expiresIn": expires_in, + }, + headers={ + "content-type": "application/json", + "X-Document-Password": str(document_password) if document_password is not None else None, + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + DocDownloadLink200Response, + parse_obj_as( + type_=DocDownloadLink200Response, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 501: + raise NotImplementedError( + headers=dict(_response.headers), + body=typing.cast( + DocDownloadLink501Response, + parse_obj_as( + type_=DocDownloadLink501Response, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + def manifest( self, doc_id: str, @@ -728,6 +816,91 @@ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]: yield await _stream() + async def download_link( + self, + doc_id: str, + layer_name: str, + *, + document_password: typing.Optional[str] = None, + expires_in: typing.Optional[int] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[DocDownloadLink200Response]: + """ + The link opens the layer as it is when created: once the layer changes, it answers 404, so create it right before handing it over. It downloads that one file and nothing else, and a password-protected document is checked when the link is created. Deployments that verify tokens with their own keys (JWKS) mint links on their backend: a doc token with `layer_name`, a `download: { docVersion, mode: "incremental" }` claim and a short `exp`, passed as `link` on the versioned download URL. + + Parameters + ---------- + doc_id : str + + layer_name : str + + document_password : typing.Optional[str] + Base64-encoded password for an encrypted document. Valid only with the API token (403 anywhere else). An encrypted document answers 422 DocPasswordRequired when the header is absent. Viewer doc JWTs use the SDK password-session flow instead. + + expires_in : typing.Optional[int] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[DocDownloadLink200Response] + OK + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/docs/{encode_path_param(doc_id)}/layers/{encode_path_param(layer_name)}/download-link", + method="POST", + json={ + "expiresIn": expires_in, + }, + headers={ + "content-type": "application/json", + "X-Document-Password": str(document_password) if document_password is not None else None, + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + DocDownloadLink200Response, + parse_obj_as( + type_=DocDownloadLink200Response, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 501: + raise NotImplementedError( + headers=dict(_response.headers), + body=typing.cast( + DocDownloadLink501Response, + parse_obj_as( + type_=DocDownloadLink501Response, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + async def manifest( self, doc_id: str, diff --git a/src/cloudpdf/documents/__init__.py b/src/cloudpdf/documents/__init__.py index 9a7a16f..a5a6a0c 100644 --- a/src/cloudpdf/documents/__init__.py +++ b/src/cloudpdf/documents/__init__.py @@ -19,6 +19,7 @@ DocumentsInitRequestUploadPreference, ListDocumentsRequestState, ) + from . import layers _dynamic_imports: typing.Dict[str, str] = { "DocumentsImportFromRequestDedupMode": ".types", "DocumentsImportFromRequestExpected": ".types", @@ -31,6 +32,7 @@ "DocumentsInitRequestDedupMode": ".types", "DocumentsInitRequestUploadPreference": ".types", "ListDocumentsRequestState": ".types", + "layers": ".layers", } @@ -67,4 +69,5 @@ def __dir__(): "DocumentsInitRequestDedupMode", "DocumentsInitRequestUploadPreference", "ListDocumentsRequestState", + "layers", ] diff --git a/src/cloudpdf/documents/client.py b/src/cloudpdf/documents/client.py index 56808a4..c9c1b51 100644 --- a/src/cloudpdf/documents/client.py +++ b/src/cloudpdf/documents/client.py @@ -1,5 +1,7 @@ # This file was auto-generated by Fern from our API Definition. +from __future__ import annotations + import typing from .. import core @@ -20,6 +22,8 @@ from .types.documents_init_request_upload_preference import DocumentsInitRequestUploadPreference from .types.list_documents_request_state import ListDocumentsRequestState +if typing.TYPE_CHECKING: + from .layers.client import AsyncLayersClient, LayersClient # this is used as the default value for optional parameters OMIT = typing.cast(typing.Any, ...) @@ -27,6 +31,8 @@ class DocumentsClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._raw_client = RawDocumentsClient(client_wrapper=client_wrapper) + self._client_wrapper = client_wrapper + self._layers: typing.Optional[LayersClient] = None @property def with_raw_response(self) -> RawDocumentsClient: @@ -441,10 +447,20 @@ def init( ) return _response.data + @property + def layers(self): + if self._layers is None: + from .layers.client import LayersClient # noqa: E402 + + self._layers = LayersClient(client_wrapper=self._client_wrapper) + return self._layers + class AsyncDocumentsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._raw_client = AsyncRawDocumentsClient(client_wrapper=client_wrapper) + self._client_wrapper = client_wrapper + self._layers: typing.Optional[AsyncLayersClient] = None @property def with_raw_response(self) -> AsyncRawDocumentsClient: @@ -932,3 +948,11 @@ async def main() -> None: request_options=request_options, ) return _response.data + + @property + def layers(self): + if self._layers is None: + from .layers.client import AsyncLayersClient # noqa: E402 + + self._layers = AsyncLayersClient(client_wrapper=self._client_wrapper) + return self._layers diff --git a/src/cloudpdf/documents/layers/__init__.py b/src/cloudpdf/documents/layers/__init__.py new file mode 100644 index 0000000..5cde020 --- /dev/null +++ b/src/cloudpdf/documents/layers/__init__.py @@ -0,0 +1,4 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + diff --git a/src/cloudpdf/documents/layers/client.py b/src/cloudpdf/documents/layers/client.py new file mode 100644 index 0000000..2719e7a --- /dev/null +++ b/src/cloudpdf/documents/layers/client.py @@ -0,0 +1,226 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.request_options import RequestOptions +from ...types.documents_layers_list200response import DocumentsLayersList200Response +from .raw_client import AsyncRawLayersClient, RawLayersClient + + +class LayersClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawLayersClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawLayersClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawLayersClient + """ + return self._raw_client + + def list( + self, + tenant_id: str, + id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + share_id: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> DocumentsLayersList200Response: + """ + Parameters + ---------- + tenant_id : str + + id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + share_id : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + DocumentsLayersList200Response + OK + + Examples + -------- + from cloudpdf import CloudPDFClient + + client = CloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + client.documents.layers.list( + tenant_id="tenantId", + id="id", + ) + """ + _response = self._raw_client.list( + tenant_id, id, limit=limit, cursor=cursor, share_id=share_id, request_options=request_options + ) + return _response.data + + def delete( + self, tenant_id: str, id: str, layer_name: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> None: + """ + Parameters + ---------- + tenant_id : str + + id : str + + layer_name : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + from cloudpdf import CloudPDFClient + + client = CloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + client.documents.layers.delete( + tenant_id="tenantId", + id="id", + layer_name="layerName", + ) + """ + _response = self._raw_client.delete(tenant_id, id, layer_name, request_options=request_options) + return _response.data + + +class AsyncLayersClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawLayersClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawLayersClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawLayersClient + """ + return self._raw_client + + async def list( + self, + tenant_id: str, + id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + share_id: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> DocumentsLayersList200Response: + """ + Parameters + ---------- + tenant_id : str + + id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + share_id : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + DocumentsLayersList200Response + OK + + Examples + -------- + import asyncio + + from cloudpdf import AsyncCloudPDFClient + + client = AsyncCloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.documents.layers.list( + tenant_id="tenantId", + id="id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.list( + tenant_id, id, limit=limit, cursor=cursor, share_id=share_id, request_options=request_options + ) + return _response.data + + async def delete( + self, tenant_id: str, id: str, layer_name: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> None: + """ + Parameters + ---------- + tenant_id : str + + id : str + + layer_name : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import asyncio + + from cloudpdf import AsyncCloudPDFClient + + client = AsyncCloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.documents.layers.delete( + tenant_id="tenantId", + id="id", + layer_name="layerName", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.delete(tenant_id, id, layer_name, request_options=request_options) + return _response.data diff --git a/src/cloudpdf/documents/layers/raw_client.py b/src/cloudpdf/documents/layers/raw_client.py new file mode 100644 index 0000000..5f52d9a --- /dev/null +++ b/src/cloudpdf/documents/layers/raw_client.py @@ -0,0 +1,352 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.http_response import AsyncHttpResponse, HttpResponse +from ...core.jsonable_encoder import encode_path_param +from ...core.parse_error import ParsingError +from ...core.pydantic_utilities import parse_obj_as +from ...core.request_options import RequestOptions +from ...errors.bad_request_error import BadRequestError +from ...errors.conflict_error import ConflictError +from ...errors.forbidden_error import ForbiddenError +from ...errors.not_found_error import NotFoundError +from ...types.documents_layers_list200response import DocumentsLayersList200Response +from pydantic import ValidationError + + +class RawLayersClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def list( + self, + tenant_id: str, + id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + share_id: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[DocumentsLayersList200Response]: + """ + Parameters + ---------- + tenant_id : str + + id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + share_id : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[DocumentsLayersList200Response] + OK + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/documents/{encode_path_param(id)}/layers", + method="GET", + params={ + "limit": limit, + "cursor": cursor, + "shareId": share_id, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + DocumentsLayersList200Response, + parse_obj_as( + type_=DocumentsLayersList200Response, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def delete( + self, tenant_id: str, id: str, layer_name: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[None]: + """ + Parameters + ---------- + tenant_id : str + + id : str + + layer_name : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[None] + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/documents/{encode_path_param(id)}/layers/{encode_path_param(layer_name)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return HttpResponse(response=_response, data=None) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 409: + raise ConflictError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawLayersClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def list( + self, + tenant_id: str, + id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + share_id: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[DocumentsLayersList200Response]: + """ + Parameters + ---------- + tenant_id : str + + id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + share_id : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[DocumentsLayersList200Response] + OK + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/documents/{encode_path_param(id)}/layers", + method="GET", + params={ + "limit": limit, + "cursor": cursor, + "shareId": share_id, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + DocumentsLayersList200Response, + parse_obj_as( + type_=DocumentsLayersList200Response, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def delete( + self, tenant_id: str, id: str, layer_name: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[None]: + """ + Parameters + ---------- + tenant_id : str + + id : str + + layer_name : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[None] + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/documents/{encode_path_param(id)}/layers/{encode_path_param(layer_name)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return AsyncHttpResponse(response=_response, data=None) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 409: + raise ConflictError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/cloudpdf/errors/__init__.py b/src/cloudpdf/errors/__init__.py index 09b403f..05671ae 100644 --- a/src/cloudpdf/errors/__init__.py +++ b/src/cloudpdf/errors/__init__.py @@ -13,6 +13,7 @@ from .forbidden_error import ForbiddenError from .gone_error import GoneError from .not_found_error import NotFoundError + from .not_implemented_error import NotImplementedError from .unprocessable_entity_error import UnprocessableEntityError _dynamic_imports: typing.Dict[str, str] = { "BadGatewayError": ".bad_gateway_error", @@ -22,6 +23,7 @@ "ForbiddenError": ".forbidden_error", "GoneError": ".gone_error", "NotFoundError": ".not_found_error", + "NotImplementedError": ".not_implemented_error", "UnprocessableEntityError": ".unprocessable_entity_error", } @@ -55,5 +57,6 @@ def __dir__(): "ForbiddenError", "GoneError", "NotFoundError", + "NotImplementedError", "UnprocessableEntityError", ] diff --git a/src/cloudpdf/errors/not_implemented_error.py b/src/cloudpdf/errors/not_implemented_error.py new file mode 100644 index 0000000..bb83f36 --- /dev/null +++ b/src/cloudpdf/errors/not_implemented_error.py @@ -0,0 +1,11 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ..core.api_error import ApiError +from ..types.doc_download_link501response import DocDownloadLink501Response + + +class NotImplementedError(ApiError): + def __init__(self, body: DocDownloadLink501Response, headers: typing.Optional[typing.Dict[str, str]] = None): + super().__init__(status_code=501, headers=headers, body=body) diff --git a/src/cloudpdf/shares/__init__.py b/src/cloudpdf/shares/__init__.py index 5cde020..ccaa815 100644 --- a/src/cloudpdf/shares/__init__.py +++ b/src/cloudpdf/shares/__init__.py @@ -2,3 +2,96 @@ # isort: skip_file +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .types import ( + SharesCreateRequestLayerMode, + SharesCreateRequestVisitorIdentity, + SharesCreateRequestVisitorIdentityAsk, + SharesCreateRequestVisitorIdentityFields, + SharesCreateRequestVisitorIdentityFieldsDisplayName, + SharesCreateRequestVisitorIdentityFieldsEmail, + SharesCreateRequestVisitorIdentityFieldsOrganization, + SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit, + SharesCreateRequestVisitorIdentityFieldsTitle, + SharesExchangeRequestVisitorIdentity, + SharesUpdateRequestLayerMode, + SharesUpdateRequestVisitorIdentity, + SharesUpdateRequestVisitorIdentityAsk, + SharesUpdateRequestVisitorIdentityFields, + SharesUpdateRequestVisitorIdentityFieldsDisplayName, + SharesUpdateRequestVisitorIdentityFieldsEmail, + SharesUpdateRequestVisitorIdentityFieldsOrganization, + SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit, + SharesUpdateRequestVisitorIdentityFieldsTitle, + ) + from . import visitors +_dynamic_imports: typing.Dict[str, str] = { + "SharesCreateRequestLayerMode": ".types", + "SharesCreateRequestVisitorIdentity": ".types", + "SharesCreateRequestVisitorIdentityAsk": ".types", + "SharesCreateRequestVisitorIdentityFields": ".types", + "SharesCreateRequestVisitorIdentityFieldsDisplayName": ".types", + "SharesCreateRequestVisitorIdentityFieldsEmail": ".types", + "SharesCreateRequestVisitorIdentityFieldsOrganization": ".types", + "SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesCreateRequestVisitorIdentityFieldsTitle": ".types", + "SharesExchangeRequestVisitorIdentity": ".types", + "SharesUpdateRequestLayerMode": ".types", + "SharesUpdateRequestVisitorIdentity": ".types", + "SharesUpdateRequestVisitorIdentityAsk": ".types", + "SharesUpdateRequestVisitorIdentityFields": ".types", + "SharesUpdateRequestVisitorIdentityFieldsDisplayName": ".types", + "SharesUpdateRequestVisitorIdentityFieldsEmail": ".types", + "SharesUpdateRequestVisitorIdentityFieldsOrganization": ".types", + "SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit": ".types", + "SharesUpdateRequestVisitorIdentityFieldsTitle": ".types", + "visitors": ".visitors", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = [ + "SharesCreateRequestLayerMode", + "SharesCreateRequestVisitorIdentity", + "SharesCreateRequestVisitorIdentityAsk", + "SharesCreateRequestVisitorIdentityFields", + "SharesCreateRequestVisitorIdentityFieldsDisplayName", + "SharesCreateRequestVisitorIdentityFieldsEmail", + "SharesCreateRequestVisitorIdentityFieldsOrganization", + "SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit", + "SharesCreateRequestVisitorIdentityFieldsTitle", + "SharesExchangeRequestVisitorIdentity", + "SharesUpdateRequestLayerMode", + "SharesUpdateRequestVisitorIdentity", + "SharesUpdateRequestVisitorIdentityAsk", + "SharesUpdateRequestVisitorIdentityFields", + "SharesUpdateRequestVisitorIdentityFieldsDisplayName", + "SharesUpdateRequestVisitorIdentityFieldsEmail", + "SharesUpdateRequestVisitorIdentityFieldsOrganization", + "SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit", + "SharesUpdateRequestVisitorIdentityFieldsTitle", + "visitors", +] diff --git a/src/cloudpdf/shares/client.py b/src/cloudpdf/shares/client.py index 92870db..90b9520 100644 --- a/src/cloudpdf/shares/client.py +++ b/src/cloudpdf/shares/client.py @@ -1,16 +1,26 @@ # This file was auto-generated by Fern from our API Definition. +from __future__ import annotations + import typing from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ..core.request_options import RequestOptions +from ..types.shares_archive200response import SharesArchive200Response from ..types.shares_create200response import SharesCreate200Response from ..types.shares_exchange200response import SharesExchange200Response from ..types.shares_get200response import SharesGet200Response from ..types.shares_list200response import SharesList200Response from ..types.shares_update200response import SharesUpdate200Response from .raw_client import AsyncRawSharesClient, RawSharesClient - +from .types.shares_create_request_layer_mode import SharesCreateRequestLayerMode +from .types.shares_create_request_visitor_identity import SharesCreateRequestVisitorIdentity +from .types.shares_exchange_request_visitor_identity import SharesExchangeRequestVisitorIdentity +from .types.shares_update_request_layer_mode import SharesUpdateRequestLayerMode +from .types.shares_update_request_visitor_identity import SharesUpdateRequestVisitorIdentity + +if typing.TYPE_CHECKING: + from .visitors.client import AsyncVisitorsClient, VisitorsClient # this is used as the default value for optional parameters OMIT = typing.cast(typing.Any, ...) @@ -18,6 +28,8 @@ class SharesClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._raw_client = RawSharesClient(client_wrapper=client_wrapper) + self._client_wrapper = client_wrapper + self._visitors: typing.Optional[VisitorsClient] = None @property def with_raw_response(self) -> RawSharesClient: @@ -35,10 +47,13 @@ def exchange( *, share_token: str, password: typing.Optional[str] = OMIT, + visitor_handle: typing.Optional[str] = OMIT, + restart: typing.Optional[bool] = OMIT, + visitor_identity: typing.Optional[SharesExchangeRequestVisitorIdentity] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> SharesExchange200Response: """ - Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. Mounted only when the deployment can sign (HS256 mode). + Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. A link that asks its visitors who they are on open returns 422 VisitorIdentityRequired until the required answers are given; `error.details` carries `fields` (what the link asks), `missing`, `invalid`, `purpose` and `privacyUrl`. A link that asks before the first change issues the session at once with `visitor.identityRequest`, and writes answer 403 VisitorIdentityRequired with the same details until the visitor exchanges again with their answers. Answers that can not be taken answer 422 on any link. Mounted only when the deployment can sign (HS256 mode). Parameters ---------- @@ -46,6 +61,12 @@ def exchange( password : typing.Optional[str] + visitor_handle : typing.Optional[str] + + restart : typing.Optional[bool] + + visitor_identity : typing.Optional[SharesExchangeRequestVisitorIdentity] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -67,7 +88,12 @@ def exchange( ) """ _response = self._raw_client.exchange( - share_token=share_token, password=password, request_options=request_options + share_token=share_token, + password=password, + visitor_handle=visitor_handle, + restart=restart, + visitor_identity=visitor_identity, + request_options=request_options, ) return _response.data @@ -78,6 +104,7 @@ def list( limit: typing.Optional[int] = None, cursor: typing.Optional[str] = None, doc_id: typing.Optional[str] = None, + archived: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None, ) -> SharesList200Response: """ @@ -91,6 +118,8 @@ def list( doc_id : typing.Optional[str] + archived : typing.Optional[bool] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -112,7 +141,7 @@ def list( ) """ _response = self._raw_client.list( - tenant_id, limit=limit, cursor=cursor, doc_id=doc_id, request_options=request_options + tenant_id, limit=limit, cursor=cursor, doc_id=doc_id, archived=archived, request_options=request_options ) return _response.data @@ -122,7 +151,11 @@ def create( *, doc_id: str, scope: typing.Sequence[str], + layer_mode: typing.Optional[SharesCreateRequestLayerMode] = OMIT, layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesCreateRequestVisitorIdentity] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, session_ttl_seconds: typing.Optional[int] = OMIT, @@ -140,8 +173,16 @@ def create( scope : typing.Sequence[str] + layer_mode : typing.Optional[SharesCreateRequestLayerMode] + layer_name : typing.Optional[str] + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesCreateRequestVisitorIdentity] + origins : typing.Optional[typing.Sequence[str]] password : typing.Optional[str] @@ -176,7 +217,11 @@ def create( tenant_id, doc_id=doc_id, scope=scope, + layer_mode=layer_mode, layer_name=layer_name, + keep_visitor_layers=keep_visitor_layers, + visitor_idle_seconds=visitor_idle_seconds, + visitor_identity=visitor_identity, origins=origins, password=password, session_ttl_seconds=session_ttl_seconds, @@ -255,6 +300,11 @@ def update( tenant_id: str, share_id: str, *, + layer_mode: typing.Optional[SharesUpdateRequestLayerMode] = OMIT, + layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesUpdateRequestVisitorIdentity] = OMIT, scope: typing.Optional[typing.Sequence[str]] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, @@ -270,6 +320,16 @@ def update( share_id : str + layer_mode : typing.Optional[SharesUpdateRequestLayerMode] + + layer_name : typing.Optional[str] + + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesUpdateRequestVisitorIdentity] + scope : typing.Optional[typing.Sequence[str]] origins : typing.Optional[typing.Sequence[str]] @@ -306,6 +366,11 @@ def update( _response = self._raw_client.update( tenant_id, share_id, + layer_mode=layer_mode, + layer_name=layer_name, + keep_visitor_layers=keep_visitor_layers, + visitor_idle_seconds=visitor_idle_seconds, + visitor_identity=visitor_identity, scope=scope, origins=origins, password=password, @@ -316,10 +381,56 @@ def update( ) return _response.data + def archive( + self, tenant_id: str, share_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> SharesArchive200Response: + """ + Archiving is final: an archived link never exchanges again, and to share again you create a new link. Pausing (`disabled`) is the reversible stop. An archived link no longer counts as using its shared layer, so that layer can be deleted. + + Parameters + ---------- + tenant_id : str + + share_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SharesArchive200Response + OK + + Examples + -------- + from cloudpdf import CloudPDFClient + + client = CloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + client.shares.archive( + tenant_id="tenantId", + share_id="shareId", + ) + """ + _response = self._raw_client.archive(tenant_id, share_id, request_options=request_options) + return _response.data + + @property + def visitors(self): + if self._visitors is None: + from .visitors.client import VisitorsClient # noqa: E402 + + self._visitors = VisitorsClient(client_wrapper=self._client_wrapper) + return self._visitors + class AsyncSharesClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._raw_client = AsyncRawSharesClient(client_wrapper=client_wrapper) + self._client_wrapper = client_wrapper + self._visitors: typing.Optional[AsyncVisitorsClient] = None @property def with_raw_response(self) -> AsyncRawSharesClient: @@ -337,10 +448,13 @@ async def exchange( *, share_token: str, password: typing.Optional[str] = OMIT, + visitor_handle: typing.Optional[str] = OMIT, + restart: typing.Optional[bool] = OMIT, + visitor_identity: typing.Optional[SharesExchangeRequestVisitorIdentity] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> SharesExchange200Response: """ - Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. Mounted only when the deployment can sign (HS256 mode). + Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. A link that asks its visitors who they are on open returns 422 VisitorIdentityRequired until the required answers are given; `error.details` carries `fields` (what the link asks), `missing`, `invalid`, `purpose` and `privacyUrl`. A link that asks before the first change issues the session at once with `visitor.identityRequest`, and writes answer 403 VisitorIdentityRequired with the same details until the visitor exchanges again with their answers. Answers that can not be taken answer 422 on any link. Mounted only when the deployment can sign (HS256 mode). Parameters ---------- @@ -348,6 +462,12 @@ async def exchange( password : typing.Optional[str] + visitor_handle : typing.Optional[str] + + restart : typing.Optional[bool] + + visitor_identity : typing.Optional[SharesExchangeRequestVisitorIdentity] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -377,7 +497,12 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._raw_client.exchange( - share_token=share_token, password=password, request_options=request_options + share_token=share_token, + password=password, + visitor_handle=visitor_handle, + restart=restart, + visitor_identity=visitor_identity, + request_options=request_options, ) return _response.data @@ -388,6 +513,7 @@ async def list( limit: typing.Optional[int] = None, cursor: typing.Optional[str] = None, doc_id: typing.Optional[str] = None, + archived: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None, ) -> SharesList200Response: """ @@ -401,6 +527,8 @@ async def list( doc_id : typing.Optional[str] + archived : typing.Optional[bool] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -430,7 +558,7 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._raw_client.list( - tenant_id, limit=limit, cursor=cursor, doc_id=doc_id, request_options=request_options + tenant_id, limit=limit, cursor=cursor, doc_id=doc_id, archived=archived, request_options=request_options ) return _response.data @@ -440,7 +568,11 @@ async def create( *, doc_id: str, scope: typing.Sequence[str], + layer_mode: typing.Optional[SharesCreateRequestLayerMode] = OMIT, layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesCreateRequestVisitorIdentity] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, session_ttl_seconds: typing.Optional[int] = OMIT, @@ -458,8 +590,16 @@ async def create( scope : typing.Sequence[str] + layer_mode : typing.Optional[SharesCreateRequestLayerMode] + layer_name : typing.Optional[str] + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesCreateRequestVisitorIdentity] + origins : typing.Optional[typing.Sequence[str]] password : typing.Optional[str] @@ -502,7 +642,11 @@ async def main() -> None: tenant_id, doc_id=doc_id, scope=scope, + layer_mode=layer_mode, layer_name=layer_name, + keep_visitor_layers=keep_visitor_layers, + visitor_idle_seconds=visitor_idle_seconds, + visitor_identity=visitor_identity, origins=origins, password=password, session_ttl_seconds=session_ttl_seconds, @@ -599,6 +743,11 @@ async def update( tenant_id: str, share_id: str, *, + layer_mode: typing.Optional[SharesUpdateRequestLayerMode] = OMIT, + layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesUpdateRequestVisitorIdentity] = OMIT, scope: typing.Optional[typing.Sequence[str]] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, @@ -614,6 +763,16 @@ async def update( share_id : str + layer_mode : typing.Optional[SharesUpdateRequestLayerMode] + + layer_name : typing.Optional[str] + + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesUpdateRequestVisitorIdentity] + scope : typing.Optional[typing.Sequence[str]] origins : typing.Optional[typing.Sequence[str]] @@ -658,6 +817,11 @@ async def main() -> None: _response = await self._raw_client.update( tenant_id, share_id, + layer_mode=layer_mode, + layer_name=layer_name, + keep_visitor_layers=keep_visitor_layers, + visitor_idle_seconds=visitor_idle_seconds, + visitor_identity=visitor_identity, scope=scope, origins=origins, password=password, @@ -667,3 +831,55 @@ async def main() -> None: request_options=request_options, ) return _response.data + + async def archive( + self, tenant_id: str, share_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> SharesArchive200Response: + """ + Archiving is final: an archived link never exchanges again, and to share again you create a new link. Pausing (`disabled`) is the reversible stop. An archived link no longer counts as using its shared layer, so that layer can be deleted. + + Parameters + ---------- + tenant_id : str + + share_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SharesArchive200Response + OK + + Examples + -------- + import asyncio + + from cloudpdf import AsyncCloudPDFClient + + client = AsyncCloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.shares.archive( + tenant_id="tenantId", + share_id="shareId", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.archive(tenant_id, share_id, request_options=request_options) + return _response.data + + @property + def visitors(self): + if self._visitors is None: + from .visitors.client import AsyncVisitorsClient # noqa: E402 + + self._visitors = AsyncVisitorsClient(client_wrapper=self._client_wrapper) + return self._visitors diff --git a/src/cloudpdf/shares/raw_client.py b/src/cloudpdf/shares/raw_client.py index 4d4d92d..87fd54f 100644 --- a/src/cloudpdf/shares/raw_client.py +++ b/src/cloudpdf/shares/raw_client.py @@ -10,11 +10,14 @@ from ..core.parse_error import ParsingError from ..core.pydantic_utilities import parse_obj_as from ..core.request_options import RequestOptions +from ..core.serialization import convert_and_respect_annotation_metadata from ..errors.bad_request_error import BadRequestError +from ..errors.conflict_error import ConflictError from ..errors.forbidden_error import ForbiddenError from ..errors.gone_error import GoneError from ..errors.not_found_error import NotFoundError from ..errors.unprocessable_entity_error import UnprocessableEntityError +from ..types.shares_archive200response import SharesArchive200Response from ..types.shares_create200response import SharesCreate200Response from ..types.shares_exchange200response import SharesExchange200Response from ..types.shares_exchange410response import SharesExchange410Response @@ -22,6 +25,11 @@ from ..types.shares_get200response import SharesGet200Response from ..types.shares_list200response import SharesList200Response from ..types.shares_update200response import SharesUpdate200Response +from .types.shares_create_request_layer_mode import SharesCreateRequestLayerMode +from .types.shares_create_request_visitor_identity import SharesCreateRequestVisitorIdentity +from .types.shares_exchange_request_visitor_identity import SharesExchangeRequestVisitorIdentity +from .types.shares_update_request_layer_mode import SharesUpdateRequestLayerMode +from .types.shares_update_request_visitor_identity import SharesUpdateRequestVisitorIdentity from pydantic import ValidationError # this is used as the default value for optional parameters @@ -37,10 +45,13 @@ def exchange( *, share_token: str, password: typing.Optional[str] = OMIT, + visitor_handle: typing.Optional[str] = OMIT, + restart: typing.Optional[bool] = OMIT, + visitor_identity: typing.Optional[SharesExchangeRequestVisitorIdentity] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[SharesExchange200Response]: """ - Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. Mounted only when the deployment can sign (HS256 mode). + Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. A link that asks its visitors who they are on open returns 422 VisitorIdentityRequired until the required answers are given; `error.details` carries `fields` (what the link asks), `missing`, `invalid`, `purpose` and `privacyUrl`. A link that asks before the first change issues the session at once with `visitor.identityRequest`, and writes answer 403 VisitorIdentityRequired with the same details until the visitor exchanges again with their answers. Answers that can not be taken answer 422 on any link. Mounted only when the deployment can sign (HS256 mode). Parameters ---------- @@ -48,6 +59,12 @@ def exchange( password : typing.Optional[str] + visitor_handle : typing.Optional[str] + + restart : typing.Optional[bool] + + visitor_identity : typing.Optional[SharesExchangeRequestVisitorIdentity] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -62,6 +79,11 @@ def exchange( json={ "shareToken": share_token, "password": password, + "visitorHandle": visitor_handle, + "restart": restart, + "visitorIdentity": convert_and_respect_annotation_metadata( + object_=visitor_identity, annotation=SharesExchangeRequestVisitorIdentity, direction="write" + ), }, headers={ "content-type": "application/json", @@ -150,6 +172,7 @@ def list( limit: typing.Optional[int] = None, cursor: typing.Optional[str] = None, doc_id: typing.Optional[str] = None, + archived: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[SharesList200Response]: """ @@ -163,6 +186,8 @@ def list( doc_id : typing.Optional[str] + archived : typing.Optional[bool] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -178,6 +203,7 @@ def list( "limit": limit, "cursor": cursor, "docId": doc_id, + "archived": archived, }, request_options=request_options, ) @@ -217,7 +243,11 @@ def create( *, doc_id: str, scope: typing.Sequence[str], + layer_mode: typing.Optional[SharesCreateRequestLayerMode] = OMIT, layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesCreateRequestVisitorIdentity] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, session_ttl_seconds: typing.Optional[int] = OMIT, @@ -235,8 +265,16 @@ def create( scope : typing.Sequence[str] + layer_mode : typing.Optional[SharesCreateRequestLayerMode] + layer_name : typing.Optional[str] + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesCreateRequestVisitorIdentity] + origins : typing.Optional[typing.Sequence[str]] password : typing.Optional[str] @@ -258,7 +296,15 @@ def create( method="POST", json={ "docId": doc_id, + "layerMode": layer_mode, "layerName": layer_name, + "keepVisitorLayers": keep_visitor_layers, + "visitorIdleSeconds": visitor_idle_seconds, + "visitorIdentity": convert_and_respect_annotation_metadata( + object_=visitor_identity, + annotation=typing.Optional[SharesCreateRequestVisitorIdentity], + direction="write", + ), "scope": scope, "origins": origins, "password": password, @@ -412,6 +458,17 @@ def delete( ), ), ) + if _response.status_code == 409: + raise ConflictError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) @@ -426,6 +483,11 @@ def update( tenant_id: str, share_id: str, *, + layer_mode: typing.Optional[SharesUpdateRequestLayerMode] = OMIT, + layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesUpdateRequestVisitorIdentity] = OMIT, scope: typing.Optional[typing.Sequence[str]] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, @@ -441,6 +503,16 @@ def update( share_id : str + layer_mode : typing.Optional[SharesUpdateRequestLayerMode] + + layer_name : typing.Optional[str] + + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesUpdateRequestVisitorIdentity] + scope : typing.Optional[typing.Sequence[str]] origins : typing.Optional[typing.Sequence[str]] @@ -465,6 +537,15 @@ def update( f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}", method="PATCH", json={ + "layerMode": layer_mode, + "layerName": layer_name, + "keepVisitorLayers": keep_visitor_layers, + "visitorIdleSeconds": visitor_idle_seconds, + "visitorIdentity": convert_and_respect_annotation_metadata( + object_=visitor_identity, + annotation=typing.Optional[SharesUpdateRequestVisitorIdentity], + direction="write", + ), "scope": scope, "origins": origins, "password": password, @@ -510,6 +591,72 @@ def update( ), ), ) + if _response.status_code == 409: + raise ConflictError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def archive( + self, tenant_id: str, share_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[SharesArchive200Response]: + """ + Archiving is final: an archived link never exchanges again, and to share again you create a new link. Pausing (`disabled`) is the reversible stop. An archived link no longer counts as using its shared layer, so that layer can be deleted. + + Parameters + ---------- + tenant_id : str + + share_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[SharesArchive200Response] + OK + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}/archive", + method="POST", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + SharesArchive200Response, + parse_obj_as( + type_=SharesArchive200Response, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) @@ -529,10 +676,13 @@ async def exchange( *, share_token: str, password: typing.Optional[str] = OMIT, + visitor_handle: typing.Optional[str] = OMIT, + restart: typing.Optional[bool] = OMIT, + visitor_identity: typing.Optional[SharesExchangeRequestVisitorIdentity] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[SharesExchange200Response]: """ - Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. Mounted only when the deployment can sign (HS256 mode). + Unauthenticated, but requires a browser Origin header, checked against the grant allowlist. Unknown, revoked, and disabled tokens are indistinguishable (404). Passphrase-protected grants return 422 SharePasswordRequired until `password` is supplied. A link that asks its visitors who they are on open returns 422 VisitorIdentityRequired until the required answers are given; `error.details` carries `fields` (what the link asks), `missing`, `invalid`, `purpose` and `privacyUrl`. A link that asks before the first change issues the session at once with `visitor.identityRequest`, and writes answer 403 VisitorIdentityRequired with the same details until the visitor exchanges again with their answers. Answers that can not be taken answer 422 on any link. Mounted only when the deployment can sign (HS256 mode). Parameters ---------- @@ -540,6 +690,12 @@ async def exchange( password : typing.Optional[str] + visitor_handle : typing.Optional[str] + + restart : typing.Optional[bool] + + visitor_identity : typing.Optional[SharesExchangeRequestVisitorIdentity] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -554,6 +710,11 @@ async def exchange( json={ "shareToken": share_token, "password": password, + "visitorHandle": visitor_handle, + "restart": restart, + "visitorIdentity": convert_and_respect_annotation_metadata( + object_=visitor_identity, annotation=SharesExchangeRequestVisitorIdentity, direction="write" + ), }, headers={ "content-type": "application/json", @@ -642,6 +803,7 @@ async def list( limit: typing.Optional[int] = None, cursor: typing.Optional[str] = None, doc_id: typing.Optional[str] = None, + archived: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[SharesList200Response]: """ @@ -655,6 +817,8 @@ async def list( doc_id : typing.Optional[str] + archived : typing.Optional[bool] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -670,6 +834,7 @@ async def list( "limit": limit, "cursor": cursor, "docId": doc_id, + "archived": archived, }, request_options=request_options, ) @@ -709,7 +874,11 @@ async def create( *, doc_id: str, scope: typing.Sequence[str], + layer_mode: typing.Optional[SharesCreateRequestLayerMode] = OMIT, layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesCreateRequestVisitorIdentity] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, session_ttl_seconds: typing.Optional[int] = OMIT, @@ -727,8 +896,16 @@ async def create( scope : typing.Sequence[str] + layer_mode : typing.Optional[SharesCreateRequestLayerMode] + layer_name : typing.Optional[str] + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesCreateRequestVisitorIdentity] + origins : typing.Optional[typing.Sequence[str]] password : typing.Optional[str] @@ -750,7 +927,15 @@ async def create( method="POST", json={ "docId": doc_id, + "layerMode": layer_mode, "layerName": layer_name, + "keepVisitorLayers": keep_visitor_layers, + "visitorIdleSeconds": visitor_idle_seconds, + "visitorIdentity": convert_and_respect_annotation_metadata( + object_=visitor_identity, + annotation=typing.Optional[SharesCreateRequestVisitorIdentity], + direction="write", + ), "scope": scope, "origins": origins, "password": password, @@ -904,6 +1089,17 @@ async def delete( ), ), ) + if _response.status_code == 409: + raise ConflictError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) @@ -918,6 +1114,11 @@ async def update( tenant_id: str, share_id: str, *, + layer_mode: typing.Optional[SharesUpdateRequestLayerMode] = OMIT, + layer_name: typing.Optional[str] = OMIT, + keep_visitor_layers: typing.Optional[bool] = OMIT, + visitor_idle_seconds: typing.Optional[int] = OMIT, + visitor_identity: typing.Optional[SharesUpdateRequestVisitorIdentity] = OMIT, scope: typing.Optional[typing.Sequence[str]] = OMIT, origins: typing.Optional[typing.Sequence[str]] = OMIT, password: typing.Optional[str] = OMIT, @@ -933,6 +1134,16 @@ async def update( share_id : str + layer_mode : typing.Optional[SharesUpdateRequestLayerMode] + + layer_name : typing.Optional[str] + + keep_visitor_layers : typing.Optional[bool] + + visitor_idle_seconds : typing.Optional[int] + + visitor_identity : typing.Optional[SharesUpdateRequestVisitorIdentity] + scope : typing.Optional[typing.Sequence[str]] origins : typing.Optional[typing.Sequence[str]] @@ -957,6 +1168,15 @@ async def update( f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}", method="PATCH", json={ + "layerMode": layer_mode, + "layerName": layer_name, + "keepVisitorLayers": keep_visitor_layers, + "visitorIdleSeconds": visitor_idle_seconds, + "visitorIdentity": convert_and_respect_annotation_metadata( + object_=visitor_identity, + annotation=typing.Optional[SharesUpdateRequestVisitorIdentity], + direction="write", + ), "scope": scope, "origins": origins, "password": password, @@ -1002,6 +1222,72 @@ async def update( ), ), ) + if _response.status_code == 409: + raise ConflictError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def archive( + self, tenant_id: str, share_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[SharesArchive200Response]: + """ + Archiving is final: an archived link never exchanges again, and to share again you create a new link. Pausing (`disabled`) is the reversible stop. An archived link no longer counts as using its shared layer, so that layer can be deleted. + + Parameters + ---------- + tenant_id : str + + share_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[SharesArchive200Response] + OK + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}/archive", + method="POST", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + SharesArchive200Response, + parse_obj_as( + type_=SharesArchive200Response, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) diff --git a/src/cloudpdf/shares/types/__init__.py b/src/cloudpdf/shares/types/__init__.py new file mode 100644 index 0000000..9979cfe --- /dev/null +++ b/src/cloudpdf/shares/types/__init__.py @@ -0,0 +1,104 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .shares_create_request_layer_mode import SharesCreateRequestLayerMode + from .shares_create_request_visitor_identity import SharesCreateRequestVisitorIdentity + from .shares_create_request_visitor_identity_ask import SharesCreateRequestVisitorIdentityAsk + from .shares_create_request_visitor_identity_fields import SharesCreateRequestVisitorIdentityFields + from .shares_create_request_visitor_identity_fields_display_name import ( + SharesCreateRequestVisitorIdentityFieldsDisplayName, + ) + from .shares_create_request_visitor_identity_fields_email import SharesCreateRequestVisitorIdentityFieldsEmail + from .shares_create_request_visitor_identity_fields_organization import ( + SharesCreateRequestVisitorIdentityFieldsOrganization, + ) + from .shares_create_request_visitor_identity_fields_organizational_unit import ( + SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_create_request_visitor_identity_fields_title import SharesCreateRequestVisitorIdentityFieldsTitle + from .shares_exchange_request_visitor_identity import SharesExchangeRequestVisitorIdentity + from .shares_update_request_layer_mode import SharesUpdateRequestLayerMode + from .shares_update_request_visitor_identity import SharesUpdateRequestVisitorIdentity + from .shares_update_request_visitor_identity_ask import SharesUpdateRequestVisitorIdentityAsk + from .shares_update_request_visitor_identity_fields import SharesUpdateRequestVisitorIdentityFields + from .shares_update_request_visitor_identity_fields_display_name import ( + SharesUpdateRequestVisitorIdentityFieldsDisplayName, + ) + from .shares_update_request_visitor_identity_fields_email import SharesUpdateRequestVisitorIdentityFieldsEmail + from .shares_update_request_visitor_identity_fields_organization import ( + SharesUpdateRequestVisitorIdentityFieldsOrganization, + ) + from .shares_update_request_visitor_identity_fields_organizational_unit import ( + SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_update_request_visitor_identity_fields_title import SharesUpdateRequestVisitorIdentityFieldsTitle +_dynamic_imports: typing.Dict[str, str] = { + "SharesCreateRequestLayerMode": ".shares_create_request_layer_mode", + "SharesCreateRequestVisitorIdentity": ".shares_create_request_visitor_identity", + "SharesCreateRequestVisitorIdentityAsk": ".shares_create_request_visitor_identity_ask", + "SharesCreateRequestVisitorIdentityFields": ".shares_create_request_visitor_identity_fields", + "SharesCreateRequestVisitorIdentityFieldsDisplayName": ".shares_create_request_visitor_identity_fields_display_name", + "SharesCreateRequestVisitorIdentityFieldsEmail": ".shares_create_request_visitor_identity_fields_email", + "SharesCreateRequestVisitorIdentityFieldsOrganization": ".shares_create_request_visitor_identity_fields_organization", + "SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit": ".shares_create_request_visitor_identity_fields_organizational_unit", + "SharesCreateRequestVisitorIdentityFieldsTitle": ".shares_create_request_visitor_identity_fields_title", + "SharesExchangeRequestVisitorIdentity": ".shares_exchange_request_visitor_identity", + "SharesUpdateRequestLayerMode": ".shares_update_request_layer_mode", + "SharesUpdateRequestVisitorIdentity": ".shares_update_request_visitor_identity", + "SharesUpdateRequestVisitorIdentityAsk": ".shares_update_request_visitor_identity_ask", + "SharesUpdateRequestVisitorIdentityFields": ".shares_update_request_visitor_identity_fields", + "SharesUpdateRequestVisitorIdentityFieldsDisplayName": ".shares_update_request_visitor_identity_fields_display_name", + "SharesUpdateRequestVisitorIdentityFieldsEmail": ".shares_update_request_visitor_identity_fields_email", + "SharesUpdateRequestVisitorIdentityFieldsOrganization": ".shares_update_request_visitor_identity_fields_organization", + "SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit": ".shares_update_request_visitor_identity_fields_organizational_unit", + "SharesUpdateRequestVisitorIdentityFieldsTitle": ".shares_update_request_visitor_identity_fields_title", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = [ + "SharesCreateRequestLayerMode", + "SharesCreateRequestVisitorIdentity", + "SharesCreateRequestVisitorIdentityAsk", + "SharesCreateRequestVisitorIdentityFields", + "SharesCreateRequestVisitorIdentityFieldsDisplayName", + "SharesCreateRequestVisitorIdentityFieldsEmail", + "SharesCreateRequestVisitorIdentityFieldsOrganization", + "SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit", + "SharesCreateRequestVisitorIdentityFieldsTitle", + "SharesExchangeRequestVisitorIdentity", + "SharesUpdateRequestLayerMode", + "SharesUpdateRequestVisitorIdentity", + "SharesUpdateRequestVisitorIdentityAsk", + "SharesUpdateRequestVisitorIdentityFields", + "SharesUpdateRequestVisitorIdentityFieldsDisplayName", + "SharesUpdateRequestVisitorIdentityFieldsEmail", + "SharesUpdateRequestVisitorIdentityFieldsOrganization", + "SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit", + "SharesUpdateRequestVisitorIdentityFieldsTitle", +] diff --git a/src/cloudpdf/shares/types/shares_create_request_layer_mode.py b/src/cloudpdf/shares/types/shares_create_request_layer_mode.py new file mode 100644 index 0000000..e2f2715 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity.py new file mode 100644 index 0000000..6beea96 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ...core.serialization import FieldMetadata +from .shares_create_request_visitor_identity_ask import SharesCreateRequestVisitorIdentityAsk +from .shares_create_request_visitor_identity_fields import SharesCreateRequestVisitorIdentityFields + + +class SharesCreateRequestVisitorIdentity(UniversalBaseModel): + fields: SharesCreateRequestVisitorIdentityFields + ask: SharesCreateRequestVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_ask.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_ask.py new file mode 100644 index 0000000..cb33651 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_ask.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestVisitorIdentityAsk = typing.Union[typing.Literal["on-open", "before-first-change"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields.py new file mode 100644 index 0000000..9891dc2 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ...core.serialization import FieldMetadata +from .shares_create_request_visitor_identity_fields_display_name import ( + SharesCreateRequestVisitorIdentityFieldsDisplayName, +) +from .shares_create_request_visitor_identity_fields_email import SharesCreateRequestVisitorIdentityFieldsEmail +from .shares_create_request_visitor_identity_fields_organization import ( + SharesCreateRequestVisitorIdentityFieldsOrganization, +) +from .shares_create_request_visitor_identity_fields_organizational_unit import ( + SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_create_request_visitor_identity_fields_title import SharesCreateRequestVisitorIdentityFieldsTitle + + +class SharesCreateRequestVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesCreateRequestVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesCreateRequestVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesCreateRequestVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesCreateRequestVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_display_name.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..e3b4348 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_display_name.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestVisitorIdentityFieldsDisplayName = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_email.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_email.py new file mode 100644 index 0000000..a39247b --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_email.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestVisitorIdentityFieldsEmail = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organization.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organization.py new file mode 100644 index 0000000..b2113a5 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organization.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestVisitorIdentityFieldsOrganization = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..e194620 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_title.py b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_title.py new file mode 100644 index 0000000..852cad4 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_create_request_visitor_identity_fields_title.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreateRequestVisitorIdentityFieldsTitle = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_exchange_request_visitor_identity.py b/src/cloudpdf/shares/types/shares_exchange_request_visitor_identity.py new file mode 100644 index 0000000..89780b2 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_exchange_request_visitor_identity.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ...core.serialization import FieldMetadata + + +class SharesExchangeRequestVisitorIdentity(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="displayName"), pydantic.Field(alias="displayName") + ] = None + email: typing.Optional[str] = None + title: typing.Optional[str] = None + organization: typing.Optional[str] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="organizationalUnit"), pydantic.Field(alias="organizationalUnit") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/shares/types/shares_update_request_layer_mode.py b/src/cloudpdf/shares/types/shares_update_request_layer_mode.py new file mode 100644 index 0000000..89f011a --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity.py new file mode 100644 index 0000000..a18369e --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ...core.serialization import FieldMetadata +from .shares_update_request_visitor_identity_ask import SharesUpdateRequestVisitorIdentityAsk +from .shares_update_request_visitor_identity_fields import SharesUpdateRequestVisitorIdentityFields + + +class SharesUpdateRequestVisitorIdentity(UniversalBaseModel): + fields: SharesUpdateRequestVisitorIdentityFields + ask: SharesUpdateRequestVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_ask.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_ask.py new file mode 100644 index 0000000..1e7ee97 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_ask.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestVisitorIdentityAsk = typing.Union[typing.Literal["on-open", "before-first-change"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields.py new file mode 100644 index 0000000..11d67de --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ...core.serialization import FieldMetadata +from .shares_update_request_visitor_identity_fields_display_name import ( + SharesUpdateRequestVisitorIdentityFieldsDisplayName, +) +from .shares_update_request_visitor_identity_fields_email import SharesUpdateRequestVisitorIdentityFieldsEmail +from .shares_update_request_visitor_identity_fields_organization import ( + SharesUpdateRequestVisitorIdentityFieldsOrganization, +) +from .shares_update_request_visitor_identity_fields_organizational_unit import ( + SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_update_request_visitor_identity_fields_title import SharesUpdateRequestVisitorIdentityFieldsTitle + + +class SharesUpdateRequestVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesUpdateRequestVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesUpdateRequestVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesUpdateRequestVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesUpdateRequestVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_display_name.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..f00addd --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_display_name.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestVisitorIdentityFieldsDisplayName = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_email.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_email.py new file mode 100644 index 0000000..95c8b11 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_email.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestVisitorIdentityFieldsEmail = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organization.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organization.py new file mode 100644 index 0000000..657c575 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organization.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestVisitorIdentityFieldsOrganization = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..5f5674d --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_title.py b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_title.py new file mode 100644 index 0000000..74bb828 --- /dev/null +++ b/src/cloudpdf/shares/types/shares_update_request_visitor_identity_fields_title.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdateRequestVisitorIdentityFieldsTitle = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/shares/visitors/__init__.py b/src/cloudpdf/shares/visitors/__init__.py new file mode 100644 index 0000000..5cde020 --- /dev/null +++ b/src/cloudpdf/shares/visitors/__init__.py @@ -0,0 +1,4 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + diff --git a/src/cloudpdf/shares/visitors/client.py b/src/cloudpdf/shares/visitors/client.py new file mode 100644 index 0000000..4af0ebe --- /dev/null +++ b/src/cloudpdf/shares/visitors/client.py @@ -0,0 +1,228 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.request_options import RequestOptions +from ...types.shares_visitors_list200response import SharesVisitorsList200Response +from .raw_client import AsyncRawVisitorsClient, RawVisitorsClient + + +class VisitorsClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawVisitorsClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawVisitorsClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawVisitorsClient + """ + return self._raw_client + + def list( + self, + tenant_id: str, + share_id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> SharesVisitorsList200Response: + """ + An archived link's visitors are listed too. + + Parameters + ---------- + tenant_id : str + + share_id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SharesVisitorsList200Response + OK + + Examples + -------- + from cloudpdf import CloudPDFClient + + client = CloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + client.shares.visitors.list( + tenant_id="tenantId", + share_id="shareId", + ) + """ + _response = self._raw_client.list( + tenant_id, share_id, limit=limit, cursor=cursor, request_options=request_options + ) + return _response.data + + def delete( + self, tenant_id: str, share_id: str, visitor_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> None: + """ + Their handle brings them back as a new visitor, who is asked again. Deleting a visitor already deleted changes nothing. + + Parameters + ---------- + tenant_id : str + + share_id : str + + visitor_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + from cloudpdf import CloudPDFClient + + client = CloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + client.shares.visitors.delete( + tenant_id="tenantId", + share_id="shareId", + visitor_id="visitorId", + ) + """ + _response = self._raw_client.delete(tenant_id, share_id, visitor_id, request_options=request_options) + return _response.data + + +class AsyncVisitorsClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawVisitorsClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawVisitorsClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawVisitorsClient + """ + return self._raw_client + + async def list( + self, + tenant_id: str, + share_id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> SharesVisitorsList200Response: + """ + An archived link's visitors are listed too. + + Parameters + ---------- + tenant_id : str + + share_id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + SharesVisitorsList200Response + OK + + Examples + -------- + import asyncio + + from cloudpdf import AsyncCloudPDFClient + + client = AsyncCloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.shares.visitors.list( + tenant_id="tenantId", + share_id="shareId", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.list( + tenant_id, share_id, limit=limit, cursor=cursor, request_options=request_options + ) + return _response.data + + async def delete( + self, tenant_id: str, share_id: str, visitor_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> None: + """ + Their handle brings them back as a new visitor, who is asked again. Deleting a visitor already deleted changes nothing. + + Parameters + ---------- + tenant_id : str + + share_id : str + + visitor_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + None + + Examples + -------- + import asyncio + + from cloudpdf import AsyncCloudPDFClient + + client = AsyncCloudPDFClient( + token="YOUR_TOKEN", + base_url="https://yourhost.com/path/to/api", + ) + + + async def main() -> None: + await client.shares.visitors.delete( + tenant_id="tenantId", + share_id="shareId", + visitor_id="visitorId", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.delete(tenant_id, share_id, visitor_id, request_options=request_options) + return _response.data diff --git a/src/cloudpdf/shares/visitors/raw_client.py b/src/cloudpdf/shares/visitors/raw_client.py new file mode 100644 index 0000000..89fc654 --- /dev/null +++ b/src/cloudpdf/shares/visitors/raw_client.py @@ -0,0 +1,284 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.http_response import AsyncHttpResponse, HttpResponse +from ...core.jsonable_encoder import encode_path_param +from ...core.parse_error import ParsingError +from ...core.pydantic_utilities import parse_obj_as +from ...core.request_options import RequestOptions +from ...errors.bad_request_error import BadRequestError +from ...errors.not_found_error import NotFoundError +from ...types.shares_visitors_list200response import SharesVisitorsList200Response +from pydantic import ValidationError + + +class RawVisitorsClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def list( + self, + tenant_id: str, + share_id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[SharesVisitorsList200Response]: + """ + An archived link's visitors are listed too. + + Parameters + ---------- + tenant_id : str + + share_id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[SharesVisitorsList200Response] + OK + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}/visitors", + method="GET", + params={ + "limit": limit, + "cursor": cursor, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + SharesVisitorsList200Response, + parse_obj_as( + type_=SharesVisitorsList200Response, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + def delete( + self, tenant_id: str, share_id: str, visitor_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[None]: + """ + Their handle brings them back as a new visitor, who is asked again. Deleting a visitor already deleted changes nothing. + + Parameters + ---------- + tenant_id : str + + share_id : str + + visitor_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[None] + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}/visitors/{encode_path_param(visitor_id)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return HttpResponse(response=_response, data=None) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawVisitorsClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def list( + self, + tenant_id: str, + share_id: str, + *, + limit: typing.Optional[int] = None, + cursor: typing.Optional[str] = None, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[SharesVisitorsList200Response]: + """ + An archived link's visitors are listed too. + + Parameters + ---------- + tenant_id : str + + share_id : str + + limit : typing.Optional[int] + + cursor : typing.Optional[str] + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[SharesVisitorsList200Response] + OK + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}/visitors", + method="GET", + params={ + "limit": limit, + "cursor": cursor, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + SharesVisitorsList200Response, + parse_obj_as( + type_=SharesVisitorsList200Response, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + async def delete( + self, tenant_id: str, share_id: str, visitor_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[None]: + """ + Their handle brings them back as a new visitor, who is asked again. Deleting a visitor already deleted changes nothing. + + Parameters + ---------- + tenant_id : str + + share_id : str + + visitor_id : str + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[None] + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/tenants/{encode_path_param(tenant_id)}/shares/{encode_path_param(share_id)}/visitors/{encode_path_param(visitor_id)}", + method="DELETE", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + return AsyncHttpResponse(response=_response, data=None) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/cloudpdf/types/__init__.py b/src/cloudpdf/types/__init__.py index fcfe520..998df05 100644 --- a/src/cloudpdf/types/__init__.py +++ b/src/cloudpdf/types/__init__.py @@ -1622,6 +1622,9 @@ from .doc_changes404response import DocChanges404Response from .doc_changes409response import DocChanges409Response from .doc_changes413response import DocChanges413Response + from .doc_download_link200response import DocDownloadLink200Response + from .doc_download_link404response import DocDownloadLink404Response + from .doc_download_link501response import DocDownloadLink501Response from .doc_download_response import DocDownloadResponse from .doc_forms_delete_widget200response import DocFormsDeleteWidget200Response from .doc_forms_delete_widget400response import DocFormsDeleteWidget400Response @@ -2177,6 +2180,14 @@ ) from .documents_init200response_resumed_upload_proxy import DocumentsInit200ResponseResumedUploadProxy from .documents_init400response import DocumentsInit400Response + from .documents_layers_delete403response import DocumentsLayersDelete403Response + from .documents_layers_delete404response import DocumentsLayersDelete404Response + from .documents_layers_delete409response import DocumentsLayersDelete409Response + from .documents_layers_list200response import DocumentsLayersList200Response + from .documents_layers_list200response_layers_item import DocumentsLayersList200ResponseLayersItem + from .documents_layers_list400response import DocumentsLayersList400Response + from .documents_layers_list403response import DocumentsLayersList403Response + from .documents_layers_list404response import DocumentsLayersList404Response from .documents_list200response import DocumentsList200Response from .documents_list200response_documents_item import DocumentsList200ResponseDocumentsItem from .documents_list200response_documents_item_state import DocumentsList200ResponseDocumentsItemState @@ -2568,13 +2579,86 @@ from .pdf_link_target_writable_named_name import PdfLinkTargetWritableNamedName from .pdf_link_target_writable_uri import PdfLinkTargetWritableUri from .pdf_page_actions import PdfPageActions + from .shares_archive200response import SharesArchive200Response + from .shares_archive200response_share import SharesArchive200ResponseShare + from .shares_archive200response_share_layer_mode import SharesArchive200ResponseShareLayerMode + from .shares_archive200response_share_visitor_identity import SharesArchive200ResponseShareVisitorIdentity + from .shares_archive200response_share_visitor_identity_ask import SharesArchive200ResponseShareVisitorIdentityAsk + from .shares_archive200response_share_visitor_identity_fields import ( + SharesArchive200ResponseShareVisitorIdentityFields, + ) + from .shares_archive200response_share_visitor_identity_fields_display_name import ( + SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName, + ) + from .shares_archive200response_share_visitor_identity_fields_email import ( + SharesArchive200ResponseShareVisitorIdentityFieldsEmail, + ) + from .shares_archive200response_share_visitor_identity_fields_organization import ( + SharesArchive200ResponseShareVisitorIdentityFieldsOrganization, + ) + from .shares_archive200response_share_visitor_identity_fields_organizational_unit import ( + SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_archive200response_share_visitor_identity_fields_title import ( + SharesArchive200ResponseShareVisitorIdentityFieldsTitle, + ) + from .shares_archive404response import SharesArchive404Response from .shares_create200response import SharesCreate200Response from .shares_create200response_share import SharesCreate200ResponseShare + from .shares_create200response_share_layer_mode import SharesCreate200ResponseShareLayerMode + from .shares_create200response_share_visitor_identity import SharesCreate200ResponseShareVisitorIdentity + from .shares_create200response_share_visitor_identity_ask import SharesCreate200ResponseShareVisitorIdentityAsk + from .shares_create200response_share_visitor_identity_fields import ( + SharesCreate200ResponseShareVisitorIdentityFields, + ) + from .shares_create200response_share_visitor_identity_fields_display_name import ( + SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName, + ) + from .shares_create200response_share_visitor_identity_fields_email import ( + SharesCreate200ResponseShareVisitorIdentityFieldsEmail, + ) + from .shares_create200response_share_visitor_identity_fields_organization import ( + SharesCreate200ResponseShareVisitorIdentityFieldsOrganization, + ) + from .shares_create200response_share_visitor_identity_fields_organizational_unit import ( + SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_create200response_share_visitor_identity_fields_title import ( + SharesCreate200ResponseShareVisitorIdentityFieldsTitle, + ) from .shares_create400response import SharesCreate400Response from .shares_create403response import SharesCreate403Response from .shares_create404response import SharesCreate404Response - from .shares_delete_response import SharesDeleteResponse + from .shares_delete404response import SharesDelete404Response + from .shares_delete409response import SharesDelete409Response from .shares_exchange200response import SharesExchange200Response + from .shares_exchange200response_layer_mode import SharesExchange200ResponseLayerMode + from .shares_exchange200response_visitor import SharesExchange200ResponseVisitor + from .shares_exchange200response_visitor_identity_request import SharesExchange200ResponseVisitorIdentityRequest + from .shares_exchange200response_visitor_identity_request_fields import ( + SharesExchange200ResponseVisitorIdentityRequestFields, + ) + from .shares_exchange200response_visitor_identity_request_fields_display_name import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName, + ) + from .shares_exchange200response_visitor_identity_request_fields_email import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsEmail, + ) + from .shares_exchange200response_visitor_identity_request_fields_organization import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization, + ) + from .shares_exchange200response_visitor_identity_request_fields_organizational_unit import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit, + ) + from .shares_exchange200response_visitor_identity_request_fields_title import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsTitle, + ) + from .shares_exchange200response_visitor_identity_request_invalid_item import ( + SharesExchange200ResponseVisitorIdentityRequestInvalidItem, + ) + from .shares_exchange200response_visitor_identity_request_missing_item import ( + SharesExchange200ResponseVisitorIdentityRequestMissingItem, + ) from .shares_exchange400response import SharesExchange400Response from .shares_exchange403response import SharesExchange403Response from .shares_exchange404response import SharesExchange404Response @@ -2582,14 +2666,85 @@ from .shares_exchange422response import SharesExchange422Response from .shares_get200response import SharesGet200Response from .shares_get200response_share import SharesGet200ResponseShare + from .shares_get200response_share_layer_mode import SharesGet200ResponseShareLayerMode + from .shares_get200response_share_visitor_identity import SharesGet200ResponseShareVisitorIdentity + from .shares_get200response_share_visitor_identity_ask import SharesGet200ResponseShareVisitorIdentityAsk + from .shares_get200response_share_visitor_identity_fields import SharesGet200ResponseShareVisitorIdentityFields + from .shares_get200response_share_visitor_identity_fields_display_name import ( + SharesGet200ResponseShareVisitorIdentityFieldsDisplayName, + ) + from .shares_get200response_share_visitor_identity_fields_email import ( + SharesGet200ResponseShareVisitorIdentityFieldsEmail, + ) + from .shares_get200response_share_visitor_identity_fields_organization import ( + SharesGet200ResponseShareVisitorIdentityFieldsOrganization, + ) + from .shares_get200response_share_visitor_identity_fields_organizational_unit import ( + SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_get200response_share_visitor_identity_fields_title import ( + SharesGet200ResponseShareVisitorIdentityFieldsTitle, + ) from .shares_get404response import SharesGet404Response from .shares_list200response import SharesList200Response from .shares_list200response_shares_item import SharesList200ResponseSharesItem + from .shares_list200response_shares_item_layer_mode import SharesList200ResponseSharesItemLayerMode + from .shares_list200response_shares_item_visitor_identity import SharesList200ResponseSharesItemVisitorIdentity + from .shares_list200response_shares_item_visitor_identity_ask import ( + SharesList200ResponseSharesItemVisitorIdentityAsk, + ) + from .shares_list200response_shares_item_visitor_identity_fields import ( + SharesList200ResponseSharesItemVisitorIdentityFields, + ) + from .shares_list200response_shares_item_visitor_identity_fields_display_name import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName, + ) + from .shares_list200response_shares_item_visitor_identity_fields_email import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsEmail, + ) + from .shares_list200response_shares_item_visitor_identity_fields_organization import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization, + ) + from .shares_list200response_shares_item_visitor_identity_fields_organizational_unit import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_list200response_shares_item_visitor_identity_fields_title import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsTitle, + ) from .shares_list400response import SharesList400Response from .shares_update200response import SharesUpdate200Response from .shares_update200response_share import SharesUpdate200ResponseShare + from .shares_update200response_share_layer_mode import SharesUpdate200ResponseShareLayerMode + from .shares_update200response_share_visitor_identity import SharesUpdate200ResponseShareVisitorIdentity + from .shares_update200response_share_visitor_identity_ask import SharesUpdate200ResponseShareVisitorIdentityAsk + from .shares_update200response_share_visitor_identity_fields import ( + SharesUpdate200ResponseShareVisitorIdentityFields, + ) + from .shares_update200response_share_visitor_identity_fields_display_name import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName, + ) + from .shares_update200response_share_visitor_identity_fields_email import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsEmail, + ) + from .shares_update200response_share_visitor_identity_fields_organization import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization, + ) + from .shares_update200response_share_visitor_identity_fields_organizational_unit import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit, + ) + from .shares_update200response_share_visitor_identity_fields_title import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsTitle, + ) from .shares_update400response import SharesUpdate400Response from .shares_update404response import SharesUpdate404Response + from .shares_update409response import SharesUpdate409Response + from .shares_visitors_delete_response import SharesVisitorsDeleteResponse + from .shares_visitors_list200response import SharesVisitorsList200Response + from .shares_visitors_list200response_visitors_item import SharesVisitorsList200ResponseVisitorsItem + from .shares_visitors_list200response_visitors_item_answers import SharesVisitorsList200ResponseVisitorsItemAnswers + from .shares_visitors_list200response_visitors_item_layer import SharesVisitorsList200ResponseVisitorsItemLayer + from .shares_visitors_list400response import SharesVisitorsList400Response + from .shares_visitors_list404response import SharesVisitorsList404Response from .tenants_create200response import TenantsCreate200Response from .tenants_create200response_tenant import TenantsCreate200ResponseTenant from .tenants_create200response_tenant_status import TenantsCreate200ResponseTenantStatus @@ -3857,6 +4012,9 @@ "DocChanges404Response": ".doc_changes404response", "DocChanges409Response": ".doc_changes409response", "DocChanges413Response": ".doc_changes413response", + "DocDownloadLink200Response": ".doc_download_link200response", + "DocDownloadLink404Response": ".doc_download_link404response", + "DocDownloadLink501Response": ".doc_download_link501response", "DocDownloadResponse": ".doc_download_response", "DocFormsDeleteWidget200Response": ".doc_forms_delete_widget200response", "DocFormsDeleteWidget400Response": ".doc_forms_delete_widget400response", @@ -4202,6 +4360,14 @@ "DocumentsInit200Response_Deduped": ".documents_init200response", "DocumentsInit200Response_Resumed": ".documents_init200response", "DocumentsInit400Response": ".documents_init400response", + "DocumentsLayersDelete403Response": ".documents_layers_delete403response", + "DocumentsLayersDelete404Response": ".documents_layers_delete404response", + "DocumentsLayersDelete409Response": ".documents_layers_delete409response", + "DocumentsLayersList200Response": ".documents_layers_list200response", + "DocumentsLayersList200ResponseLayersItem": ".documents_layers_list200response_layers_item", + "DocumentsLayersList400Response": ".documents_layers_list400response", + "DocumentsLayersList403Response": ".documents_layers_list403response", + "DocumentsLayersList404Response": ".documents_layers_list404response", "DocumentsList200Response": ".documents_list200response", "DocumentsList200ResponseDocumentsItem": ".documents_list200response_documents_item", "DocumentsList200ResponseDocumentsItemState": ".documents_list200response_documents_item_state", @@ -4549,13 +4715,46 @@ "PdfLinkTarget_Unsupported": ".pdf_link_target", "PdfLinkTarget_Uri": ".pdf_link_target", "PdfPageActions": ".pdf_page_actions", + "SharesArchive200Response": ".shares_archive200response", + "SharesArchive200ResponseShare": ".shares_archive200response_share", + "SharesArchive200ResponseShareLayerMode": ".shares_archive200response_share_layer_mode", + "SharesArchive200ResponseShareVisitorIdentity": ".shares_archive200response_share_visitor_identity", + "SharesArchive200ResponseShareVisitorIdentityAsk": ".shares_archive200response_share_visitor_identity_ask", + "SharesArchive200ResponseShareVisitorIdentityFields": ".shares_archive200response_share_visitor_identity_fields", + "SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName": ".shares_archive200response_share_visitor_identity_fields_display_name", + "SharesArchive200ResponseShareVisitorIdentityFieldsEmail": ".shares_archive200response_share_visitor_identity_fields_email", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganization": ".shares_archive200response_share_visitor_identity_fields_organization", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".shares_archive200response_share_visitor_identity_fields_organizational_unit", + "SharesArchive200ResponseShareVisitorIdentityFieldsTitle": ".shares_archive200response_share_visitor_identity_fields_title", + "SharesArchive404Response": ".shares_archive404response", "SharesCreate200Response": ".shares_create200response", "SharesCreate200ResponseShare": ".shares_create200response_share", + "SharesCreate200ResponseShareLayerMode": ".shares_create200response_share_layer_mode", + "SharesCreate200ResponseShareVisitorIdentity": ".shares_create200response_share_visitor_identity", + "SharesCreate200ResponseShareVisitorIdentityAsk": ".shares_create200response_share_visitor_identity_ask", + "SharesCreate200ResponseShareVisitorIdentityFields": ".shares_create200response_share_visitor_identity_fields", + "SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName": ".shares_create200response_share_visitor_identity_fields_display_name", + "SharesCreate200ResponseShareVisitorIdentityFieldsEmail": ".shares_create200response_share_visitor_identity_fields_email", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganization": ".shares_create200response_share_visitor_identity_fields_organization", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".shares_create200response_share_visitor_identity_fields_organizational_unit", + "SharesCreate200ResponseShareVisitorIdentityFieldsTitle": ".shares_create200response_share_visitor_identity_fields_title", "SharesCreate400Response": ".shares_create400response", "SharesCreate403Response": ".shares_create403response", "SharesCreate404Response": ".shares_create404response", - "SharesDeleteResponse": ".shares_delete_response", + "SharesDelete404Response": ".shares_delete404response", + "SharesDelete409Response": ".shares_delete409response", "SharesExchange200Response": ".shares_exchange200response", + "SharesExchange200ResponseLayerMode": ".shares_exchange200response_layer_mode", + "SharesExchange200ResponseVisitor": ".shares_exchange200response_visitor", + "SharesExchange200ResponseVisitorIdentityRequest": ".shares_exchange200response_visitor_identity_request", + "SharesExchange200ResponseVisitorIdentityRequestFields": ".shares_exchange200response_visitor_identity_request_fields", + "SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName": ".shares_exchange200response_visitor_identity_request_fields_display_name", + "SharesExchange200ResponseVisitorIdentityRequestFieldsEmail": ".shares_exchange200response_visitor_identity_request_fields_email", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization": ".shares_exchange200response_visitor_identity_request_fields_organization", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit": ".shares_exchange200response_visitor_identity_request_fields_organizational_unit", + "SharesExchange200ResponseVisitorIdentityRequestFieldsTitle": ".shares_exchange200response_visitor_identity_request_fields_title", + "SharesExchange200ResponseVisitorIdentityRequestInvalidItem": ".shares_exchange200response_visitor_identity_request_invalid_item", + "SharesExchange200ResponseVisitorIdentityRequestMissingItem": ".shares_exchange200response_visitor_identity_request_missing_item", "SharesExchange400Response": ".shares_exchange400response", "SharesExchange403Response": ".shares_exchange403response", "SharesExchange404Response": ".shares_exchange404response", @@ -4563,14 +4762,49 @@ "SharesExchange422Response": ".shares_exchange422response", "SharesGet200Response": ".shares_get200response", "SharesGet200ResponseShare": ".shares_get200response_share", + "SharesGet200ResponseShareLayerMode": ".shares_get200response_share_layer_mode", + "SharesGet200ResponseShareVisitorIdentity": ".shares_get200response_share_visitor_identity", + "SharesGet200ResponseShareVisitorIdentityAsk": ".shares_get200response_share_visitor_identity_ask", + "SharesGet200ResponseShareVisitorIdentityFields": ".shares_get200response_share_visitor_identity_fields", + "SharesGet200ResponseShareVisitorIdentityFieldsDisplayName": ".shares_get200response_share_visitor_identity_fields_display_name", + "SharesGet200ResponseShareVisitorIdentityFieldsEmail": ".shares_get200response_share_visitor_identity_fields_email", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganization": ".shares_get200response_share_visitor_identity_fields_organization", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".shares_get200response_share_visitor_identity_fields_organizational_unit", + "SharesGet200ResponseShareVisitorIdentityFieldsTitle": ".shares_get200response_share_visitor_identity_fields_title", "SharesGet404Response": ".shares_get404response", "SharesList200Response": ".shares_list200response", "SharesList200ResponseSharesItem": ".shares_list200response_shares_item", + "SharesList200ResponseSharesItemLayerMode": ".shares_list200response_shares_item_layer_mode", + "SharesList200ResponseSharesItemVisitorIdentity": ".shares_list200response_shares_item_visitor_identity", + "SharesList200ResponseSharesItemVisitorIdentityAsk": ".shares_list200response_shares_item_visitor_identity_ask", + "SharesList200ResponseSharesItemVisitorIdentityFields": ".shares_list200response_shares_item_visitor_identity_fields", + "SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName": ".shares_list200response_shares_item_visitor_identity_fields_display_name", + "SharesList200ResponseSharesItemVisitorIdentityFieldsEmail": ".shares_list200response_shares_item_visitor_identity_fields_email", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization": ".shares_list200response_shares_item_visitor_identity_fields_organization", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit": ".shares_list200response_shares_item_visitor_identity_fields_organizational_unit", + "SharesList200ResponseSharesItemVisitorIdentityFieldsTitle": ".shares_list200response_shares_item_visitor_identity_fields_title", "SharesList400Response": ".shares_list400response", "SharesUpdate200Response": ".shares_update200response", "SharesUpdate200ResponseShare": ".shares_update200response_share", + "SharesUpdate200ResponseShareLayerMode": ".shares_update200response_share_layer_mode", + "SharesUpdate200ResponseShareVisitorIdentity": ".shares_update200response_share_visitor_identity", + "SharesUpdate200ResponseShareVisitorIdentityAsk": ".shares_update200response_share_visitor_identity_ask", + "SharesUpdate200ResponseShareVisitorIdentityFields": ".shares_update200response_share_visitor_identity_fields", + "SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName": ".shares_update200response_share_visitor_identity_fields_display_name", + "SharesUpdate200ResponseShareVisitorIdentityFieldsEmail": ".shares_update200response_share_visitor_identity_fields_email", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization": ".shares_update200response_share_visitor_identity_fields_organization", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit": ".shares_update200response_share_visitor_identity_fields_organizational_unit", + "SharesUpdate200ResponseShareVisitorIdentityFieldsTitle": ".shares_update200response_share_visitor_identity_fields_title", "SharesUpdate400Response": ".shares_update400response", "SharesUpdate404Response": ".shares_update404response", + "SharesUpdate409Response": ".shares_update409response", + "SharesVisitorsDeleteResponse": ".shares_visitors_delete_response", + "SharesVisitorsList200Response": ".shares_visitors_list200response", + "SharesVisitorsList200ResponseVisitorsItem": ".shares_visitors_list200response_visitors_item", + "SharesVisitorsList200ResponseVisitorsItemAnswers": ".shares_visitors_list200response_visitors_item_answers", + "SharesVisitorsList200ResponseVisitorsItemLayer": ".shares_visitors_list200response_visitors_item_layer", + "SharesVisitorsList400Response": ".shares_visitors_list400response", + "SharesVisitorsList404Response": ".shares_visitors_list404response", "TenantsCreate200Response": ".tenants_create200response", "TenantsCreate200ResponseTenant": ".tenants_create200response_tenant", "TenantsCreate200ResponseTenantStatus": ".tenants_create200response_tenant_status", @@ -5864,6 +6098,9 @@ def __dir__(): "DocChanges404Response", "DocChanges409Response", "DocChanges413Response", + "DocDownloadLink200Response", + "DocDownloadLink404Response", + "DocDownloadLink501Response", "DocDownloadResponse", "DocFormsDeleteWidget200Response", "DocFormsDeleteWidget400Response", @@ -6209,6 +6446,14 @@ def __dir__(): "DocumentsInit200Response_Deduped", "DocumentsInit200Response_Resumed", "DocumentsInit400Response", + "DocumentsLayersDelete403Response", + "DocumentsLayersDelete404Response", + "DocumentsLayersDelete409Response", + "DocumentsLayersList200Response", + "DocumentsLayersList200ResponseLayersItem", + "DocumentsLayersList400Response", + "DocumentsLayersList403Response", + "DocumentsLayersList404Response", "DocumentsList200Response", "DocumentsList200ResponseDocumentsItem", "DocumentsList200ResponseDocumentsItemState", @@ -6556,13 +6801,46 @@ def __dir__(): "PdfLinkTarget_Unsupported", "PdfLinkTarget_Uri", "PdfPageActions", + "SharesArchive200Response", + "SharesArchive200ResponseShare", + "SharesArchive200ResponseShareLayerMode", + "SharesArchive200ResponseShareVisitorIdentity", + "SharesArchive200ResponseShareVisitorIdentityAsk", + "SharesArchive200ResponseShareVisitorIdentityFields", + "SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesArchive200ResponseShareVisitorIdentityFieldsEmail", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganization", + "SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesArchive200ResponseShareVisitorIdentityFieldsTitle", + "SharesArchive404Response", "SharesCreate200Response", "SharesCreate200ResponseShare", + "SharesCreate200ResponseShareLayerMode", + "SharesCreate200ResponseShareVisitorIdentity", + "SharesCreate200ResponseShareVisitorIdentityAsk", + "SharesCreate200ResponseShareVisitorIdentityFields", + "SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesCreate200ResponseShareVisitorIdentityFieldsEmail", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganization", + "SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesCreate200ResponseShareVisitorIdentityFieldsTitle", "SharesCreate400Response", "SharesCreate403Response", "SharesCreate404Response", - "SharesDeleteResponse", + "SharesDelete404Response", + "SharesDelete409Response", "SharesExchange200Response", + "SharesExchange200ResponseLayerMode", + "SharesExchange200ResponseVisitor", + "SharesExchange200ResponseVisitorIdentityRequest", + "SharesExchange200ResponseVisitorIdentityRequestFields", + "SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName", + "SharesExchange200ResponseVisitorIdentityRequestFieldsEmail", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization", + "SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit", + "SharesExchange200ResponseVisitorIdentityRequestFieldsTitle", + "SharesExchange200ResponseVisitorIdentityRequestInvalidItem", + "SharesExchange200ResponseVisitorIdentityRequestMissingItem", "SharesExchange400Response", "SharesExchange403Response", "SharesExchange404Response", @@ -6570,14 +6848,49 @@ def __dir__(): "SharesExchange422Response", "SharesGet200Response", "SharesGet200ResponseShare", + "SharesGet200ResponseShareLayerMode", + "SharesGet200ResponseShareVisitorIdentity", + "SharesGet200ResponseShareVisitorIdentityAsk", + "SharesGet200ResponseShareVisitorIdentityFields", + "SharesGet200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesGet200ResponseShareVisitorIdentityFieldsEmail", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganization", + "SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesGet200ResponseShareVisitorIdentityFieldsTitle", "SharesGet404Response", "SharesList200Response", "SharesList200ResponseSharesItem", + "SharesList200ResponseSharesItemLayerMode", + "SharesList200ResponseSharesItemVisitorIdentity", + "SharesList200ResponseSharesItemVisitorIdentityAsk", + "SharesList200ResponseSharesItemVisitorIdentityFields", + "SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName", + "SharesList200ResponseSharesItemVisitorIdentityFieldsEmail", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization", + "SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit", + "SharesList200ResponseSharesItemVisitorIdentityFieldsTitle", "SharesList400Response", "SharesUpdate200Response", "SharesUpdate200ResponseShare", + "SharesUpdate200ResponseShareLayerMode", + "SharesUpdate200ResponseShareVisitorIdentity", + "SharesUpdate200ResponseShareVisitorIdentityAsk", + "SharesUpdate200ResponseShareVisitorIdentityFields", + "SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName", + "SharesUpdate200ResponseShareVisitorIdentityFieldsEmail", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization", + "SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit", + "SharesUpdate200ResponseShareVisitorIdentityFieldsTitle", "SharesUpdate400Response", "SharesUpdate404Response", + "SharesUpdate409Response", + "SharesVisitorsDeleteResponse", + "SharesVisitorsList200Response", + "SharesVisitorsList200ResponseVisitorsItem", + "SharesVisitorsList200ResponseVisitorsItemAnswers", + "SharesVisitorsList200ResponseVisitorsItemLayer", + "SharesVisitorsList400Response", + "SharesVisitorsList404Response", "TenantsCreate200Response", "TenantsCreate200ResponseTenant", "TenantsCreate200ResponseTenantStatus", diff --git a/src/cloudpdf/types/admin_error_payload_error.py b/src/cloudpdf/types/admin_error_payload_error.py index b185b3f..590ea86 100644 --- a/src/cloudpdf/types/admin_error_payload_error.py +++ b/src/cloudpdf/types/admin_error_payload_error.py @@ -9,6 +9,7 @@ class AdminErrorPayloadError(UniversalBaseModel): code: str message: str + details: typing.Optional[typing.Dict[str, typing.Any]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/cloudpdf/types/doc_download_link200response.py b/src/cloudpdf/types/doc_download_link200response.py new file mode 100644 index 0000000..ee0d400 --- /dev/null +++ b/src/cloudpdf/types/doc_download_link200response.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class DocDownloadLink200Response(UniversalBaseModel): + url: str + expires_at: typing_extensions.Annotated[float, FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt")] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/doc_download_link404response.py b/src/cloudpdf/types/doc_download_link404response.py new file mode 100644 index 0000000..2b0f620 --- /dev/null +++ b/src/cloudpdf/types/doc_download_link404response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .engine_error_payload import EngineErrorPayload + +DocDownloadLink404Response = EngineErrorPayload diff --git a/src/cloudpdf/types/doc_download_link501response.py b/src/cloudpdf/types/doc_download_link501response.py new file mode 100644 index 0000000..7b95ab0 --- /dev/null +++ b/src/cloudpdf/types/doc_download_link501response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .engine_error_payload import EngineErrorPayload + +DocDownloadLink501Response = EngineErrorPayload diff --git a/src/cloudpdf/types/documents_layers_delete403response.py b/src/cloudpdf/types/documents_layers_delete403response.py new file mode 100644 index 0000000..a3cd926 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_delete403response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +DocumentsLayersDelete403Response = AdminErrorPayload diff --git a/src/cloudpdf/types/documents_layers_delete404response.py b/src/cloudpdf/types/documents_layers_delete404response.py new file mode 100644 index 0000000..bc67302 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_delete404response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +DocumentsLayersDelete404Response = AdminErrorPayload diff --git a/src/cloudpdf/types/documents_layers_delete409response.py b/src/cloudpdf/types/documents_layers_delete409response.py new file mode 100644 index 0000000..1e6c933 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_delete409response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +DocumentsLayersDelete409Response = AdminErrorPayload diff --git a/src/cloudpdf/types/documents_layers_list200response.py b/src/cloudpdf/types/documents_layers_list200response.py new file mode 100644 index 0000000..b7c178c --- /dev/null +++ b/src/cloudpdf/types/documents_layers_list200response.py @@ -0,0 +1,25 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .documents_layers_list200response_layers_item import DocumentsLayersList200ResponseLayersItem + + +class DocumentsLayersList200Response(UniversalBaseModel): + layers: typing.List[DocumentsLayersList200ResponseLayersItem] + next_cursor: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="nextCursor"), pydantic.Field(alias="nextCursor") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/documents_layers_list200response_layers_item.py b/src/cloudpdf/types/documents_layers_list200response_layers_item.py new file mode 100644 index 0000000..dd7eb39 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_list200response_layers_item.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class DocumentsLayersList200ResponseLayersItem(UniversalBaseModel): + doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] + layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + share_id: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="shareId"), pydantic.Field(alias="shareId") + ] = None + visitor_id: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="visitorId"), pydantic.Field(alias="visitorId") + ] = None + storage_size_bytes: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="storageSizeBytes"), pydantic.Field(alias="storageSizeBytes") + ] = None + created_at: typing_extensions.Annotated[float, FieldMetadata(alias="createdAt"), pydantic.Field(alias="createdAt")] + updated_at: typing_extensions.Annotated[float, FieldMetadata(alias="updatedAt"), pydantic.Field(alias="updatedAt")] + last_seen_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="lastSeenAt"), pydantic.Field(alias="lastSeenAt") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/documents_layers_list400response.py b/src/cloudpdf/types/documents_layers_list400response.py new file mode 100644 index 0000000..e8744a4 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_list400response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +DocumentsLayersList400Response = AdminErrorPayload diff --git a/src/cloudpdf/types/documents_layers_list403response.py b/src/cloudpdf/types/documents_layers_list403response.py new file mode 100644 index 0000000..5d664b2 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_list403response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +DocumentsLayersList403Response = AdminErrorPayload diff --git a/src/cloudpdf/types/documents_layers_list404response.py b/src/cloudpdf/types/documents_layers_list404response.py new file mode 100644 index 0000000..fcfa131 --- /dev/null +++ b/src/cloudpdf/types/documents_layers_list404response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +DocumentsLayersList404Response = AdminErrorPayload diff --git a/src/cloudpdf/types/engine_error_payload_code.py b/src/cloudpdf/types/engine_error_payload_code.py index a85c9a2..df45fb5 100644 --- a/src/cloudpdf/types/engine_error_payload_code.py +++ b/src/cloudpdf/types/engine_error_payload_code.py @@ -33,6 +33,8 @@ "ChangeConflict", "UndoUnavailable", "IdempotencyKeyReused", + "LayerDeleted", + "VisitorIdentityRequired", ], typing.Any, ] diff --git a/src/cloudpdf/types/shares_archive200response.py b/src/cloudpdf/types/shares_archive200response.py new file mode 100644 index 0000000..345b2bb --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .shares_archive200response_share import SharesArchive200ResponseShare + + +class SharesArchive200Response(UniversalBaseModel): + share: SharesArchive200ResponseShare + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_archive200response_share.py b/src/cloudpdf/types/shares_archive200response_share.py new file mode 100644 index 0000000..81e3678 --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share.py @@ -0,0 +1,66 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_archive200response_share_layer_mode import SharesArchive200ResponseShareLayerMode +from .shares_archive200response_share_visitor_identity import SharesArchive200ResponseShareVisitorIdentity + + +class SharesArchive200ResponseShare(UniversalBaseModel): + id: str + tenant_id: typing_extensions.Annotated[str, FieldMetadata(alias="tenantId"), pydantic.Field(alias="tenantId")] + doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] + layer_mode: typing_extensions.Annotated[ + SharesArchive200ResponseShareLayerMode, FieldMetadata(alias="layerMode"), pydantic.Field(alias="layerMode") + ] + layer_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName") + ] = None + keep_visitor_layers: typing_extensions.Annotated[ + bool, FieldMetadata(alias="keepVisitorLayers"), pydantic.Field(alias="keepVisitorLayers") + ] + visitor_idle_seconds: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="visitorIdleSeconds"), pydantic.Field(alias="visitorIdleSeconds") + ] = None + visitor_identity: typing_extensions.Annotated[ + typing.Optional[SharesArchive200ResponseShareVisitorIdentity], + FieldMetadata(alias="visitorIdentity"), + pydantic.Field(alias="visitorIdentity"), + ] = None + scope: typing.List[str] + origins: typing.Optional[typing.List[str]] = None + password_protected: typing_extensions.Annotated[ + bool, FieldMetadata(alias="passwordProtected"), pydantic.Field(alias="passwordProtected") + ] + session_ttl_seconds: typing_extensions.Annotated[ + float, FieldMetadata(alias="sessionTtlSeconds"), pydantic.Field(alias="sessionTtlSeconds") + ] + disabled: bool + archived_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="archivedAt"), pydantic.Field(alias="archivedAt") + ] = None + expires_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt") + ] = None + exchange_count: typing_extensions.Annotated[ + float, FieldMetadata(alias="exchangeCount"), pydantic.Field(alias="exchangeCount") + ] + last_exchanged_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="lastExchangedAt"), pydantic.Field(alias="lastExchangedAt") + ] = None + created_by: typing_extensions.Annotated[str, FieldMetadata(alias="createdBy"), pydantic.Field(alias="createdBy")] + created_at: typing_extensions.Annotated[float, FieldMetadata(alias="createdAt"), pydantic.Field(alias="createdAt")] + updated_at: typing_extensions.Annotated[float, FieldMetadata(alias="updatedAt"), pydantic.Field(alias="updatedAt")] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_archive200response_share_layer_mode.py b/src/cloudpdf/types/shares_archive200response_share_layer_mode.py new file mode 100644 index 0000000..8847e3c --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity.py new file mode 100644 index 0000000..8434c94 --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_archive200response_share_visitor_identity_ask import SharesArchive200ResponseShareVisitorIdentityAsk +from .shares_archive200response_share_visitor_identity_fields import SharesArchive200ResponseShareVisitorIdentityFields + + +class SharesArchive200ResponseShareVisitorIdentity(UniversalBaseModel): + fields: SharesArchive200ResponseShareVisitorIdentityFields + ask: SharesArchive200ResponseShareVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_ask.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_ask.py new file mode 100644 index 0000000..61adf39 --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_ask.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareVisitorIdentityAsk = typing.Union[ + typing.Literal["on-open", "before-first-change"], typing.Any +] diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields.py new file mode 100644 index 0000000..682b868 --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_archive200response_share_visitor_identity_fields_display_name import ( + SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName, +) +from .shares_archive200response_share_visitor_identity_fields_email import ( + SharesArchive200ResponseShareVisitorIdentityFieldsEmail, +) +from .shares_archive200response_share_visitor_identity_fields_organization import ( + SharesArchive200ResponseShareVisitorIdentityFieldsOrganization, +) +from .shares_archive200response_share_visitor_identity_fields_organizational_unit import ( + SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_archive200response_share_visitor_identity_fields_title import ( + SharesArchive200ResponseShareVisitorIdentityFieldsTitle, +) + + +class SharesArchive200ResponseShareVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesArchive200ResponseShareVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesArchive200ResponseShareVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesArchive200ResponseShareVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_display_name.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..5e9fb03 --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_display_name.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareVisitorIdentityFieldsDisplayName = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_email.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_email.py new file mode 100644 index 0000000..a69cfae --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_email.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareVisitorIdentityFieldsEmail = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organization.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organization.py new file mode 100644 index 0000000..cf5092d --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organization.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareVisitorIdentityFieldsOrganization = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..dc54d6c --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_title.py b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_title.py new file mode 100644 index 0000000..148d7a9 --- /dev/null +++ b/src/cloudpdf/types/shares_archive200response_share_visitor_identity_fields_title.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesArchive200ResponseShareVisitorIdentityFieldsTitle = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_archive404response.py b/src/cloudpdf/types/shares_archive404response.py new file mode 100644 index 0000000..9332189 --- /dev/null +++ b/src/cloudpdf/types/shares_archive404response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +SharesArchive404Response = AdminErrorPayload diff --git a/src/cloudpdf/types/shares_create200response_share.py b/src/cloudpdf/types/shares_create200response_share.py index d434a03..62fa576 100644 --- a/src/cloudpdf/types/shares_create200response_share.py +++ b/src/cloudpdf/types/shares_create200response_share.py @@ -6,13 +6,31 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata +from .shares_create200response_share_layer_mode import SharesCreate200ResponseShareLayerMode +from .shares_create200response_share_visitor_identity import SharesCreate200ResponseShareVisitorIdentity class SharesCreate200ResponseShare(UniversalBaseModel): id: str tenant_id: typing_extensions.Annotated[str, FieldMetadata(alias="tenantId"), pydantic.Field(alias="tenantId")] doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] - layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + layer_mode: typing_extensions.Annotated[ + SharesCreate200ResponseShareLayerMode, FieldMetadata(alias="layerMode"), pydantic.Field(alias="layerMode") + ] + layer_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName") + ] = None + keep_visitor_layers: typing_extensions.Annotated[ + bool, FieldMetadata(alias="keepVisitorLayers"), pydantic.Field(alias="keepVisitorLayers") + ] + visitor_idle_seconds: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="visitorIdleSeconds"), pydantic.Field(alias="visitorIdleSeconds") + ] = None + visitor_identity: typing_extensions.Annotated[ + typing.Optional[SharesCreate200ResponseShareVisitorIdentity], + FieldMetadata(alias="visitorIdentity"), + pydantic.Field(alias="visitorIdentity"), + ] = None scope: typing.List[str] origins: typing.Optional[typing.List[str]] = None password_protected: typing_extensions.Annotated[ @@ -22,6 +40,9 @@ class SharesCreate200ResponseShare(UniversalBaseModel): float, FieldMetadata(alias="sessionTtlSeconds"), pydantic.Field(alias="sessionTtlSeconds") ] disabled: bool + archived_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="archivedAt"), pydantic.Field(alias="archivedAt") + ] = None expires_at: typing_extensions.Annotated[ typing.Optional[float], FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt") ] = None diff --git a/src/cloudpdf/types/shares_create200response_share_layer_mode.py b/src/cloudpdf/types/shares_create200response_share_layer_mode.py new file mode 100644 index 0000000..4b7a998 --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity.py new file mode 100644 index 0000000..94acf30 --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_create200response_share_visitor_identity_ask import SharesCreate200ResponseShareVisitorIdentityAsk +from .shares_create200response_share_visitor_identity_fields import SharesCreate200ResponseShareVisitorIdentityFields + + +class SharesCreate200ResponseShareVisitorIdentity(UniversalBaseModel): + fields: SharesCreate200ResponseShareVisitorIdentityFields + ask: SharesCreate200ResponseShareVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_ask.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_ask.py new file mode 100644 index 0000000..f8b8718 --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_ask.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareVisitorIdentityAsk = typing.Union[ + typing.Literal["on-open", "before-first-change"], typing.Any +] diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields.py new file mode 100644 index 0000000..25ece8d --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_create200response_share_visitor_identity_fields_display_name import ( + SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName, +) +from .shares_create200response_share_visitor_identity_fields_email import ( + SharesCreate200ResponseShareVisitorIdentityFieldsEmail, +) +from .shares_create200response_share_visitor_identity_fields_organization import ( + SharesCreate200ResponseShareVisitorIdentityFieldsOrganization, +) +from .shares_create200response_share_visitor_identity_fields_organizational_unit import ( + SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_create200response_share_visitor_identity_fields_title import ( + SharesCreate200ResponseShareVisitorIdentityFieldsTitle, +) + + +class SharesCreate200ResponseShareVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesCreate200ResponseShareVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesCreate200ResponseShareVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesCreate200ResponseShareVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_display_name.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..0c43e3a --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_display_name.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareVisitorIdentityFieldsDisplayName = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_email.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_email.py new file mode 100644 index 0000000..46d0a4c --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_email.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareVisitorIdentityFieldsEmail = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organization.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organization.py new file mode 100644 index 0000000..d6b111c --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organization.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareVisitorIdentityFieldsOrganization = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..71ea249 --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_title.py b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_title.py new file mode 100644 index 0000000..2fe6df2 --- /dev/null +++ b/src/cloudpdf/types/shares_create200response_share_visitor_identity_fields_title.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesCreate200ResponseShareVisitorIdentityFieldsTitle = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_delete_response.py b/src/cloudpdf/types/shares_delete404response.py similarity index 72% rename from src/cloudpdf/types/shares_delete_response.py rename to src/cloudpdf/types/shares_delete404response.py index 4cc38b7..2a63f7b 100644 --- a/src/cloudpdf/types/shares_delete_response.py +++ b/src/cloudpdf/types/shares_delete404response.py @@ -2,4 +2,4 @@ from .admin_error_payload import AdminErrorPayload -SharesDeleteResponse = AdminErrorPayload +SharesDelete404Response = AdminErrorPayload diff --git a/src/cloudpdf/types/shares_delete409response.py b/src/cloudpdf/types/shares_delete409response.py new file mode 100644 index 0000000..6e7195d --- /dev/null +++ b/src/cloudpdf/types/shares_delete409response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +SharesDelete409Response = AdminErrorPayload diff --git a/src/cloudpdf/types/shares_exchange200response.py b/src/cloudpdf/types/shares_exchange200response.py index 01cb86c..7e009e0 100644 --- a/src/cloudpdf/types/shares_exchange200response.py +++ b/src/cloudpdf/types/shares_exchange200response.py @@ -6,12 +6,18 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata +from .shares_exchange200response_layer_mode import SharesExchange200ResponseLayerMode +from .shares_exchange200response_visitor import SharesExchange200ResponseVisitor class SharesExchange200Response(UniversalBaseModel): token: str doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + layer_mode: typing_extensions.Annotated[ + SharesExchange200ResponseLayerMode, FieldMetadata(alias="layerMode"), pydantic.Field(alias="layerMode") + ] + visitor: SharesExchange200ResponseVisitor expires_at: typing_extensions.Annotated[float, FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt")] if IS_PYDANTIC_V2: diff --git a/src/cloudpdf/types/shares_exchange200response_layer_mode.py b/src/cloudpdf/types/shares_exchange200response_layer_mode.py new file mode 100644 index 0000000..29a4cf2 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor.py b/src/cloudpdf/types/shares_exchange200response_visitor.py new file mode 100644 index 0000000..80583ee --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_exchange200response_visitor_identity_request import SharesExchange200ResponseVisitorIdentityRequest + + +class SharesExchange200ResponseVisitor(UniversalBaseModel): + handle: str + keep: bool + identity_request: typing_extensions.Annotated[ + typing.Optional[SharesExchange200ResponseVisitorIdentityRequest], + FieldMetadata(alias="identityRequest"), + pydantic.Field(alias="identityRequest"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request.py new file mode 100644 index 0000000..63fde45 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_exchange200response_visitor_identity_request_fields import ( + SharesExchange200ResponseVisitorIdentityRequestFields, +) +from .shares_exchange200response_visitor_identity_request_invalid_item import ( + SharesExchange200ResponseVisitorIdentityRequestInvalidItem, +) +from .shares_exchange200response_visitor_identity_request_missing_item import ( + SharesExchange200ResponseVisitorIdentityRequestMissingItem, +) + + +class SharesExchange200ResponseVisitorIdentityRequest(UniversalBaseModel): + fields: SharesExchange200ResponseVisitorIdentityRequestFields + missing: typing.List[SharesExchange200ResponseVisitorIdentityRequestMissingItem] + invalid: typing.List[SharesExchange200ResponseVisitorIdentityRequestInvalidItem] + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields.py new file mode 100644 index 0000000..d8fb44b --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_exchange200response_visitor_identity_request_fields_display_name import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName, +) +from .shares_exchange200response_visitor_identity_request_fields_email import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsEmail, +) +from .shares_exchange200response_visitor_identity_request_fields_organization import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization, +) +from .shares_exchange200response_visitor_identity_request_fields_organizational_unit import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit, +) +from .shares_exchange200response_visitor_identity_request_fields_title import ( + SharesExchange200ResponseVisitorIdentityRequestFieldsTitle, +) + + +class SharesExchange200ResponseVisitorIdentityRequestFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesExchange200ResponseVisitorIdentityRequestFieldsEmail] = None + title: typing.Optional[SharesExchange200ResponseVisitorIdentityRequestFieldsTitle] = None + organization: typing.Optional[SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_display_name.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_display_name.py new file mode 100644 index 0000000..0089d21 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_display_name.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestFieldsDisplayName = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_email.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_email.py new file mode 100644 index 0000000..5f60ae1 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_email.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestFieldsEmail = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organization.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organization.py new file mode 100644 index 0000000..f924cdd --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organization.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestFieldsOrganization = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organizational_unit.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organizational_unit.py new file mode 100644 index 0000000..f70efa0 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_title.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_title.py new file mode 100644 index 0000000..002e5fb --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_fields_title.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestFieldsTitle = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_invalid_item.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_invalid_item.py new file mode 100644 index 0000000..8032f50 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_invalid_item.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestInvalidItem = typing.Union[ + typing.Literal["displayName", "email", "title", "organization", "organizationalUnit"], typing.Any +] diff --git a/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_missing_item.py b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_missing_item.py new file mode 100644 index 0000000..32d8af2 --- /dev/null +++ b/src/cloudpdf/types/shares_exchange200response_visitor_identity_request_missing_item.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesExchange200ResponseVisitorIdentityRequestMissingItem = typing.Union[ + typing.Literal["displayName", "email", "title", "organization", "organizationalUnit"], typing.Any +] diff --git a/src/cloudpdf/types/shares_get200response_share.py b/src/cloudpdf/types/shares_get200response_share.py index 13c1436..00d32bf 100644 --- a/src/cloudpdf/types/shares_get200response_share.py +++ b/src/cloudpdf/types/shares_get200response_share.py @@ -6,13 +6,31 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata +from .shares_get200response_share_layer_mode import SharesGet200ResponseShareLayerMode +from .shares_get200response_share_visitor_identity import SharesGet200ResponseShareVisitorIdentity class SharesGet200ResponseShare(UniversalBaseModel): id: str tenant_id: typing_extensions.Annotated[str, FieldMetadata(alias="tenantId"), pydantic.Field(alias="tenantId")] doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] - layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + layer_mode: typing_extensions.Annotated[ + SharesGet200ResponseShareLayerMode, FieldMetadata(alias="layerMode"), pydantic.Field(alias="layerMode") + ] + layer_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName") + ] = None + keep_visitor_layers: typing_extensions.Annotated[ + bool, FieldMetadata(alias="keepVisitorLayers"), pydantic.Field(alias="keepVisitorLayers") + ] + visitor_idle_seconds: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="visitorIdleSeconds"), pydantic.Field(alias="visitorIdleSeconds") + ] = None + visitor_identity: typing_extensions.Annotated[ + typing.Optional[SharesGet200ResponseShareVisitorIdentity], + FieldMetadata(alias="visitorIdentity"), + pydantic.Field(alias="visitorIdentity"), + ] = None scope: typing.List[str] origins: typing.Optional[typing.List[str]] = None password_protected: typing_extensions.Annotated[ @@ -22,6 +40,9 @@ class SharesGet200ResponseShare(UniversalBaseModel): float, FieldMetadata(alias="sessionTtlSeconds"), pydantic.Field(alias="sessionTtlSeconds") ] disabled: bool + archived_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="archivedAt"), pydantic.Field(alias="archivedAt") + ] = None expires_at: typing_extensions.Annotated[ typing.Optional[float], FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt") ] = None diff --git a/src/cloudpdf/types/shares_get200response_share_layer_mode.py b/src/cloudpdf/types/shares_get200response_share_layer_mode.py new file mode 100644 index 0000000..a7a181e --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity.py new file mode 100644 index 0000000..184340d --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_get200response_share_visitor_identity_ask import SharesGet200ResponseShareVisitorIdentityAsk +from .shares_get200response_share_visitor_identity_fields import SharesGet200ResponseShareVisitorIdentityFields + + +class SharesGet200ResponseShareVisitorIdentity(UniversalBaseModel): + fields: SharesGet200ResponseShareVisitorIdentityFields + ask: SharesGet200ResponseShareVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_ask.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_ask.py new file mode 100644 index 0000000..bed2ae5 --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_ask.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareVisitorIdentityAsk = typing.Union[typing.Literal["on-open", "before-first-change"], typing.Any] diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields.py new file mode 100644 index 0000000..8e491d0 --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_get200response_share_visitor_identity_fields_display_name import ( + SharesGet200ResponseShareVisitorIdentityFieldsDisplayName, +) +from .shares_get200response_share_visitor_identity_fields_email import ( + SharesGet200ResponseShareVisitorIdentityFieldsEmail, +) +from .shares_get200response_share_visitor_identity_fields_organization import ( + SharesGet200ResponseShareVisitorIdentityFieldsOrganization, +) +from .shares_get200response_share_visitor_identity_fields_organizational_unit import ( + SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_get200response_share_visitor_identity_fields_title import ( + SharesGet200ResponseShareVisitorIdentityFieldsTitle, +) + + +class SharesGet200ResponseShareVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesGet200ResponseShareVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesGet200ResponseShareVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesGet200ResponseShareVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesGet200ResponseShareVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_display_name.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..c5de211 --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_display_name.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareVisitorIdentityFieldsDisplayName = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_email.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_email.py new file mode 100644 index 0000000..9309e71 --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_email.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareVisitorIdentityFieldsEmail = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organization.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organization.py new file mode 100644 index 0000000..d3804b8 --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organization.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareVisitorIdentityFieldsOrganization = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..dcfbbb0 --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_title.py b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_title.py new file mode 100644 index 0000000..1f7abde --- /dev/null +++ b/src/cloudpdf/types/shares_get200response_share_visitor_identity_fields_title.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesGet200ResponseShareVisitorIdentityFieldsTitle = typing.Union[typing.Literal["required", "optional"], typing.Any] diff --git a/src/cloudpdf/types/shares_list200response_shares_item.py b/src/cloudpdf/types/shares_list200response_shares_item.py index 65548b0..75139da 100644 --- a/src/cloudpdf/types/shares_list200response_shares_item.py +++ b/src/cloudpdf/types/shares_list200response_shares_item.py @@ -6,13 +6,31 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata +from .shares_list200response_shares_item_layer_mode import SharesList200ResponseSharesItemLayerMode +from .shares_list200response_shares_item_visitor_identity import SharesList200ResponseSharesItemVisitorIdentity class SharesList200ResponseSharesItem(UniversalBaseModel): id: str tenant_id: typing_extensions.Annotated[str, FieldMetadata(alias="tenantId"), pydantic.Field(alias="tenantId")] doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] - layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + layer_mode: typing_extensions.Annotated[ + SharesList200ResponseSharesItemLayerMode, FieldMetadata(alias="layerMode"), pydantic.Field(alias="layerMode") + ] + layer_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName") + ] = None + keep_visitor_layers: typing_extensions.Annotated[ + bool, FieldMetadata(alias="keepVisitorLayers"), pydantic.Field(alias="keepVisitorLayers") + ] + visitor_idle_seconds: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="visitorIdleSeconds"), pydantic.Field(alias="visitorIdleSeconds") + ] = None + visitor_identity: typing_extensions.Annotated[ + typing.Optional[SharesList200ResponseSharesItemVisitorIdentity], + FieldMetadata(alias="visitorIdentity"), + pydantic.Field(alias="visitorIdentity"), + ] = None scope: typing.List[str] origins: typing.Optional[typing.List[str]] = None password_protected: typing_extensions.Annotated[ @@ -22,6 +40,9 @@ class SharesList200ResponseSharesItem(UniversalBaseModel): float, FieldMetadata(alias="sessionTtlSeconds"), pydantic.Field(alias="sessionTtlSeconds") ] disabled: bool + archived_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="archivedAt"), pydantic.Field(alias="archivedAt") + ] = None expires_at: typing_extensions.Annotated[ typing.Optional[float], FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt") ] = None diff --git a/src/cloudpdf/types/shares_list200response_shares_item_layer_mode.py b/src/cloudpdf/types/shares_list200response_shares_item_layer_mode.py new file mode 100644 index 0000000..1c4e9e5 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity.py new file mode 100644 index 0000000..03d3018 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity.py @@ -0,0 +1,30 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_list200response_shares_item_visitor_identity_ask import SharesList200ResponseSharesItemVisitorIdentityAsk +from .shares_list200response_shares_item_visitor_identity_fields import ( + SharesList200ResponseSharesItemVisitorIdentityFields, +) + + +class SharesList200ResponseSharesItemVisitorIdentity(UniversalBaseModel): + fields: SharesList200ResponseSharesItemVisitorIdentityFields + ask: SharesList200ResponseSharesItemVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_ask.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_ask.py new file mode 100644 index 0000000..d5365f5 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_ask.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemVisitorIdentityAsk = typing.Union[ + typing.Literal["on-open", "before-first-change"], typing.Any +] diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields.py new file mode 100644 index 0000000..3956292 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_list200response_shares_item_visitor_identity_fields_display_name import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName, +) +from .shares_list200response_shares_item_visitor_identity_fields_email import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsEmail, +) +from .shares_list200response_shares_item_visitor_identity_fields_organization import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization, +) +from .shares_list200response_shares_item_visitor_identity_fields_organizational_unit import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_list200response_shares_item_visitor_identity_fields_title import ( + SharesList200ResponseSharesItemVisitorIdentityFieldsTitle, +) + + +class SharesList200ResponseSharesItemVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesList200ResponseSharesItemVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesList200ResponseSharesItemVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_display_name.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..037f4da --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_display_name.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemVisitorIdentityFieldsDisplayName = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_email.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_email.py new file mode 100644 index 0000000..3c4c0f7 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_email.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemVisitorIdentityFieldsEmail = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organization.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organization.py new file mode 100644 index 0000000..7612632 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organization.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemVisitorIdentityFieldsOrganization = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..2440772 --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_title.py b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_title.py new file mode 100644 index 0000000..f66cfdd --- /dev/null +++ b/src/cloudpdf/types/shares_list200response_shares_item_visitor_identity_fields_title.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesList200ResponseSharesItemVisitorIdentityFieldsTitle = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update200response_share.py b/src/cloudpdf/types/shares_update200response_share.py index 6dd7cc7..9bab969 100644 --- a/src/cloudpdf/types/shares_update200response_share.py +++ b/src/cloudpdf/types/shares_update200response_share.py @@ -6,13 +6,31 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata +from .shares_update200response_share_layer_mode import SharesUpdate200ResponseShareLayerMode +from .shares_update200response_share_visitor_identity import SharesUpdate200ResponseShareVisitorIdentity class SharesUpdate200ResponseShare(UniversalBaseModel): id: str tenant_id: typing_extensions.Annotated[str, FieldMetadata(alias="tenantId"), pydantic.Field(alias="tenantId")] doc_id: typing_extensions.Annotated[str, FieldMetadata(alias="docId"), pydantic.Field(alias="docId")] - layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + layer_mode: typing_extensions.Annotated[ + SharesUpdate200ResponseShareLayerMode, FieldMetadata(alias="layerMode"), pydantic.Field(alias="layerMode") + ] + layer_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName") + ] = None + keep_visitor_layers: typing_extensions.Annotated[ + bool, FieldMetadata(alias="keepVisitorLayers"), pydantic.Field(alias="keepVisitorLayers") + ] + visitor_idle_seconds: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="visitorIdleSeconds"), pydantic.Field(alias="visitorIdleSeconds") + ] = None + visitor_identity: typing_extensions.Annotated[ + typing.Optional[SharesUpdate200ResponseShareVisitorIdentity], + FieldMetadata(alias="visitorIdentity"), + pydantic.Field(alias="visitorIdentity"), + ] = None scope: typing.List[str] origins: typing.Optional[typing.List[str]] = None password_protected: typing_extensions.Annotated[ @@ -22,6 +40,9 @@ class SharesUpdate200ResponseShare(UniversalBaseModel): float, FieldMetadata(alias="sessionTtlSeconds"), pydantic.Field(alias="sessionTtlSeconds") ] disabled: bool + archived_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="archivedAt"), pydantic.Field(alias="archivedAt") + ] = None expires_at: typing_extensions.Annotated[ typing.Optional[float], FieldMetadata(alias="expiresAt"), pydantic.Field(alias="expiresAt") ] = None diff --git a/src/cloudpdf/types/shares_update200response_share_layer_mode.py b/src/cloudpdf/types/shares_update200response_share_layer_mode.py new file mode 100644 index 0000000..67d3161 --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_layer_mode.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareLayerMode = typing.Union[typing.Literal["shared", "per-visitor"], typing.Any] diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity.py new file mode 100644 index 0000000..db2c464 --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity.py @@ -0,0 +1,28 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_update200response_share_visitor_identity_ask import SharesUpdate200ResponseShareVisitorIdentityAsk +from .shares_update200response_share_visitor_identity_fields import SharesUpdate200ResponseShareVisitorIdentityFields + + +class SharesUpdate200ResponseShareVisitorIdentity(UniversalBaseModel): + fields: SharesUpdate200ResponseShareVisitorIdentityFields + ask: SharesUpdate200ResponseShareVisitorIdentityAsk + purpose: typing.Optional[str] = None + privacy_url: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="privacyUrl"), pydantic.Field(alias="privacyUrl") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_ask.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_ask.py new file mode 100644 index 0000000..f664b0c --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_ask.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareVisitorIdentityAsk = typing.Union[ + typing.Literal["on-open", "before-first-change"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields.py new file mode 100644 index 0000000..060b11d --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_update200response_share_visitor_identity_fields_display_name import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName, +) +from .shares_update200response_share_visitor_identity_fields_email import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsEmail, +) +from .shares_update200response_share_visitor_identity_fields_organization import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization, +) +from .shares_update200response_share_visitor_identity_fields_organizational_unit import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit, +) +from .shares_update200response_share_visitor_identity_fields_title import ( + SharesUpdate200ResponseShareVisitorIdentityFieldsTitle, +) + + +class SharesUpdate200ResponseShareVisitorIdentityFields(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName], + FieldMetadata(alias="displayName"), + pydantic.Field(alias="displayName"), + ] = None + email: typing.Optional[SharesUpdate200ResponseShareVisitorIdentityFieldsEmail] = None + title: typing.Optional[SharesUpdate200ResponseShareVisitorIdentityFieldsTitle] = None + organization: typing.Optional[SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit], + FieldMetadata(alias="organizationalUnit"), + pydantic.Field(alias="organizationalUnit"), + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_display_name.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_display_name.py new file mode 100644 index 0000000..78067e4 --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_display_name.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareVisitorIdentityFieldsDisplayName = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_email.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_email.py new file mode 100644 index 0000000..59a8edd --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_email.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareVisitorIdentityFieldsEmail = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organization.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organization.py new file mode 100644 index 0000000..3e12337 --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organization.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareVisitorIdentityFieldsOrganization = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organizational_unit.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organizational_unit.py new file mode 100644 index 0000000..9391332 --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_organizational_unit.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareVisitorIdentityFieldsOrganizationalUnit = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_title.py b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_title.py new file mode 100644 index 0000000..98b94c9 --- /dev/null +++ b/src/cloudpdf/types/shares_update200response_share_visitor_identity_fields_title.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +SharesUpdate200ResponseShareVisitorIdentityFieldsTitle = typing.Union[ + typing.Literal["required", "optional"], typing.Any +] diff --git a/src/cloudpdf/types/shares_update409response.py b/src/cloudpdf/types/shares_update409response.py new file mode 100644 index 0000000..16d5e2e --- /dev/null +++ b/src/cloudpdf/types/shares_update409response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +SharesUpdate409Response = AdminErrorPayload diff --git a/src/cloudpdf/types/shares_visitors_delete_response.py b/src/cloudpdf/types/shares_visitors_delete_response.py new file mode 100644 index 0000000..fe1b83a --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_delete_response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +SharesVisitorsDeleteResponse = AdminErrorPayload diff --git a/src/cloudpdf/types/shares_visitors_list200response.py b/src/cloudpdf/types/shares_visitors_list200response.py new file mode 100644 index 0000000..5914c6b --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_list200response.py @@ -0,0 +1,25 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_visitors_list200response_visitors_item import SharesVisitorsList200ResponseVisitorsItem + + +class SharesVisitorsList200Response(UniversalBaseModel): + visitors: typing.List[SharesVisitorsList200ResponseVisitorsItem] + next_cursor: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="nextCursor"), pydantic.Field(alias="nextCursor") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_visitors_list200response_visitors_item.py b/src/cloudpdf/types/shares_visitors_list200response_visitors_item.py new file mode 100644 index 0000000..8a54847 --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_list200response_visitors_item.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .shares_visitors_list200response_visitors_item_answers import SharesVisitorsList200ResponseVisitorsItemAnswers +from .shares_visitors_list200response_visitors_item_layer import SharesVisitorsList200ResponseVisitorsItemLayer + + +class SharesVisitorsList200ResponseVisitorsItem(UniversalBaseModel): + visitor_id: typing_extensions.Annotated[str, FieldMetadata(alias="visitorId"), pydantic.Field(alias="visitorId")] + answers: SharesVisitorsList200ResponseVisitorsItemAnswers + email_verified: typing_extensions.Annotated[ + bool, FieldMetadata(alias="emailVerified"), pydantic.Field(alias="emailVerified") + ] + consented_at: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="consentedAt"), pydantic.Field(alias="consentedAt") + ] = None + first_seen_at: typing_extensions.Annotated[ + float, FieldMetadata(alias="firstSeenAt"), pydantic.Field(alias="firstSeenAt") + ] + last_seen_at: typing_extensions.Annotated[ + float, FieldMetadata(alias="lastSeenAt"), pydantic.Field(alias="lastSeenAt") + ] + layer: typing.Optional[SharesVisitorsList200ResponseVisitorsItemLayer] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_visitors_list200response_visitors_item_answers.py b/src/cloudpdf/types/shares_visitors_list200response_visitors_item_answers.py new file mode 100644 index 0000000..4f93a50 --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_list200response_visitors_item_answers.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class SharesVisitorsList200ResponseVisitorsItemAnswers(UniversalBaseModel): + display_name: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="displayName"), pydantic.Field(alias="displayName") + ] = None + email: typing.Optional[str] = None + title: typing.Optional[str] = None + organization: typing.Optional[str] = None + organizational_unit: typing_extensions.Annotated[ + typing.Optional[str], FieldMetadata(alias="organizationalUnit"), pydantic.Field(alias="organizationalUnit") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_visitors_list200response_visitors_item_layer.py b/src/cloudpdf/types/shares_visitors_list200response_visitors_item_layer.py new file mode 100644 index 0000000..b46673e --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_list200response_visitors_item_layer.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class SharesVisitorsList200ResponseVisitorsItemLayer(UniversalBaseModel): + layer_name: typing_extensions.Annotated[str, FieldMetadata(alias="layerName"), pydantic.Field(alias="layerName")] + storage_size_bytes: typing_extensions.Annotated[ + typing.Optional[float], FieldMetadata(alias="storageSizeBytes"), pydantic.Field(alias="storageSizeBytes") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/cloudpdf/types/shares_visitors_list400response.py b/src/cloudpdf/types/shares_visitors_list400response.py new file mode 100644 index 0000000..cdf7f68 --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_list400response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +SharesVisitorsList400Response = AdminErrorPayload diff --git a/src/cloudpdf/types/shares_visitors_list404response.py b/src/cloudpdf/types/shares_visitors_list404response.py new file mode 100644 index 0000000..21afca2 --- /dev/null +++ b/src/cloudpdf/types/shares_visitors_list404response.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +from .admin_error_payload import AdminErrorPayload + +SharesVisitorsList404Response = AdminErrorPayload