diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index e54e4c1..768b61f 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: db1bb4da-054f-485f-8c6e-d42db3f1da90 management: - docChecksum: 17684e14e65fca2909aaf49de5c6b935 + docChecksum: bb7b102d1334d2d3e66e7cd8d8b866d8 docVersion: 0.4.0 - speakeasyVersion: 1.456.1 - generationVersion: 2.481.0 - releaseVersion: 0.46.3 - configChecksum: 70395cadadc90bcfec7b0db193c34b16 + speakeasyVersion: 1.462.2 + generationVersion: 2.486.1 + releaseVersion: 0.47.0 + configChecksum: 026d2eb83427eeb452300de5c320637d repoURL: https://github.com/speakeasy-api/speakeasy-client-sdk-php.git repoSubDirectory: . installationURL: https://github.com/speakeasy-api/speakeasy-client-sdk-php @@ -22,6 +22,7 @@ features: nameOverrides: 2.81.2 nullables: 1.0.0 responseFormat: 0.1.0 + retries: 0.1.0 serverIDs: 2.81.1 generatedFiles: - .gitattributes @@ -57,6 +58,8 @@ generatedFiles: - docs/Models/Operations/GetCodeSamplePreviewAsyncRequest.md - docs/Models/Operations/GetCodeSamplePreviewAsyncResponse.md - docs/Models/Operations/GetCodeSamplePreviewAsyncResponseBody.md + - docs/Models/Operations/GetCodeSamplesRequest.md + - docs/Models/Operations/GetCodeSamplesResponse.md - docs/Models/Operations/GetGitHubActionRequest.md - docs/Models/Operations/GetGitHubActionResponse.md - docs/Models/Operations/GetGithubSetupStateRequest.md @@ -205,6 +208,8 @@ generatedFiles: - docs/Models/Shared/Tag.md - docs/Models/Shared/TargetSDK.md - docs/Models/Shared/Type.md + - docs/Models/Shared/UsageSnippet.md + - docs/Models/Shared/UsageSnippets.md - docs/Models/Shared/User.md - docs/Models/Shared/V2Descriptor.md - docs/Models/Shared/WorkflowDocument.md @@ -218,6 +223,7 @@ generatedFiles: - docs/Models/Shared/Workspaces.md - docs/sdks/artifacts/README.md - docs/sdks/auth/README.md + - docs/sdks/codesamples/README.md - docs/sdks/events/README.md - docs/sdks/github/README.md - docs/sdks/organizations/README.md @@ -233,6 +239,7 @@ generatedFiles: - rector.php - src/Artifacts.php - src/Auth.php + - src/CodeSamples.php - src/Events.php - src/Github.php - src/Hooks/AfterErrorContext.php @@ -282,6 +289,8 @@ generatedFiles: - src/Models/Operations/GetCodeSamplePreviewAsyncRequest.php - src/Models/Operations/GetCodeSamplePreviewAsyncResponse.php - src/Models/Operations/GetCodeSamplePreviewAsyncResponseBody.php + - src/Models/Operations/GetCodeSamplesRequest.php + - src/Models/Operations/GetCodeSamplesResponse.php - src/Models/Operations/GetGitHubActionRequest.php - src/Models/Operations/GetGitHubActionResponse.php - src/Models/Operations/GetGithubSetupStateRequest.php @@ -430,6 +439,8 @@ generatedFiles: - src/Models/Shared/Tag.php - src/Models/Shared/TargetSDK.php - src/Models/Shared/Type.php + - src/Models/Shared/UsageSnippet.php + - src/Models/Shared/UsageSnippets.php - src/Models/Shared/User.php - src/Models/Shared/V2Descriptor.php - src/Models/Shared/WorkflowDocument.php @@ -463,12 +474,20 @@ generatedFiles: - src/Utils/JSON.php - src/Utils/MixedJSONHandler.php - src/Utils/MultipartMetadata.php + - src/Utils/Options.php - src/Utils/ParamsMetadata.php - src/Utils/PathParameters.php - src/Utils/PhpDocTypeParser.php - src/Utils/QueryParameters.php - src/Utils/RequestBodies.php - src/Utils/RequestMetadata.php + - src/Utils/Retry/PermanentError.php + - src/Utils/Retry/RetryConfig.php + - src/Utils/Retry/RetryConfigBackoff.php + - src/Utils/Retry/RetryConfigNone.php + - src/Utils/Retry/RetryStrategy.php + - src/Utils/Retry/RetryUtils.php + - src/Utils/Retry/TemporaryError.php - src/Utils/Security.php - src/Utils/SecurityClient.php - src/Utils/SecurityMetadata.php @@ -1670,4 +1689,14 @@ examples: responses: 4XX: application/json: {"message": "", "status_code": 844164} + getCodeSamples: + speakeasy-default-get-code-samples: + parameters: + query: + registry_url: "https://normal-making.name" + responses: + 2XX: + application/json: {"snippets": [{"code": "", "language": "", "operationId": ""}, {"code": "", "language": "", "operationId": ""}, {"code": "", "language": "", "operationId": ""}]} + 4XX: + application/json: {"message": "", "status_code": 458049} generatedTests: {} diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 0c7f892..76f401f 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -11,7 +11,7 @@ generation: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false php: - version: 0.46.3 + version: 0.47.0 additionalDependencies: autoload: {} autoload-dev: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 33a4e32..87640dd 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,21 @@ -speakeasyVersion: 1.456.1 +speakeasyVersion: 1.462.2 sources: my-source: sourceNamespace: my-source - sourceRevisionDigest: sha256:808a319a739d3dd037cfed14c9415c4e652b185a495a5714d3f7a93929ed849e - sourceBlobDigest: sha256:2b1030ee3c1d82bb205f4230146d4632dcd59cc07c2eb266d5f294390b1188c3 + sourceRevisionDigest: sha256:7b9fb099237d1f7df25f0e38cafedf3088749c59a436195b614812771bcfc4a5 + sourceBlobDigest: sha256:e7aec57fcab24b90b71218efd6d6ddec717e6187121af68b9910031461f3d529 tags: - latest - - speakeasy-sdk-regen-1734653761 + - speakeasy-sdk-regen-1735949733 - 0.4.0 targets: php-target: source: my-source sourceNamespace: my-source - sourceRevisionDigest: sha256:808a319a739d3dd037cfed14c9415c4e652b185a495a5714d3f7a93929ed849e - sourceBlobDigest: sha256:2b1030ee3c1d82bb205f4230146d4632dcd59cc07c2eb266d5f294390b1188c3 + sourceRevisionDigest: sha256:7b9fb099237d1f7df25f0e38cafedf3088749c59a436195b614812771bcfc4a5 + sourceBlobDigest: sha256:e7aec57fcab24b90b71218efd6d6ddec717e6187121af68b9910031461f3d529 codeSamplesNamespace: my-source-php-code-samples - codeSamplesRevisionDigest: sha256:251d55a348962095c4d037818831c5f2b383d3bf024812eae5703fac0ca48ac9 + codeSamplesRevisionDigest: sha256:49ec0f280d745c12c334dda94a0f77f6a3f8c3aa7d0bd4a5f178b5edc0899fd7 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 700cb29..44e0e4b 100755 --- a/README.md +++ b/README.md @@ -30,21 +30,22 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Shared\CodeSampleSchemaInput( - languages: [ - '', +$request = new Shared\RemoteSource( + inputs: [ + new Shared\RemoteDocument( + registryUrl: 'https://productive-swine.net', + ), ], - schemaFile: new Shared\SchemaFile( - content: '0xc3dD8BfBef', - fileName: 'example.file', + output: new Shared\RemoteDocument( + registryUrl: 'https://spiteful-apricot.info', ), ); -$response = $sdk->generateCodeSamplePreview( +$response = $sdk->artifacts->createRemoteSource( request: $request ); -if ($response->twoHundredApplicationJsonBytes !== null) { +if ($response->statusCode === 200) { // handle response } ``` @@ -76,6 +77,13 @@ if ($response->twoHundredApplicationJsonBytes !== null) { * [getAccess](docs/sdks/auth/README.md#getaccess) - Get access allowances for a particular workspace * [validateApiKey](docs/sdks/auth/README.md#validateapikey) - Validate the current api key. +### [codeSamples](docs/sdks/codesamples/README.md) + +* [generateCodeSamplePreview](docs/sdks/codesamples/README.md#generatecodesamplepreview) - Generate Code Sample previews from a file and configuration parameters. +* [generateCodeSamplePreviewAsync](docs/sdks/codesamples/README.md#generatecodesamplepreviewasync) - Initiate asynchronous Code Sample preview generation from a file and configuration parameters, receiving an async JobID response for polling. +* [getCodeSamplePreviewAsync](docs/sdks/codesamples/README.md#getcodesamplepreviewasync) - Poll for the result of an asynchronous Code Sample preview generation. +* [get](docs/sdks/codesamples/README.md#get) - Retrieve usage snippets from document stored in the registry + ### [events](docs/sdks/events/README.md) * [getEventsByTarget](docs/sdks/events/README.md#geteventsbytarget) - Load recent events for a particular workspace @@ -112,11 +120,6 @@ if ($response->twoHundredApplicationJsonBytes !== null) { * [getLintingReportSignedUrl](docs/sdks/reports/README.md#getlintingreportsignedurl) - Get the signed access url for the linting reports for a particular document. * [uploadReport](docs/sdks/reports/README.md#uploadreport) - Upload a report. -### [SDK](docs/sdks/sdk/README.md) - -* [generateCodeSamplePreview](docs/sdks/sdk/README.md#generatecodesamplepreview) - Generate Code Sample previews from a file and configuration parameters. -* [generateCodeSamplePreviewAsync](docs/sdks/sdk/README.md#generatecodesamplepreviewasync) - Initiate asynchronous Code Sample preview generation from a file and configuration parameters, receiving an async JobID response for polling. -* [getCodeSamplePreviewAsync](docs/sdks/sdk/README.md#getcodesamplepreviewasync) - Poll for the result of an asynchronous Code Sample preview generation. ### [shortURLs](docs/sdks/shorturls/README.md) @@ -198,6 +201,86 @@ if ($response->accessToken !== null) { ``` + +## Retries + +Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK. + +To change the default retry strategy for a single API call, simply provide an `Options` object built with a `RetryConfig` object to the call: +```php +declare(strict_types=1); + +require 'vendor/autoload.php'; + +use Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry; + +$security = new Shared\Security( + apiKey: '', +); + +$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); + +$request = new Operations\GetWorkspaceAccessRequest(); + +$response = $sdk->auth->getAccess( + request: $request, + options: Utils\Options->builder()->setRetryConfig( + new Retry\RetryConfigBackoff( + initialInterval: 1, + maxInterval: 50, + exponent: 1.1, + maxElapsedTime: 100, + retryConnectionErrors: false, + ))->build() +); + +if ($response->accessDetails !== null) { + // handle response +} +``` + +If you'd like to override the default retry strategy for all operations that support retries, you can pass a `RetryConfig` object to the `SDKBuilder->setRetryConfig` function when initializing the SDK: +```php +declare(strict_types=1); + +require 'vendor/autoload.php'; + +use Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry; + +$security = new Shared\Security( + apiKey: '', +); + +$sdk = SpeakeasyClientSDK\SDK::builder() + ->setRetryConfig( + new Retry\RetryConfigBackoff( + initialInterval: 1, + maxInterval: 50, + exponent: 1.1, + maxElapsedTime: 100, + retryConnectionErrors: false, + ) + ) + ->setSecurity($security)->build(); + +$request = new Operations\GetWorkspaceAccessRequest(); + +$response = $sdk->auth->getAccess( + request: $request +); + +if ($response->accessDetails !== null) { + // handle response +} +``` + + ## Error Handling @@ -212,11 +295,12 @@ By default an API error will raise a `Errorors\SDKException` exception, which ha | `$rawResponse` | *?\Psr\Http\Message\ResponseInterface* | The raw HTTP response | | `$body` | *string* | The response content | -When custom error responses are specified for an operation, the SDK may also throw their associated exception. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `generateCodeSamplePreview` method throws the following exceptions: +When custom error responses are specified for an operation, the SDK may also throw their associated exception. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `createRemoteSource` method throws the following exceptions: -| Error Type | Status Code | Content Type | -| -------------- | ----------- | ---------------- | -| Errorors\Error | 4XX, 5XX | application/json | +| Error Type | Status Code | Content Type | +| --------------------- | ----------- | ---------------- | +| Errorors\Error | 4XX | application/json | +| Errorors\SDKException | 5XX | \*/\* | ### Example @@ -235,21 +319,22 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); try { - $request = new Shared\CodeSampleSchemaInput( - languages: [ - '', + $request = new Shared\RemoteSource( + inputs: [ + new Shared\RemoteDocument( + registryUrl: 'https://productive-swine.net', + ), ], - schemaFile: new Shared\SchemaFile( - content: '0xc3dD8BfBef', - fileName: 'example.file', + output: new Shared\RemoteDocument( + registryUrl: 'https://spiteful-apricot.info', ), ); - $response = $sdk->generateCodeSamplePreview( + $response = $sdk->artifacts->createRemoteSource( request: $request ); - if ($response->twoHundredApplicationJsonBytes !== null) { + if ($response->statusCode === 200) { // handle response } } catch (Errorors\ErrorThrowable $e) { @@ -291,21 +376,22 @@ $sdk = SpeakeasyClientSDK\SDK::builder() ->setServer("prod") ->setSecurity($security)->build(); -$request = new Shared\CodeSampleSchemaInput( - languages: [ - '', +$request = new Shared\RemoteSource( + inputs: [ + new Shared\RemoteDocument( + registryUrl: 'https://productive-swine.net', + ), ], - schemaFile: new Shared\SchemaFile( - content: '0xc3dD8BfBef', - fileName: 'example.file', + output: new Shared\RemoteDocument( + registryUrl: 'https://spiteful-apricot.info', ), ); -$response = $sdk->generateCodeSamplePreview( +$response = $sdk->artifacts->createRemoteSource( request: $request ); -if ($response->twoHundredApplicationJsonBytes !== null) { +if ($response->statusCode === 200) { // handle response } ``` @@ -329,21 +415,22 @@ $sdk = SpeakeasyClientSDK\SDK::builder() ->setServerURL('https://api.prod.speakeasyapi.dev') ->setSecurity($security)->build(); -$request = new Shared\CodeSampleSchemaInput( - languages: [ - '', +$request = new Shared\RemoteSource( + inputs: [ + new Shared\RemoteDocument( + registryUrl: 'https://productive-swine.net', + ), ], - schemaFile: new Shared\SchemaFile( - content: '0xc3dD8BfBef', - fileName: 'example.file', + output: new Shared\RemoteDocument( + registryUrl: 'https://spiteful-apricot.info', ), ); -$response = $sdk->generateCodeSamplePreview( +$response = $sdk->artifacts->createRemoteSource( request: $request ); -if ($response->twoHundredApplicationJsonBytes !== null) { +if ($response->statusCode === 200) { // handle response } ``` @@ -365,6 +452,7 @@ For more information about the API: [The Speakeasy Platform Documentation](/docs * [SDK Example Usage](#sdk-example-usage) * [Available Resources and Operations](#available-resources-and-operations) * [Global Parameters](#global-parameters) + * [Retries](#retries) * [Error Handling](#error-handling) * [Server Selection](#server-selection) diff --git a/RELEASES.md b/RELEASES.md index ab18d1d..9613756 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1544,4 +1544,14 @@ Based on: ### Generated - [php v0.46.3] . ### Releases -- [Composer v0.46.3] https://packagist.org/packages/speakeasy-api/speakeasy-client-sdk-php#v0.46.3 - . \ No newline at end of file +- [Composer v0.46.3] https://packagist.org/packages/speakeasy-api/speakeasy-client-sdk-php#v0.46.3 - . + +## 2025-01-04 00:15:29 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.462.2 (2.486.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [php v0.47.0] . +### Releases +- [Composer v0.47.0] https://packagist.org/packages/speakeasy-api/speakeasy-client-sdk-php#v0.47.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index 00ae7a8..c1fb6a5 100644 --- a/USAGE.md +++ b/USAGE.md @@ -13,21 +13,22 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Shared\CodeSampleSchemaInput( - languages: [ - '', +$request = new Shared\RemoteSource( + inputs: [ + new Shared\RemoteDocument( + registryUrl: 'https://productive-swine.net', + ), ], - schemaFile: new Shared\SchemaFile( - content: '0xc3dD8BfBef', - fileName: 'example.file', + output: new Shared\RemoteDocument( + registryUrl: 'https://spiteful-apricot.info', ), ); -$response = $sdk->generateCodeSamplePreview( +$response = $sdk->artifacts->createRemoteSource( request: $request ); -if ($response->twoHundredApplicationJsonBytes !== null) { +if ($response->statusCode === 200) { // handle response } ``` diff --git a/docs/Models/Operations/GetCodeSamplesRequest.md b/docs/Models/Operations/GetCodeSamplesRequest.md new file mode 100644 index 0000000..103c542 --- /dev/null +++ b/docs/Models/Operations/GetCodeSamplesRequest.md @@ -0,0 +1,10 @@ +# GetCodeSamplesRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `registryUrl` | *string* | :heavy_check_mark: | The registry URL from which to retrieve the snippets. E.g. https://spec.speakeasy.com/org/ws/my-source | +| `languages` | array<*string*> | :heavy_minus_sign: | N/A | +| `operationIds` | array<*string*> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Operations/GetCodeSamplesResponse.md b/docs/Models/Operations/GetCodeSamplesResponse.md new file mode 100644 index 0000000..b37e253 --- /dev/null +++ b/docs/Models/Operations/GetCodeSamplesResponse.md @@ -0,0 +1,11 @@ +# GetCodeSamplesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `contentType` | *string* | :heavy_check_mark: | HTTP response content type for this operation | +| `statusCode` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `rawResponse` | [\Psr\Http\Message\ResponseInterface](https://www.php-fig.org/psr/psr-7/#33-psrhttpmessageresponseinterface) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `usageSnippets` | [?Shared\UsageSnippets](../../Models/Shared/UsageSnippets.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/Models/Shared/UsageSnippet.md b/docs/Models/Shared/UsageSnippet.md new file mode 100644 index 0000000..41858b9 --- /dev/null +++ b/docs/Models/Shared/UsageSnippet.md @@ -0,0 +1,10 @@ +# UsageSnippet + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `code` | *string* | :heavy_check_mark: | The code snippet | +| `language` | *string* | :heavy_check_mark: | The language of the snippet | +| `operationId` | *string* | :heavy_check_mark: | The operation ID for the snippet | \ No newline at end of file diff --git a/docs/Models/Shared/UsageSnippets.md b/docs/Models/Shared/UsageSnippets.md new file mode 100644 index 0000000..7827ff6 --- /dev/null +++ b/docs/Models/Shared/UsageSnippets.md @@ -0,0 +1,8 @@ +# UsageSnippets + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `snippets` | array<[Shared\UsageSnippet](../../Models/Shared/UsageSnippet.md)> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/sdks/codesamples/README.md b/docs/sdks/codesamples/README.md new file mode 100644 index 0000000..b217456 --- /dev/null +++ b/docs/sdks/codesamples/README.md @@ -0,0 +1,224 @@ +# CodeSamples +(*codeSamples*) + +## Overview + +REST APIs for retrieving Code Samples + +### Available Operations + +* [generateCodeSamplePreview](#generatecodesamplepreview) - Generate Code Sample previews from a file and configuration parameters. +* [generateCodeSamplePreviewAsync](#generatecodesamplepreviewasync) - Initiate asynchronous Code Sample preview generation from a file and configuration parameters, receiving an async JobID response for polling. +* [getCodeSamplePreviewAsync](#getcodesamplepreviewasync) - Poll for the result of an asynchronous Code Sample preview generation. +* [get](#get) - Retrieve usage snippets from document stored in the registry + +## generateCodeSamplePreview + +This endpoint generates Code Sample previews from a file and configuration parameters. + +### Example Usage + +```php +declare(strict_types=1); + +require 'vendor/autoload.php'; + +use Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Models\Shared; + +$security = new Shared\Security( + apiKey: '', +); + +$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); + +$request = new Shared\CodeSampleSchemaInput( + languages: [ + '', + ], + schemaFile: new Shared\SchemaFile( + content: '0xc3dD8BfBef', + fileName: 'example.file', + ), +); + +$response = $sdk->codeSamples->generateCodeSamplePreview( + request: $request +); + +if ($response->twoHundredApplicationJsonBytes !== null) { + // handle response +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `$request` | [Shared\CodeSampleSchemaInput](../../Models/Shared/CodeSampleSchemaInput.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[?Operations\GenerateCodeSamplePreviewResponse](../../Models/Operations/GenerateCodeSamplePreviewResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------- | ---------------- | ---------------- | +| Errorors\Error | 4XX, 5XX | application/json | + +## generateCodeSamplePreviewAsync + +This endpoint generates Code Sample previews from a file and configuration parameters, receiving an async JobID response for polling. + +### Example Usage + +```php +declare(strict_types=1); + +require 'vendor/autoload.php'; + +use Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Models\Shared; + +$security = new Shared\Security( + apiKey: '', +); + +$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); + +$request = new Shared\CodeSampleSchemaInput( + languages: [ + '', + ], + schemaFile: new Shared\SchemaFile( + content: '0xED5CDd177E', + fileName: 'example.file', + ), +); + +$response = $sdk->codeSamples->generateCodeSamplePreviewAsync( + request: $request +); + +if ($response->object !== null) { + // handle response +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `$request` | [Shared\CodeSampleSchemaInput](../../Models/Shared/CodeSampleSchemaInput.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[?Operations\GenerateCodeSamplePreviewAsyncResponse](../../Models/Operations/GenerateCodeSamplePreviewAsyncResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------- | ---------------- | ---------------- | +| Errorors\Error | 4XX, 5XX | application/json | + +## getCodeSamplePreviewAsync + +Poll for the result of an asynchronous Code Sample preview generation. + +### Example Usage + +```php +declare(strict_types=1); + +require 'vendor/autoload.php'; + +use Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Models\Shared; + +$security = new Shared\Security( + apiKey: '', +); + +$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); + +$request = new Operations\GetCodeSamplePreviewAsyncRequest( + jobID: '', +); + +$response = $sdk->codeSamples->getCodeSamplePreviewAsync( + request: $request +); + +if ($response->twoHundredApplicationJsonBytes !== null) { + // handle response +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `$request` | [Operations\GetCodeSamplePreviewAsyncRequest](../../Models/Operations/GetCodeSamplePreviewAsyncRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[?Operations\GetCodeSamplePreviewAsyncResponse](../../Models/Operations/GetCodeSamplePreviewAsyncResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------- | ---------------- | ---------------- | +| Errorors\Error | 4XX, 5XX | application/json | + +## get + +Retrieve usage snippets from document stored in the registry. Supports filtering by language and operation ID. + +### Example Usage + +```php +declare(strict_types=1); + +require 'vendor/autoload.php'; + +use Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Models\Shared; + +$security = new Shared\Security( + apiKey: '', +); + +$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); + +$request = new Operations\GetCodeSamplesRequest( + registryUrl: 'https://normal-making.name', +); + +$response = $sdk->codeSamples->get( + request: $request +); + +if ($response->usageSnippets !== null) { + // handle response +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `$request` | [Operations\GetCodeSamplesRequest](../../Models/Operations/GetCodeSamplesRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[?Operations\GetCodeSamplesResponse](../../Models/Operations/GetCodeSamplesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------- | --------------------- | --------------------- | +| Errorors\Error | 4XX | application/json | +| Errorors\SDKException | 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/events/README.md b/docs/sdks/events/README.md index ea2153f..9a8f410 100644 --- a/docs/sdks/events/README.md +++ b/docs/sdks/events/README.md @@ -36,6 +36,7 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\GetWorkspaceEventsByTargetRequest( targetId: '', + workspaceId: '', ); $response = $sdk->events->getEventsByTarget( @@ -134,7 +135,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\GetWorkspaceTargetsDeprecatedRequest(); +$request = new Operations\GetWorkspaceTargetsDeprecatedRequest( + workspaceId: '', +); $response = $sdk->events->getTargetsDeprecated( request: $request @@ -187,17 +190,18 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\PostWorkspaceEventsRequest( requestBody: [ new Shared\CliEvent( - createdAt: Utils\Utils::parseDateTime('2023-05-08T03:24:39.583Z'), + createdAt: Utils\Utils::parseDateTime('2024-05-07T03:24:39.583Z'), executionId: '', id: '', interactionType: Shared\InteractionType::Quickstart, - localStartedAt: Utils\Utils::parseDateTime('2023-09-09T05:59:33.876Z'), + localStartedAt: Utils\Utils::parseDateTime('2024-09-08T05:59:33.876Z'), speakeasyApiKeyName: '', speakeasyVersion: '', success: false, workspaceId: '', ), ], + workspaceId: '', ); $response = $sdk->events->post( @@ -247,7 +251,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\SearchWorkspaceEventsRequest(); +$request = new Operations\SearchWorkspaceEventsRequest( + workspaceId: '', +); $response = $sdk->events->search( request: $request diff --git a/docs/sdks/organizations/README.md b/docs/sdks/organizations/README.md index 2987176..2307462 100644 --- a/docs/sdks/organizations/README.md +++ b/docs/sdks/organizations/README.md @@ -78,13 +78,13 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Shared\Organization( accountType: Shared\AccountType::ScaleUp, - createdAt: Utils\Utils::parseDateTime('2023-12-01T17:06:07.804Z'), + createdAt: Utils\Utils::parseDateTime('2024-11-30T17:06:07.804Z'), id: '', name: '', slug: '', ssoActivated: false, telemetryDisabled: false, - updatedAt: Utils\Utils::parseDateTime('2023-04-03T12:48:32.253Z'), + updatedAt: Utils\Utils::parseDateTime('2024-04-02T12:48:32.253Z'), ); $response = $sdk->organizations->create( diff --git a/docs/sdks/sdk/README.md b/docs/sdks/sdk/README.md index 7a8a73c..74a4cee 100644 --- a/docs/sdks/sdk/README.md +++ b/docs/sdks/sdk/README.md @@ -8,167 +8,3 @@ The Speakeasy Platform Documentation ### Available Operations - -* [generateCodeSamplePreview](#generatecodesamplepreview) - Generate Code Sample previews from a file and configuration parameters. -* [generateCodeSamplePreviewAsync](#generatecodesamplepreviewasync) - Initiate asynchronous Code Sample preview generation from a file and configuration parameters, receiving an async JobID response for polling. -* [getCodeSamplePreviewAsync](#getcodesamplepreviewasync) - Poll for the result of an asynchronous Code Sample preview generation. - -## generateCodeSamplePreview - -This endpoint generates Code Sample previews from a file and configuration parameters. - -### Example Usage - -```php -declare(strict_types=1); - -require 'vendor/autoload.php'; - -use Speakeasy\SpeakeasyClientSDK; -use Speakeasy\SpeakeasyClientSDK\Models\Shared; - -$security = new Shared\Security( - apiKey: '', -); - -$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); - -$request = new Shared\CodeSampleSchemaInput( - languages: [ - '', - ], - schemaFile: new Shared\SchemaFile( - content: '0xc3dD8BfBef', - fileName: 'example.file', - ), -); - -$response = $sdk->generateCodeSamplePreview( - request: $request -); - -if ($response->twoHundredApplicationJsonBytes !== null) { - // handle response -} -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `$request` | [Shared\CodeSampleSchemaInput](../../Models/Shared/CodeSampleSchemaInput.md) | :heavy_check_mark: | The request object to use for the request. | - -### Response - -**[?Operations\GenerateCodeSamplePreviewResponse](../../Models/Operations/GenerateCodeSamplePreviewResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------- | ---------------- | ---------------- | -| Errorors\Error | 4XX, 5XX | application/json | - -## generateCodeSamplePreviewAsync - -This endpoint generates Code Sample previews from a file and configuration parameters, receiving an async JobID response for polling. - -### Example Usage - -```php -declare(strict_types=1); - -require 'vendor/autoload.php'; - -use Speakeasy\SpeakeasyClientSDK; -use Speakeasy\SpeakeasyClientSDK\Models\Shared; - -$security = new Shared\Security( - apiKey: '', -); - -$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); - -$request = new Shared\CodeSampleSchemaInput( - languages: [ - '', - ], - schemaFile: new Shared\SchemaFile( - content: '0xED5CDd177E', - fileName: 'example.file', - ), -); - -$response = $sdk->generateCodeSamplePreviewAsync( - request: $request -); - -if ($response->object !== null) { - // handle response -} -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `$request` | [Shared\CodeSampleSchemaInput](../../Models/Shared/CodeSampleSchemaInput.md) | :heavy_check_mark: | The request object to use for the request. | - -### Response - -**[?Operations\GenerateCodeSamplePreviewAsyncResponse](../../Models/Operations/GenerateCodeSamplePreviewAsyncResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------- | ---------------- | ---------------- | -| Errorors\Error | 4XX, 5XX | application/json | - -## getCodeSamplePreviewAsync - -Poll for the result of an asynchronous Code Sample preview generation. - -### Example Usage - -```php -declare(strict_types=1); - -require 'vendor/autoload.php'; - -use Speakeasy\SpeakeasyClientSDK; -use Speakeasy\SpeakeasyClientSDK\Models\Operations; -use Speakeasy\SpeakeasyClientSDK\Models\Shared; - -$security = new Shared\Security( - apiKey: '', -); - -$sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); - -$request = new Operations\GetCodeSamplePreviewAsyncRequest( - jobID: '', -); - -$response = $sdk->getCodeSamplePreviewAsync( - request: $request -); - -if ($response->twoHundredApplicationJsonBytes !== null) { - // handle response -} -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `$request` | [Operations\GetCodeSamplePreviewAsyncRequest](../../Models/Operations/GetCodeSamplePreviewAsyncRequest.md) | :heavy_check_mark: | The request object to use for the request. | - -### Response - -**[?Operations\GetCodeSamplePreviewAsyncResponse](../../Models/Operations/GetCodeSamplePreviewAsyncResponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------- | ---------------- | ---------------- | -| Errorors\Error | 4XX, 5XX | application/json | \ No newline at end of file diff --git a/docs/sdks/workspaces/README.md b/docs/sdks/workspaces/README.md index e788ef7..eb1a9c1 100644 --- a/docs/sdks/workspaces/README.md +++ b/docs/sdks/workspaces/README.md @@ -44,12 +44,12 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Shared\Workspace( - createdAt: Utils\Utils::parseDateTime('2023-06-18T07:14:55.338Z'), + createdAt: Utils\Utils::parseDateTime('2024-06-17T07:14:55.338Z'), id: '', name: '', organizationId: '', slug: '', - updatedAt: Utils\Utils::parseDateTime('2023-12-01T17:06:07.804Z'), + updatedAt: Utils\Utils::parseDateTime('2024-11-30T17:06:07.804Z'), verified: false, ); @@ -104,12 +104,13 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\CreateWorkspaceTokenRequest( workspaceToken: new Shared\WorkspaceToken( alg: '', - createdAt: Utils\Utils::parseDateTime('2022-08-16T02:33:00.784Z'), + createdAt: Utils\Utils::parseDateTime('2023-08-16T02:33:00.784Z'), id: '', key: '', name: '', workspaceId: '', ), + workspaceId: '', ); $response = $sdk->workspaces->createToken( @@ -161,6 +162,7 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\DeleteWorkspaceTokenRequest( tokenID: '', + workspaceId: '', ); $response = $sdk->workspaces->deleteToken( @@ -210,7 +212,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\GetWorkspaceRequest(); +$request = new Operations\GetWorkspaceRequest( + workspaceId: '', +); $response = $sdk->workspaces->getByID( request: $request @@ -301,7 +305,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\GetWorkspaceFeatureFlagsRequest(); +$request = new Operations\GetWorkspaceFeatureFlagsRequest( + workspaceId: '', +); $response = $sdk->workspaces->getFeatureFlags( request: $request @@ -350,7 +356,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\GetWorkspaceSettingsRequest(); +$request = new Operations\GetWorkspaceSettingsRequest( + workspaceId: '', +); $response = $sdk->workspaces->getSettings( request: $request @@ -399,7 +407,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\GetWorkspaceTeamRequest(); +$request = new Operations\GetWorkspaceTeamRequest( + workspaceId: '', +); $response = $sdk->workspaces->getTeam( request: $request @@ -448,7 +458,9 @@ $security = new Shared\Security( $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); -$request = new Operations\GetWorkspaceTokensRequest(); +$request = new Operations\GetWorkspaceTokensRequest( + workspaceId: '', +); $response = $sdk->workspaces->getTokens( request: $request @@ -541,6 +553,7 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\GrantUserAccessToWorkspaceRequest( email: 'Lucinda.Batz8@hotmail.com', + workspaceId: '', ); $response = $sdk->workspaces->grantAccess( @@ -592,6 +605,7 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\RevokeUserAccessToWorkspaceRequest( userId: '', + workspaceId: '', ); $response = $sdk->workspaces->revokeAccess( @@ -644,14 +658,15 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\UpdateWorkspaceDetailsRequest( workspace: new Shared\Workspace( - createdAt: Utils\Utils::parseDateTime('2024-07-28T19:04:48.565Z'), + createdAt: Utils\Utils::parseDateTime('2025-07-28T19:04:48.565Z'), id: '', name: '', organizationId: '', slug: '', - updatedAt: Utils\Utils::parseDateTime('2023-10-17T10:52:42.015Z'), + updatedAt: Utils\Utils::parseDateTime('2024-10-16T10:52:42.015Z'), verified: false, ), + workspaceId: '', ); $response = $sdk->workspaces->update( @@ -704,11 +719,12 @@ $sdk = SpeakeasyClientSDK\SDK::builder()->setSecurity($security)->build(); $request = new Operations\UpdateWorkspaceSettingsRequest( workspaceSettings: new Shared\WorkspaceSettings( - createdAt: Utils\Utils::parseDateTime('2022-07-05T11:43:28.305Z'), - updatedAt: Utils\Utils::parseDateTime('2023-05-15T05:39:21.874Z'), + createdAt: Utils\Utils::parseDateTime('2023-07-05T11:43:28.305Z'), + updatedAt: Utils\Utils::parseDateTime('2024-05-14T05:39:21.874Z'), webhookUrl: 'https://grown-pharmacopoeia.net', workspaceId: '', ), + workspaceId: '', ); $response = $sdk->workspaces->updateSettings( diff --git a/src/Artifacts.php b/src/Artifacts.php index 9dec910..1f1ca5e 100644 --- a/src/Artifacts.php +++ b/src/Artifacts.php @@ -12,6 +12,7 @@ use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Artifacts { @@ -51,25 +52,25 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\CreateRemoteSourceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function createRemoteSource(?Shared\RemoteSource $request = null): Operations\CreateRemoteSourceResponse + public function createRemoteSource(?Shared\RemoteSource $request = null, ?Options $options = null): Operations\CreateRemoteSourceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/remote_sources'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body !== null) { - $options = array_merge_recursive($options, $body); + $httpOptions = array_merge_recursive($httpOptions, $body); } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('createRemoteSource', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -118,21 +119,21 @@ public function createRemoteSource(?Shared\RemoteSource $request = null): Operat * @return Operations\GetBlobResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getBlob(Operations\GetBlobRequest $request): Operations\GetBlobResponse + public function getBlob(Operations\GetBlobRequest $request, ?Options $options = null): Operations\GetBlobResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/oci/v2/{organization_slug}/{workspace_slug}/{namespace_name}/blobs/{digest}', Operations\GetBlobRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/octet-stream'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/octet-stream'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getBlob', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -187,21 +188,21 @@ public function getBlob(Operations\GetBlobRequest $request): Operations\GetBlobR * @return Operations\GetManifestResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getManifest(Operations\GetManifestRequest $request): Operations\GetManifestResponse + public function getManifest(Operations\GetManifestRequest $request, ?Options $options = null): Operations\GetManifestResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/oci/v2/{organization_slug}/{workspace_slug}/{namespace_name}/manifests/{revision_reference}', Operations\GetManifestRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/vnd.oci.image.manifest.v1+json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/vnd.oci.image.manifest.v1+json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getManifest', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -258,21 +259,21 @@ public function getManifest(Operations\GetManifestRequest $request): Operations\ * @return Operations\GetNamespacesResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getNamespaces(): Operations\GetNamespacesResponse + public function getNamespaces(?Options $options = null): Operations\GetNamespacesResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/namespaces'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getNamespaces', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -330,24 +331,24 @@ public function getNamespaces(): Operations\GetNamespacesResponse * @return Operations\GetRevisionsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getRevisions(Operations\GetRevisionsRequest $request): Operations\GetRevisionsResponse + public function getRevisions(Operations\GetRevisionsRequest $request, ?Options $options = null): Operations\GetRevisionsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/namespaces/{namespace_name}/revisions', Operations\GetRevisionsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetRevisionsRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getRevisions', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -405,21 +406,21 @@ public function getRevisions(Operations\GetRevisionsRequest $request): Operation * @return Operations\GetTagsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getTags(Operations\GetTagsRequest $request): Operations\GetTagsResponse + public function getTags(Operations\GetTagsRequest $request, ?Options $options = null): Operations\GetTagsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/namespaces/{namespace_name}/tags', Operations\GetTagsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getTags', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -477,24 +478,24 @@ public function getTags(Operations\GetTagsRequest $request): Operations\GetTagsR * @return Operations\ListRemoteSourcesResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function listRemoteSources(Operations\ListRemoteSourcesRequest $request): Operations\ListRemoteSourcesResponse + public function listRemoteSources(Operations\ListRemoteSourcesRequest $request, ?Options $options = null): Operations\ListRemoteSourcesResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/remote_sources'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\ListRemoteSourcesRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('listRemoteSources', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -552,25 +553,25 @@ public function listRemoteSources(Operations\ListRemoteSourcesRequest $request): * @return Operations\PostTagsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function postTags(Operations\PostTagsRequest $request): Operations\PostTagsResponse + public function postTags(Operations\PostTagsRequest $request, ?Options $options = null): Operations\PostTagsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/namespaces/{namespace_name}/tags', Operations\PostTagsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'addTags', 'json'); if ($body !== null) { - $options = array_merge_recursive($options, $body); + $httpOptions = array_merge_recursive($httpOptions, $body); } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('postTags', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -619,25 +620,25 @@ public function postTags(Operations\PostTagsRequest $request): Operations\PostTa * @return Operations\PreflightResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function preflight(?Shared\PreflightRequest $request = null): Operations\PreflightResponse + public function preflight(?Shared\PreflightRequest $request = null, ?Options $options = null): Operations\PreflightResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/preflight'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body !== null) { - $options = array_merge_recursive($options, $body); + $httpOptions = array_merge_recursive($httpOptions, $body); } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('preflight', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -695,25 +696,25 @@ public function preflight(?Shared\PreflightRequest $request = null): Operations\ * @return Operations\SetVisibilityResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function setVisibility(Operations\SetVisibilityRequest $request): Operations\SetVisibilityResponse + public function setVisibility(Operations\SetVisibilityRequest $request, ?Options $options = null): Operations\SetVisibilityResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/artifacts/namespaces/{namespace_name}/visibility', Operations\SetVisibilityRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'requestBody', 'json'); if ($body !== null) { - $options = array_merge_recursive($options, $body); + $httpOptions = array_merge_recursive($httpOptions, $body); } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('setVisibility', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Auth.php b/src/Auth.php index a774545..427e8f6 100644 --- a/src/Auth.php +++ b/src/Auth.php @@ -11,6 +11,9 @@ use Speakeasy\Serializer\DeserializationContext; use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry\RetryUtils; class Auth { @@ -50,24 +53,24 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\GetAccessTokenResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getAccessToken(Operations\GetAccessTokenRequest $request): Operations\GetAccessTokenResponse + public function getAccessToken(Operations\GetAccessTokenRequest $request, ?Options $options = null): Operations\GetAccessTokenResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/auth/access_token'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetAccessTokenRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getAccessToken', null, null); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -124,21 +127,21 @@ public function getAccessToken(Operations\GetAccessTokenRequest $request): Opera * @return Operations\GetUserResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getUser(): Operations\GetUserResponse + public function getUser(?Options $options = null): Operations\GetUserResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/user'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getUser', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -198,24 +201,51 @@ public function getUser(): Operations\GetUserResponse * @return Operations\GetWorkspaceAccessResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getAccess(?Operations\GetWorkspaceAccessRequest $request = null): Operations\GetWorkspaceAccessResponse + public function getAccess(?Operations\GetWorkspaceAccessRequest $request = null, ?Options $options = null): Operations\GetWorkspaceAccessResponse { + $retryConfig = null; + if ($options) { + $retryConfig = $options->retryConfig; + } + if ($retryConfig === null && $this->sdkConfiguration->retryConfig) { + $retryConfig = $this->sdkConfiguration->retryConfig; + } else { + $retryConfig = new Retry\RetryConfigBackoff( + initialIntervalMs: 100, + maxIntervalMs: 2000, + exponent: 1.5, + maxElapsedTimeMs: 60000, + retryConnectionErrors: true, + ); + } + $retryCodes = null; + if ($options) { + $retryCodes = $options->retryCodes; + } + if ($retryCodes === null) { + $retryCodes = [ + '408', + '500', + '502', + '503', + ]; + } $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/access'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetWorkspaceAccessRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceAccess', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = RetryUtils::retryWrapper(fn () => $this->sdkConfiguration->client->send($httpRequest, $httpOptions), $retryConfig, $retryCodes); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -261,21 +291,21 @@ public function getAccess(?Operations\GetWorkspaceAccessRequest $request = null) * @return Operations\ValidateApiKeyResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function validateApiKey(): Operations\ValidateApiKeyResponse + public function validateApiKey(?Options $options = null): Operations\ValidateApiKeyResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/auth/validate'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('validateApiKey', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/CodeSamples.php b/src/CodeSamples.php new file mode 100644 index 0000000..c9f7a2a --- /dev/null +++ b/src/CodeSamples.php @@ -0,0 +1,382 @@ +sdkConfiguration = $sdkConfig; + } + /** + * @param string $baseUrl + * @param array $urlVariables + * + * @return string + */ + public function getUrl(string $baseUrl, array $urlVariables): string + { + $serverDetails = $this->sdkConfiguration->getServerDetails(); + + if ($baseUrl == null) { + $baseUrl = $serverDetails->baseUrl; + } + + if ($urlVariables == null) { + $urlVariables = $serverDetails->options; + } + + return Utils\Utils::templateUrl($baseUrl, $urlVariables); + } + + /** + * Generate Code Sample previews from a file and configuration parameters. + * + * This endpoint generates Code Sample previews from a file and configuration parameters. + * + * @param Shared\CodeSampleSchemaInput $request + * @return Operations\GenerateCodeSamplePreviewResponse + * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException + */ + public function generateCodeSamplePreview(Shared\CodeSampleSchemaInput $request, ?Options $options = null): Operations\GenerateCodeSamplePreviewResponse + { + $baseUrl = $this->sdkConfiguration->getServerUrl(); + $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample/preview'); + $urlOverride = null; + $httpOptions = ['http_errors' => false]; + $body = Utils\Utils::serializeRequestBody($request, 'request', 'multipart'); + if ($body === null) { + throw new \Exception('Request body is required'); + } + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json;q=1, application/x-yaml;q=0'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); + $hookContext = new HookContext('generateCodeSamplePreview', null, $this->sdkConfiguration->securitySource); + $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); + $httpRequest = Utils\Utils::removeHeaders($httpRequest); + try { + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); + } catch (\GuzzleHttp\Exception\GuzzleException $error) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); + if ($res !== null) { + $httpResponse = $res; + } + } + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $statusCode = $httpResponse->getStatusCode(); + if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); + if ($res !== null) { + $httpResponse = $res; + } + } + if ($statusCode == 200) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $obj = $httpResponse->getBody()->getContents(); + + return new Operations\GenerateCodeSamplePreviewResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + twoHundredApplicationJsonBytes: $obj); + } elseif (Utils\Utils::matchContentType($contentType, 'application/x-yaml')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $obj = $httpResponse->getBody()->getContents(); + + return new Operations\GenerateCodeSamplePreviewResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + twoHundredApplicationXYamlBytes: $obj); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } elseif ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + throw $obj->toException(); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } + + /** + * Initiate asynchronous Code Sample preview generation from a file and configuration parameters, receiving an async JobID response for polling. + * + * This endpoint generates Code Sample previews from a file and configuration parameters, receiving an async JobID response for polling. + * + * @param Shared\CodeSampleSchemaInput $request + * @return Operations\GenerateCodeSamplePreviewAsyncResponse + * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException + */ + public function generateCodeSamplePreviewAsync(Shared\CodeSampleSchemaInput $request, ?Options $options = null): Operations\GenerateCodeSamplePreviewAsyncResponse + { + $baseUrl = $this->sdkConfiguration->getServerUrl(); + $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample/preview/async'); + $urlOverride = null; + $httpOptions = ['http_errors' => false]; + $body = Utils\Utils::serializeRequestBody($request, 'request', 'multipart'); + if ($body === null) { + throw new \Exception('Request body is required'); + } + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); + $hookContext = new HookContext('generateCodeSamplePreviewAsync', null, $this->sdkConfiguration->securitySource); + $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); + $httpRequest = Utils\Utils::removeHeaders($httpRequest); + try { + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); + } catch (\GuzzleHttp\Exception\GuzzleException $error) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); + if ($res !== null) { + $httpResponse = $res; + } + } + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $statusCode = $httpResponse->getStatusCode(); + if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); + if ($res !== null) { + $httpResponse = $res; + } + } + if ($statusCode == 202) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Operations\GenerateCodeSamplePreviewAsyncResponseBody', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + $response = new Operations\GenerateCodeSamplePreviewAsyncResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + object: $obj); + + return $response; + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } elseif ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + throw $obj->toException(); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } + + /** + * Poll for the result of an asynchronous Code Sample preview generation. + * + * Poll for the result of an asynchronous Code Sample preview generation. + * + * @param Operations\GetCodeSamplePreviewAsyncRequest $request + * @return Operations\GetCodeSamplePreviewAsyncResponse + * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException + */ + public function getCodeSamplePreviewAsync(Operations\GetCodeSamplePreviewAsyncRequest $request, ?Options $options = null): Operations\GetCodeSamplePreviewAsyncResponse + { + $baseUrl = $this->sdkConfiguration->getServerUrl(); + $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample/preview/async/{jobID}', Operations\GetCodeSamplePreviewAsyncRequest::class, $request, $this->sdkConfiguration->globals); + $urlOverride = null; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json;q=1, application/x-yaml;q=0'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); + $hookContext = new HookContext('getCodeSamplePreviewAsync', null, $this->sdkConfiguration->securitySource); + $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); + $httpRequest = Utils\Utils::removeHeaders($httpRequest); + try { + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); + } catch (\GuzzleHttp\Exception\GuzzleException $error) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); + if ($res !== null) { + $httpResponse = $res; + } + } + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $statusCode = $httpResponse->getStatusCode(); + if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); + if ($res !== null) { + $httpResponse = $res; + } + } + if ($statusCode == 200) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $obj = $httpResponse->getBody()->getContents(); + + return new Operations\GetCodeSamplePreviewAsyncResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + twoHundredApplicationJsonBytes: $obj); + } elseif (Utils\Utils::matchContentType($contentType, 'application/x-yaml')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $obj = $httpResponse->getBody()->getContents(); + + return new Operations\GetCodeSamplePreviewAsyncResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + twoHundredApplicationXYamlBytes: $obj); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } elseif ($statusCode == 202) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Operations\GetCodeSamplePreviewAsyncResponseBody', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + $response = new Operations\GetCodeSamplePreviewAsyncResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + twoHundredAndTwoApplicationJsonObject: $obj); + + return $response; + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } elseif ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + throw $obj->toException(); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } + + /** + * Retrieve usage snippets from document stored in the registry + * + * Retrieve usage snippets from document stored in the registry. Supports filtering by language and operation ID. + * + * @param Operations\GetCodeSamplesRequest $request + * @return Operations\GetCodeSamplesResponse + * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException + */ + public function get(Operations\GetCodeSamplesRequest $request, ?Options $options = null): Operations\GetCodeSamplesResponse + { + $baseUrl = $this->sdkConfiguration->getServerUrl(); + $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample'); + $urlOverride = null; + $httpOptions = ['http_errors' => false]; + + $qp = Utils\Utils::getQueryParams(Operations\GetCodeSamplesRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); + $hookContext = new HookContext('getCodeSamples', null, $this->sdkConfiguration->securitySource); + $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); + $httpRequest = Utils\Utils::removeHeaders($httpRequest); + try { + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); + } catch (\GuzzleHttp\Exception\GuzzleException $error) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); + if ($res !== null) { + $httpResponse = $res; + } + } + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $statusCode = $httpResponse->getStatusCode(); + if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { + $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); + if ($res !== null) { + $httpResponse = $res; + } + } + if ($statusCode >= 200 && $statusCode < 300) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Shared\UsageSnippets', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + $response = new Operations\GetCodeSamplesResponse( + statusCode: $statusCode, + contentType: $contentType, + rawResponse: $httpResponse, + usageSnippets: $obj); + + return $response; + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } elseif ($statusCode >= 400 && $statusCode < 500) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); + + $serializer = Utils\JSON::createSerializer(); + $responseData = (string) $httpResponse->getBody(); + $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); + throw $obj->toException(); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } elseif ($statusCode >= 500 && $statusCode < 600) { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('API error occurred', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } else { + throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); + } + } + +} \ No newline at end of file diff --git a/src/Events.php b/src/Events.php index 1b3dba5..1fb41db 100644 --- a/src/Events.php +++ b/src/Events.php @@ -11,6 +11,9 @@ use Speakeasy\Serializer\DeserializationContext; use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry\RetryUtils; class Events { @@ -50,24 +53,24 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\GetWorkspaceEventsByTargetResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getEventsByTarget(Operations\GetWorkspaceEventsByTargetRequest $request): Operations\GetWorkspaceEventsByTargetResponse + public function getEventsByTarget(Operations\GetWorkspaceEventsByTargetRequest $request, ?Options $options = null): Operations\GetWorkspaceEventsByTargetResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/events/targets/{target_id}/events', Operations\GetWorkspaceEventsByTargetRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetWorkspaceEventsByTargetRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceEventsByTarget', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -125,24 +128,24 @@ public function getEventsByTarget(Operations\GetWorkspaceEventsByTargetRequest $ * @return Operations\GetWorkspaceTargetsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getTargets(?Operations\GetWorkspaceTargetsRequest $request = null): Operations\GetWorkspaceTargetsResponse + public function getTargets(?Operations\GetWorkspaceTargetsRequest $request = null, ?Options $options = null): Operations\GetWorkspaceTargetsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/events/targets'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetWorkspaceTargetsRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceTargets', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -200,24 +203,24 @@ public function getTargets(?Operations\GetWorkspaceTargetsRequest $request = nul * @return Operations\GetWorkspaceTargetsDeprecatedResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getTargetsDeprecated(?Operations\GetWorkspaceTargetsDeprecatedRequest $request = null): Operations\GetWorkspaceTargetsDeprecatedResponse + public function getTargetsDeprecated(?Operations\GetWorkspaceTargetsDeprecatedRequest $request = null, ?Options $options = null): Operations\GetWorkspaceTargetsDeprecatedResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/events/targets', Operations\GetWorkspaceTargetsDeprecatedRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetWorkspaceTargetsDeprecatedRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceTargetsDeprecated', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -277,26 +280,53 @@ public function getTargetsDeprecated(?Operations\GetWorkspaceTargetsDeprecatedRe * @return Operations\PostWorkspaceEventsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function post(Operations\PostWorkspaceEventsRequest $request): Operations\PostWorkspaceEventsResponse + public function post(Operations\PostWorkspaceEventsRequest $request, ?Options $options = null): Operations\PostWorkspaceEventsResponse { + $retryConfig = null; + if ($options) { + $retryConfig = $options->retryConfig; + } + if ($retryConfig === null && $this->sdkConfiguration->retryConfig) { + $retryConfig = $this->sdkConfiguration->retryConfig; + } else { + $retryConfig = new Retry\RetryConfigBackoff( + initialIntervalMs: 100, + maxIntervalMs: 2000, + exponent: 1.5, + maxElapsedTimeMs: 60000, + retryConnectionErrors: true, + ); + } + $retryCodes = null; + if ($options) { + $retryCodes = $options->retryCodes; + } + if ($retryCodes === null) { + $retryCodes = [ + '408', + '500', + '502', + '503', + ]; + } $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/events', Operations\PostWorkspaceEventsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'requestBody', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('postWorkspaceEvents', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = RetryUtils::retryWrapper(fn () => $this->sdkConfiguration->client->send($httpRequest, $httpOptions), $retryConfig, $retryCodes); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -345,24 +375,24 @@ public function post(Operations\PostWorkspaceEventsRequest $request): Operations * @return Operations\SearchWorkspaceEventsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function search(?Operations\SearchWorkspaceEventsRequest $request = null): Operations\SearchWorkspaceEventsResponse + public function search(?Operations\SearchWorkspaceEventsRequest $request = null, ?Options $options = null): Operations\SearchWorkspaceEventsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/events', Operations\SearchWorkspaceEventsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\SearchWorkspaceEventsRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('searchWorkspaceEvents', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Github.php b/src/Github.php index 3a6ccb4..0a7b183 100644 --- a/src/Github.php +++ b/src/Github.php @@ -12,6 +12,7 @@ use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Github { @@ -51,24 +52,24 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\CheckGithubAccessResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function checkAccess(Operations\CheckGithubAccessRequest $request): Operations\CheckGithubAccessResponse + public function checkAccess(Operations\CheckGithubAccessRequest $request, ?Options $options = null): Operations\CheckGithubAccessResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/check_access'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\CheckGithubAccessRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('checkGithubAccess', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -117,24 +118,24 @@ public function checkAccess(Operations\CheckGithubAccessRequest $request): Opera * @return Operations\GetGitHubActionResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getAction(Operations\GetGitHubActionRequest $request): Operations\GetGitHubActionResponse + public function getAction(Operations\GetGitHubActionRequest $request, ?Options $options = null): Operations\GetGitHubActionResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/action'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetGitHubActionRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getGitHubAction', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -192,24 +193,24 @@ public function getAction(Operations\GetGitHubActionRequest $request): Operation * @return Operations\GetGithubSetupStateResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getSetup(Operations\GetGithubSetupStateRequest $request): Operations\GetGithubSetupStateResponse + public function getSetup(Operations\GetGithubSetupStateRequest $request, ?Options $options = null): Operations\GetGithubSetupStateResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/setup'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GetGithubSetupStateRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getGithubSetupState', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -267,24 +268,24 @@ public function getSetup(Operations\GetGithubSetupStateRequest $request): Operat * @return Operations\GithubCheckPublishingPRsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function checkPublishingPRs(Operations\GithubCheckPublishingPRsRequest $request): Operations\GithubCheckPublishingPRsResponse + public function checkPublishingPRs(Operations\GithubCheckPublishingPRsRequest $request, ?Options $options = null): Operations\GithubCheckPublishingPRsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/publishing_prs'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GithubCheckPublishingPRsRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('githubCheckPublishingPRs', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -342,24 +343,24 @@ public function checkPublishingPRs(Operations\GithubCheckPublishingPRsRequest $r * @return Operations\GithubCheckPublishingSecretsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function checkPublishingSecrets(Operations\GithubCheckPublishingSecretsRequest $request): Operations\GithubCheckPublishingSecretsResponse + public function checkPublishingSecrets(Operations\GithubCheckPublishingSecretsRequest $request, ?Options $options = null): Operations\GithubCheckPublishingSecretsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/publishing_secrets'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\GithubCheckPublishingSecretsRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('githubCheckPublishingSecrets', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -417,26 +418,26 @@ public function checkPublishingSecrets(Operations\GithubCheckPublishingSecretsRe * @return Operations\GithubConfigureCodeSamplesResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function configureCodeSamples(Shared\GithubConfigureCodeSamplesRequest $request): Operations\GithubConfigureCodeSamplesResponse + public function configureCodeSamples(Shared\GithubConfigureCodeSamplesRequest $request, ?Options $options = null): Operations\GithubConfigureCodeSamplesResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/configure_code_samples'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('githubConfigureCodeSamples', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -494,26 +495,26 @@ public function configureCodeSamples(Shared\GithubConfigureCodeSamplesRequest $r * @return Operations\GithubConfigureMintlifyRepoResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function configureMintlifyRepo(Shared\GithubConfigureMintlifyRepoRequest $request): Operations\GithubConfigureMintlifyRepoResponse + public function configureMintlifyRepo(Shared\GithubConfigureMintlifyRepoRequest $request, ?Options $options = null): Operations\GithubConfigureMintlifyRepoResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/configure_mintlify_repo'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('githubConfigureMintlifyRepo', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -562,26 +563,26 @@ public function configureMintlifyRepo(Shared\GithubConfigureMintlifyRepoRequest * @return Operations\GithubConfigureTargetResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function configureTarget(Shared\GithubConfigureTargetRequest $request): Operations\GithubConfigureTargetResponse + public function configureTarget(Shared\GithubConfigureTargetRequest $request, ?Options $options = null): Operations\GithubConfigureTargetResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/configure_target'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('githubConfigureTarget', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -630,26 +631,26 @@ public function configureTarget(Shared\GithubConfigureTargetRequest $request): O * @return Operations\GithubStorePublishingSecretsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function storePublishingSecrets(Shared\GithubStorePublishingSecretsRequest $request): Operations\GithubStorePublishingSecretsResponse + public function storePublishingSecrets(Shared\GithubStorePublishingSecretsRequest $request, ?Options $options = null): Operations\GithubStorePublishingSecretsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/publishing_secrets'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('githubStorePublishingSecrets', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -698,26 +699,26 @@ public function storePublishingSecrets(Shared\GithubStorePublishingSecretsReques * @return Operations\GithubTriggerActionResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function triggerAction(Shared\GithubTriggerActionRequest $request): Operations\GithubTriggerActionResponse + public function triggerAction(Shared\GithubTriggerActionRequest $request, ?Options $options = null): Operations\GithubTriggerActionResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/trigger_action'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('githubTriggerAction', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -766,24 +767,24 @@ public function triggerAction(Shared\GithubTriggerActionRequest $request): Opera * @return Operations\LinkGithubAccessResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function linkGithub(?Operations\LinkGithubAccessRequest $request = null): Operations\LinkGithubAccessResponse + public function linkGithub(?Operations\LinkGithubAccessRequest $request = null, ?Options $options = null): Operations\LinkGithubAccessResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/github/link'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $qp = Utils\Utils::getQueryParams(Operations\LinkGithubAccessRequest::class, $request, $urlOverride, $this->sdkConfiguration->globals); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('linkGithubAccess', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions['query'] = Utils\QueryParameters::standardizeQueryParams($httpRequest, $qp); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Models/Operations/GetCodeSamplesRequest.php b/src/Models/Operations/GetCodeSamplesRequest.php new file mode 100644 index 0000000..c843eb6 --- /dev/null +++ b/src/Models/Operations/GetCodeSamplesRequest.php @@ -0,0 +1,49 @@ + $languages + */ + #[SpeakeasyMetadata('queryParam:style=form,explode=true,name=languages')] + public ?array $languages = null; + + /** + * $operationIds + * + * @var ?array $operationIds + */ + #[SpeakeasyMetadata('queryParam:style=form,explode=true,name=operation_ids')] + public ?array $operationIds = null; + + /** + * @param string $registryUrl + * @param ?array $languages + * @param ?array $operationIds + */ + public function __construct(string $registryUrl, ?array $languages = null, ?array $operationIds = null) + { + $this->registryUrl = $registryUrl; + $this->languages = $languages; + $this->operationIds = $operationIds; + } +} \ No newline at end of file diff --git a/src/Models/Operations/GetCodeSamplesResponse.php b/src/Models/Operations/GetCodeSamplesResponse.php new file mode 100644 index 0000000..f92ad00 --- /dev/null +++ b/src/Models/Operations/GetCodeSamplesResponse.php @@ -0,0 +1,55 @@ +contentType = $contentType; + $this->statusCode = $statusCode; + $this->rawResponse = $rawResponse; + $this->usageSnippets = $usageSnippets; + } +} \ No newline at end of file diff --git a/src/Models/Shared/UsageSnippet.php b/src/Models/Shared/UsageSnippet.php new file mode 100644 index 0000000..9e9cc50 --- /dev/null +++ b/src/Models/Shared/UsageSnippet.php @@ -0,0 +1,49 @@ +code = $code; + $this->language = $language; + $this->operationId = $operationId; + } +} \ No newline at end of file diff --git a/src/Models/Shared/UsageSnippets.php b/src/Models/Shared/UsageSnippets.php new file mode 100644 index 0000000..4f5dc0f --- /dev/null +++ b/src/Models/Shared/UsageSnippets.php @@ -0,0 +1,30 @@ + $snippets + */ + #[\Speakeasy\Serializer\Annotation\SerializedName('snippets')] + #[\Speakeasy\Serializer\Annotation\Type('array<\Speakeasy\SpeakeasyClientSDK\Models\Shared\UsageSnippet>')] + public array $snippets; + + /** + * @param array $snippets + */ + public function __construct(array $snippets) + { + $this->snippets = $snippets; + } +} \ No newline at end of file diff --git a/src/Organizations.php b/src/Organizations.php index d5c2fb5..425492c 100644 --- a/src/Organizations.php +++ b/src/Organizations.php @@ -12,6 +12,7 @@ use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Organizations { @@ -52,21 +53,21 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\CreateFreeTrialResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function createFreeTrial(): Operations\CreateFreeTrialResponse + public function createFreeTrial(?Options $options = null): Operations\CreateFreeTrialResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/organization/free_trial'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('createFreeTrial', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -117,26 +118,26 @@ public function createFreeTrial(): Operations\CreateFreeTrialResponse * @return Operations\CreateOrganizationResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function create(Shared\Organization $request): Operations\CreateOrganizationResponse + public function create(Shared\Organization $request, ?Options $options = null): Operations\CreateOrganizationResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/organization'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('createOrganization', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -196,21 +197,21 @@ public function create(Shared\Organization $request): Operations\CreateOrganizat * @return Operations\GetOrganizationResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function get(Operations\GetOrganizationRequest $request): Operations\GetOrganizationResponse + public function get(Operations\GetOrganizationRequest $request, ?Options $options = null): Operations\GetOrganizationResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/organization/{organizationID}', Operations\GetOrganizationRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getOrganization', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -269,21 +270,21 @@ public function get(Operations\GetOrganizationRequest $request): Operations\GetO * @return Operations\GetOrganizationUsageResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getUsage(): Operations\GetOrganizationUsageResponse + public function getUsage(?Options $options = null): Operations\GetOrganizationUsageResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/organization/usage'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getOrganizationUsage', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -342,21 +343,21 @@ public function getUsage(): Operations\GetOrganizationUsageResponse * @return Operations\GetOrganizationsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getAll(): Operations\GetOrganizationsResponse + public function getAll(?Options $options = null): Operations\GetOrganizationsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/organizations'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getOrganizations', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Reports.php b/src/Reports.php index 1950530..811a497 100644 --- a/src/Reports.php +++ b/src/Reports.php @@ -11,6 +11,7 @@ use Speakeasy\Serializer\DeserializationContext; use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Reports { @@ -50,21 +51,21 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\GetChangesReportSignedUrlResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getChangesReportSignedUrl(Operations\GetChangesReportSignedUrlRequest $request): Operations\GetChangesReportSignedUrlResponse + public function getChangesReportSignedUrl(Operations\GetChangesReportSignedUrlRequest $request, ?Options $options = null): Operations\GetChangesReportSignedUrlResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/reports/changes/{documentChecksum}', Operations\GetChangesReportSignedUrlRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getChangesReportSignedUrl', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -111,21 +112,21 @@ public function getChangesReportSignedUrl(Operations\GetChangesReportSignedUrlRe * @return Operations\GetLintingReportSignedUrlResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getLintingReportSignedUrl(Operations\GetLintingReportSignedUrlRequest $request): Operations\GetLintingReportSignedUrlResponse + public function getLintingReportSignedUrl(Operations\GetLintingReportSignedUrlRequest $request, ?Options $options = null): Operations\GetLintingReportSignedUrlResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/reports/linting/{documentChecksum}', Operations\GetLintingReportSignedUrlRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getLintingReportSignedUrl', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -172,26 +173,26 @@ public function getLintingReportSignedUrl(Operations\GetLintingReportSignedUrlRe * @return Operations\UploadReportResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function uploadReport(Operations\UploadReportRequestBody $request): Operations\UploadReportResponse + public function uploadReport(Operations\UploadReportRequestBody $request, ?Options $options = null): Operations\UploadReportResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/reports'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'multipart'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('uploadReport', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/SDK.php b/src/SDK.php index 49eea62..5ecb422 100644 --- a/src/SDK.php +++ b/src/SDK.php @@ -8,10 +8,7 @@ namespace Speakeasy\SpeakeasyClientSDK; -use Speakeasy\Serializer\DeserializationContext; -use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; -use Speakeasy\SpeakeasyClientSDK\Models\Operations; -use Speakeasy\SpeakeasyClientSDK\Models\Shared; + /** * SDK - Speakeasy API: The Subscriptions API manages subscriptions for CLI and registry events @@ -42,6 +39,13 @@ class SDK */ public Auth $auth; + /** + * REST APIs for retrieving Code Samples + * + * @var CodeSamples $$codeSamples + */ + public CodeSamples $codeSamples; + /** * REST APIs for managing the github integration * @@ -116,6 +120,7 @@ public function __construct( ) { $this->artifacts = new Artifacts($this->sdkConfiguration); $this->auth = new Auth($this->sdkConfiguration); + $this->codeSamples = new CodeSamples($this->sdkConfiguration); $this->github = new Github($this->sdkConfiguration); $this->organizations = new Organizations($this->sdkConfiguration); $this->reports = new Reports($this->sdkConfiguration); @@ -127,261 +132,4 @@ public function __construct( $this->sdkConfiguration->client = $this->sdkConfiguration->initHooks($this->sdkConfiguration->client); } - - /** - * Generate Code Sample previews from a file and configuration parameters. - * - * This endpoint generates Code Sample previews from a file and configuration parameters. - * - * @param Shared\CodeSampleSchemaInput $request - * @return Operations\GenerateCodeSamplePreviewResponse - * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException - */ - public function generateCodeSamplePreview(Shared\CodeSampleSchemaInput $request): Operations\GenerateCodeSamplePreviewResponse - { - $baseUrl = $this->sdkConfiguration->getServerUrl(); - $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample/preview'); - $urlOverride = null; - $options = ['http_errors' => false]; - $body = Utils\Utils::serializeRequestBody($request, 'request', 'multipart'); - if ($body === null) { - throw new \Exception('Request body is required'); - } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json;q=1, application/x-yaml;q=0'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; - $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); - $hookContext = new HookContext('generateCodeSamplePreview', null, $this->sdkConfiguration->securitySource); - $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); - $httpRequest = Utils\Utils::removeHeaders($httpRequest); - try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); - } catch (\GuzzleHttp\Exception\GuzzleException $error) { - $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); - if ($res !== null) { - $httpResponse = $res; - } - } - $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; - - $statusCode = $httpResponse->getStatusCode(); - if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { - $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); - if ($res !== null) { - $httpResponse = $res; - } - } - if ($statusCode == 200) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $obj = $httpResponse->getBody()->getContents(); - - return new Operations\GenerateCodeSamplePreviewResponse( - statusCode: $statusCode, - contentType: $contentType, - rawResponse: $httpResponse, - twoHundredApplicationJsonBytes: $obj); - } elseif (Utils\Utils::matchContentType($contentType, 'application/x-yaml')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $obj = $httpResponse->getBody()->getContents(); - - return new Operations\GenerateCodeSamplePreviewResponse( - statusCode: $statusCode, - contentType: $contentType, - rawResponse: $httpResponse, - twoHundredApplicationXYamlBytes: $obj); - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } elseif ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $serializer = Utils\JSON::createSerializer(); - $responseData = (string) $httpResponse->getBody(); - $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); - throw $obj->toException(); - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } - - /** - * Initiate asynchronous Code Sample preview generation from a file and configuration parameters, receiving an async JobID response for polling. - * - * This endpoint generates Code Sample previews from a file and configuration parameters, receiving an async JobID response for polling. - * - * @param Shared\CodeSampleSchemaInput $request - * @return Operations\GenerateCodeSamplePreviewAsyncResponse - * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException - */ - public function generateCodeSamplePreviewAsync(Shared\CodeSampleSchemaInput $request): Operations\GenerateCodeSamplePreviewAsyncResponse - { - $baseUrl = $this->sdkConfiguration->getServerUrl(); - $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample/preview/async'); - $urlOverride = null; - $options = ['http_errors' => false]; - $body = Utils\Utils::serializeRequestBody($request, 'request', 'multipart'); - if ($body === null) { - throw new \Exception('Request body is required'); - } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; - $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); - $hookContext = new HookContext('generateCodeSamplePreviewAsync', null, $this->sdkConfiguration->securitySource); - $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); - $httpRequest = Utils\Utils::removeHeaders($httpRequest); - try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); - } catch (\GuzzleHttp\Exception\GuzzleException $error) { - $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); - if ($res !== null) { - $httpResponse = $res; - } - } - $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; - - $statusCode = $httpResponse->getStatusCode(); - if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { - $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); - if ($res !== null) { - $httpResponse = $res; - } - } - if ($statusCode == 202) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $serializer = Utils\JSON::createSerializer(); - $responseData = (string) $httpResponse->getBody(); - $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Operations\GenerateCodeSamplePreviewAsyncResponseBody', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); - $response = new Operations\GenerateCodeSamplePreviewAsyncResponse( - statusCode: $statusCode, - contentType: $contentType, - rawResponse: $httpResponse, - object: $obj); - - return $response; - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } elseif ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $serializer = Utils\JSON::createSerializer(); - $responseData = (string) $httpResponse->getBody(); - $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); - throw $obj->toException(); - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } - - /** - * Poll for the result of an asynchronous Code Sample preview generation. - * - * Poll for the result of an asynchronous Code Sample preview generation. - * - * @param Operations\GetCodeSamplePreviewAsyncRequest $request - * @return Operations\GetCodeSamplePreviewAsyncResponse - * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException - */ - public function getCodeSamplePreviewAsync(Operations\GetCodeSamplePreviewAsyncRequest $request): Operations\GetCodeSamplePreviewAsyncResponse - { - $baseUrl = $this->sdkConfiguration->getServerUrl(); - $url = Utils\Utils::generateUrl($baseUrl, '/v1/code_sample/preview/async/{jobID}', Operations\GetCodeSamplePreviewAsyncRequest::class, $request, $this->sdkConfiguration->globals); - $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json;q=1, application/x-yaml;q=0'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; - $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); - $hookContext = new HookContext('getCodeSamplePreviewAsync', null, $this->sdkConfiguration->securitySource); - $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); - $httpRequest = Utils\Utils::removeHeaders($httpRequest); - try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); - } catch (\GuzzleHttp\Exception\GuzzleException $error) { - $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); - if ($res !== null) { - $httpResponse = $res; - } - } - $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; - - $statusCode = $httpResponse->getStatusCode(); - if ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { - $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), $httpResponse, null); - if ($res !== null) { - $httpResponse = $res; - } - } - if ($statusCode == 200) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $obj = $httpResponse->getBody()->getContents(); - - return new Operations\GetCodeSamplePreviewAsyncResponse( - statusCode: $statusCode, - contentType: $contentType, - rawResponse: $httpResponse, - twoHundredApplicationJsonBytes: $obj); - } elseif (Utils\Utils::matchContentType($contentType, 'application/x-yaml')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $obj = $httpResponse->getBody()->getContents(); - - return new Operations\GetCodeSamplePreviewAsyncResponse( - statusCode: $statusCode, - contentType: $contentType, - rawResponse: $httpResponse, - twoHundredApplicationXYamlBytes: $obj); - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } elseif ($statusCode == 202) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $serializer = Utils\JSON::createSerializer(); - $responseData = (string) $httpResponse->getBody(); - $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Operations\GetCodeSamplePreviewAsyncResponseBody', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); - $response = new Operations\GetCodeSamplePreviewAsyncResponse( - statusCode: $statusCode, - contentType: $contentType, - rawResponse: $httpResponse, - twoHundredAndTwoApplicationJsonObject: $obj); - - return $response; - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } elseif ($statusCode >= 400 && $statusCode < 500 || $statusCode >= 500 && $statusCode < 600) { - if (Utils\Utils::matchContentType($contentType, 'application/json')) { - $httpResponse = $this->sdkConfiguration->hooks->afterSuccess(new Hooks\AfterSuccessContext($hookContext), $httpResponse); - - $serializer = Utils\JSON::createSerializer(); - $responseData = (string) $httpResponse->getBody(); - $obj = $serializer->deserialize($responseData, '\Speakeasy\SpeakeasyClientSDK\Models\Errorors\Error', 'json', DeserializationContext::create()->setRequireAllRequiredProperties(true)); - throw $obj->toException(); - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown content type received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } else { - throw new \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException('Unknown status code received', $statusCode, $httpResponse->getBody()->getContents(), $httpResponse); - } - } } \ No newline at end of file diff --git a/src/SDKBuilder.php b/src/SDKBuilder.php index 6fea057..39524c7 100644 --- a/src/SDKBuilder.php +++ b/src/SDKBuilder.php @@ -8,6 +8,8 @@ namespace Speakeasy\SpeakeasyClientSDK; +use Speakeasy\SpeakeasyClientSDK\Utils\Retry; + /** * SDKBuilder is used to configure and build an instance of the SDK. */ @@ -103,6 +105,13 @@ public function setWorkspaceId(string $workspaceId): SDKBuilder return $this; } + public function setRetryConfig(Retry\RetryConfig $config): SDKBuilder + { + $this->sdkConfig->retryConfig = $config; + + return $this; + } + /** * build is used to build the SDK with any of the configured options. * diff --git a/src/SDKConfiguration.php b/src/SDKConfiguration.php index b9fe0b2..0bb3b3f 100644 --- a/src/SDKConfiguration.php +++ b/src/SDKConfiguration.php @@ -7,7 +7,7 @@ declare(strict_types=1); namespace Speakeasy\SpeakeasyClientSDK; - +use Speakeasy\SpeakeasyClientSDK\Utils\Retry\RetryConfig; class SDKConfiguration { @@ -26,16 +26,18 @@ class SDKConfiguration public string $openapiDocVersion = '0.4.0'; - public string $sdkVersion = '0.46.3'; + public string $sdkVersion = '0.47.0'; - public string $genVersion = '2.481.0'; + public string $genVersion = '2.486.1'; - public string $userAgent = 'speakeasy-sdk/php 0.46.3 2.481.0 0.4.0 speakeasy-api/speakeasy-client-sdk-php'; + public string $userAgent = 'speakeasy-sdk/php 0.47.0 2.486.1 0.4.0 speakeasy-api/speakeasy-client-sdk-php'; /** @var array>> */ public ?array $globals = [ 'parameters' => [], ]; + public ?RetryConfig $retryConfig = null; + public function __construct() { $this->hooks = new Hooks\SDKHooks(); diff --git a/src/ShortURLs.php b/src/ShortURLs.php index bc23c84..4537bb1 100644 --- a/src/ShortURLs.php +++ b/src/ShortURLs.php @@ -11,6 +11,7 @@ use Speakeasy\Serializer\DeserializationContext; use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class ShortURLs { @@ -50,26 +51,26 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\CreateResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function create(Operations\CreateRequestBody $request): Operations\CreateResponse + public function create(Operations\CreateRequestBody $request, ?Options $options = null): Operations\CreateResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/short_urls'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('create', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Subscriptions.php b/src/Subscriptions.php index 4e52cd0..3239b70 100644 --- a/src/Subscriptions.php +++ b/src/Subscriptions.php @@ -11,6 +11,7 @@ use Speakeasy\Serializer\DeserializationContext; use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Subscriptions { @@ -50,21 +51,21 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\ActivateSubscriptionNamespaceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function activateSubscriptionNamespace(Operations\ActivateSubscriptionNamespaceRequest $request): Operations\ActivateSubscriptionNamespaceResponse + public function activateSubscriptionNamespace(Operations\ActivateSubscriptionNamespaceRequest $request, ?Options $options = null): Operations\ActivateSubscriptionNamespaceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/subscriptions/{subscriptionID}/{namespaceName}/activate', Operations\ActivateSubscriptionNamespaceRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('activateSubscriptionNamespace', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -113,21 +114,21 @@ public function activateSubscriptionNamespace(Operations\ActivateSubscriptionNam * @return Operations\IgnoreSubscriptionNamespaceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function ignoreSubscriptionNamespace(Operations\IgnoreSubscriptionNamespaceRequest $request): Operations\IgnoreSubscriptionNamespaceResponse + public function ignoreSubscriptionNamespace(Operations\IgnoreSubscriptionNamespaceRequest $request, ?Options $options = null): Operations\IgnoreSubscriptionNamespaceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/subscriptions/{subscriptionID}/{namespaceName}/ignore', Operations\IgnoreSubscriptionNamespaceRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('ignoreSubscriptionNamespace', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Suggest.php b/src/Suggest.php index c0ad99a..80c02cd 100644 --- a/src/Suggest.php +++ b/src/Suggest.php @@ -12,6 +12,7 @@ use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Suggest { @@ -53,30 +54,30 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\SuggestResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function suggest(Operations\SuggestRequest $request): Operations\SuggestResponse + public function suggest(Operations\SuggestRequest $request, ?Options $options = null): Operations\SuggestResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/suggest/openapi_from_summary'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'suggestRequestBody', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options = array_merge_recursive($options, Utils\Utils::getHeaders($request, $this->sdkConfiguration->globals)); - if (! array_key_exists('headers', $options)) { - $options['headers'] = []; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions = array_merge_recursive($httpOptions, Utils\Utils::getHeaders($request, $this->sdkConfiguration->globals)); + if (! array_key_exists('headers', $httpOptions)) { + $httpOptions['headers'] = []; } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('suggest', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -120,26 +121,26 @@ public function suggest(Operations\SuggestRequest $request): Operations\SuggestR * @return Operations\SuggestItemsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function suggestItems(Shared\SuggestItemsRequestBody $request): Operations\SuggestItemsResponse + public function suggestItems(Shared\SuggestItemsRequestBody $request, ?Options $options = null): Operations\SuggestItemsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/suggest/items'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('suggestItems', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -188,30 +189,30 @@ public function suggestItems(Shared\SuggestItemsRequestBody $request): Operation * @return Operations\SuggestOpenAPIResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function suggestOpenAPI(Operations\SuggestOpenAPIRequest $request): Operations\SuggestOpenAPIResponse + public function suggestOpenAPI(Operations\SuggestOpenAPIRequest $request, ?Options $options = null): Operations\SuggestOpenAPIResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/suggest/openapi'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'requestBody', 'multipart'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options = array_merge_recursive($options, Utils\Utils::getHeaders($request, $this->sdkConfiguration->globals)); - if (! array_key_exists('headers', $options)) { - $options['headers'] = []; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions = array_merge_recursive($httpOptions, Utils\Utils::getHeaders($request, $this->sdkConfiguration->globals)); + if (! array_key_exists('headers', $httpOptions)) { + $httpOptions['headers'] = []; } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('suggestOpenAPI', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -257,29 +258,29 @@ public function suggestOpenAPI(Operations\SuggestOpenAPIRequest $request): Opera * @return Operations\SuggestOpenAPIRegistryResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function suggestOpenAPIRegistry(Operations\SuggestOpenAPIRegistryRequest $request): Operations\SuggestOpenAPIRegistryResponse + public function suggestOpenAPIRegistry(Operations\SuggestOpenAPIRegistryRequest $request, ?Options $options = null): Operations\SuggestOpenAPIRegistryResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/suggest/openapi/{namespace_name}/{revision_reference}', Operations\SuggestOpenAPIRegistryRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'suggestRequestBody', 'json'); if ($body !== null) { - $options = array_merge_recursive($options, $body); + $httpOptions = array_merge_recursive($httpOptions, $body); } - $options = array_merge_recursive($options, Utils\Utils::getHeaders($request, $this->sdkConfiguration->globals)); - if (! array_key_exists('headers', $options)) { - $options['headers'] = []; + $httpOptions = array_merge_recursive($httpOptions, Utils\Utils::getHeaders($request, $this->sdkConfiguration->globals)); + if (! array_key_exists('headers', $httpOptions)) { + $httpOptions['headers'] = []; } - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('suggestOpenAPIRegistry', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { diff --git a/src/Utils/Options.php b/src/Utils/Options.php new file mode 100644 index 0000000..dec50c9 --- /dev/null +++ b/src/Utils/Options.php @@ -0,0 +1,67 @@ +|null $retryCodes + */ + public ?array $retryCodes = null; + + public static function builder(): OptionsBuilder + { + return new OptionsBuilder(); + } +} + +class OptionsBuilder +{ + public Options $options; + + public function __construct() + { + $this->options = new Options(); + } + + /** + * Sets the configuration to use for retries. + * + * @param RetryConfig $config + * @return OptionsBuilder + */ + public function setRetryConfig(RetryConfig $config): OptionsBuilder + { + $this->options->retryConfig = $config; + + return $this; + } + + /** + * Specifies which HTTP status codes should be retried. + * + * @param array $codes + * @return OptionsBuilder + */ + public function setRetryCodes(array $codes): OptionsBuilder + { + $this->options->retryCodes = $codes; + + return $this; + } + + public function build(): Options + { + return $this->options; + } +} diff --git a/src/Utils/Retry/PermanentError.php b/src/Utils/Retry/PermanentError.php new file mode 100644 index 0000000..4794270 --- /dev/null +++ b/src/Utils/Retry/PermanentError.php @@ -0,0 +1,17 @@ +initialInterval = $initialIntervalMs; + $this->maxInterval = $maxIntervalMs; + $this->exponent = $exponent; + $this->maxElapsedTime = $maxElapsedTimeMs; + $this->retryConnectionErrors = $retryConnectionErrors; + } +} diff --git a/src/Utils/Retry/RetryConfigNone.php b/src/Utils/Retry/RetryConfigNone.php new file mode 100644 index 0000000..f4bb3a5 --- /dev/null +++ b/src/Utils/Retry/RetryConfigNone.php @@ -0,0 +1,15 @@ + $statusCodesToRetry + * @return ResponseInterface + */ + public static function retryWrapper(callable $fn, RetryConfig $config, array $statusCodesToRetry): ResponseInterface + { + $retryCount = 0; + $start = LocalDateTime::now(TimeZone::utc()); + while (true) { + try { + $httpResponse = $fn(); + if ($config->strategy !== RetryStrategy::NONE && RetryUtils::isRetryableResponse($httpResponse, $statusCodesToRetry)) { + throw new TemporaryError('Response failed with retryable status code', response: $httpResponse); + } + + return $httpResponse; + } catch (\Exception $e) { + if ($e instanceof PermanentError) { + throw $e->getPrevious(); + } + if ($config instanceof RetryConfigNone) { + throw $e->getPrevious(); + } elseif ($config instanceof RetryConfigBackoff) { + $elapsed = 1000 * (LocalDateTime::now(TimeZone::utc())->getTime()->toSecondOfDay() - $start->getTime()->toSecondOfDay()); + if ($elapsed > $config->maxElapsedTime) { + if ($e instanceof TemporaryError) { + return $e->response; + } + throw $e; + } + $retryInterval = 0; + if ($e instanceof TemporaryError) { + $retryInterval = RetryUtils::retryInterval($e->response); + } + if ($retryInterval <= 0) { + $retryInterval = $config->initialInterval * pow($retryCount, $config->exponent) + (rand(0, 1) * 1000); + } + + $d = min($retryInterval, $config->maxInterval); + + usleep((int) $d * 1000); + + $retryCount++; + } + } + } + } + + public static function retryInterval(?ResponseInterface $response): int + { + if ($response == null) { + return 0; + } + $retryAfter = $response->getHeader('Retry-After'); + if (count($retryAfter) == 0) { + return 0; + } + $retryAfter = $retryAfter[0]; + if ((string) (int) $retryAfter == $retryAfter) { + return (int) $retryAfter * 1000; + } + + try { + $parsedDate = LocalDateTime::parse($retryAfter); + $deltaMS = ($parsedDate->getNano() * 1000) - (LocalDateTime::now(TimeZone::utc())->getNano() * 1000); + + return $deltaMS > 0 ? (int) ceil($deltaMS) : 0; + } catch (DateTimeParseException|DateTimeException $e) { + return 0; + } + } + + /** + * @param ResponseInterface $response + * @param array $statusCodes + * @return bool + */ + public static function isRetryableResponse(ResponseInterface $response, array $statusCodes): bool + { + $actual = (string) $response->getStatusCode(); + + $final = false; + foreach ($statusCodes as $code) { + $matches = []; + if (! preg_match('/^[0-9]xx$/', $code, $matches)) { + return $code === $actual; + } + + $expectFamily = mb_substr($code, 0, 1); + if (! $expectFamily) { + throw new \Exception('Invalid status code range'); + } + + $actualFamily = mb_substr($actual, 0, 1); + if (! $actualFamily) { + throw new \Exception('Invalid response status code: {$actual}'); + } + + if ($actualFamily === $expectFamily) { + $final = true; + } + } + + return $final; + } +} diff --git a/src/Utils/Retry/TemporaryError.php b/src/Utils/Retry/TemporaryError.php new file mode 100644 index 0000000..5e0153c --- /dev/null +++ b/src/Utils/Retry/TemporaryError.php @@ -0,0 +1,21 @@ +response = $response; + } +} diff --git a/src/Workspaces.php b/src/Workspaces.php index 34b0477..f156180 100644 --- a/src/Workspaces.php +++ b/src/Workspaces.php @@ -12,6 +12,7 @@ use Speakeasy\SpeakeasyClientSDK\Hooks\HookContext; use Speakeasy\SpeakeasyClientSDK\Models\Operations; use Speakeasy\SpeakeasyClientSDK\Models\Shared; +use Speakeasy\SpeakeasyClientSDK\Utils\Options; class Workspaces { @@ -53,26 +54,26 @@ public function getUrl(string $baseUrl, array $urlVariables): string * @return Operations\CreateWorkspaceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function create(Shared\Workspace $request): Operations\CreateWorkspaceResponse + public function create(Shared\Workspace $request, ?Options $options = null): Operations\CreateWorkspaceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace'); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'request', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('createWorkspace', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -130,26 +131,26 @@ public function create(Shared\Workspace $request): Operations\CreateWorkspaceRes * @return Operations\CreateWorkspaceTokenResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function createToken(Operations\CreateWorkspaceTokenRequest $request): Operations\CreateWorkspaceTokenResponse + public function createToken(Operations\CreateWorkspaceTokenRequest $request, ?Options $options = null): Operations\CreateWorkspaceTokenResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/tokens', Operations\CreateWorkspaceTokenRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'workspaceToken', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('createWorkspaceToken', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -198,21 +199,21 @@ public function createToken(Operations\CreateWorkspaceTokenRequest $request): Op * @return Operations\DeleteWorkspaceTokenResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function deleteToken(Operations\DeleteWorkspaceTokenRequest $request): Operations\DeleteWorkspaceTokenResponse + public function deleteToken(Operations\DeleteWorkspaceTokenRequest $request, ?Options $options = null): Operations\DeleteWorkspaceTokenResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/tokens/{tokenID}', Operations\DeleteWorkspaceTokenRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('DELETE', $url); $hookContext = new HookContext('deleteWorkspaceToken', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -263,21 +264,21 @@ public function deleteToken(Operations\DeleteWorkspaceTokenRequest $request): Op * @return Operations\GetWorkspaceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getByID(?Operations\GetWorkspaceRequest $request = null): Operations\GetWorkspaceResponse + public function getByID(?Operations\GetWorkspaceRequest $request = null, ?Options $options = null): Operations\GetWorkspaceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}', Operations\GetWorkspaceRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspace', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -336,21 +337,21 @@ public function getByID(?Operations\GetWorkspaceRequest $request = null): Operat * @return Operations\GetWorkspaceByContextResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function get(): Operations\GetWorkspaceByContextResponse + public function get(?Options $options = null): Operations\GetWorkspaceByContextResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceByContext', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -408,21 +409,21 @@ public function get(): Operations\GetWorkspaceByContextResponse * @return Operations\GetWorkspaceFeatureFlagsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getFeatureFlags(?Operations\GetWorkspaceFeatureFlagsRequest $request = null): Operations\GetWorkspaceFeatureFlagsResponse + public function getFeatureFlags(?Operations\GetWorkspaceFeatureFlagsRequest $request = null, ?Options $options = null): Operations\GetWorkspaceFeatureFlagsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/feature_flags', Operations\GetWorkspaceFeatureFlagsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceFeatureFlags', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -482,21 +483,21 @@ public function getFeatureFlags(?Operations\GetWorkspaceFeatureFlagsRequest $req * @return Operations\GetWorkspaceSettingsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getSettings(?Operations\GetWorkspaceSettingsRequest $request = null): Operations\GetWorkspaceSettingsResponse + public function getSettings(?Operations\GetWorkspaceSettingsRequest $request = null, ?Options $options = null): Operations\GetWorkspaceSettingsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/settings', Operations\GetWorkspaceSettingsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceSettings', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -554,21 +555,21 @@ public function getSettings(?Operations\GetWorkspaceSettingsRequest $request = n * @return Operations\GetWorkspaceTeamResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getTeam(?Operations\GetWorkspaceTeamRequest $request = null): Operations\GetWorkspaceTeamResponse + public function getTeam(?Operations\GetWorkspaceTeamRequest $request = null, ?Options $options = null): Operations\GetWorkspaceTeamResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/team', Operations\GetWorkspaceTeamRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceTeam', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -626,21 +627,21 @@ public function getTeam(?Operations\GetWorkspaceTeamRequest $request = null): Op * @return Operations\GetWorkspaceTokensResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getTokens(?Operations\GetWorkspaceTokensRequest $request = null): Operations\GetWorkspaceTokensResponse + public function getTokens(?Operations\GetWorkspaceTokensRequest $request = null, ?Options $options = null): Operations\GetWorkspaceTokensResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/tokens', Operations\GetWorkspaceTokensRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaceTokens', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -699,21 +700,21 @@ classes: $obj); * @return Operations\GetWorkspacesResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function getAll(): Operations\GetWorkspacesResponse + public function getAll(?Options $options = null): Operations\GetWorkspacesResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspaces'); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('GET', $url); $hookContext = new HookContext('getWorkspaces', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -771,21 +772,21 @@ public function getAll(): Operations\GetWorkspacesResponse * @return Operations\GrantUserAccessToWorkspaceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function grantAccess(Operations\GrantUserAccessToWorkspaceRequest $request): Operations\GrantUserAccessToWorkspaceResponse + public function grantAccess(Operations\GrantUserAccessToWorkspaceRequest $request, ?Options $options = null): Operations\GrantUserAccessToWorkspaceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/team/email/{email}', Operations\GrantUserAccessToWorkspaceRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('PUT', $url); $hookContext = new HookContext('grantUserAccessToWorkspace', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -843,21 +844,21 @@ public function grantAccess(Operations\GrantUserAccessToWorkspaceRequest $reques * @return Operations\RevokeUserAccessToWorkspaceResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function revokeAccess(Operations\RevokeUserAccessToWorkspaceRequest $request): Operations\RevokeUserAccessToWorkspaceResponse + public function revokeAccess(Operations\RevokeUserAccessToWorkspaceRequest $request, ?Options $options = null): Operations\RevokeUserAccessToWorkspaceResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/team/{userId}', Operations\RevokeUserAccessToWorkspaceRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = ['http_errors' => false]; + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('DELETE', $url); $hookContext = new HookContext('revokeUserAccessToWorkspace', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -908,26 +909,26 @@ public function revokeAccess(Operations\RevokeUserAccessToWorkspaceRequest $requ * @return Operations\UpdateWorkspaceDetailsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function update(Operations\UpdateWorkspaceDetailsRequest $request): Operations\UpdateWorkspaceDetailsResponse + public function update(Operations\UpdateWorkspaceDetailsRequest $request, ?Options $options = null): Operations\UpdateWorkspaceDetailsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/details', Operations\UpdateWorkspaceDetailsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'workspace', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('POST', $url); $hookContext = new HookContext('updateWorkspaceDetails', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) { @@ -978,26 +979,26 @@ public function update(Operations\UpdateWorkspaceDetailsRequest $request): Opera * @return Operations\UpdateWorkspaceSettingsResponse * @throws \Speakeasy\SpeakeasyClientSDK\Models\Errorors\SDKException */ - public function updateSettings(Operations\UpdateWorkspaceSettingsRequest $request): Operations\UpdateWorkspaceSettingsResponse + public function updateSettings(Operations\UpdateWorkspaceSettingsRequest $request, ?Options $options = null): Operations\UpdateWorkspaceSettingsResponse { $baseUrl = $this->sdkConfiguration->getServerUrl(); $url = Utils\Utils::generateUrl($baseUrl, '/v1/workspace/{workspace_id}/settings', Operations\UpdateWorkspaceSettingsRequest::class, $request, $this->sdkConfiguration->globals); $urlOverride = null; - $options = ['http_errors' => false]; + $httpOptions = ['http_errors' => false]; $body = Utils\Utils::serializeRequestBody($request, 'workspaceSettings', 'json'); if ($body === null) { throw new \Exception('Request body is required'); } - $options = array_merge_recursive($options, $body); - $options['headers']['Accept'] = 'application/json'; - $options['headers']['user-agent'] = $this->sdkConfiguration->userAgent; + $httpOptions = array_merge_recursive($httpOptions, $body); + $httpOptions['headers']['Accept'] = 'application/json'; + $httpOptions['headers']['user-agent'] = $this->sdkConfiguration->userAgent; $httpRequest = new \GuzzleHttp\Psr7\Request('PUT', $url); $hookContext = new HookContext('updateWorkspaceSettings', null, $this->sdkConfiguration->securitySource); $httpRequest = $this->sdkConfiguration->hooks->beforeRequest(new Hooks\BeforeRequestContext($hookContext), $httpRequest); - $options = Utils\Utils::convertHeadersToOptions($httpRequest, $options); + $httpOptions = Utils\Utils::convertHeadersToOptions($httpRequest, $httpOptions); $httpRequest = Utils\Utils::removeHeaders($httpRequest); try { - $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $options); + $httpResponse = $this->sdkConfiguration->client->send($httpRequest, $httpOptions); } catch (\GuzzleHttp\Exception\GuzzleException $error) { $res = $this->sdkConfiguration->hooks->afterError(new Hooks\AfterErrorContext($hookContext), null, $error); if ($res !== null) {