From 09bfc27c9f7764429a033c9bf8136f7449be8608 Mon Sep 17 00:00:00 2001 From: cloudpdf-sdk-bot Date: Tue, 11 Aug 2026 16:57:14 +0000 Subject: [PATCH] chore: generate CloudPDF PHP SDK 3.0.0-alpha.2 --- .fern/metadata.json | 6 +- .github/workflows/sdk-release.yml | 29 +- README.md | 14 +- cloudpdf-generation.json | 8 +- reference.md | 658 +++++++++++++++++- src/CloudPDFClient.php | 19 +- src/Documents/DocumentsClient.php | 33 +- .../Requests/DocumentsInitRequest.php | 9 + .../Requests/UploadProxyDocumentsRequest.php | 25 + .../DocumentsInitRequestUploadPreference.php | 10 + src/Shares/Requests/ListSharesRequest.php | 38 + src/Shares/Requests/SharesCreateRequest.php | 75 ++ src/Shares/Requests/SharesExchangeRequest.php | 34 + src/Shares/Requests/SharesUpdateRequest.php | 67 ++ src/Shares/SharesClient.php | 406 +++++++++++ .../Requests/TenantsSuspendRequest.php | 26 + src/Tenants/Requests/UsageTenantsRequest.php | 24 + src/Tenants/TenantsClient.php | 162 +++++ .../DocumentsInit200ResponseCreatedUpload.php | 36 +- ...entsInit200ResponseCreatedUploadProxy.php} | 2 +- .../DocumentsInit200ResponseResumedUpload.php | 36 +- ...entsInit200ResponseResumedUploadProxy.php} | 2 +- ...hp => DocumentsUploadProxy200Response.php} | 2 +- ...hp => DocumentsUploadProxy400Response.php} | 8 +- ... DocumentsUploadProxy400ResponseError.php} | 2 +- src/Types/DocumentsUploadProxy409Response.php | 34 + .../DocumentsUploadProxy409ResponseError.php | 42 ++ src/Types/SharesCreate200Response.php | 34 + src/Types/SharesCreate200ResponseShare.php | 147 ++++ src/Types/SharesCreate400Response.php | 34 + src/Types/SharesCreate400ResponseError.php | 42 ++ src/Types/SharesCreate403Response.php | 34 + src/Types/SharesCreate403ResponseError.php | 42 ++ src/Types/SharesCreate404Response.php | 34 + src/Types/SharesCreate404ResponseError.php | 42 ++ src/Types/SharesDeleteResponse.php | 34 + src/Types/SharesDeleteResponseError.php | 42 ++ src/Types/SharesExchange200Response.php | 58 ++ src/Types/SharesExchange400Response.php | 34 + src/Types/SharesExchange400ResponseError.php | 42 ++ src/Types/SharesExchange403Response.php | 34 + src/Types/SharesExchange403ResponseError.php | 42 ++ src/Types/SharesExchange404Response.php | 34 + src/Types/SharesExchange404ResponseError.php | 42 ++ src/Types/SharesExchange410Response.php | 34 + src/Types/SharesExchange410ResponseError.php | 42 ++ src/Types/SharesExchange422Response.php | 34 + src/Types/SharesExchange422ResponseError.php | 42 ++ src/Types/SharesGet200Response.php | 34 + src/Types/SharesGet200ResponseShare.php | 147 ++++ src/Types/SharesGet404Response.php | 34 + src/Types/SharesGet404ResponseError.php | 42 ++ src/Types/SharesList200Response.php | 43 ++ src/Types/SharesList200ResponseSharesItem.php | 147 ++++ src/Types/SharesList400Response.php | 34 + src/Types/SharesList400ResponseError.php | 42 ++ src/Types/SharesUpdate200Response.php | 34 + src/Types/SharesUpdate200ResponseShare.php | 147 ++++ src/Types/SharesUpdate400Response.php | 34 + src/Types/SharesUpdate400ResponseError.php | 42 ++ src/Types/SharesUpdate404Response.php | 34 + src/Types/SharesUpdate404ResponseError.php | 42 ++ src/Types/TenantsCreate200ResponseTenant.php | 8 + .../TenantsCreate200ResponseTenantStatus.php | 9 + src/Types/TenantsGet200ResponseTenant.php | 8 + .../TenantsGet200ResponseTenantStatus.php | 9 + .../TenantsList200ResponseTenantsItem.php | 8 + ...enantsList200ResponseTenantsItemStatus.php | 9 + src/Types/TenantsResumeResponse.php | 34 + src/Types/TenantsResumeResponseError.php | 42 ++ src/Types/TenantsSuspendResponse.php | 34 + src/Types/TenantsSuspendResponseError.php | 42 ++ src/Types/TenantsUsage200Response.php | 58 ++ src/Types/TenantsUsage200ResponseMetrics.php | 50 ++ src/Types/TenantsUsage400Response.php | 34 + src/Types/TenantsUsage400ResponseError.php | 42 ++ src/Types/TenantsUsage404Response.php | 34 + src/Types/TenantsUsage404ResponseError.php | 42 ++ src/Types/TokensIssueRequestDoc.php | 8 + .../TokensIssueRequestTenantScopeItemOne.php | 1 + 80 files changed, 3972 insertions(+), 86 deletions(-) create mode 100644 src/Documents/Requests/UploadProxyDocumentsRequest.php create mode 100644 src/Documents/Types/DocumentsInitRequestUploadPreference.php create mode 100644 src/Shares/Requests/ListSharesRequest.php create mode 100644 src/Shares/Requests/SharesCreateRequest.php create mode 100644 src/Shares/Requests/SharesExchangeRequest.php create mode 100644 src/Shares/Requests/SharesUpdateRequest.php create mode 100644 src/Shares/SharesClient.php create mode 100644 src/Tenants/Requests/TenantsSuspendRequest.php create mode 100644 src/Tenants/Requests/UsageTenantsRequest.php rename src/Types/{DocumentsInit200ResponseCreatedUploadDirect.php => DocumentsInit200ResponseCreatedUploadProxy.php} (89%) rename src/Types/{DocumentsInit200ResponseResumedUploadDirect.php => DocumentsInit200ResponseResumedUploadProxy.php} (89%) rename src/Types/{DocumentsUploadDirect200Response.php => DocumentsUploadProxy200Response.php} (88%) rename src/Types/{DocumentsUploadDirect400Response.php => DocumentsUploadProxy400Response.php} (65%) rename src/Types/{DocumentsUploadDirect400ResponseError.php => DocumentsUploadProxy400ResponseError.php} (90%) create mode 100644 src/Types/DocumentsUploadProxy409Response.php create mode 100644 src/Types/DocumentsUploadProxy409ResponseError.php create mode 100644 src/Types/SharesCreate200Response.php create mode 100644 src/Types/SharesCreate200ResponseShare.php create mode 100644 src/Types/SharesCreate400Response.php create mode 100644 src/Types/SharesCreate400ResponseError.php create mode 100644 src/Types/SharesCreate403Response.php create mode 100644 src/Types/SharesCreate403ResponseError.php create mode 100644 src/Types/SharesCreate404Response.php create mode 100644 src/Types/SharesCreate404ResponseError.php create mode 100644 src/Types/SharesDeleteResponse.php create mode 100644 src/Types/SharesDeleteResponseError.php create mode 100644 src/Types/SharesExchange200Response.php create mode 100644 src/Types/SharesExchange400Response.php create mode 100644 src/Types/SharesExchange400ResponseError.php create mode 100644 src/Types/SharesExchange403Response.php create mode 100644 src/Types/SharesExchange403ResponseError.php create mode 100644 src/Types/SharesExchange404Response.php create mode 100644 src/Types/SharesExchange404ResponseError.php create mode 100644 src/Types/SharesExchange410Response.php create mode 100644 src/Types/SharesExchange410ResponseError.php create mode 100644 src/Types/SharesExchange422Response.php create mode 100644 src/Types/SharesExchange422ResponseError.php create mode 100644 src/Types/SharesGet200Response.php create mode 100644 src/Types/SharesGet200ResponseShare.php create mode 100644 src/Types/SharesGet404Response.php create mode 100644 src/Types/SharesGet404ResponseError.php create mode 100644 src/Types/SharesList200Response.php create mode 100644 src/Types/SharesList200ResponseSharesItem.php create mode 100644 src/Types/SharesList400Response.php create mode 100644 src/Types/SharesList400ResponseError.php create mode 100644 src/Types/SharesUpdate200Response.php create mode 100644 src/Types/SharesUpdate200ResponseShare.php create mode 100644 src/Types/SharesUpdate400Response.php create mode 100644 src/Types/SharesUpdate400ResponseError.php create mode 100644 src/Types/SharesUpdate404Response.php create mode 100644 src/Types/SharesUpdate404ResponseError.php create mode 100644 src/Types/TenantsCreate200ResponseTenantStatus.php create mode 100644 src/Types/TenantsGet200ResponseTenantStatus.php create mode 100644 src/Types/TenantsList200ResponseTenantsItemStatus.php create mode 100644 src/Types/TenantsResumeResponse.php create mode 100644 src/Types/TenantsResumeResponseError.php create mode 100644 src/Types/TenantsSuspendResponse.php create mode 100644 src/Types/TenantsSuspendResponseError.php create mode 100644 src/Types/TenantsUsage200Response.php create mode 100644 src/Types/TenantsUsage200ResponseMetrics.php create mode 100644 src/Types/TenantsUsage400Response.php create mode 100644 src/Types/TenantsUsage400ResponseError.php create mode 100644 src/Types/TenantsUsage404Response.php create mode 100644 src/Types/TenantsUsage404ResponseError.php diff --git a/.fern/metadata.json b/.fern/metadata.json index fcd6be2..797a034 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -11,10 +11,10 @@ "homepage": "https://www.cloudpdf.com" } }, - "originGitCommit": "cfc415f2b7501e153280b32bcd6aa4af1353e860", + "originGitCommit": "627dce09ca948cde662d6e23a3dc1a049b6440d7", "originGitCommitIsDirty": false, "invokedBy": "ci", - "requestedVersion": "3.0.0-alpha.1", + "requestedVersion": "3.0.0-alpha.2", "ciProvider": "github", - "sdkVersion": "3.0.0-alpha.1" + "sdkVersion": "3.0.0-alpha.2" } \ No newline at end of file diff --git a/.github/workflows/sdk-release.yml b/.github/workflows/sdk-release.yml index 99ac545..4c25a90 100644 --- a/.github/workflows/sdk-release.yml +++ b/.github/workflows/sdk-release.yml @@ -91,6 +91,19 @@ jobs: fi echo "commit=$tagged_commit" >> "$GITHUB_OUTPUT" + - name: Create GitHub release + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ steps.version.outputs.tag }} + PRERELEASE: ${{ steps.version.outputs.prerelease }} + run: | + if gh release view "$RELEASE_TAG" >/dev/null 2>&1; then + exit 0 + fi + args=(--verify-tag --generate-notes --title "CloudPDF PHP SDK $RELEASE_TAG") + if [ "$PRERELEASE" = 'true' ]; then args+=(--prerelease); fi + gh release create "$RELEASE_TAG" "${args[@]}" + - name: Wait for Packagist publication env: VERSION: ${{ steps.version.outputs.version }} @@ -105,7 +118,8 @@ jobs: const fs = require('node:fs'); const metadata = JSON.parse(fs.readFileSync(process.env.METADATA_FILE, 'utf8')); const releases = metadata.packages?.['cloudpdf/sdk'] ?? []; - const release = releases.find((candidate) => candidate.version === process.env.VERSION); + const acceptableVersions = new Set([process.env.VERSION, `v${process.env.VERSION}`]); + const release = releases.find((candidate) => acceptableVersions.has(candidate.version)); if (!release) process.exit(2); if (release.source?.reference !== process.env.TAGGED_COMMIT) { throw new Error(`Packagist ${process.env.VERSION} points to ${release.source?.reference}, expected ${process.env.TAGGED_COMMIT}`); @@ -126,16 +140,3 @@ jobs: done echo "::error::Packagist did not index cloudpdf/sdk $VERSION. Register the repository and enable its GitHub hook, then rerun." exit 1 - - - name: Create GitHub release - env: - GH_TOKEN: ${{ github.token }} - RELEASE_TAG: ${{ steps.version.outputs.tag }} - PRERELEASE: ${{ steps.version.outputs.prerelease }} - run: | - if gh release view "$RELEASE_TAG" >/dev/null 2>&1; then - exit 0 - fi - args=(--verify-tag --generate-notes --title "CloudPDF PHP SDK $RELEASE_TAG") - if [ "$PRERELEASE" = 'true' ]; then args+=(--prerelease); fi - gh release create "$RELEASE_TAG" "${args[@]}" diff --git a/README.md b/README.md index 4e61267..44b352b 100644 --- a/README.md +++ b/README.md @@ -37,14 +37,14 @@ Instantiate and use the client with the following: namespace Example; use CloudPDF\CloudPDFClient; -use CloudPDF\Tenants\Requests\TenantsCreateRequest; +use CloudPDF\Shares\Requests\SharesExchangeRequest; $client = new CloudPDFClient( token: '', ); -$client->tenants->create( - new TenantsCreateRequest([ - 'id' => 'id', +$client->shares->exchange( + new SharesExchangeRequest([ + 'shareToken' => 'shareToken', ]), ); @@ -59,7 +59,7 @@ use CloudPDF\Exceptions\CloudPDFApiException; use CloudPDF\Exceptions\CloudPDFException; try { - $response = $client->tenants->create(...); + $response = $client->shares->exchange(...); } catch (CloudPDFApiException $e) { echo 'API Exception occurred: ' . $e->getMessage() . "\n"; echo 'Status Code: ' . $e->getCode() . "\n"; @@ -118,7 +118,7 @@ The `retryStatusCodes` configuration controls which [5XX](https://developer.mozi Use the `maxRetries` request option to configure this behavior. ```php -$response = $client->tenants->create( +$response = $client->shares->exchange( ..., options: [ 'maxRetries' => 0 // Override maxRetries at the request level @@ -131,7 +131,7 @@ $response = $client->tenants->create( The SDK defaults to a 30 second timeout. Use the `timeout` option to configure this behavior. ```php -$response = $client->tenants->create( +$response = $client->shares->exchange( ..., options: [ 'timeout' => 3.0 // Override timeout at the request level diff --git a/cloudpdf-generation.json b/cloudpdf-generation.json index 96adca6..b4de457 100644 --- a/cloudpdf-generation.json +++ b/cloudpdf-generation.json @@ -1,12 +1,12 @@ { "language": "php", - "canonicalVersion": "3.0.0-next.1", - "sdkVersion": "3.0.0-alpha.1", + "canonicalVersion": "3.0.0-next.2", + "sdkVersion": "3.0.0-alpha.2", "source": { "repository": "embedpdf/embed-pdf-viewer", "openapi": "cloudpdf/contract/openapi.json", - "openapiSha256": "6858ce7912e9063d8fb171ade95fc473db01c5971a3af241a612dda79cc05100", - "gitCommit": "cfc415f2b7501e153280b32bcd6aa4af1353e860", + "openapiSha256": "afef16ae2ee6de353cf141d766e4815df5cee075c906b34c728c1176bc10ddb1", + "gitCommit": "627dce09ca948cde662d6e23a3dc1a049b6440d7", "gitCommitIsDirty": false }, "fern": { diff --git a/reference.md b/reference.md index 913c0b0..527f175 100644 --- a/reference.md +++ b/reference.md @@ -345,6 +345,460 @@ $client->doc->text( + + + + +## Shares +
$client->shares->exchange($request) -> ?SharesExchange200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +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). +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->shares->exchange( + new SharesExchangeRequest([ + 'shareToken' => 'shareToken', + ]), +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$shareToken:** `string` + +
+
+ +
+
+ +**$password:** `?string` + +
+
+
+
+ + +
+
+
+ +
$client->shares->list($tenantId, $request) -> ?SharesList200Response +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->shares->list( + 'tenantId', + new ListSharesRequest([]), +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$limit:** `?int` + +
+
+ +
+
+ +**$cursor:** `?string` + +
+
+ +
+
+ +**$docId:** `?string` + +
+
+
+
+ + +
+
+
+ +
$client->shares->create($tenantId, $request) -> ?SharesCreate200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +The returned share id IS the public share token. Mounted only when the deployment can sign (HS256 mode) — exchange mints session JWTs, so grants exist only where minting does. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->shares->create( + 'tenantId', + new SharesCreateRequest([ + 'docId' => 'docId', + 'scope' => [ + 'scope', + ], + ]), +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$docId:** `string` + +
+
+ +
+
+ +**$layerName:** `?string` + +
+
+ +
+
+ +**$scope:** `array` + +
+
+ +
+
+ +**$origins:** `?array` + +
+
+ +
+
+ +**$password:** `?string` + +
+
+ +
+
+ +**$sessionTtlSeconds:** `?int` + +
+
+ +
+
+ +**$expiresAt:** `?int` + +
+
+
+
+ + +
+
+
+ +
$client->shares->get($tenantId, $shareId) -> ?SharesGet200Response +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->shares->get( + 'tenantId', + 'shareId', +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$shareId:** `string` + +
+
+
+
+ + +
+
+
+ +
$client->shares->delete($tenantId, $shareId) +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->shares->delete( + 'tenantId', + 'shareId', +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$shareId:** `string` + +
+
+
+
+ + +
+
+
+ +
$client->shares->update($tenantId, $shareId, $request) -> ?SharesUpdate200Response +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->shares->update( + 'tenantId', + 'shareId', + new SharesUpdateRequest([]), +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$shareId:** `string` + +
+
+ +
+
+ +**$scope:** `?array` + +
+
+ +
+
+ +**$origins:** `?array` + +
+
+ +
+
+ +**$password:** `?string` + +
+
+ +
+
+ +**$sessionTtlSeconds:** `?int` + +
+
+ +
+
+ +**$disabled:** `?bool` + +
+
+ +
+
+ +**$expiresAt:** `?int` + +
+
+
+
+ +
@@ -546,6 +1000,178 @@ $client->tenants->delete( + + + + +
$client->tenants->resume($tenantId) +
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->tenants->resume( + 'tenantId', +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+
+
+ + +
+
+
+ +
$client->tenants->suspend($tenantId, $request) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Instantly reversible with resume. The API token is exempt, so a suspended tenant can still be inspected, exported, resumed, or deleted. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->tenants->suspend( + 'tenantId', + new TenantsSuspendRequest([]), +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$reason:** `?string` + +
+
+
+
+ + +
+
+
+ +
$client->tenants->usage($tenantId, $request) -> ?TenantsUsage200Response +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Facts only — no limits or billing state. Views count share exchanges plus authorized /v1/access grants, deduplicated across the two. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```php +$client->tenants->usage( + 'tenantId', + new UsageTenantsRequest([]), +); +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**$tenantId:** `string` + +
+
+ +
+
+ +**$period:** `?string` + +
+
+
+
+ +
@@ -884,10 +1510,24 @@ $client->documents->thumbnail( -
$client->documents->uploadDirect($tenantId, $id) -> ?DocumentsUploadDirect200Response +
$client->documents->uploadProxy($tenantId, $id, $request) -> ?DocumentsUploadProxy200Response +
+
+ +#### 📝 Description + +
+
+
+This bounded origin-mediated fallback must only be used after documents.init returns upload.kind=proxy. Auto mode prefers a presigned object-store PUT whenever available. +
+
+
+
+ #### 🔌 Usage
@@ -897,7 +1537,13 @@ $client->documents->thumbnail(
```php -$client->documents->uploadDirect($tenantId, $id): ?DocumentsUploadDirect200Response; +$client->documents->uploadProxy( + 'tenantId', + 'id', + new UploadProxyDocumentsRequest([ + 'file' => File::createFromString("example_file", "example_file"), + ]), +); ```
@@ -1024,6 +1670,14 @@ $client->documents->init( **$uploadTtlSec:** `?float` +
+
+ +
+
+ +**$uploadPreference:** `?string` +
diff --git a/src/CloudPDFClient.php b/src/CloudPDFClient.php index 09695ca..b5def29 100644 --- a/src/CloudPDFClient.php +++ b/src/CloudPDFClient.php @@ -4,6 +4,7 @@ use CloudPDF\Deployment\DeploymentClient; use CloudPDF\Doc\DocClient; +use CloudPDF\Shares\SharesClient; use CloudPDF\Tenants\TenantsClient; use CloudPDF\Documents\DocumentsClient; use CloudPDF\Tokens\TokensClient; @@ -22,6 +23,11 @@ class CloudPDFClient */ public DocClient $doc; + /** + * @var SharesClient $shares + */ + public SharesClient $shares; + /** * @var TenantsClient $tenants */ @@ -54,7 +60,7 @@ class CloudPDFClient private RawClient $client; /** - * @param string $token The token to use for authentication. + * @param ?string $token The token to use for authentication. * @param ?array{ * baseUrl?: string, * client?: ClientInterface, @@ -64,16 +70,18 @@ class CloudPDFClient * } $options */ public function __construct( - string $token, + ?string $token = null, ?array $options = null, ) { $defaultHeaders = [ - 'Authorization' => "Bearer $token", 'X-Fern-Language' => 'PHP', 'X-Fern-SDK-Name' => 'CloudPDF', - 'X-Fern-SDK-Version' => '3.0.0-alpha.1', - 'User-Agent' => 'cloudpdf/sdk/3.0.0-alpha.1', + 'X-Fern-SDK-Version' => '3.0.0-alpha.2', + 'User-Agent' => 'cloudpdf/sdk/3.0.0-alpha.2', ]; + if ($token != null) { + $defaultHeaders['Authorization'] = "Bearer $token"; + } $this->options = $options ?? []; @@ -88,6 +96,7 @@ public function __construct( $this->deployment = new DeploymentClient($this->client, $this->options); $this->doc = new DocClient($this->client, $this->options); + $this->shares = new SharesClient($this->client, $this->options); $this->tenants = new TenantsClient($this->client, $this->options); $this->documents = new DocumentsClient($this->client, $this->options); $this->tokens = new TokensClient($this->client, $this->options); diff --git a/src/Documents/DocumentsClient.php b/src/Documents/DocumentsClient.php index d431593..fea55cc 100644 --- a/src/Documents/DocumentsClient.php +++ b/src/Documents/DocumentsClient.php @@ -15,7 +15,10 @@ use CloudPDF\Types\DocumentsGet200Response; use CloudPDF\Documents\Requests\DocumentsCommitRequest; use CloudPDF\Types\DocumentsCommit200Response; -use CloudPDF\Types\DocumentsUploadDirect200Response; +use CloudPDF\Documents\Requests\UploadProxyDocumentsRequest; +use CloudPDF\Types\DocumentsUploadProxy200Response; +use CloudPDF\Core\Multipart\MultipartFormData; +use CloudPDF\Core\Multipart\MultipartApiRequest; use CloudPDF\Documents\Requests\DocumentsInitRequest; use CloudPDF\Types\DocumentsInit200Response; @@ -383,29 +386,45 @@ public function thumbnail(string $tenantId, string $id, ?array $options = null): } /** + * This bounded origin-mediated fallback must only be used after documents.init returns upload.kind=proxy. Auto mode prefers a presigned object-store PUT whenever available. + * + * Example: + * ```php + * $client->documents->uploadProxy( + * 'tenantId', + * 'id', + * new UploadProxyDocumentsRequest([ + * 'file' => File::createFromString("example_file", "example_file"), + * ]), + * ); + * ``` + * * @param string $tenantId * @param string $id + * @param UploadProxyDocumentsRequest $request * @param ?array{ * baseUrl?: string, * maxRetries?: int, * timeout?: float, * headers?: array, * queryParameters?: array, - * bodyProperties?: array, * } $options - * @return ?DocumentsUploadDirect200Response + * @return ?DocumentsUploadProxy200Response * @throws CloudPDFException * @throws CloudPDFApiException */ - public function uploadDirect(string $tenantId, string $id, ?array $options = null): ?DocumentsUploadDirect200Response + public function uploadProxy(string $tenantId, string $id, UploadProxyDocumentsRequest $request, ?array $options = null): ?DocumentsUploadProxy200Response { $options = array_merge($this->options, $options ?? []); + $body = new MultipartFormData(); + $body->addPart($request->file->toMultipartFormDataPart('file')); try { $response = $this->client->sendRequest( - new JsonApiRequest( + new MultipartApiRequest( baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', - path: "v1/tenants/{$tenantId}/documents/{$id}/upload-direct", + path: "v1/tenants/{$tenantId}/documents/{$id}/upload-proxy", method: HttpMethod::POST, + body: $body, ), $options, ); @@ -415,7 +434,7 @@ public function uploadDirect(string $tenantId, string $id, ?array $options = nul if (empty($json)) { return null; } - return DocumentsUploadDirect200Response::fromJson($json); + return DocumentsUploadProxy200Response::fromJson($json); } } catch (JsonException $e) { throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); diff --git a/src/Documents/Requests/DocumentsInitRequest.php b/src/Documents/Requests/DocumentsInitRequest.php index 570a030..6e2976b 100644 --- a/src/Documents/Requests/DocumentsInitRequest.php +++ b/src/Documents/Requests/DocumentsInitRequest.php @@ -6,6 +6,7 @@ use CloudPDF\Core\Json\JsonProperty; use CloudPDF\Core\Types\ArrayType; use CloudPDF\Documents\Types\DocumentsInitRequestDedupMode; +use CloudPDF\Documents\Types\DocumentsInitRequestUploadPreference; class DocumentsInitRequest extends JsonSerializableType { @@ -51,6 +52,12 @@ class DocumentsInitRequest extends JsonSerializableType #[JsonProperty('uploadTtlSec')] public ?float $uploadTtlSec; + /** + * @var ?value-of $uploadPreference + */ + #[JsonProperty('uploadPreference')] + public ?string $uploadPreference; + /** * @param array{ * contentLength: float, @@ -60,6 +67,7 @@ class DocumentsInitRequest extends JsonSerializableType * dedupMode?: ?value-of, * docId?: ?string, * uploadTtlSec?: ?float, + * uploadPreference?: ?value-of, * } $values */ public function __construct( @@ -72,5 +80,6 @@ public function __construct( $this->dedupMode = $values['dedupMode'] ?? null; $this->docId = $values['docId'] ?? null; $this->uploadTtlSec = $values['uploadTtlSec'] ?? null; + $this->uploadPreference = $values['uploadPreference'] ?? null; } } diff --git a/src/Documents/Requests/UploadProxyDocumentsRequest.php b/src/Documents/Requests/UploadProxyDocumentsRequest.php new file mode 100644 index 0000000..dff2b66 --- /dev/null +++ b/src/Documents/Requests/UploadProxyDocumentsRequest.php @@ -0,0 +1,25 @@ +file = $values['file']; + } +} diff --git a/src/Documents/Types/DocumentsInitRequestUploadPreference.php b/src/Documents/Types/DocumentsInitRequestUploadPreference.php new file mode 100644 index 0000000..a6f72e5 --- /dev/null +++ b/src/Documents/Types/DocumentsInitRequestUploadPreference.php @@ -0,0 +1,10 @@ +limit = $values['limit'] ?? null; + $this->cursor = $values['cursor'] ?? null; + $this->docId = $values['docId'] ?? null; + } +} diff --git a/src/Shares/Requests/SharesCreateRequest.php b/src/Shares/Requests/SharesCreateRequest.php new file mode 100644 index 0000000..65c83b8 --- /dev/null +++ b/src/Shares/Requests/SharesCreateRequest.php @@ -0,0 +1,75 @@ + $scope + */ + #[JsonProperty('scope'), ArrayType(['string'])] + public array $scope; + + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + + /** + * @var ?string $password + */ + #[JsonProperty('password')] + public ?string $password; + + /** + * @var ?int $sessionTtlSeconds + */ + #[JsonProperty('sessionTtlSeconds')] + public ?int $sessionTtlSeconds; + + /** + * @var ?int $expiresAt + */ + #[JsonProperty('expiresAt')] + public ?int $expiresAt; + + /** + * @param array{ + * docId: string, + * scope: array, + * layerName?: ?string, + * origins?: ?array, + * password?: ?string, + * sessionTtlSeconds?: ?int, + * expiresAt?: ?int, + * } $values + */ + public function __construct( + array $values, + ) { + $this->docId = $values['docId']; + $this->layerName = $values['layerName'] ?? null; + $this->scope = $values['scope']; + $this->origins = $values['origins'] ?? null; + $this->password = $values['password'] ?? null; + $this->sessionTtlSeconds = $values['sessionTtlSeconds'] ?? null; + $this->expiresAt = $values['expiresAt'] ?? null; + } +} diff --git a/src/Shares/Requests/SharesExchangeRequest.php b/src/Shares/Requests/SharesExchangeRequest.php new file mode 100644 index 0000000..923cdd8 --- /dev/null +++ b/src/Shares/Requests/SharesExchangeRequest.php @@ -0,0 +1,34 @@ +shareToken = $values['shareToken']; + $this->password = $values['password'] ?? null; + } +} diff --git a/src/Shares/Requests/SharesUpdateRequest.php b/src/Shares/Requests/SharesUpdateRequest.php new file mode 100644 index 0000000..2f147fd --- /dev/null +++ b/src/Shares/Requests/SharesUpdateRequest.php @@ -0,0 +1,67 @@ + $scope + */ + #[JsonProperty('scope'), ArrayType(['string'])] + public ?array $scope; + + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + + /** + * @var ?string $password + */ + #[JsonProperty('password')] + public ?string $password; + + /** + * @var ?int $sessionTtlSeconds + */ + #[JsonProperty('sessionTtlSeconds')] + public ?int $sessionTtlSeconds; + + /** + * @var ?bool $disabled + */ + #[JsonProperty('disabled')] + public ?bool $disabled; + + /** + * @var ?int $expiresAt + */ + #[JsonProperty('expiresAt')] + public ?int $expiresAt; + + /** + * @param array{ + * scope?: ?array, + * origins?: ?array, + * password?: ?string, + * sessionTtlSeconds?: ?int, + * disabled?: ?bool, + * expiresAt?: ?int, + * } $values + */ + public function __construct( + array $values = [], + ) { + $this->scope = $values['scope'] ?? null; + $this->origins = $values['origins'] ?? null; + $this->password = $values['password'] ?? null; + $this->sessionTtlSeconds = $values['sessionTtlSeconds'] ?? null; + $this->disabled = $values['disabled'] ?? null; + $this->expiresAt = $values['expiresAt'] ?? null; + } +} diff --git a/src/Shares/SharesClient.php b/src/Shares/SharesClient.php new file mode 100644 index 0000000..9516476 --- /dev/null +++ b/src/Shares/SharesClient.php @@ -0,0 +1,406 @@ +, + * } $options @phpstan-ignore-next-line Property is used in endpoint methods via HttpEndpointGenerator + */ + private array $options; + + /** + * @var RawClient $client + */ + private RawClient $client; + + /** + * @param RawClient $client + * @param ?array{ + * baseUrl?: string, + * client?: ClientInterface, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * } $options + */ + public function __construct( + RawClient $client, + ?array $options = null, + ) { + $this->client = $client; + $this->options = $options ?? []; + } + + /** + * 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). + * + * Example: + * ```php + * $client->shares->exchange( + * new SharesExchangeRequest([ + * 'shareToken' => 'shareToken', + * ]), + * ); + * ``` + * + * @param SharesExchangeRequest $request + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @return ?SharesExchange200Response + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function exchange(SharesExchangeRequest $request, ?array $options = null): ?SharesExchange200Response + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/share-sessions", + method: HttpMethod::POST, + body: $request, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + $json = $response->getBody()->getContents(); + if (empty($json)) { + return null; + } + return SharesExchange200Response::fromJson($json); + } + } catch (JsonException $e) { + throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * Example: + * ```php + * $client->shares->list( + * 'tenantId', + * new ListSharesRequest([]), + * ); + * ``` + * + * @param string $tenantId + * @param ListSharesRequest $request + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @return ?SharesList200Response + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function list(string $tenantId, ListSharesRequest $request = new ListSharesRequest(), ?array $options = null): ?SharesList200Response + { + $options = array_merge($this->options, $options ?? []); + $query = []; + if ($request->limit != null) { + $query['limit'] = $request->limit; + } + if ($request->cursor != null) { + $query['cursor'] = $request->cursor; + } + if ($request->docId != null) { + $query['docId'] = $request->docId; + } + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/shares", + method: HttpMethod::GET, + query: $query, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + $json = $response->getBody()->getContents(); + if (empty($json)) { + return null; + } + return SharesList200Response::fromJson($json); + } + } catch (JsonException $e) { + throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * The returned share id IS the public share token. Mounted only when the deployment can sign (HS256 mode) — exchange mints session JWTs, so grants exist only where minting does. + * + * Example: + * ```php + * $client->shares->create( + * 'tenantId', + * new SharesCreateRequest([ + * 'docId' => 'docId', + * 'scope' => [ + * 'scope', + * ], + * ]), + * ); + * ``` + * + * @param string $tenantId + * @param SharesCreateRequest $request + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @return ?SharesCreate200Response + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function create(string $tenantId, SharesCreateRequest $request, ?array $options = null): ?SharesCreate200Response + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/shares", + method: HttpMethod::POST, + body: $request, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + $json = $response->getBody()->getContents(); + if (empty($json)) { + return null; + } + return SharesCreate200Response::fromJson($json); + } + } catch (JsonException $e) { + throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * Example: + * ```php + * $client->shares->get( + * 'tenantId', + * 'shareId', + * ); + * ``` + * + * @param string $tenantId + * @param string $shareId + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @return ?SharesGet200Response + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function get(string $tenantId, string $shareId, ?array $options = null): ?SharesGet200Response + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/shares/{$shareId}", + method: HttpMethod::GET, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + $json = $response->getBody()->getContents(); + if (empty($json)) { + return null; + } + return SharesGet200Response::fromJson($json); + } + } catch (JsonException $e) { + throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * Example: + * ```php + * $client->shares->delete( + * 'tenantId', + * 'shareId', + * ); + * ``` + * + * @param string $tenantId + * @param string $shareId + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function delete(string $tenantId, string $shareId, ?array $options = null): void + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/shares/{$shareId}", + method: HttpMethod::DELETE, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + return; + } + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * Example: + * ```php + * $client->shares->update( + * 'tenantId', + * 'shareId', + * new SharesUpdateRequest([]), + * ); + * ``` + * + * @param string $tenantId + * @param string $shareId + * @param SharesUpdateRequest $request + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @return ?SharesUpdate200Response + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function update(string $tenantId, string $shareId, SharesUpdateRequest $request = new SharesUpdateRequest(), ?array $options = null): ?SharesUpdate200Response + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/shares/{$shareId}", + method: HttpMethod::PATCH, + body: $request, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + $json = $response->getBody()->getContents(); + if (empty($json)) { + return null; + } + return SharesUpdate200Response::fromJson($json); + } + } catch (JsonException $e) { + throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } +} diff --git a/src/Tenants/Requests/TenantsSuspendRequest.php b/src/Tenants/Requests/TenantsSuspendRequest.php new file mode 100644 index 0000000..6d8efde --- /dev/null +++ b/src/Tenants/Requests/TenantsSuspendRequest.php @@ -0,0 +1,26 @@ +reason = $values['reason'] ?? null; + } +} diff --git a/src/Tenants/Requests/UsageTenantsRequest.php b/src/Tenants/Requests/UsageTenantsRequest.php new file mode 100644 index 0000000..e8094a0 --- /dev/null +++ b/src/Tenants/Requests/UsageTenantsRequest.php @@ -0,0 +1,24 @@ +period = $values['period'] ?? null; + } +} diff --git a/src/Tenants/TenantsClient.php b/src/Tenants/TenantsClient.php index 59576c2..a8cc99b 100644 --- a/src/Tenants/TenantsClient.php +++ b/src/Tenants/TenantsClient.php @@ -15,6 +15,9 @@ use CloudPDF\Tenants\Requests\TenantsCreateRequest; use CloudPDF\Types\TenantsCreate200Response; use CloudPDF\Types\TenantsGet200Response; +use CloudPDF\Tenants\Requests\TenantsSuspendRequest; +use CloudPDF\Tenants\Requests\UsageTenantsRequest; +use CloudPDF\Types\TenantsUsage200Response; class TenantsClient { @@ -269,4 +272,163 @@ public function delete(string $tenantId, ?array $options = null): void body: $response->getBody()->getContents(), ); } + + /** + * Example: + * ```php + * $client->tenants->resume( + * 'tenantId', + * ); + * ``` + * + * @param string $tenantId + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function resume(string $tenantId, ?array $options = null): void + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/resume", + method: HttpMethod::POST, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + return; + } + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * Instantly reversible with resume. The API token is exempt, so a suspended tenant can still be inspected, exported, resumed, or deleted. + * + * Example: + * ```php + * $client->tenants->suspend( + * 'tenantId', + * new TenantsSuspendRequest([]), + * ); + * ``` + * + * @param string $tenantId + * @param TenantsSuspendRequest $request + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function suspend(string $tenantId, TenantsSuspendRequest $request = new TenantsSuspendRequest(), ?array $options = null): void + { + $options = array_merge($this->options, $options ?? []); + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/suspend", + method: HttpMethod::POST, + body: $request, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + return; + } + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } + + /** + * Facts only — no limits or billing state. Views count share exchanges plus authorized /v1/access grants, deduplicated across the two. + * + * Example: + * ```php + * $client->tenants->usage( + * 'tenantId', + * new UsageTenantsRequest([]), + * ); + * ``` + * + * @param string $tenantId + * @param UsageTenantsRequest $request + * @param ?array{ + * baseUrl?: string, + * maxRetries?: int, + * timeout?: float, + * headers?: array, + * queryParameters?: array, + * bodyProperties?: array, + * } $options + * @return ?TenantsUsage200Response + * @throws CloudPDFException + * @throws CloudPDFApiException + */ + public function usage(string $tenantId, UsageTenantsRequest $request = new UsageTenantsRequest(), ?array $options = null): ?TenantsUsage200Response + { + $options = array_merge($this->options, $options ?? []); + $query = []; + if ($request->period != null) { + $query['period'] = $request->period; + } + try { + $response = $this->client->sendRequest( + new JsonApiRequest( + baseUrl: $options['baseUrl'] ?? $this->client->options['baseUrl'] ?? '', + path: "v1/tenants/{$tenantId}/usage", + method: HttpMethod::GET, + query: $query, + ), + $options, + ); + $statusCode = $response->getStatusCode(); + if ($statusCode >= 200 && $statusCode < 400) { + $json = $response->getBody()->getContents(); + if (empty($json)) { + return null; + } + return TenantsUsage200Response::fromJson($json); + } + } catch (JsonException $e) { + throw new CloudPDFException(message: "Failed to deserialize response: {$e->getMessage()}", previous: $e); + } catch (ClientExceptionInterface $e) { + throw new CloudPDFException(message: $e->getMessage(), previous: $e); + } + throw new CloudPDFApiException( + message: 'API request failed', + statusCode: $statusCode, + body: $response->getBody()->getContents(), + ); + } } diff --git a/src/Types/DocumentsInit200ResponseCreatedUpload.php b/src/Types/DocumentsInit200ResponseCreatedUpload.php index 1018cee..d9a2e7c 100644 --- a/src/Types/DocumentsInit200ResponseCreatedUpload.php +++ b/src/Types/DocumentsInit200ResponseCreatedUpload.php @@ -10,7 +10,7 @@ class DocumentsInit200ResponseCreatedUpload extends JsonSerializableType /** * @var ( * 'presigned' - * |'direct' + * |'proxy' * |'_unknown' * ) $kind */ @@ -19,7 +19,7 @@ class DocumentsInit200ResponseCreatedUpload extends JsonSerializableType /** * @var ( * DocumentsInit200ResponseCreatedUploadPresigned - * |DocumentsInit200ResponseCreatedUploadDirect + * |DocumentsInit200ResponseCreatedUploadProxy * |mixed * ) $value */ @@ -29,12 +29,12 @@ class DocumentsInit200ResponseCreatedUpload extends JsonSerializableType * @param array{ * kind: ( * 'presigned' - * |'direct' + * |'proxy' * |'_unknown' * ), * value: ( * DocumentsInit200ResponseCreatedUploadPresigned - * |DocumentsInit200ResponseCreatedUploadDirect + * |DocumentsInit200ResponseCreatedUploadProxy * |mixed * ), * } $values @@ -59,14 +59,14 @@ public static function presigned(DocumentsInit200ResponseCreatedUploadPresigned } /** - * @param DocumentsInit200ResponseCreatedUploadDirect $direct + * @param DocumentsInit200ResponseCreatedUploadProxy $proxy * @return DocumentsInit200ResponseCreatedUpload */ - public static function direct(DocumentsInit200ResponseCreatedUploadDirect $direct): DocumentsInit200ResponseCreatedUpload + public static function proxy(DocumentsInit200ResponseCreatedUploadProxy $proxy): DocumentsInit200ResponseCreatedUpload { return new DocumentsInit200ResponseCreatedUpload([ - 'kind' => 'direct', - 'value' => $direct, + 'kind' => 'proxy', + 'value' => $proxy, ]); } @@ -95,19 +95,19 @@ public function asPresigned(): DocumentsInit200ResponseCreatedUploadPresigned /** * @return bool */ - public function isDirect(): bool + public function isProxy(): bool { - return $this->value instanceof DocumentsInit200ResponseCreatedUploadDirect && $this->kind === 'direct'; + return $this->value instanceof DocumentsInit200ResponseCreatedUploadProxy && $this->kind === 'proxy'; } /** - * @return DocumentsInit200ResponseCreatedUploadDirect + * @return DocumentsInit200ResponseCreatedUploadProxy */ - public function asDirect(): DocumentsInit200ResponseCreatedUploadDirect + public function asProxy(): DocumentsInit200ResponseCreatedUploadProxy { - if (!($this->value instanceof DocumentsInit200ResponseCreatedUploadDirect && $this->kind === 'direct')) { + if (!($this->value instanceof DocumentsInit200ResponseCreatedUploadProxy && $this->kind === 'proxy')) { throw new Exception( - "Expected direct; got " . $this->kind . " with value of type " . get_debug_type($this->value), + "Expected proxy; got " . $this->kind . " with value of type " . get_debug_type($this->value), ); } @@ -138,8 +138,8 @@ public function jsonSerialize(): array $value = $this->asPresigned()->jsonSerialize(); $result = array_merge($value, $result); break; - case 'direct': - $value = $this->asDirect()->jsonSerialize(); + case 'proxy': + $value = $this->asProxy()->jsonSerialize(); $result = array_merge($value, $result); break; case '_unknown': @@ -181,8 +181,8 @@ public static function jsonDeserialize(array $data): static case 'presigned': $args['value'] = DocumentsInit200ResponseCreatedUploadPresigned::jsonDeserialize($data); break; - case 'direct': - $args['value'] = DocumentsInit200ResponseCreatedUploadDirect::jsonDeserialize($data); + case 'proxy': + $args['value'] = DocumentsInit200ResponseCreatedUploadProxy::jsonDeserialize($data); break; case '_unknown': default: diff --git a/src/Types/DocumentsInit200ResponseCreatedUploadDirect.php b/src/Types/DocumentsInit200ResponseCreatedUploadProxy.php similarity index 89% rename from src/Types/DocumentsInit200ResponseCreatedUploadDirect.php rename to src/Types/DocumentsInit200ResponseCreatedUploadProxy.php index 98893e1..3492a62 100644 --- a/src/Types/DocumentsInit200ResponseCreatedUploadDirect.php +++ b/src/Types/DocumentsInit200ResponseCreatedUploadProxy.php @@ -5,7 +5,7 @@ use CloudPDF\Core\Json\JsonSerializableType; use CloudPDF\Core\Json\JsonProperty; -class DocumentsInit200ResponseCreatedUploadDirect extends JsonSerializableType +class DocumentsInit200ResponseCreatedUploadProxy extends JsonSerializableType { /** * @var string $url diff --git a/src/Types/DocumentsInit200ResponseResumedUpload.php b/src/Types/DocumentsInit200ResponseResumedUpload.php index ee65350..17a8edd 100644 --- a/src/Types/DocumentsInit200ResponseResumedUpload.php +++ b/src/Types/DocumentsInit200ResponseResumedUpload.php @@ -10,7 +10,7 @@ class DocumentsInit200ResponseResumedUpload extends JsonSerializableType /** * @var ( * 'presigned' - * |'direct' + * |'proxy' * |'_unknown' * ) $kind */ @@ -19,7 +19,7 @@ class DocumentsInit200ResponseResumedUpload extends JsonSerializableType /** * @var ( * DocumentsInit200ResponseResumedUploadPresigned - * |DocumentsInit200ResponseResumedUploadDirect + * |DocumentsInit200ResponseResumedUploadProxy * |mixed * ) $value */ @@ -29,12 +29,12 @@ class DocumentsInit200ResponseResumedUpload extends JsonSerializableType * @param array{ * kind: ( * 'presigned' - * |'direct' + * |'proxy' * |'_unknown' * ), * value: ( * DocumentsInit200ResponseResumedUploadPresigned - * |DocumentsInit200ResponseResumedUploadDirect + * |DocumentsInit200ResponseResumedUploadProxy * |mixed * ), * } $values @@ -59,14 +59,14 @@ public static function presigned(DocumentsInit200ResponseResumedUploadPresigned } /** - * @param DocumentsInit200ResponseResumedUploadDirect $direct + * @param DocumentsInit200ResponseResumedUploadProxy $proxy * @return DocumentsInit200ResponseResumedUpload */ - public static function direct(DocumentsInit200ResponseResumedUploadDirect $direct): DocumentsInit200ResponseResumedUpload + public static function proxy(DocumentsInit200ResponseResumedUploadProxy $proxy): DocumentsInit200ResponseResumedUpload { return new DocumentsInit200ResponseResumedUpload([ - 'kind' => 'direct', - 'value' => $direct, + 'kind' => 'proxy', + 'value' => $proxy, ]); } @@ -95,19 +95,19 @@ public function asPresigned(): DocumentsInit200ResponseResumedUploadPresigned /** * @return bool */ - public function isDirect(): bool + public function isProxy(): bool { - return $this->value instanceof DocumentsInit200ResponseResumedUploadDirect && $this->kind === 'direct'; + return $this->value instanceof DocumentsInit200ResponseResumedUploadProxy && $this->kind === 'proxy'; } /** - * @return DocumentsInit200ResponseResumedUploadDirect + * @return DocumentsInit200ResponseResumedUploadProxy */ - public function asDirect(): DocumentsInit200ResponseResumedUploadDirect + public function asProxy(): DocumentsInit200ResponseResumedUploadProxy { - if (!($this->value instanceof DocumentsInit200ResponseResumedUploadDirect && $this->kind === 'direct')) { + if (!($this->value instanceof DocumentsInit200ResponseResumedUploadProxy && $this->kind === 'proxy')) { throw new Exception( - "Expected direct; got " . $this->kind . " with value of type " . get_debug_type($this->value), + "Expected proxy; got " . $this->kind . " with value of type " . get_debug_type($this->value), ); } @@ -138,8 +138,8 @@ public function jsonSerialize(): array $value = $this->asPresigned()->jsonSerialize(); $result = array_merge($value, $result); break; - case 'direct': - $value = $this->asDirect()->jsonSerialize(); + case 'proxy': + $value = $this->asProxy()->jsonSerialize(); $result = array_merge($value, $result); break; case '_unknown': @@ -181,8 +181,8 @@ public static function jsonDeserialize(array $data): static case 'presigned': $args['value'] = DocumentsInit200ResponseResumedUploadPresigned::jsonDeserialize($data); break; - case 'direct': - $args['value'] = DocumentsInit200ResponseResumedUploadDirect::jsonDeserialize($data); + case 'proxy': + $args['value'] = DocumentsInit200ResponseResumedUploadProxy::jsonDeserialize($data); break; case '_unknown': default: diff --git a/src/Types/DocumentsInit200ResponseResumedUploadDirect.php b/src/Types/DocumentsInit200ResponseResumedUploadProxy.php similarity index 89% rename from src/Types/DocumentsInit200ResponseResumedUploadDirect.php rename to src/Types/DocumentsInit200ResponseResumedUploadProxy.php index b051db4..da5e26d 100644 --- a/src/Types/DocumentsInit200ResponseResumedUploadDirect.php +++ b/src/Types/DocumentsInit200ResponseResumedUploadProxy.php @@ -5,7 +5,7 @@ use CloudPDF\Core\Json\JsonSerializableType; use CloudPDF\Core\Json\JsonProperty; -class DocumentsInit200ResponseResumedUploadDirect extends JsonSerializableType +class DocumentsInit200ResponseResumedUploadProxy extends JsonSerializableType { /** * @var string $url diff --git a/src/Types/DocumentsUploadDirect200Response.php b/src/Types/DocumentsUploadProxy200Response.php similarity index 88% rename from src/Types/DocumentsUploadDirect200Response.php rename to src/Types/DocumentsUploadProxy200Response.php index 8ed7a91..bfb0658 100644 --- a/src/Types/DocumentsUploadDirect200Response.php +++ b/src/Types/DocumentsUploadProxy200Response.php @@ -5,7 +5,7 @@ use CloudPDF\Core\Json\JsonSerializableType; use CloudPDF\Core\Json\JsonProperty; -class DocumentsUploadDirect200Response extends JsonSerializableType +class DocumentsUploadProxy200Response extends JsonSerializableType { /** * @var string $sha256 diff --git a/src/Types/DocumentsUploadDirect400Response.php b/src/Types/DocumentsUploadProxy400Response.php similarity index 65% rename from src/Types/DocumentsUploadDirect400Response.php rename to src/Types/DocumentsUploadProxy400Response.php index b83d220..245a7b2 100644 --- a/src/Types/DocumentsUploadDirect400Response.php +++ b/src/Types/DocumentsUploadProxy400Response.php @@ -5,17 +5,17 @@ use CloudPDF\Core\Json\JsonSerializableType; use CloudPDF\Core\Json\JsonProperty; -class DocumentsUploadDirect400Response extends JsonSerializableType +class DocumentsUploadProxy400Response extends JsonSerializableType { /** - * @var DocumentsUploadDirect400ResponseError $error + * @var DocumentsUploadProxy400ResponseError $error */ #[JsonProperty('error')] - public DocumentsUploadDirect400ResponseError $error; + public DocumentsUploadProxy400ResponseError $error; /** * @param array{ - * error: DocumentsUploadDirect400ResponseError, + * error: DocumentsUploadProxy400ResponseError, * } $values */ public function __construct( diff --git a/src/Types/DocumentsUploadDirect400ResponseError.php b/src/Types/DocumentsUploadProxy400ResponseError.php similarity index 90% rename from src/Types/DocumentsUploadDirect400ResponseError.php rename to src/Types/DocumentsUploadProxy400ResponseError.php index 1d2f7ea..d4bf054 100644 --- a/src/Types/DocumentsUploadDirect400ResponseError.php +++ b/src/Types/DocumentsUploadProxy400ResponseError.php @@ -5,7 +5,7 @@ use CloudPDF\Core\Json\JsonSerializableType; use CloudPDF\Core\Json\JsonProperty; -class DocumentsUploadDirect400ResponseError extends JsonSerializableType +class DocumentsUploadProxy400ResponseError extends JsonSerializableType { /** * @var string $code diff --git a/src/Types/DocumentsUploadProxy409Response.php b/src/Types/DocumentsUploadProxy409Response.php new file mode 100644 index 0000000..4d51540 --- /dev/null +++ b/src/Types/DocumentsUploadProxy409Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/DocumentsUploadProxy409ResponseError.php b/src/Types/DocumentsUploadProxy409ResponseError.php new file mode 100644 index 0000000..2e39963 --- /dev/null +++ b/src/Types/DocumentsUploadProxy409ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate200Response.php b/src/Types/SharesCreate200Response.php new file mode 100644 index 0000000..b314945 --- /dev/null +++ b/src/Types/SharesCreate200Response.php @@ -0,0 +1,34 @@ +share = $values['share']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate200ResponseShare.php b/src/Types/SharesCreate200ResponseShare.php new file mode 100644 index 0000000..2dae4d7 --- /dev/null +++ b/src/Types/SharesCreate200ResponseShare.php @@ -0,0 +1,147 @@ + $scope + */ + #[JsonProperty('scope'), ArrayType(['string'])] + public array $scope; + + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + + /** + * @var bool $passwordProtected + */ + #[JsonProperty('passwordProtected')] + public bool $passwordProtected; + + /** + * @var float $sessionTtlSeconds + */ + #[JsonProperty('sessionTtlSeconds')] + public float $sessionTtlSeconds; + + /** + * @var bool $disabled + */ + #[JsonProperty('disabled')] + public bool $disabled; + + /** + * @var ?float $expiresAt + */ + #[JsonProperty('expiresAt')] + public ?float $expiresAt; + + /** + * @var float $exchangeCount + */ + #[JsonProperty('exchangeCount')] + public float $exchangeCount; + + /** + * @var ?float $lastExchangedAt + */ + #[JsonProperty('lastExchangedAt')] + public ?float $lastExchangedAt; + + /** + * @var string $createdBy + */ + #[JsonProperty('createdBy')] + public string $createdBy; + + /** + * @var float $createdAt + */ + #[JsonProperty('createdAt')] + public float $createdAt; + + /** + * @var float $updatedAt + */ + #[JsonProperty('updatedAt')] + public float $updatedAt; + + /** + * @param array{ + * id: string, + * tenantId: string, + * docId: string, + * layerName: string, + * scope: array, + * passwordProtected: bool, + * sessionTtlSeconds: float, + * disabled: bool, + * exchangeCount: float, + * createdBy: string, + * createdAt: float, + * updatedAt: float, + * origins?: ?array, + * expiresAt?: ?float, + * lastExchangedAt?: ?float, + * } $values + */ + public function __construct( + array $values, + ) { + $this->id = $values['id']; + $this->tenantId = $values['tenantId']; + $this->docId = $values['docId']; + $this->layerName = $values['layerName']; + $this->scope = $values['scope']; + $this->origins = $values['origins'] ?? null; + $this->passwordProtected = $values['passwordProtected']; + $this->sessionTtlSeconds = $values['sessionTtlSeconds']; + $this->disabled = $values['disabled']; + $this->expiresAt = $values['expiresAt'] ?? null; + $this->exchangeCount = $values['exchangeCount']; + $this->lastExchangedAt = $values['lastExchangedAt'] ?? null; + $this->createdBy = $values['createdBy']; + $this->createdAt = $values['createdAt']; + $this->updatedAt = $values['updatedAt']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate400Response.php b/src/Types/SharesCreate400Response.php new file mode 100644 index 0000000..03150e6 --- /dev/null +++ b/src/Types/SharesCreate400Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate400ResponseError.php b/src/Types/SharesCreate400ResponseError.php new file mode 100644 index 0000000..1b02621 --- /dev/null +++ b/src/Types/SharesCreate400ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate403Response.php b/src/Types/SharesCreate403Response.php new file mode 100644 index 0000000..3f4a19b --- /dev/null +++ b/src/Types/SharesCreate403Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate403ResponseError.php b/src/Types/SharesCreate403ResponseError.php new file mode 100644 index 0000000..c41ff69 --- /dev/null +++ b/src/Types/SharesCreate403ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate404Response.php b/src/Types/SharesCreate404Response.php new file mode 100644 index 0000000..353e69a --- /dev/null +++ b/src/Types/SharesCreate404Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesCreate404ResponseError.php b/src/Types/SharesCreate404ResponseError.php new file mode 100644 index 0000000..3d50348 --- /dev/null +++ b/src/Types/SharesCreate404ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesDeleteResponse.php b/src/Types/SharesDeleteResponse.php new file mode 100644 index 0000000..ae232c6 --- /dev/null +++ b/src/Types/SharesDeleteResponse.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesDeleteResponseError.php b/src/Types/SharesDeleteResponseError.php new file mode 100644 index 0000000..906357a --- /dev/null +++ b/src/Types/SharesDeleteResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange200Response.php b/src/Types/SharesExchange200Response.php new file mode 100644 index 0000000..15a042b --- /dev/null +++ b/src/Types/SharesExchange200Response.php @@ -0,0 +1,58 @@ +token = $values['token']; + $this->docId = $values['docId']; + $this->layerName = $values['layerName']; + $this->expiresAt = $values['expiresAt']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange400Response.php b/src/Types/SharesExchange400Response.php new file mode 100644 index 0000000..fd4a415 --- /dev/null +++ b/src/Types/SharesExchange400Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange400ResponseError.php b/src/Types/SharesExchange400ResponseError.php new file mode 100644 index 0000000..80675f2 --- /dev/null +++ b/src/Types/SharesExchange400ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange403Response.php b/src/Types/SharesExchange403Response.php new file mode 100644 index 0000000..6f240d5 --- /dev/null +++ b/src/Types/SharesExchange403Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange403ResponseError.php b/src/Types/SharesExchange403ResponseError.php new file mode 100644 index 0000000..968b1d6 --- /dev/null +++ b/src/Types/SharesExchange403ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange404Response.php b/src/Types/SharesExchange404Response.php new file mode 100644 index 0000000..4928107 --- /dev/null +++ b/src/Types/SharesExchange404Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange404ResponseError.php b/src/Types/SharesExchange404ResponseError.php new file mode 100644 index 0000000..9f1454e --- /dev/null +++ b/src/Types/SharesExchange404ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange410Response.php b/src/Types/SharesExchange410Response.php new file mode 100644 index 0000000..12bccf5 --- /dev/null +++ b/src/Types/SharesExchange410Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange410ResponseError.php b/src/Types/SharesExchange410ResponseError.php new file mode 100644 index 0000000..0c24c69 --- /dev/null +++ b/src/Types/SharesExchange410ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange422Response.php b/src/Types/SharesExchange422Response.php new file mode 100644 index 0000000..2864901 --- /dev/null +++ b/src/Types/SharesExchange422Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesExchange422ResponseError.php b/src/Types/SharesExchange422ResponseError.php new file mode 100644 index 0000000..0334821 --- /dev/null +++ b/src/Types/SharesExchange422ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesGet200Response.php b/src/Types/SharesGet200Response.php new file mode 100644 index 0000000..fa7434c --- /dev/null +++ b/src/Types/SharesGet200Response.php @@ -0,0 +1,34 @@ +share = $values['share']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesGet200ResponseShare.php b/src/Types/SharesGet200ResponseShare.php new file mode 100644 index 0000000..ebf4cbc --- /dev/null +++ b/src/Types/SharesGet200ResponseShare.php @@ -0,0 +1,147 @@ + $scope + */ + #[JsonProperty('scope'), ArrayType(['string'])] + public array $scope; + + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + + /** + * @var bool $passwordProtected + */ + #[JsonProperty('passwordProtected')] + public bool $passwordProtected; + + /** + * @var float $sessionTtlSeconds + */ + #[JsonProperty('sessionTtlSeconds')] + public float $sessionTtlSeconds; + + /** + * @var bool $disabled + */ + #[JsonProperty('disabled')] + public bool $disabled; + + /** + * @var ?float $expiresAt + */ + #[JsonProperty('expiresAt')] + public ?float $expiresAt; + + /** + * @var float $exchangeCount + */ + #[JsonProperty('exchangeCount')] + public float $exchangeCount; + + /** + * @var ?float $lastExchangedAt + */ + #[JsonProperty('lastExchangedAt')] + public ?float $lastExchangedAt; + + /** + * @var string $createdBy + */ + #[JsonProperty('createdBy')] + public string $createdBy; + + /** + * @var float $createdAt + */ + #[JsonProperty('createdAt')] + public float $createdAt; + + /** + * @var float $updatedAt + */ + #[JsonProperty('updatedAt')] + public float $updatedAt; + + /** + * @param array{ + * id: string, + * tenantId: string, + * docId: string, + * layerName: string, + * scope: array, + * passwordProtected: bool, + * sessionTtlSeconds: float, + * disabled: bool, + * exchangeCount: float, + * createdBy: string, + * createdAt: float, + * updatedAt: float, + * origins?: ?array, + * expiresAt?: ?float, + * lastExchangedAt?: ?float, + * } $values + */ + public function __construct( + array $values, + ) { + $this->id = $values['id']; + $this->tenantId = $values['tenantId']; + $this->docId = $values['docId']; + $this->layerName = $values['layerName']; + $this->scope = $values['scope']; + $this->origins = $values['origins'] ?? null; + $this->passwordProtected = $values['passwordProtected']; + $this->sessionTtlSeconds = $values['sessionTtlSeconds']; + $this->disabled = $values['disabled']; + $this->expiresAt = $values['expiresAt'] ?? null; + $this->exchangeCount = $values['exchangeCount']; + $this->lastExchangedAt = $values['lastExchangedAt'] ?? null; + $this->createdBy = $values['createdBy']; + $this->createdAt = $values['createdAt']; + $this->updatedAt = $values['updatedAt']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesGet404Response.php b/src/Types/SharesGet404Response.php new file mode 100644 index 0000000..05a97a3 --- /dev/null +++ b/src/Types/SharesGet404Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesGet404ResponseError.php b/src/Types/SharesGet404ResponseError.php new file mode 100644 index 0000000..ad506f4 --- /dev/null +++ b/src/Types/SharesGet404ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesList200Response.php b/src/Types/SharesList200Response.php new file mode 100644 index 0000000..fbef0f1 --- /dev/null +++ b/src/Types/SharesList200Response.php @@ -0,0 +1,43 @@ + $shares + */ + #[JsonProperty('shares'), ArrayType([SharesList200ResponseSharesItem::class])] + public array $shares; + + /** + * @var ?string $nextCursor + */ + #[JsonProperty('nextCursor')] + public ?string $nextCursor; + + /** + * @param array{ + * shares: array, + * nextCursor?: ?string, + * } $values + */ + public function __construct( + array $values, + ) { + $this->shares = $values['shares']; + $this->nextCursor = $values['nextCursor'] ?? null; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesList200ResponseSharesItem.php b/src/Types/SharesList200ResponseSharesItem.php new file mode 100644 index 0000000..28d19e5 --- /dev/null +++ b/src/Types/SharesList200ResponseSharesItem.php @@ -0,0 +1,147 @@ + $scope + */ + #[JsonProperty('scope'), ArrayType(['string'])] + public array $scope; + + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + + /** + * @var bool $passwordProtected + */ + #[JsonProperty('passwordProtected')] + public bool $passwordProtected; + + /** + * @var float $sessionTtlSeconds + */ + #[JsonProperty('sessionTtlSeconds')] + public float $sessionTtlSeconds; + + /** + * @var bool $disabled + */ + #[JsonProperty('disabled')] + public bool $disabled; + + /** + * @var ?float $expiresAt + */ + #[JsonProperty('expiresAt')] + public ?float $expiresAt; + + /** + * @var float $exchangeCount + */ + #[JsonProperty('exchangeCount')] + public float $exchangeCount; + + /** + * @var ?float $lastExchangedAt + */ + #[JsonProperty('lastExchangedAt')] + public ?float $lastExchangedAt; + + /** + * @var string $createdBy + */ + #[JsonProperty('createdBy')] + public string $createdBy; + + /** + * @var float $createdAt + */ + #[JsonProperty('createdAt')] + public float $createdAt; + + /** + * @var float $updatedAt + */ + #[JsonProperty('updatedAt')] + public float $updatedAt; + + /** + * @param array{ + * id: string, + * tenantId: string, + * docId: string, + * layerName: string, + * scope: array, + * passwordProtected: bool, + * sessionTtlSeconds: float, + * disabled: bool, + * exchangeCount: float, + * createdBy: string, + * createdAt: float, + * updatedAt: float, + * origins?: ?array, + * expiresAt?: ?float, + * lastExchangedAt?: ?float, + * } $values + */ + public function __construct( + array $values, + ) { + $this->id = $values['id']; + $this->tenantId = $values['tenantId']; + $this->docId = $values['docId']; + $this->layerName = $values['layerName']; + $this->scope = $values['scope']; + $this->origins = $values['origins'] ?? null; + $this->passwordProtected = $values['passwordProtected']; + $this->sessionTtlSeconds = $values['sessionTtlSeconds']; + $this->disabled = $values['disabled']; + $this->expiresAt = $values['expiresAt'] ?? null; + $this->exchangeCount = $values['exchangeCount']; + $this->lastExchangedAt = $values['lastExchangedAt'] ?? null; + $this->createdBy = $values['createdBy']; + $this->createdAt = $values['createdAt']; + $this->updatedAt = $values['updatedAt']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesList400Response.php b/src/Types/SharesList400Response.php new file mode 100644 index 0000000..17caea5 --- /dev/null +++ b/src/Types/SharesList400Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesList400ResponseError.php b/src/Types/SharesList400ResponseError.php new file mode 100644 index 0000000..1d7efb5 --- /dev/null +++ b/src/Types/SharesList400ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesUpdate200Response.php b/src/Types/SharesUpdate200Response.php new file mode 100644 index 0000000..47c8cb3 --- /dev/null +++ b/src/Types/SharesUpdate200Response.php @@ -0,0 +1,34 @@ +share = $values['share']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesUpdate200ResponseShare.php b/src/Types/SharesUpdate200ResponseShare.php new file mode 100644 index 0000000..0c85d8a --- /dev/null +++ b/src/Types/SharesUpdate200ResponseShare.php @@ -0,0 +1,147 @@ + $scope + */ + #[JsonProperty('scope'), ArrayType(['string'])] + public array $scope; + + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + + /** + * @var bool $passwordProtected + */ + #[JsonProperty('passwordProtected')] + public bool $passwordProtected; + + /** + * @var float $sessionTtlSeconds + */ + #[JsonProperty('sessionTtlSeconds')] + public float $sessionTtlSeconds; + + /** + * @var bool $disabled + */ + #[JsonProperty('disabled')] + public bool $disabled; + + /** + * @var ?float $expiresAt + */ + #[JsonProperty('expiresAt')] + public ?float $expiresAt; + + /** + * @var float $exchangeCount + */ + #[JsonProperty('exchangeCount')] + public float $exchangeCount; + + /** + * @var ?float $lastExchangedAt + */ + #[JsonProperty('lastExchangedAt')] + public ?float $lastExchangedAt; + + /** + * @var string $createdBy + */ + #[JsonProperty('createdBy')] + public string $createdBy; + + /** + * @var float $createdAt + */ + #[JsonProperty('createdAt')] + public float $createdAt; + + /** + * @var float $updatedAt + */ + #[JsonProperty('updatedAt')] + public float $updatedAt; + + /** + * @param array{ + * id: string, + * tenantId: string, + * docId: string, + * layerName: string, + * scope: array, + * passwordProtected: bool, + * sessionTtlSeconds: float, + * disabled: bool, + * exchangeCount: float, + * createdBy: string, + * createdAt: float, + * updatedAt: float, + * origins?: ?array, + * expiresAt?: ?float, + * lastExchangedAt?: ?float, + * } $values + */ + public function __construct( + array $values, + ) { + $this->id = $values['id']; + $this->tenantId = $values['tenantId']; + $this->docId = $values['docId']; + $this->layerName = $values['layerName']; + $this->scope = $values['scope']; + $this->origins = $values['origins'] ?? null; + $this->passwordProtected = $values['passwordProtected']; + $this->sessionTtlSeconds = $values['sessionTtlSeconds']; + $this->disabled = $values['disabled']; + $this->expiresAt = $values['expiresAt'] ?? null; + $this->exchangeCount = $values['exchangeCount']; + $this->lastExchangedAt = $values['lastExchangedAt'] ?? null; + $this->createdBy = $values['createdBy']; + $this->createdAt = $values['createdAt']; + $this->updatedAt = $values['updatedAt']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesUpdate400Response.php b/src/Types/SharesUpdate400Response.php new file mode 100644 index 0000000..882bb5a --- /dev/null +++ b/src/Types/SharesUpdate400Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesUpdate400ResponseError.php b/src/Types/SharesUpdate400ResponseError.php new file mode 100644 index 0000000..9515ea5 --- /dev/null +++ b/src/Types/SharesUpdate400ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesUpdate404Response.php b/src/Types/SharesUpdate404Response.php new file mode 100644 index 0000000..ec2bcd0 --- /dev/null +++ b/src/Types/SharesUpdate404Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/SharesUpdate404ResponseError.php b/src/Types/SharesUpdate404ResponseError.php new file mode 100644 index 0000000..e758720 --- /dev/null +++ b/src/Types/SharesUpdate404ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsCreate200ResponseTenant.php b/src/Types/TenantsCreate200ResponseTenant.php index acd9867..dc55cf0 100644 --- a/src/Types/TenantsCreate200ResponseTenant.php +++ b/src/Types/TenantsCreate200ResponseTenant.php @@ -25,6 +25,12 @@ class TenantsCreate200ResponseTenant extends JsonSerializableType #[JsonProperty('autoProvisioned')] public bool $autoProvisioned; + /** + * @var ?value-of $status + */ + #[JsonProperty('status')] + public ?string $status; + /** * @var float $createdAt */ @@ -37,6 +43,7 @@ class TenantsCreate200ResponseTenant extends JsonSerializableType * name: string, * autoProvisioned: bool, * createdAt: float, + * status?: ?value-of, * } $values */ public function __construct( @@ -45,6 +52,7 @@ public function __construct( $this->id = $values['id']; $this->name = $values['name']; $this->autoProvisioned = $values['autoProvisioned']; + $this->status = $values['status'] ?? null; $this->createdAt = $values['createdAt']; } diff --git a/src/Types/TenantsCreate200ResponseTenantStatus.php b/src/Types/TenantsCreate200ResponseTenantStatus.php new file mode 100644 index 0000000..4eb9d49 --- /dev/null +++ b/src/Types/TenantsCreate200ResponseTenantStatus.php @@ -0,0 +1,9 @@ + $status + */ + #[JsonProperty('status')] + public ?string $status; + /** * @var float $createdAt */ @@ -37,6 +43,7 @@ class TenantsGet200ResponseTenant extends JsonSerializableType * name: string, * autoProvisioned: bool, * createdAt: float, + * status?: ?value-of, * } $values */ public function __construct( @@ -45,6 +52,7 @@ public function __construct( $this->id = $values['id']; $this->name = $values['name']; $this->autoProvisioned = $values['autoProvisioned']; + $this->status = $values['status'] ?? null; $this->createdAt = $values['createdAt']; } diff --git a/src/Types/TenantsGet200ResponseTenantStatus.php b/src/Types/TenantsGet200ResponseTenantStatus.php new file mode 100644 index 0000000..bc3d250 --- /dev/null +++ b/src/Types/TenantsGet200ResponseTenantStatus.php @@ -0,0 +1,9 @@ + $status + */ + #[JsonProperty('status')] + public ?string $status; + /** * @var float $createdAt */ @@ -37,6 +43,7 @@ class TenantsList200ResponseTenantsItem extends JsonSerializableType * name: string, * autoProvisioned: bool, * createdAt: float, + * status?: ?value-of, * } $values */ public function __construct( @@ -45,6 +52,7 @@ public function __construct( $this->id = $values['id']; $this->name = $values['name']; $this->autoProvisioned = $values['autoProvisioned']; + $this->status = $values['status'] ?? null; $this->createdAt = $values['createdAt']; } diff --git a/src/Types/TenantsList200ResponseTenantsItemStatus.php b/src/Types/TenantsList200ResponseTenantsItemStatus.php new file mode 100644 index 0000000..cf4b0f8 --- /dev/null +++ b/src/Types/TenantsList200ResponseTenantsItemStatus.php @@ -0,0 +1,9 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsResumeResponseError.php b/src/Types/TenantsResumeResponseError.php new file mode 100644 index 0000000..26da978 --- /dev/null +++ b/src/Types/TenantsResumeResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsSuspendResponse.php b/src/Types/TenantsSuspendResponse.php new file mode 100644 index 0000000..8086755 --- /dev/null +++ b/src/Types/TenantsSuspendResponse.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsSuspendResponseError.php b/src/Types/TenantsSuspendResponseError.php new file mode 100644 index 0000000..ed9ff36 --- /dev/null +++ b/src/Types/TenantsSuspendResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsUsage200Response.php b/src/Types/TenantsUsage200Response.php new file mode 100644 index 0000000..edde51b --- /dev/null +++ b/src/Types/TenantsUsage200Response.php @@ -0,0 +1,58 @@ +tenantId = $values['tenantId']; + $this->periodStart = $values['periodStart']; + $this->periodEnd = $values['periodEnd']; + $this->metrics = $values['metrics']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsUsage200ResponseMetrics.php b/src/Types/TenantsUsage200ResponseMetrics.php new file mode 100644 index 0000000..9c015d6 --- /dev/null +++ b/src/Types/TenantsUsage200ResponseMetrics.php @@ -0,0 +1,50 @@ +pdfViews = $values['pdfViews']; + $this->pdfUploads = $values['pdfUploads']; + $this->storageBytes = $values['storageBytes']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsUsage400Response.php b/src/Types/TenantsUsage400Response.php new file mode 100644 index 0000000..c073275 --- /dev/null +++ b/src/Types/TenantsUsage400Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsUsage400ResponseError.php b/src/Types/TenantsUsage400ResponseError.php new file mode 100644 index 0000000..abc41f1 --- /dev/null +++ b/src/Types/TenantsUsage400ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsUsage404Response.php b/src/Types/TenantsUsage404Response.php new file mode 100644 index 0000000..5ca5b41 --- /dev/null +++ b/src/Types/TenantsUsage404Response.php @@ -0,0 +1,34 @@ +error = $values['error']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TenantsUsage404ResponseError.php b/src/Types/TenantsUsage404ResponseError.php new file mode 100644 index 0000000..0e39afa --- /dev/null +++ b/src/Types/TenantsUsage404ResponseError.php @@ -0,0 +1,42 @@ +code = $values['code']; + $this->message = $values['message']; + } + + /** + * @return string + */ + public function __toString(): string + { + return $this->toJson(); + } +} diff --git a/src/Types/TokensIssueRequestDoc.php b/src/Types/TokensIssueRequestDoc.php index 79c54ee..5049cad 100644 --- a/src/Types/TokensIssueRequestDoc.php +++ b/src/Types/TokensIssueRequestDoc.php @@ -56,6 +56,12 @@ class TokensIssueRequestDoc extends JsonSerializableType #[JsonProperty('groups'), ArrayType(['string'])] public ?array $groups; + /** + * @var ?array $origins + */ + #[JsonProperty('origins'), ArrayType(['string'])] + public ?array $origins; + /** * @var int $expiresIn */ @@ -73,6 +79,7 @@ class TokensIssueRequestDoc extends JsonSerializableType * displayName?: ?string, * groupId?: ?string, * groups?: ?array, + * origins?: ?array, * } $values */ public function __construct( @@ -86,6 +93,7 @@ public function __construct( $this->displayName = $values['displayName'] ?? null; $this->groupId = $values['groupId'] ?? null; $this->groups = $values['groups'] ?? null; + $this->origins = $values['origins'] ?? null; $this->expiresIn = $values['expiresIn']; } diff --git a/src/Types/TokensIssueRequestTenantScopeItemOne.php b/src/Types/TokensIssueRequestTenantScopeItemOne.php index aad997c..9b5122a 100644 --- a/src/Types/TokensIssueRequestTenantScopeItemOne.php +++ b/src/Types/TokensIssueRequestTenantScopeItemOne.php @@ -9,4 +9,5 @@ enum TokensIssueRequestTenantScopeItemOne: string case DocsDelete = "docs.delete"; case TokensIssueDoc = "tokens.issue-doc"; case TokensRevoke = "tokens.revoke"; + case SharesManage = "shares.manage"; }