From 6691c19fe123f032bd0b302a5fffa411f0ae7879 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Fri, 16 Jan 2026 13:07:26 +0000 Subject: [PATCH] ## Python SDK Changes: * `outpost.destinations.enable()`: * `response` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.tenants.get_token()`: * `response.tenant_id` **Added** * `error` **Changed** **Breaking** :warning: * `outpost.tenants.upsert()`: * `request.params` **Added** * `response` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.tenants.get()`: * `response` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.tenants.delete()`: `error` **Changed** **Breaking** :warning: * `outpost.tenants.get_portal_url()`: * `response.tenant_id` **Added** * `error` **Changed** **Breaking** :warning: * `outpost.destinations.delete()`: `error` **Changed** **Breaking** :warning: * `outpost.destinations.list()`: * `request.type` **Changed** **Breaking** :warning: * `response.[]` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.destinations.create()`: * `request.params` **Changed** * `response` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.destinations.get()`: * `response` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.health.check()`: `response.status[200]` **Changed** **Breaking** :warning: * `outpost.destinations.update()`: * `request.params` **Changed** * `response.[destination]` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.schemas.get()`: `error` **Changed** **Breaking** :warning: * `outpost.destinations.disable()`: * `response` **Changed** * `error` **Changed** **Breaking** :warning: * `outpost.events.retry()`: `error` **Changed** **Breaking** :warning: * `outpost.schemas.list_tenant_destination_types()`: `error` **Changed** **Breaking** :warning: * `outpost.events.get_by_destination()`: * `response` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `outpost.topics.list()`: `error` **Changed** **Breaking** :warning: * `outpost.events.list()`: * `request` **Changed** **Breaking** :warning: * `response.data.[]` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `outpost.events.get()`: * `response` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `outpost.events.list_deliveries()`: `error` **Changed** **Breaking** :warning: * `outpost.events.list_by_destination()`: * `request` **Changed** **Breaking** :warning: * `response.data.[]` **Changed** **Breaking** :warning: * `error` **Changed** **Breaking** :warning: * `outpost.tenants.list_tenants()`: **Added** * `outpost.publish.event()`: `response.duplicate` **Added** --- .speakeasy/workflow.lock | 18 +- sdks/outpost-python/.gitignore | 2 + sdks/outpost-python/.speakeasy/gen.lock | 1833 ++++++++++++++--- sdks/outpost-python/.speakeasy/gen.yaml | 1 + sdks/outpost-python/README.md | 37 +- sdks/outpost-python/RELEASES.md | 12 +- sdks/outpost-python/USAGE.md | 1 + .../docs/errors/listtenantsbadrequesterror.md | 10 + .../docs/errors/notimplementederrort.md | 10 + .../outpost-python/docs/models/awss3config.md | 2 +- .../models/createtenantdestinationrequest.md | 2 +- .../docs/models/deliveryattempt.md | 14 +- .../docs/models/deliveryattemptstatus.md | 9 + .../outpost-python/docs/models/destination.md | 6 + .../docs/models/destinationawskinesis.md | 26 +- .../docs/models/destinationawss3.md | 26 +- .../docs/models/destinationawssqs.md | 26 +- .../docs/models/destinationazureservicebus.md | 26 +- .../docs/models/destinationcreate.md | 6 + .../models/destinationcreateawskinesis.md | 17 +- .../docs/models/destinationcreateawss3.md | 17 +- .../docs/models/destinationcreateawssqs.md | 17 +- .../destinationcreateazureservicebus.md | 17 +- .../docs/models/destinationcreategcppubsub.md | 15 + .../models/destinationcreategcppubsubtype.md | 10 + .../docs/models/destinationcreatehookdeck.md | 17 +- .../docs/models/destinationcreaterabbitmq.md | 17 +- .../docs/models/destinationcreatewebhook.md | 17 +- .../docs/models/destinationgcppubsub.md | 20 + .../docs/models/destinationgcppubsubtype.md | 10 + .../docs/models/destinationhookdeck.md | 26 +- .../docs/models/destinationrabbitmq.md | 26 +- .../docs/models/destinationtype.md | 17 + .../docs/models/destinationupdate.md | 12 + .../models/destinationupdateawskinesis.md | 13 +- .../docs/models/destinationupdateawss3.md | 13 +- .../docs/models/destinationupdateawssqs.md | 13 +- .../destinationupdateazureservicebus.md | 13 + .../docs/models/destinationupdategcppubsub.md | 13 + .../docs/models/destinationupdatehookdeck.md | 13 +- .../docs/models/destinationupdaterabbitmq.md | 13 +- .../docs/models/destinationupdatewebhook.md | 13 +- .../docs/models/destinationwebhook.md | 26 +- sdks/outpost-python/docs/models/event.md | 1 + .../docs/models/{status.md => eventstatus.md} | 2 +- .../docs/models/gcppubsubconfig.md | 10 + .../docs/models/gcppubsubcredentials.md | 8 + .../docs/models/healthcheckresponse.md | 12 + .../docs/models/healthcheckstatus1.md | 8 + .../docs/models/healthcheckstatus2.md | 8 + .../models/listtenantdestinationsrequest.md | 2 +- .../docs/models/listtenantdestinationstype.md | 19 + .../models/listtenantdestinationstypeenum1.md | 13 - .../models/listtenantdestinationstypeenum2.md | 13 - .../listtenanteventsbydestinationrequest.md | 4 +- .../docs/models/listtenanteventsrequest.md | 4 +- .../docs/models/listtenantsrequest.md | 11 + sdks/outpost-python/docs/models/order.md | 11 + .../docs/models/portalredirect.md | 3 +- .../docs/models/publishresponse.md | 3 +- sdks/outpost-python/docs/models/tenant.md | 14 +- .../docs/models/tenantlistitem.md | 15 + .../docs/models/tenantlistresponse.md | 13 + .../outpost-python/docs/models/tenanttoken.md | 3 +- .../docs/models/tenantupsert.md | 8 + sdks/outpost-python/docs/models/type.md | 19 - .../models/updatetenantdestinationrequest.md | 2 +- .../docs/models/upserttenantrequest.md | 3 +- .../docs/models/webhookconfig.md | 7 +- sdks/outpost-python/docs/models/workers.md | 8 + .../docs/sdks/destinations/README.md | 132 +- .../outpost-python/docs/sdks/events/README.md | 111 +- .../outpost-python/docs/sdks/health/README.md | 18 +- .../docs/sdks/outpost/README.md | 7 - .../docs/sdks/publish/README.md | 1 - .../docs/sdks/schemas/README.md | 35 +- .../docs/sdks/tenants/README.md | 142 +- .../docs/sdks/topicssdk/README.md | 20 +- sdks/outpost-python/poetry.lock | 52 +- sdks/outpost-python/pyproject.toml | 4 +- .../src/outpost_sdk/_version.py | 6 +- .../outpost-python/src/outpost_sdk/basesdk.py | 32 +- .../src/outpost_sdk/destinations.py | 1158 +---------- .../src/outpost_sdk/errors/__init__.py | 14 + .../src/outpost_sdk/errors/apierror.py | 2 + .../outpost_sdk/errors/badrequest_error.py | 7 +- .../outpost_sdk/errors/internalservererror.py | 7 +- .../src/outpost_sdk/errors/listtenantsop.py | 50 + .../outpost_sdk/errors/no_response_error.py | 6 +- .../src/outpost_sdk/errors/notfound_error.py | 7 +- .../src/outpost_sdk/errors/outposterror.py | 18 +- .../outpost_sdk/errors/ratelimited_error.py | 7 +- .../errors/responsevalidationerror.py | 2 + .../src/outpost_sdk/errors/timeout_error.py | 7 +- .../outpost_sdk/errors/unauthorized_error.py | 7 +- sdks/outpost-python/src/outpost_sdk/events.py | 994 +-------- sdks/outpost-python/src/outpost_sdk/health.py | 54 +- .../src/outpost_sdk/httpclient.py | 1 - .../src/outpost_sdk/models/__init__.py | 128 +- .../outpost_sdk/models/awskinesisconfig.py | 19 +- .../models/awskinesiscredentials.py | 19 +- .../src/outpost_sdk/models/awss3config.py | 19 +- .../outpost_sdk/models/awss3credentials.py | 19 +- .../src/outpost_sdk/models/awssqsconfig.py | 19 +- .../outpost_sdk/models/awssqscredentials.py | 19 +- .../models/createtenantdestinationop.py | 39 +- .../models/deletetenantdestinationop.py | 35 +- .../src/outpost_sdk/models/deletetenantop.py | 35 +- .../src/outpost_sdk/models/deliveryattempt.py | 33 +- .../src/outpost_sdk/models/destination.py | 3 + .../models/destinationawskinesis.py | 74 +- .../outpost_sdk/models/destinationawss3.py | 74 +- .../outpost_sdk/models/destinationawssqs.py | 74 +- .../models/destinationazureservicebus.py | 81 +- .../outpost_sdk/models/destinationcreate.py | 6 + .../models/destinationcreateawskinesis.py | 66 +- .../models/destinationcreateawss3.py | 66 +- .../models/destinationcreateawssqs.py | 66 +- .../destinationcreateazureservicebus.py | 66 +- .../models/destinationcreategcppubsub.py | 102 + .../models/destinationcreatehookdeck.py | 68 +- .../models/destinationcreaterabbitmq.py | 66 +- .../models/destinationcreatewebhook.py | 68 +- .../models/destinationgcppubsub.py | 132 ++ .../outpost_sdk/models/destinationhookdeck.py | 82 +- .../outpost_sdk/models/destinationrabbitmq.py | 74 +- .../models/destinationschemafield.py | 29 +- .../src/outpost_sdk/models/destinationtype.py | 17 + .../models/destinationtypeschema.py | 30 +- .../outpost_sdk/models/destinationupdate.py | 12 + .../models/destinationupdateawskinesis.py | 75 +- .../models/destinationupdateawss3.py | 75 +- .../models/destinationupdateawssqs.py | 75 +- .../destinationupdateazureservicebus.py | 97 + .../models/destinationupdategcppubsub.py | 94 + .../models/destinationupdatehookdeck.py | 75 +- .../models/destinationupdaterabbitmq.py | 75 +- .../models/destinationupdatewebhook.py | 75 +- .../outpost_sdk/models/destinationwebhook.py | 74 +- .../models/disabletenantdestinationop.py | 35 +- .../models/enabletenantdestinationop.py | 35 +- .../src/outpost_sdk/models/event.py | 65 +- .../src/outpost_sdk/models/gcppubsubconfig.py | 43 + .../models/gcppubsubcredentials.py | 15 + .../models/gettenantdestinationop.py | 35 +- .../gettenantdestinationtypeschemaop.py | 35 +- .../models/gettenanteventbydestinationop.py | 35 +- .../outpost_sdk/models/gettenanteventop.py | 35 +- .../src/outpost_sdk/models/gettenantop.py | 35 +- .../models/gettenantportalurlop.py | 35 +- .../outpost_sdk/models/gettenanttokenop.py | 35 +- .../src/outpost_sdk/models/healthcheckop.py | 44 + .../outpost_sdk/models/internal/globals.py | 19 +- .../models/listtenantdestinationsop.py | 61 +- .../listtenantdestinationtypeschemasop.py | 35 +- .../models/listtenanteventdeliveriesop.py | 35 +- .../models/listtenanteventsbydestinationop.py | 55 +- .../outpost_sdk/models/listtenanteventsop.py | 56 +- .../src/outpost_sdk/models/listtenantsop.py | 72 + .../outpost_sdk/models/listtenanttopicsop.py | 35 +- .../src/outpost_sdk/models/portalredirect.py | 24 +- .../src/outpost_sdk/models/publishrequest.py | 28 +- .../src/outpost_sdk/models/publishresponse.py | 5 + .../src/outpost_sdk/models/rabbitmqconfig.py | 19 +- .../outpost_sdk/models/retrytenanteventop.py | 35 +- .../src/outpost_sdk/models/security.py | 19 +- .../src/outpost_sdk/models/successresponse.py | 19 +- .../src/outpost_sdk/models/tenant.py | 55 +- .../src/outpost_sdk/models/tenantlistitem.py | 87 + .../outpost_sdk/models/tenantlistresponse.py | 68 + .../src/outpost_sdk/models/tenanttoken.py | 24 +- .../src/outpost_sdk/models/tenantupsert.py | 48 + .../models/updatetenantdestinationop.py | 39 +- .../src/outpost_sdk/models/upserttenantop.py | 46 +- .../src/outpost_sdk/models/webhookconfig.py | 27 +- .../outpost_sdk/models/webhookcredentials.py | 21 +- .../models/webhookcredentialsupdate.py | 21 +- .../outpost-python/src/outpost_sdk/publish.py | 6 +- .../outpost-python/src/outpost_sdk/schemas.py | 320 +-- sdks/outpost-python/src/outpost_sdk/sdk.py | 4 +- .../outpost-python/src/outpost_sdk/tenants.py | 1012 +++------ .../src/outpost_sdk/topics_sdk.py | 160 +- .../src/outpost_sdk/types/basemodel.py | 44 +- .../src/outpost_sdk/utils/__init__.py | 17 +- .../src/outpost_sdk/utils/annotations.py | 40 +- .../src/outpost_sdk/utils/enums.py | 60 + .../src/outpost_sdk/utils/forms.py | 31 +- .../src/outpost_sdk/utils/queryparams.py | 16 +- .../src/outpost_sdk/utils/requestbodies.py | 6 +- .../src/outpost_sdk/utils/retries.py | 74 +- .../src/outpost_sdk/utils/serializers.py | 20 - .../utils/unmarshal_json_response.py | 16 +- 192 files changed, 6753 insertions(+), 4440 deletions(-) create mode 100644 sdks/outpost-python/docs/errors/listtenantsbadrequesterror.md create mode 100644 sdks/outpost-python/docs/errors/notimplementederrort.md create mode 100644 sdks/outpost-python/docs/models/deliveryattemptstatus.md create mode 100644 sdks/outpost-python/docs/models/destinationcreategcppubsub.md create mode 100644 sdks/outpost-python/docs/models/destinationcreategcppubsubtype.md create mode 100644 sdks/outpost-python/docs/models/destinationgcppubsub.md create mode 100644 sdks/outpost-python/docs/models/destinationgcppubsubtype.md create mode 100644 sdks/outpost-python/docs/models/destinationtype.md create mode 100644 sdks/outpost-python/docs/models/destinationupdateazureservicebus.md create mode 100644 sdks/outpost-python/docs/models/destinationupdategcppubsub.md rename sdks/outpost-python/docs/models/{status.md => eventstatus.md} (89%) create mode 100644 sdks/outpost-python/docs/models/gcppubsubconfig.md create mode 100644 sdks/outpost-python/docs/models/gcppubsubcredentials.md create mode 100644 sdks/outpost-python/docs/models/healthcheckresponse.md create mode 100644 sdks/outpost-python/docs/models/healthcheckstatus1.md create mode 100644 sdks/outpost-python/docs/models/healthcheckstatus2.md create mode 100644 sdks/outpost-python/docs/models/listtenantdestinationstype.md delete mode 100644 sdks/outpost-python/docs/models/listtenantdestinationstypeenum1.md delete mode 100644 sdks/outpost-python/docs/models/listtenantdestinationstypeenum2.md create mode 100644 sdks/outpost-python/docs/models/listtenantsrequest.md create mode 100644 sdks/outpost-python/docs/models/order.md create mode 100644 sdks/outpost-python/docs/models/tenantlistitem.md create mode 100644 sdks/outpost-python/docs/models/tenantlistresponse.md create mode 100644 sdks/outpost-python/docs/models/tenantupsert.md delete mode 100644 sdks/outpost-python/docs/models/type.md create mode 100644 sdks/outpost-python/docs/models/workers.md delete mode 100644 sdks/outpost-python/docs/sdks/outpost/README.md create mode 100644 sdks/outpost-python/src/outpost_sdk/errors/listtenantsop.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/destinationcreategcppubsub.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/destinationgcppubsub.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/destinationtype.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/destinationupdateazureservicebus.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/destinationupdategcppubsub.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/gcppubsubconfig.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/gcppubsubcredentials.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/healthcheckop.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/listtenantsop.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/tenantlistitem.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/tenantlistresponse.py create mode 100644 sdks/outpost-python/src/outpost_sdk/models/tenantupsert.py diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 73fba9f76..a9bbad4ec 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.686.0 +speakeasyVersion: 1.686.1 sources: Outpost API: sourceNamespace: outpost-api @@ -8,6 +8,14 @@ sources: - latest - speakeasy-sdk-regen-1768565776 - 0.0.1 + Outpost API (Python): + sourceNamespace: outpost-api + sourceRevisionDigest: sha256:0a10c5112a327a123e4d72f4cfd81d0ac3424da4865a1594addd569793fd742f + sourceBlobDigest: sha256:70596aadf6dffc404f6b791ce56184d8d9ac72df717b00c729f3e14c81d15afc + tags: + - latest + - speakeasy-sdk-regen-1768568786 + - 0.0.1 targets: outpost-go: source: Outpost API @@ -17,12 +25,12 @@ targets: codeSamplesNamespace: outpost-api-go-code-samples codeSamplesRevisionDigest: sha256:4e04f777fdfd32143739dbe63196004706a4ec75c9c4a872e97af1d9df1ae472 outpost-python: - source: Outpost API + source: Outpost API (Python) sourceNamespace: outpost-api - sourceRevisionDigest: sha256:e09cf02de047cf6d007545274c477e2a90c561074b9de170d844d9ab9ffbbca6 - sourceBlobDigest: sha256:c405cfc4f2de092323a9dd68a09f7c08b563d363bce7463fc8b426d10acacf99 + sourceRevisionDigest: sha256:0a10c5112a327a123e4d72f4cfd81d0ac3424da4865a1594addd569793fd742f + sourceBlobDigest: sha256:70596aadf6dffc404f6b791ce56184d8d9ac72df717b00c729f3e14c81d15afc codeSamplesNamespace: outpost-api-python-code-samples - codeSamplesRevisionDigest: sha256:d8540bce24dc0cc34650c9546892f1d45db9fe1867c18571e046e9c72123a246 + codeSamplesRevisionDigest: sha256:e40a635a6a6e381904e96c21238c0737ff59dcba827d83d07267ac034049417e outpost-ts: source: Outpost API sourceNamespace: outpost-api diff --git a/sdks/outpost-python/.gitignore b/sdks/outpost-python/.gitignore index e66e3e600..cbb934331 100644 --- a/sdks/outpost-python/.gitignore +++ b/sdks/outpost-python/.gitignore @@ -1,3 +1,5 @@ +.env +.env.local **/__pycache__/ .venv/ venv/ diff --git a/sdks/outpost-python/.speakeasy/gen.lock b/sdks/outpost-python/.speakeasy/gen.lock index 1830a1019..8e2faf165 100644 --- a/sdks/outpost-python/.speakeasy/gen.lock +++ b/sdks/outpost-python/.speakeasy/gen.lock @@ -1,317 +1,1259 @@ lockVersion: 2.0.0 id: da774284-22d9-4b6c-bb26-1c3fc9f2c7ee management: - docChecksum: f88900fa0dfdee97044181ff0fbb5027 + docChecksum: 007fd5497db3cc08790e666dfef951ae docVersion: 0.0.1 - speakeasyVersion: 1.609.0 - generationVersion: 2.692.0 - releaseVersion: 0.4.0 - configChecksum: 5010174e527b0e15ea785476055a0d53 + speakeasyVersion: 1.686.1 + generationVersion: 2.796.1 + releaseVersion: 0.5.0 + configChecksum: 6cab7b28c0cc7fe6c86809dc2787ee42 repoURL: https://github.com/hookdeck/outpost.git repoSubDirectory: sdks/outpost-python installationURL: https://github.com/hookdeck/outpost.git#subdirectory=sdks/outpost-python published: true +persistentEdits: + generation_id: a443ecc8-2cef-4eb8-ad9d-b2c530396402 + pristine_commit_hash: ac6013bfc0f497b12d946565172ac26ff7a2009d + pristine_tree_hash: dcc34360b92ba53a52434ddd858ef578a4b439e2 features: python: additionalDependencies: 1.0.0 additionalProperties: 1.0.1 constsAndDefaults: 1.0.5 - core: 5.20.3 + core: 5.23.18 defaultEnabledRetries: 0.2.0 enumUnions: 0.1.0 envVarSecurityUsage: 0.3.2 flatRequests: 1.0.1 flattening: 3.1.1 - globalSecurity: 3.0.3 + globalSecurity: 3.0.4 globalSecurityCallbacks: 1.0.0 - globalServerURLs: 3.1.1 + globalServerURLs: 3.2.0 globals: 3.0.0 methodArguments: 1.0.2 nameOverrides: 3.0.1 - nullables: 1.0.1 - pagination: 3.0.5 + nullables: 1.0.2 + pagination: 3.0.7 responseFormat: 1.0.1 - retries: 3.0.2 - sdkHooks: 1.1.0 - unions: 3.0.4 -generatedFiles: - - .gitattributes - - .vscode/settings.json - - USAGE.md - - docs/errors/badrequesterror.md - - docs/errors/internalservererror.md - - docs/errors/notfounderror.md - - docs/errors/ratelimitederror.md - - docs/errors/timeouterrort.md - - docs/errors/unauthorizederror.md - - docs/models/awskinesisconfig.md - - docs/models/awskinesiscredentials.md - - docs/models/awss3config.md - - docs/models/awss3credentials.md - - docs/models/awssqsconfig.md - - docs/models/awssqscredentials.md - - docs/models/azureservicebusconfig.md - - docs/models/azureservicebuscredentials.md - - docs/models/createtenantdestinationglobals.md - - docs/models/createtenantdestinationrequest.md - - docs/models/deletetenantdestinationglobals.md - - docs/models/deletetenantdestinationrequest.md - - docs/models/deletetenantglobals.md - - docs/models/deletetenantrequest.md - - docs/models/deliveryattempt.md - - docs/models/destination.md - - docs/models/destinationawskinesis.md - - docs/models/destinationawskinesistype.md - - docs/models/destinationawss3.md - - docs/models/destinationawss3type.md - - docs/models/destinationawssqs.md - - docs/models/destinationawssqstype.md - - docs/models/destinationazureservicebus.md - - docs/models/destinationazureservicebustype.md - - docs/models/destinationcreate.md - - docs/models/destinationcreateawskinesis.md - - docs/models/destinationcreateawskinesistype.md - - docs/models/destinationcreateawss3.md - - docs/models/destinationcreateawss3type.md - - docs/models/destinationcreateawssqs.md - - docs/models/destinationcreateawssqstype.md - - docs/models/destinationcreateazureservicebus.md - - docs/models/destinationcreateazureservicebustype.md - - docs/models/destinationcreatehookdeck.md - - docs/models/destinationcreatehookdecktype.md - - docs/models/destinationcreaterabbitmq.md - - docs/models/destinationcreaterabbitmqtype.md - - docs/models/destinationcreatewebhook.md - - docs/models/destinationcreatewebhooktype.md - - docs/models/destinationhookdeck.md - - docs/models/destinationhookdecktype.md - - docs/models/destinationid.md - - docs/models/destinationrabbitmq.md - - docs/models/destinationrabbitmqtype.md - - docs/models/destinationschemafield.md - - docs/models/destinationschemafieldtype.md - - docs/models/destinationtypeschema.md - - docs/models/destinationupdate.md - - docs/models/destinationupdateawskinesis.md - - docs/models/destinationupdateawss3.md - - docs/models/destinationupdateawssqs.md - - docs/models/destinationupdatehookdeck.md - - docs/models/destinationupdaterabbitmq.md - - docs/models/destinationupdatewebhook.md - - docs/models/destinationwebhook.md - - docs/models/destinationwebhooktype.md - - docs/models/disabletenantdestinationglobals.md - - docs/models/disabletenantdestinationrequest.md - - docs/models/enabletenantdestinationglobals.md - - docs/models/enabletenantdestinationrequest.md - - docs/models/event.md - - docs/models/getdestinationtypeschemarequest.md - - docs/models/getdestinationtypeschematype.md - - docs/models/gettenantdestinationglobals.md - - docs/models/gettenantdestinationrequest.md - - docs/models/gettenantdestinationtypeschemaglobals.md - - docs/models/gettenantdestinationtypeschemarequest.md - - docs/models/gettenantdestinationtypeschematype.md - - docs/models/gettenanteventbydestinationglobals.md - - docs/models/gettenanteventbydestinationrequest.md - - docs/models/gettenanteventglobals.md - - docs/models/gettenanteventrequest.md - - docs/models/gettenantglobals.md - - docs/models/gettenantportalurlglobals.md - - docs/models/gettenantportalurlrequest.md - - docs/models/gettenantrequest.md - - docs/models/gettenanttokenglobals.md - - docs/models/gettenanttokenrequest.md - - docs/models/hookdeckcredentials.md - - docs/models/internal/globals.md - - docs/models/listtenantdestinationsglobals.md - - docs/models/listtenantdestinationsrequest.md - - docs/models/listtenantdestinationstopics.md - - docs/models/listtenantdestinationstypeenum1.md - - docs/models/listtenantdestinationstypeenum2.md - - docs/models/listtenantdestinationtypeschemasglobals.md - - docs/models/listtenantdestinationtypeschemasrequest.md - - docs/models/listtenanteventdeliveriesglobals.md - - docs/models/listtenanteventdeliveriesrequest.md - - docs/models/listtenanteventsbydestinationglobals.md - - docs/models/listtenanteventsbydestinationrequest.md - - docs/models/listtenanteventsbydestinationresponse.md - - docs/models/listtenanteventsbydestinationresponsebody.md - - docs/models/listtenanteventsbydestinationstatus.md - - docs/models/listtenanteventsglobals.md - - docs/models/listtenanteventsrequest.md - - docs/models/listtenanteventsresponse.md - - docs/models/listtenanteventsresponsebody.md - - docs/models/listtenanteventsstatus.md - - docs/models/listtenanttopicsglobals.md - - docs/models/listtenanttopicsrequest.md - - docs/models/portalredirect.md - - docs/models/publishrequest.md - - docs/models/publishresponse.md - - docs/models/rabbitmqconfig.md - - docs/models/rabbitmqcredentials.md - - docs/models/retrytenanteventglobals.md - - docs/models/retrytenanteventrequest.md - - docs/models/security.md - - docs/models/status.md - - docs/models/successresponse.md - - docs/models/tenant.md - - docs/models/tenanttoken.md - - docs/models/theme.md - - docs/models/tls.md - - docs/models/topicsenum.md - - docs/models/topicsunion.md - - docs/models/type.md - - docs/models/updatetenantdestinationglobals.md - - docs/models/updatetenantdestinationrequest.md - - docs/models/updatetenantdestinationresponse.md - - docs/models/upserttenantglobals.md - - docs/models/upserttenantrequest.md - - docs/models/utils/retryconfig.md - - docs/models/webhookconfig.md - - docs/models/webhookcredentials.md - - docs/models/webhookcredentialsupdate.md - - docs/sdks/destinations/README.md - - docs/sdks/events/README.md - - docs/sdks/health/README.md - - docs/sdks/outpost/README.md - - docs/sdks/publish/README.md - - docs/sdks/schemas/README.md - - docs/sdks/tenants/README.md - - docs/sdks/topicssdk/README.md - - poetry.toml - - py.typed - - pylintrc - - pyproject.toml - - scripts/prepare_readme.py - - scripts/publish.sh - - src/outpost_sdk/__init__.py - - src/outpost_sdk/_hooks/__init__.py - - src/outpost_sdk/_hooks/sdkhooks.py - - src/outpost_sdk/_hooks/types.py - - src/outpost_sdk/_version.py - - src/outpost_sdk/basesdk.py - - src/outpost_sdk/destinations.py - - src/outpost_sdk/errors/__init__.py - - src/outpost_sdk/errors/apierror.py - - src/outpost_sdk/errors/badrequest_error.py - - src/outpost_sdk/errors/internalservererror.py - - src/outpost_sdk/errors/no_response_error.py - - src/outpost_sdk/errors/notfound_error.py - - src/outpost_sdk/errors/outposterror.py - - src/outpost_sdk/errors/ratelimited_error.py - - src/outpost_sdk/errors/responsevalidationerror.py - - src/outpost_sdk/errors/timeout_error.py - - src/outpost_sdk/errors/unauthorized_error.py - - src/outpost_sdk/events.py - - src/outpost_sdk/health.py - - src/outpost_sdk/httpclient.py - - src/outpost_sdk/models/__init__.py - - src/outpost_sdk/models/awskinesisconfig.py - - src/outpost_sdk/models/awskinesiscredentials.py - - src/outpost_sdk/models/awss3config.py - - src/outpost_sdk/models/awss3credentials.py - - src/outpost_sdk/models/awssqsconfig.py - - src/outpost_sdk/models/awssqscredentials.py - - src/outpost_sdk/models/azureservicebusconfig.py - - src/outpost_sdk/models/azureservicebuscredentials.py - - src/outpost_sdk/models/createtenantdestinationop.py - - src/outpost_sdk/models/deletetenantdestinationop.py - - src/outpost_sdk/models/deletetenantop.py - - src/outpost_sdk/models/deliveryattempt.py - - src/outpost_sdk/models/destination.py - - src/outpost_sdk/models/destinationawskinesis.py - - src/outpost_sdk/models/destinationawss3.py - - src/outpost_sdk/models/destinationawssqs.py - - src/outpost_sdk/models/destinationazureservicebus.py - - src/outpost_sdk/models/destinationcreate.py - - src/outpost_sdk/models/destinationcreateawskinesis.py - - src/outpost_sdk/models/destinationcreateawss3.py - - src/outpost_sdk/models/destinationcreateawssqs.py - - src/outpost_sdk/models/destinationcreateazureservicebus.py - - src/outpost_sdk/models/destinationcreatehookdeck.py - - src/outpost_sdk/models/destinationcreaterabbitmq.py - - src/outpost_sdk/models/destinationcreatewebhook.py - - src/outpost_sdk/models/destinationhookdeck.py - - src/outpost_sdk/models/destinationrabbitmq.py - - src/outpost_sdk/models/destinationschemafield.py - - src/outpost_sdk/models/destinationtypeschema.py - - src/outpost_sdk/models/destinationupdate.py - - src/outpost_sdk/models/destinationupdateawskinesis.py - - src/outpost_sdk/models/destinationupdateawss3.py - - src/outpost_sdk/models/destinationupdateawssqs.py - - src/outpost_sdk/models/destinationupdatehookdeck.py - - src/outpost_sdk/models/destinationupdaterabbitmq.py - - src/outpost_sdk/models/destinationupdatewebhook.py - - src/outpost_sdk/models/destinationwebhook.py - - src/outpost_sdk/models/disabletenantdestinationop.py - - src/outpost_sdk/models/enabletenantdestinationop.py - - src/outpost_sdk/models/event.py - - src/outpost_sdk/models/getdestinationtypeschemaop.py - - src/outpost_sdk/models/gettenantdestinationop.py - - src/outpost_sdk/models/gettenantdestinationtypeschemaop.py - - src/outpost_sdk/models/gettenanteventbydestinationop.py - - src/outpost_sdk/models/gettenanteventop.py - - src/outpost_sdk/models/gettenantop.py - - src/outpost_sdk/models/gettenantportalurlop.py - - src/outpost_sdk/models/gettenanttokenop.py - - src/outpost_sdk/models/hookdeckcredentials.py - - src/outpost_sdk/models/internal/__init__.py - - src/outpost_sdk/models/internal/globals.py - - src/outpost_sdk/models/listtenantdestinationsop.py - - src/outpost_sdk/models/listtenantdestinationtypeschemasop.py - - src/outpost_sdk/models/listtenanteventdeliveriesop.py - - src/outpost_sdk/models/listtenanteventsbydestinationop.py - - src/outpost_sdk/models/listtenanteventsop.py - - src/outpost_sdk/models/listtenanttopicsop.py - - src/outpost_sdk/models/portalredirect.py - - src/outpost_sdk/models/publishrequest.py - - src/outpost_sdk/models/publishresponse.py - - src/outpost_sdk/models/rabbitmqconfig.py - - src/outpost_sdk/models/rabbitmqcredentials.py - - src/outpost_sdk/models/retrytenanteventop.py - - src/outpost_sdk/models/security.py - - src/outpost_sdk/models/successresponse.py - - src/outpost_sdk/models/tenant.py - - src/outpost_sdk/models/tenanttoken.py - - src/outpost_sdk/models/topics_union.py - - src/outpost_sdk/models/updatetenantdestinationop.py - - src/outpost_sdk/models/upserttenantop.py - - src/outpost_sdk/models/webhookconfig.py - - src/outpost_sdk/models/webhookcredentials.py - - src/outpost_sdk/models/webhookcredentialsupdate.py - - src/outpost_sdk/publish.py - - src/outpost_sdk/py.typed - - src/outpost_sdk/schemas.py - - src/outpost_sdk/sdk.py - - src/outpost_sdk/sdkconfiguration.py - - src/outpost_sdk/tenants.py - - src/outpost_sdk/topics_sdk.py - - src/outpost_sdk/types/__init__.py - - src/outpost_sdk/types/basemodel.py - - src/outpost_sdk/utils/__init__.py - - src/outpost_sdk/utils/annotations.py - - src/outpost_sdk/utils/datetimes.py - - src/outpost_sdk/utils/enums.py - - src/outpost_sdk/utils/eventstreaming.py - - src/outpost_sdk/utils/forms.py - - src/outpost_sdk/utils/headers.py - - src/outpost_sdk/utils/logger.py - - src/outpost_sdk/utils/metadata.py - - src/outpost_sdk/utils/queryparams.py - - src/outpost_sdk/utils/requestbodies.py - - src/outpost_sdk/utils/retries.py - - src/outpost_sdk/utils/security.py - - src/outpost_sdk/utils/serializers.py - - src/outpost_sdk/utils/unmarshal_json_response.py - - src/outpost_sdk/utils/url.py - - src/outpost_sdk/utils/values.py + retries: 3.0.3 + sdkHooks: 1.2.1 + unions: 3.1.2 +trackedFiles: + .gitattributes: + id: 24139dae6567 + last_write_checksum: sha1:53134de3ada576f37c22276901e1b5b6d85cd2da + pristine_git_object: 4d75d59008e4d8609876d263419a9dc56c8d6f3a + .vscode/settings.json: + id: 89aa447020cd + last_write_checksum: sha1:f84632c81029fcdda8c3b0c768d02b836fc80526 + pristine_git_object: 8d79f0abb72526f1fb34a4c03e5bba612c6ba2ae + USAGE.md: + id: 3aed33ce6e6f + last_write_checksum: sha1:a4cd3805a7312a1f65a30253846aa88f89f50054 + pristine_git_object: 2d498d2721b86e348ff0194bfc5025d9cf09f6f7 + docs/errors/badrequesterror.md: + id: 75b54f860141 + last_write_checksum: sha1:fa7b863df5fe1369b4e64d44072b021381dc640c + pristine_git_object: bf9b91f6c9249f9fb0ff91799d3ecc3627fc8ba3 + docs/errors/internalservererror.md: + id: eab04592354c + last_write_checksum: sha1:d96b094c0d34b0cc9a59947f891a1735927b971e + pristine_git_object: 20b85a54e4ca4fad1a6edfefb9413d1901708d5c + docs/errors/listtenantsbadrequesterror.md: + id: "975775184105" + last_write_checksum: sha1:b70c7e1f22e06db606976e0e3c1cf8118ce49a6d + pristine_git_object: 28caef5b00c207800a97ebb05c370b959906a2cd + docs/errors/notfounderror.md: + id: 2bd9ff5d704d + last_write_checksum: sha1:f1446daed64f9889c6f5d6c71c598449bf3ea2c5 + pristine_git_object: dd0477d1273b8e7f215914020008b84c856c7e1d + docs/errors/notimplementederrort.md: + id: f6a21109ebc7 + last_write_checksum: sha1:f484f18ba9ab217b514a1a7c215b9d61617fdbe0 + pristine_git_object: 009086955ec36603f99da699ad4e8203d8c49870 + docs/errors/ratelimitederror.md: + id: 66c395fa416b + last_write_checksum: sha1:a2448ba57a67fea9dec7344bb5570e85d4931921 + pristine_git_object: 3f7f62b74880137ca6bcd97106250d1a28ac2e1e + docs/errors/timeouterrort.md: + id: 06f77f86e1d7 + last_write_checksum: sha1:fb6593b1cd14f931603922e5720a66ee9ed21645 + pristine_git_object: a2f6fc3a024dbf9a20d621c1ada6adb17db66a16 + docs/errors/unauthorizederror.md: + id: c54ee3b4e5ad + last_write_checksum: sha1:66f3ddc85b6d26ccc3f3f091d38d0f264a12aedf + pristine_git_object: 09ac1d2ca6456ccec1ff23f1fdc849faee367687 + docs/models/awskinesisconfig.md: + id: 1ecd0220d922 + last_write_checksum: sha1:d1cebf7ae94ec3360968c40ad12d5bc8eb0dbd43 + pristine_git_object: 53333e11adfcefa70162cff2031cc4b7af8d9779 + docs/models/awskinesiscredentials.md: + id: 5e1b8dd2010d + last_write_checksum: sha1:a968a93e9c9bf7b1dcb6fd788a49c86ec43ba6f3 + pristine_git_object: 40218890d59fdac3870939548f4aed1d4d7d50fb + docs/models/awss3config.md: + id: 679a23675f6e + last_write_checksum: sha1:e2da866fc702bb1893bf8618d31b68f0405dd199 + pristine_git_object: e7daf4322bd05e7221d2c86cc495841fd34bdcb5 + docs/models/awss3credentials.md: + id: 54997da063b8 + last_write_checksum: sha1:804e34bb935aea7ee5f05171d2ba2d2b6e7db970 + pristine_git_object: 37ed641620d9ded12582e3cc3af298b9375b3bf8 + docs/models/awssqsconfig.md: + id: b1ecf85ce2b2 + last_write_checksum: sha1:ede94a0970f19ba0924612b16c377c953bcdd766 + pristine_git_object: 8263009b429d86782bcc12263d995be543da12cd + docs/models/awssqscredentials.md: + id: 737bdc7cb788 + last_write_checksum: sha1:64a4ea77096ac48ee0469565650ac82deb8b6e98 + pristine_git_object: 0000f440a1c8a6a713b5842ec06ec106158c1682 + docs/models/azureservicebusconfig.md: + id: 1e83b96d9a35 + last_write_checksum: sha1:7a6559de6b67a0cb2900d6067ee77d0e5eabc95b + pristine_git_object: 7e6b4d87a0022e4a463dde36b8a5f78426bb4b3d + docs/models/azureservicebuscredentials.md: + id: be69c439da24 + last_write_checksum: sha1:9b119c1e2998621c1e366f5206df3b6817fb8bbd + pristine_git_object: 02f6cf43352e6c2e4c624c6fb5fd21f49d897e6f + docs/models/createtenantdestinationglobals.md: + id: a20a86817611 + last_write_checksum: sha1:1783f3762608177857a780ae1f5dca9a8c1a0ab0 + pristine_git_object: 1d59c3514d0bbc7bca729f4817aba3899a657d57 + docs/models/createtenantdestinationrequest.md: + id: "943059858332" + last_write_checksum: sha1:c68ca9130dc3329c09816b151bc5b8bc1fb5aa30 + pristine_git_object: b4dce1f8d8e5ee6e94f3f6bc463046108e1b4a94 + docs/models/deletetenantdestinationglobals.md: + id: 4c41715d94ed + last_write_checksum: sha1:d07ab2af528456713a22845af590acf6d8251f25 + pristine_git_object: 872d67e34487c31f9a19e2f76501920b810a81db + docs/models/deletetenantdestinationrequest.md: + id: ff17485df01b + last_write_checksum: sha1:2316c45ee5c837031ffaebe6bd5c15f04ad12729 + pristine_git_object: 3513716b8d951dabbc9a4d0211b4c0693d8caf3c + docs/models/deletetenantglobals.md: + id: 7a7f30355b14 + last_write_checksum: sha1:0f9762b48ea24832cea0dbf4b6554eb841321a08 + pristine_git_object: 1d729768a338a51ca87a89ab938b608b058489e8 + docs/models/deletetenantrequest.md: + id: 05b1a2090bf9 + last_write_checksum: sha1:49d22bda71c632f68c33ca9f6f0435f51bbec6fd + pristine_git_object: 3ce81c0788d60841dc93bef4edcf5a3a993c085c + docs/models/deliveryattempt.md: + id: a7dd6c151327 + last_write_checksum: sha1:4443fb6133edf7de62d9adcfad26ae0085d2e472 + pristine_git_object: bf27360740c63621942df4b5e6e3a7713f249eaa + docs/models/deliveryattemptstatus.md: + id: 73d716edad48 + last_write_checksum: sha1:d983b343b7895f7ebf6327716cb55ef2258c28b5 + pristine_git_object: 608b73c6bd9278d8d7035c696a088591a3baa91a + docs/models/destination.md: + id: 687894272b1a + last_write_checksum: sha1:862dcda270fe67a3bbe7a0fc443197825fd85c46 + pristine_git_object: 62723c1f03f46e5f2a74a2dc045244153e66396c + docs/models/destinationawskinesis.md: + id: 6d81ecea9fdc + last_write_checksum: sha1:d0198cfe99303855d466434bfcc0c8efd494bb84 + pristine_git_object: 3c24ce09ba6ebfcbb73ec67821299942b15cca02 + docs/models/destinationawskinesistype.md: + id: c4dd6fca8de7 + last_write_checksum: sha1:e35cac886c3d2decdf72f09f4c3e49edb189223c + pristine_git_object: 268ada9a72ab2d0f1f6b58731a075e9c54252b83 + docs/models/destinationawss3.md: + id: ff122e07e234 + last_write_checksum: sha1:c60b72534457e7f351152f84c2b735c362f4afa8 + pristine_git_object: 4733322cc0ade9e0da03d9df41ae31ec761932f2 + docs/models/destinationawss3type.md: + id: d28d95d24ee2 + last_write_checksum: sha1:f4ca8b85019718539a6b21af08cce793cb81a19a + pristine_git_object: dca9825f600aa8a075b8669788d783352562a114 + docs/models/destinationawssqs.md: + id: be55d5a60266 + last_write_checksum: sha1:b51118f9e5e156a60eba92b4443e229de4d08f8a + pristine_git_object: 236321b92110d9bd05a89b3bc172bd86f95fb59b + docs/models/destinationawssqstype.md: + id: 55d5846eccb7 + last_write_checksum: sha1:af226e248afb3df6bd48723d4e30287221a32ba4 + pristine_git_object: b34c57ff98fb96be7c3edd2d79eceb03042a52a3 + docs/models/destinationazureservicebus.md: + id: ed697d05f286 + last_write_checksum: sha1:7abe477f772e0d584a633001ca6f66b84202d42a + pristine_git_object: 62e1e3ebfe415dbd400759d493a39e986309f0e0 + docs/models/destinationazureservicebustype.md: + id: 36eb1c9188a1 + last_write_checksum: sha1:d03d1a20d25f9ccf01972d012a908dc225bebdd4 + pristine_git_object: cd0fd55b5de0f0b5ada7c9b2dc802c1115f85516 + docs/models/destinationcreate.md: + id: 753d487291de + last_write_checksum: sha1:34537288271ccda32c6aff997833a14c29277d1b + pristine_git_object: f1c670b0c7a91689e703b3cdfb4f3de4027b7981 + docs/models/destinationcreateawskinesis.md: + id: 9b320c478947 + last_write_checksum: sha1:4cd1ad02cfa11134b70d1618b6657d4f42f5de85 + pristine_git_object: c52d7b3144f8e95722ba02225e989e3f3cb99cfb + docs/models/destinationcreateawskinesistype.md: + id: a301bfbed763 + last_write_checksum: sha1:05c54a996bce1f516e8ea096bfc5c7b225af3b3c + pristine_git_object: dc4aeba1fa5dfdab35f4cf8f0ae0054fa583b2c5 + docs/models/destinationcreateawss3.md: + id: bc177123074e + last_write_checksum: sha1:cc4cdd8db12d08dcfc9caf6e40536d05ab009bc0 + pristine_git_object: 250fd5153b69e10792800d32560ea2743c81cf12 + docs/models/destinationcreateawss3type.md: + id: cc21ccb91e67 + last_write_checksum: sha1:09245d102fd1178e27c03a4408e073075f1aef18 + pristine_git_object: dbcca224e0416e31d28bed1840fe1d0efcc6cf29 + docs/models/destinationcreateawssqs.md: + id: a81f0a089390 + last_write_checksum: sha1:1bd0cd3fbd1402a853a406c64f3fdf97ab8a375b + pristine_git_object: a59e04de2887c625254955c51d2898c39f485262 + docs/models/destinationcreateawssqstype.md: + id: abd5182b8036 + last_write_checksum: sha1:bb3a5df07834b60f78f8cc6cbc20c25342f11015 + pristine_git_object: b2380eb23c096b7941aeb77fe3fd4227de6eec35 + docs/models/destinationcreateazureservicebus.md: + id: de448d3776b9 + last_write_checksum: sha1:9dad97140f072ae6ddf691c1066621ebfbdea5b5 + pristine_git_object: b8a431c502fd33c419606119e32278a625f18ead + docs/models/destinationcreateazureservicebustype.md: + id: 2b44423ffb57 + last_write_checksum: sha1:dd7cdb84af29266d2d239b871698a02bd37c7b21 + pristine_git_object: c42a0d147aa9c463676703d12c0eafa23e3fb497 + docs/models/destinationcreategcppubsub.md: + id: 4db025a094d8 + last_write_checksum: sha1:14468f8d290468a5adad7246b8125c3daad43a8c + pristine_git_object: 739d1cca9c6c7729a764077f7f291a472ff30615 + docs/models/destinationcreategcppubsubtype.md: + id: 2f3bb28c178a + last_write_checksum: sha1:8cbcf4851882a6d1859071696cd6f426b5100409 + pristine_git_object: 60deed6e09efd660746a54386617ca8b8b4e9158 + docs/models/destinationcreatehookdeck.md: + id: 313ee240253a + last_write_checksum: sha1:353a20ffedca194983d2748c920fd6db98490556 + pristine_git_object: 6b0fb6f085fdcd223db3c0b736650195eab13ab4 + docs/models/destinationcreatehookdecktype.md: + id: 7c14bf04c6fa + last_write_checksum: sha1:0461fc1dcf49ac499ce6993fbb03e57b14793fd0 + pristine_git_object: 4c59427c474939e2378b8c239f5e5f073f9aede7 + docs/models/destinationcreaterabbitmq.md: + id: 378a3117d167 + last_write_checksum: sha1:5c96afa5297ced0bd91b0a8809da4d7e5efcef06 + pristine_git_object: 368f52f090d759acb443918641f5710d17250ccf + docs/models/destinationcreaterabbitmqtype.md: + id: 67f573cb48fc + last_write_checksum: sha1:873c447668a8eff6d72407c6a5e35723cb7c4022 + pristine_git_object: 669a286ad06e3e1d757058107a4d14c2d48f509f + docs/models/destinationcreatewebhook.md: + id: 045bdd4bfba9 + last_write_checksum: sha1:90db0f60734ffeb8acafd90eae1d34223ad656e8 + pristine_git_object: 07b9d716078032608008c67a351bb7d9019a2326 + docs/models/destinationcreatewebhooktype.md: + id: 480c29c3c0ee + last_write_checksum: sha1:7d24c7e16bedde3fa49a8eaaf0653018366a0e53 + pristine_git_object: bee08d5160ed36136133edcd858f93343d54ee67 + docs/models/destinationgcppubsub.md: + id: 8d458b6431fc + last_write_checksum: sha1:cb51243c0868db61afd802d189772c8c7a4a0838 + pristine_git_object: dbafb7bb95aae90e98cfe73b2deb73752c0fa6cd + docs/models/destinationgcppubsubtype.md: + id: c8ac9ab6541c + last_write_checksum: sha1:e92310b72964fcc0af4af7d75ffadcd10482ccf5 + pristine_git_object: de36e971dbd2c4eb031197b4974f1716f572247d + docs/models/destinationhookdeck.md: + id: fb096a78647f + last_write_checksum: sha1:e3e5f0329da3b9643e573fc8f7856d9f9e5f6df3 + pristine_git_object: b56b211039973a5968762db2eada122b3c0345ee + docs/models/destinationhookdecktype.md: + id: 1c418f6e0237 + last_write_checksum: sha1:e471cc7edbc26f6181f4f73a1e6c7b74247e8d37 + pristine_git_object: c2f2f2f6b58892da28eb46fb8e6c67fd3b6d97a6 + docs/models/destinationid.md: + id: bc96d6ad0c9a + last_write_checksum: sha1:4fe3e9dc5ee7bad3c28be0c4ff21ad50839103bb + pristine_git_object: b046a34ad9b78d96fc2e5b477ad54a7b77aab3fd + docs/models/destinationrabbitmq.md: + id: 0e006fb4f238 + last_write_checksum: sha1:dbea0a75e75f584c136822f94b88c982eb60b0e9 + pristine_git_object: 843e8bcb7a989bd8e3ffffeecc788e5e1d0245c2 + docs/models/destinationrabbitmqtype.md: + id: 465a84d53bc0 + last_write_checksum: sha1:6249be7c1568fd69bef3ceb5dfafa1ee9e420f89 + pristine_git_object: 9b6d7a4fb16438f6b02c3e397aff2d50fa2ebb97 + docs/models/destinationschemafield.md: + id: df08f69d8fdf + last_write_checksum: sha1:3ebfd458f7ac0f8ae596ea8243001e1a0c8e4482 + pristine_git_object: 4623c6a89a3408d38f42d1547b2c339b523dcc63 + docs/models/destinationschemafieldtype.md: + id: ceba3fe4fa9e + last_write_checksum: sha1:09c73a936a7b6556349ee6938171e173b964933a + pristine_git_object: beec70a0e8e323fb07c9acf6b3abdb7a1cff2d4f + docs/models/destinationtype.md: + id: 27183f23a494 + last_write_checksum: sha1:2303720ceaf752f56f5e3820804f02c31c52fa23 + pristine_git_object: 3ca7e4005b5d5572b3c3c3b847a40323f5049173 + docs/models/destinationtypeschema.md: + id: 046d276b4515 + last_write_checksum: sha1:ec12eb0051c455f7a8e91c93c0780ddac08471fa + pristine_git_object: 844729caff36e96f445dadfc8b4df0361dc88175 + docs/models/destinationupdate.md: + id: 29ededae7d93 + last_write_checksum: sha1:66e9533952c1ef7f79f9637400dfcb5c9b57f633 + pristine_git_object: 37cd62167fe00987ea10746f5997fb05d1e8c603 + docs/models/destinationupdateawskinesis.md: + id: c735ef832904 + last_write_checksum: sha1:479e8b404ff7f9e4e4621c2f14d5107c5c741c28 + pristine_git_object: 0eacdce076c4e0662e9a3c2bf849d705105bb6eb + docs/models/destinationupdateawss3.md: + id: 76faf4c7812d + last_write_checksum: sha1:c056688910b0c7ee7dfe85251f3aa26bdb91beee + pristine_git_object: 6cbd6d3488827cdf95194a587d308e51ea00aed1 + docs/models/destinationupdateawssqs.md: + id: 02ac773b1910 + last_write_checksum: sha1:77b8f2f71de90c867e364022a3c8df03ecb62231 + pristine_git_object: 009ff5332a6cc99f8124525fbe027f34119b849c + docs/models/destinationupdateazureservicebus.md: + id: ce89817ee515 + last_write_checksum: sha1:76abdc2951b39c6e9025e06be7503404d87fba4d + pristine_git_object: c0edaae812968378e1b8d1d2fd6b26e36fef7f1e + docs/models/destinationupdategcppubsub.md: + id: 3aa59641195e + last_write_checksum: sha1:75c152e620a10850272c69677eb0a7af7413b4d4 + pristine_git_object: 4605278ca7d7b8b7f16ca38fcd3d90237799052a + docs/models/destinationupdatehookdeck.md: + id: 68e05155df34 + last_write_checksum: sha1:6fc24a6801dc01ec1399c188208f382f869318d8 + pristine_git_object: fb8d4211cb1851d606f95eba5ddf43662ec46772 + docs/models/destinationupdaterabbitmq.md: + id: 9f9ca90dc37d + last_write_checksum: sha1:09a1d73aba8aaad7b7aad685a3e8f57b3ca57391 + pristine_git_object: db17ef6aa3130eabf1e211c6cb5ca93392909502 + docs/models/destinationupdatewebhook.md: + id: eeaf368b6338 + last_write_checksum: sha1:8848e4edc96177ad8f9afa17a6dcb80f3e0542ca + pristine_git_object: 3132ae923bec55f5540e858e7998d42ec160211d + docs/models/destinationwebhook.md: + id: c7672f3fe6cb + last_write_checksum: sha1:df98946f08391480b8b725c2032f60f1a0c55a91 + pristine_git_object: a80231bdfeba18b58529dde05cffbfe00d66ce98 + docs/models/destinationwebhooktype.md: + id: 4c9f7f92cd1b + last_write_checksum: sha1:35bcd14f1749058c423c190ea8072b865c648b5e + pristine_git_object: 73b01fa2404a327b05fc10f4f2f17257797ebd4a + docs/models/disabletenantdestinationglobals.md: + id: 3b52a15353ae + last_write_checksum: sha1:b15955a55f194a4ad939a7ece13e0238cf7d93d9 + pristine_git_object: e065555a256c9b302768b10fc746a06c064efd9a + docs/models/disabletenantdestinationrequest.md: + id: 02a18ca7eb25 + last_write_checksum: sha1:bbfe3d2b1418bf30e32b48c1c0dbbb83ea94f001 + pristine_git_object: 549f16eac7178a233b537d0ad53f32518127b865 + docs/models/enabletenantdestinationglobals.md: + id: 7894eefd4604 + last_write_checksum: sha1:57b0948c2d7379a0979188afb58362126a8958d9 + pristine_git_object: 6dc295ca0b67666f8f9bd0436f67c029d5194dc3 + docs/models/enabletenantdestinationrequest.md: + id: 2c5a4336fe91 + last_write_checksum: sha1:68db0e82ec04b6cb93fef367fc12e39c0f48521c + pristine_git_object: 5440ebe719c9ffe267a3416c40c16159f9359324 + docs/models/event.md: + id: 311c22a8574a + last_write_checksum: sha1:33cfd478b88e1cefad47b56d85e634e27ac447d1 + pristine_git_object: 7eaca768c38d41935e4e8786e2a7bf38eeccd9b5 + docs/models/eventstatus.md: + id: 0848b1e061a2 + last_write_checksum: sha1:c9c0a804cc02807d6e9fa7db0f0d2d9b82943352 + pristine_git_object: d7e862741b3caace0db63936a675d8598c211e07 + docs/models/gcppubsubconfig.md: + id: 73a8559c13a6 + last_write_checksum: sha1:cc3c9973f838d2521151e9db34eedc1c732bbfd5 + pristine_git_object: e9739d266e14e4a2248236e257368bdd11989a1a + docs/models/gcppubsubcredentials.md: + id: 680381031b8c + last_write_checksum: sha1:bd53ce9234d65775948655b13380f40a9a0115bc + pristine_git_object: c785edab1894fa93f3b5011161f15dd0caab3196 + docs/models/getdestinationtypeschemarequest.md: + id: 7964f308b544 + last_write_checksum: sha1:1cf8c0bf9c095ca337822676dacdfb6e43791c6a + pristine_git_object: ed2b060cec2286fdd60877337db7471644cb9e5a + docs/models/getdestinationtypeschematype.md: + id: 443fef4341c3 + last_write_checksum: sha1:7494ddf2d53a9fda9ec92f582c32e31ad41a6e06 + pristine_git_object: da1ac07ca51f6da4ccee3b303af5cf2c293c1042 + docs/models/gettenantdestinationglobals.md: + id: f2fba6fde559 + last_write_checksum: sha1:51045d4c2898e6902f1504c2f7cfd6b91f473ced + pristine_git_object: e5d2c43b1405407fa427276278b31609784e9374 + docs/models/gettenantdestinationrequest.md: + id: 173425f3055d + last_write_checksum: sha1:f341ae5ec06c19c97ed1cb3dc4847deb0659b6c8 + pristine_git_object: b13f98fb64ae2ba512fb7ccb4d7ce59a3bcd90fd + docs/models/gettenantdestinationtypeschemaglobals.md: + id: 10f874992547 + last_write_checksum: sha1:d1fe501fb1f8d2b526bd5965fab8bc83a6ef9334 + pristine_git_object: 0417f884f0f2a2578afeb0adb0dc41f2343ea091 + docs/models/gettenantdestinationtypeschemarequest.md: + id: 6c72d6a01b8e + last_write_checksum: sha1:963c1f344b5e418156d337f1c566cb6f64f5d7ab + pristine_git_object: ee4eacdb5da2da97f6ad2ce46643616250bc220d + docs/models/gettenantdestinationtypeschematype.md: + id: 16d58a91204b + last_write_checksum: sha1:847e8ca6e9c46ddd3b382b28fa32eab5d47456ac + pristine_git_object: f240006d7b28d513b72b93ad94ae1ffb49fd0e70 + docs/models/gettenanteventbydestinationglobals.md: + id: 22bc3be69853 + last_write_checksum: sha1:d5da797c06bede1a8f5b636bbaafd428fa83a98e + pristine_git_object: 1bdb99d80af974a0225e5c9f43bab2148100f47e + docs/models/gettenanteventbydestinationrequest.md: + id: 9d7cfce778d3 + last_write_checksum: sha1:f2faa0209c5705c0f8d562724d72d846f77c6e91 + pristine_git_object: 9985c9cc02c3e9e8f5641ffcacfd7f3446e5fb8c + docs/models/gettenanteventglobals.md: + id: 376f81b4a788 + last_write_checksum: sha1:b1868855e820eb4a2ce00d6f5117a17d2087af02 + pristine_git_object: 960957a220f4e775fb4501ba7af8814e727908f9 + docs/models/gettenanteventrequest.md: + id: ee5911b140a2 + last_write_checksum: sha1:da6ed2a41d3342bb44d35aaf004ae76976111393 + pristine_git_object: 3c0f13549dcb6f03ede155937a2cc1d9104bf2ab + docs/models/gettenantglobals.md: + id: b047609a217b + last_write_checksum: sha1:eea11a047bab0a21df2510781c534eea8d1edc06 + pristine_git_object: 02bb02d091427cc1a986bab5286a9773facdfa34 + docs/models/gettenantportalurlglobals.md: + id: 81ad8c57b6b2 + last_write_checksum: sha1:8563e37a25c53d2384c0c8ed73b15bcac916c92b + pristine_git_object: 5020bcd668d22c94a0403de5f30f87914cfb2340 + docs/models/gettenantportalurlrequest.md: + id: e0044217e8bd + last_write_checksum: sha1:34378ca8658411cdd16bfe4bb8660f4d0e853e89 + pristine_git_object: d8ae191b5c79bd586eb292ace0df1f6c6a203316 + docs/models/gettenantrequest.md: + id: 9db055156402 + last_write_checksum: sha1:64d6e36cc78ce031f33a59c1a9ada2b9bae56318 + pristine_git_object: 36d87c744560863a9ebc57f8e85bc66eae3e5434 + docs/models/gettenanttokenglobals.md: + id: 6b2228c494c3 + last_write_checksum: sha1:0a07bbf4eb9fd1d3ef440569f45abddb665cab40 + pristine_git_object: b3a14f63d1d085a20e3cb6ad297e27c77691177b + docs/models/gettenanttokenrequest.md: + id: 32bf836a35b9 + last_write_checksum: sha1:d83b1ffe074ae8ad00b40d0aafeb083deafea56b + pristine_git_object: 0ca4312ec5c0ae0a0edf8bb4deac9ae7aa41212f + docs/models/healthcheckresponse.md: + id: dbb2cc68ef9a + last_write_checksum: sha1:1d903b01217d05349eb60e2e5c88209490739451 + pristine_git_object: 81362c49557d3e7fb06dd918b354bf500b535e4d + docs/models/healthcheckstatus1.md: + id: 3ff01c2abf0c + last_write_checksum: sha1:28a8875cc3b2d4286b0cb122130e70006e4d5c69 + pristine_git_object: 40cb2e3cc81ac58d124191036fd12063a117668b + docs/models/healthcheckstatus2.md: + id: b357ee89ece3 + last_write_checksum: sha1:3a5db301c6c45930826c5a04913d0d749a6292a2 + pristine_git_object: 5eab037a79a81a00e06d21f60bda832528547103 + docs/models/hookdeckcredentials.md: + id: 81b1ac6b3c47 + last_write_checksum: sha1:0c6bdbd6b811008f476ba998cd2b18c2924b2432 + pristine_git_object: 5b48b0e29a9892c22298413abf9e1662d4c70f6c + docs/models/internal/globals.md: + id: 9c173b87f41f + last_write_checksum: sha1:ab2027a3dff3b302da70b7ba13c0686e77a74463 + pristine_git_object: a1d0aa0f05e450ed41b3c1f8cc6b13d22f24e9bb + docs/models/listtenantdestinationsglobals.md: + id: 4debca81cb79 + last_write_checksum: sha1:8c9b8ae9633c435ede63b3f516411b43c0804ed0 + pristine_git_object: e10dce6c573f93c74d201b25d2183d27fb1b4ea0 + docs/models/listtenantdestinationsrequest.md: + id: a1c960e26be7 + last_write_checksum: sha1:ce0bb73dc0fc969505f670eef4cdf810fa0cd711 + pristine_git_object: d12d2e664c30eaa3203b156abcca75ee57e709d4 + docs/models/listtenantdestinationstopics.md: + id: f495fffb06d5 + last_write_checksum: sha1:f52327725b100deb9d6cb9be142594c74713f8f5 + pristine_git_object: 4713f106a287e61f3e13a7d7805a86c2c9901f08 + docs/models/listtenantdestinationstype.md: + id: a94cc1eae534 + last_write_checksum: sha1:433f72db883050f35285a4bde018f055ea69c8e6 + pristine_git_object: fdf4bf5254f80c08544b0295f6b5303d3dbf4cc0 + docs/models/listtenantdestinationtypeschemasglobals.md: + id: cf7706da9a5a + last_write_checksum: sha1:8dddbb029bf801c7ec29c4b64868c67d72d081a5 + pristine_git_object: 7e99e8292fd6a28c1bd5ae38b3e2edb158f47c47 + docs/models/listtenantdestinationtypeschemasrequest.md: + id: 65f4f4a9254a + last_write_checksum: sha1:a9c0fb9a2bc347642d5030f61a78ce83bcc9e952 + pristine_git_object: 9ed3477730a190bf7540e925e0f4d9eab9a8640b + docs/models/listtenanteventdeliveriesglobals.md: + id: f82f7034925b + last_write_checksum: sha1:4d773293be0f2e739d96e0b0bfedde7a4a2a7714 + pristine_git_object: 08504e3b97f8ec68cb05ba948b7571ff5138e28b + docs/models/listtenanteventdeliveriesrequest.md: + id: d3373ce3e535 + last_write_checksum: sha1:eced40f18a2ad93e18514d9d36c34899eff896d5 + pristine_git_object: f0f86e83fa4ad12bab19865507d2ee2b67abb74f + docs/models/listtenanteventsbydestinationglobals.md: + id: 8858c34b8ac3 + last_write_checksum: sha1:de533217e9d2af52f4acc1950d59c6299282c76e + pristine_git_object: 87fa91db9d5f21b57d9369a432a73f4363482c0d + docs/models/listtenanteventsbydestinationrequest.md: + id: 53d9322e951b + last_write_checksum: sha1:d98d213d05d7d28f9967eedbc10201b436838198 + pristine_git_object: 6479ccdacc207d9f3538cebd40f040009ffb85b3 + docs/models/listtenanteventsbydestinationresponse.md: + id: 6e4a2d7032bb + last_write_checksum: sha1:2376d25fb6d5b24ad9ff70d00e491db378b065cf + pristine_git_object: 7aff9813065dc5a6479c4e62c527708083a4c8b1 + docs/models/listtenanteventsbydestinationresponsebody.md: + id: 2bdd49f0bb9c + last_write_checksum: sha1:31218c4b7033839fc33b7287769b85c08519b8cc + pristine_git_object: c00232ee90a14ac44a14821d7611609a7d89b146 + docs/models/listtenanteventsbydestinationstatus.md: + id: ac2c1fc5fdd7 + last_write_checksum: sha1:c1f306dcc21a48291db67e7abe2a9887c67c83fd + pristine_git_object: 921d197ec0bcb80bccc2aaf17735875c43002f79 + docs/models/listtenanteventsglobals.md: + id: fc0997993812 + last_write_checksum: sha1:edcdff733b6ffcaf29acc290cef2ad1906b67c8e + pristine_git_object: 4a5e6ffdb353d153a6e846fd601700429578cb71 + docs/models/listtenanteventsrequest.md: + id: 2beca8462c10 + last_write_checksum: sha1:bc764a3b88dd44e7c0f288915b38d0595bf329af + pristine_git_object: 70ce43875fd3deb9c5b83ca759faf678abd4bfe9 + docs/models/listtenanteventsresponse.md: + id: da871141e5d2 + last_write_checksum: sha1:096468dbc84b259a206f04c3ff4dfc7de4892fe7 + pristine_git_object: ac9e10f45fc2df1a6fe51e3426ce7b07895dcb0c + docs/models/listtenanteventsresponsebody.md: + id: 47c25d5f0fde + last_write_checksum: sha1:9fe7e60d10410e844d8e779c12fd8402de6ca0d9 + pristine_git_object: c2d859150d76fb3ee197bd1d2c43edf7acb00b50 + docs/models/listtenanteventsstatus.md: + id: 5ace7b89b24a + last_write_checksum: sha1:a1588b94f92695d090cbb36d082d71b27128c63f + pristine_git_object: fe874f47f188bba9a36ded567c0f1f0995763077 + docs/models/listtenantsrequest.md: + id: 39a7c6125a52 + last_write_checksum: sha1:ce047470fd7471874ff74742a9acf1febdd24381 + pristine_git_object: 02636c548d09dc64fa774b8bdbc8c82fc5cdac45 + docs/models/listtenanttopicsglobals.md: + id: d42fce6b8741 + last_write_checksum: sha1:62a53a4073f2374e2f7dfa25ff48a167af76e757 + pristine_git_object: a3d9f25245b82d1d8f1ed0c5ffa5939b007c0dfe + docs/models/listtenanttopicsrequest.md: + id: 8b7f33bed2df + last_write_checksum: sha1:a72f5f4578e664389fa571fe3fd34e2bc09b4fa9 + pristine_git_object: b67ebd67ca52f335f69db8b0b5026a60f72be7f2 + docs/models/order.md: + id: 5d2682daf79b + last_write_checksum: sha1:082aabf3e2d581d9dc9fa58241fe283dc0ca2e82 + pristine_git_object: 642ff364292a1954dce6a180076c05578acd932a + docs/models/portalredirect.md: + id: c3fc0cb823e3 + last_write_checksum: sha1:15496013ace8b922ec2cf99c5ceade2324156ba1 + pristine_git_object: 12bee4660a7ac3da793e4fdab5796da80956524a + docs/models/publishrequest.md: + id: c7ab0be725e8 + last_write_checksum: sha1:5c44fe551b859eb66a76f03f5642d0bc241cff67 + pristine_git_object: 3f93871438927dece956b07f9a220f0e1efa03b9 + docs/models/publishresponse.md: + id: c623a9381358 + last_write_checksum: sha1:a1f1c82b9b931cec1adff2c20d0e181e424822aa + pristine_git_object: 550350adabe5dde7c2e500f5b68ec479b40c2f32 + docs/models/rabbitmqconfig.md: + id: 07b8dda5ddf2 + last_write_checksum: sha1:29539f088754497c3a16fcaae9cf675c9d86bb5d + pristine_git_object: 8ca96121bece01a2c83f880b680e9e328634fa64 + docs/models/rabbitmqcredentials.md: + id: 176996f7af13 + last_write_checksum: sha1:bb9a947b04976d9a1dd0d25c5fda3ec5c4b2154e + pristine_git_object: c7cf5944a55902739196feefbea87f0a971eebca + docs/models/retrytenanteventglobals.md: + id: 73e00595d633 + last_write_checksum: sha1:0d420c698de8866e547d53bbb766a5771eeca84c + pristine_git_object: b181050b3eb40caf19e499bf7cda92e12d43c3c3 + docs/models/retrytenanteventrequest.md: + id: 47612096fa50 + last_write_checksum: sha1:f9b56b0adbc7d4a2f8cdde6372077afd50476b0a + pristine_git_object: 79beee8283cdbe5b24d95b912ae1d18bb1b3f7d8 + docs/models/security.md: + id: 452e4d4eb67a + last_write_checksum: sha1:da802b50b2022b00d7ccf30bd3ad67a510d6b19e + pristine_git_object: 4f1ea4adf5220086cccb27a6b76dc141dd5397f2 + docs/models/successresponse.md: + id: 95d2dc3eecc0 + last_write_checksum: sha1:9c2f61e7ea6cb7f1297ee05a59e3fcc8d9bb2829 + pristine_git_object: c0e8059917e940b8872f0900fb30d378d7d40758 + docs/models/tenant.md: + id: 5d923fdac371 + last_write_checksum: sha1:07d66144dc8b81b22cb03d2ca42c546a650fce4a + pristine_git_object: 25ef14e9bb4ca77a07904c6386d14129bcf8fd35 + docs/models/tenantlistitem.md: + id: f25652420a60 + last_write_checksum: sha1:78890cbda71aecb58d2cd90296716c363ac0d663 + pristine_git_object: beb2ea3c888f05cb4d877154e7719e673d1b3fa7 + docs/models/tenantlistresponse.md: + id: c76eced417c2 + last_write_checksum: sha1:7ec996843d41277567e687bcd7c1e8cf4238413c + pristine_git_object: 0ac3c092904273b8175ac27e4b2944b7be084619 + docs/models/tenanttoken.md: + id: 0a6f43865892 + last_write_checksum: sha1:9bd5e700be7e710f41fc3a41cb1a71f42b78a224 + pristine_git_object: 94a944ae3fce8ebb70e4336d541baa6409f9ed63 + docs/models/tenantupsert.md: + id: dc468f84ea2c + last_write_checksum: sha1:dfd6b90d179b3b70c0c20a0284354e562067ccad + pristine_git_object: 536a1d9e8ae653bf85cc9eef6fc355da5e46c507 + docs/models/theme.md: + id: b90d5f791efe + last_write_checksum: sha1:f216da9bd483422786aedb7c47d379b5be36a779 + pristine_git_object: 0614dcfb4b43e8b97cc843d75b118b3f8cac77aa + docs/models/tls.md: + id: b02be4f57050 + last_write_checksum: sha1:1c375fdca1fcb8147898d51565822d807de95f58 + pristine_git_object: d603f036d9956e516b2cfe5adb03692a4ac703cc + docs/models/topicsenum.md: + id: cf2a654b2451 + last_write_checksum: sha1:79c16a529590c7be418c3b86d3fa93f61cc96a12 + pristine_git_object: 1cd09d2e512b4df59e2359f94e8e376a08ebbff3 + docs/models/topicsunion.md: + id: a8bf33e50e32 + last_write_checksum: sha1:8f7f191427443cd4ba09dab75cdf1bd8b661de1b + pristine_git_object: 333ed39ceb47534ddd177aed49c2c8d5e1288a6f + docs/models/updatetenantdestinationglobals.md: + id: 35376ff5d5dc + last_write_checksum: sha1:7d7006aa274b673e315d4ff06be19e012646fd7d + pristine_git_object: a65ab79013bed26937a7751cda76a3ff2edaafa4 + docs/models/updatetenantdestinationrequest.md: + id: a573c8a2ef7f + last_write_checksum: sha1:4c79ee580a6f57a9f5f12a355123b5e9a933326c + pristine_git_object: e9581e312dd85f01d3b934003868065a52645618 + docs/models/updatetenantdestinationresponse.md: + id: 674595acc745 + last_write_checksum: sha1:e727b2a45ef7fcc7090e34378f32ba2b07f1ebff + pristine_git_object: c63b5b37e3f0c27c765fa917cdfafcb28c0e4653 + docs/models/upserttenantglobals.md: + id: e71803903523 + last_write_checksum: sha1:e7a51b334689d96a54531a56eed04cbdb8e0a345 + pristine_git_object: 29d23c926a6d25e45c65bdc91ed2620232d43481 + docs/models/upserttenantrequest.md: + id: 9d9234f1fce9 + last_write_checksum: sha1:9bedd51f98307c648390af656fb8446f3ba21568 + pristine_git_object: 1bc55be44245617400b94dd500418da8bb7831e3 + docs/models/utils/retryconfig.md: + id: 4343ac43161c + last_write_checksum: sha1:562c0f21e308ad10c27f85f75704c15592c6929d + pristine_git_object: 69dd549ec7f5f885101d08dd502e25748183aebf + docs/models/webhookconfig.md: + id: 84dbb4d5e052 + last_write_checksum: sha1:89a653b1a0bffa120109d59a0f74e003ebb3179c + pristine_git_object: f2af882b065e73a20187a607240683483e05fad0 + docs/models/webhookcredentials.md: + id: 42dbc7945a1e + last_write_checksum: sha1:45d9202855a23383150e0f0b3ed692718bb53ec8 + pristine_git_object: 43d97c2cea9dc25796d1aa004eeb858d5fc9c8ac + docs/models/webhookcredentialsupdate.md: + id: c2531d2041c7 + last_write_checksum: sha1:9c1b8a864df474e36d95a6a6d63b4d61c6db0129 + pristine_git_object: 9e4282bf1c4d957824ec24085d0d9c7b0a8f665e + docs/models/workers.md: + id: e1c419105efc + last_write_checksum: sha1:d5352fa0819f731f75e8ade764e7a3cfdd7049bd + pristine_git_object: 36572088751475931126b4d86e8ea067ac214eed + docs/sdks/destinations/README.md: + id: e83d288899aa + last_write_checksum: sha1:d254d4ed7e6b77e68adebade64a95f014f2dea5c + pristine_git_object: b3c5e98f296454841f57f275d1a814e60c47c507 + docs/sdks/events/README.md: + id: cf45a4390b9b + last_write_checksum: sha1:9ce8d9b929bb9ee3eede2f4bee1f86a04dfad7ba + pristine_git_object: 8417c68105834e9b4f9177f7023e8aeaa5905e2f + docs/sdks/health/README.md: + id: 5082c50d5e82 + last_write_checksum: sha1:edbbd8aa126aa79f9db43884174dcadb6724b3d2 + pristine_git_object: 450073a93bd5a48acda412a41083b545ab9c5604 + docs/sdks/publish/README.md: + id: 370ef5537c93 + last_write_checksum: sha1:a0f7d9d372b73dd78991f62a8536af053f969995 + pristine_git_object: 3fb70cb90d30f2a7bdf6bc44fdfab705eda6ca76 + docs/sdks/schemas/README.md: + id: 26a0abac640e + last_write_checksum: sha1:65231a3eaa2859560bc5f060e3ed710b0e38d302 + pristine_git_object: 70a01490056cd98ecaf05db8f6b6f20b39e0cccb + docs/sdks/tenants/README.md: + id: 68a2b19779b5 + last_write_checksum: sha1:257028549261d8b8c710a7b41145edfb9b07686a + pristine_git_object: 421496ba7b91648688dfc22c2c2b89c81cc64816 + docs/sdks/topicssdk/README.md: + id: ee1b98e4769d + last_write_checksum: sha1:b5991a6ffef082c56799ef9c3977c87a3bf1bdeb + pristine_git_object: d603783d053454df0e62bcccc6d4ece0bff37b2f + poetry.toml: + id: a81ade82122a + last_write_checksum: sha1:2242305e29dc6921bdf5b200aea5d4bf67830230 + pristine_git_object: cd3492ac9dc870fdcf23dbd94fd1d40cc753cc8e + py.typed: + id: 258c3ed47ae4 + last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 + pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 + pylintrc: + id: 7ce8b9f946e6 + last_write_checksum: sha1:db2aebd83e553dd59d3965e79104a3fb780c403a + pristine_git_object: e8cd3e85682cd3d489cf3c5be75a0563d0c9f4bf + pyproject.toml: + id: 5d07e7d72637 + last_write_checksum: sha1:fb2b829b10b6977d411a0349c70b69dc7496bc8a + pristine_git_object: 255213f6baf5bf9251cd9ad238d340a81559513f + scripts/prepare_readme.py: + id: e0c5957a6035 + last_write_checksum: sha1:eb460f85c06b287fee629d997b2df75c92fa1cab + pristine_git_object: 2e9fa3be8114ff67bcc872fdec657e6bfca01271 + scripts/publish.sh: + id: fe273b08f514 + last_write_checksum: sha1:b31bafc19c15ab5ea925fdf8d5d4adce2b115a63 + pristine_git_object: 2a3ead70ccc6228cbae1c5c8a319b1399f3804ea + src/outpost_sdk/__init__.py: + id: "420816085018" + last_write_checksum: sha1:da077c0bdfcef64a4a5aea91a17292f72fa2b088 + pristine_git_object: 833c68cd526fe34aab2b7e7c45f974f7f4b9e120 + src/outpost_sdk/_hooks/__init__.py: + id: 3c6594b52796 + last_write_checksum: sha1:e3111289afd28ad557c21d9e2f918caabfb7037d + pristine_git_object: 2ee66cdd592fe41731c24ddd407c8ca31c50aec1 + src/outpost_sdk/_hooks/sdkhooks.py: + id: 4b90a4b2de19 + last_write_checksum: sha1:e60470a56ec72ad3e8a416862baf22db455b405f + pristine_git_object: 5a3d507e3480e79fa8a6f7f0eba76c4b3e30ca84 + src/outpost_sdk/_hooks/types.py: + id: 0efcdf50e245 + last_write_checksum: sha1:b524861d5d9ef24d6605bdfc9a1e4d37a4248245 + pristine_git_object: b1777a2eacece4434c53b2e136158f0c1360707d + src/outpost_sdk/_version.py: + id: 22be68f35ad0 + last_write_checksum: sha1:7d631daa4f594a68c584fb72ff55e8ce5eca90e7 + pristine_git_object: 97d0f6a1c3e671201b09801b7af6d46da5938c1c + src/outpost_sdk/basesdk.py: + id: 06a87cb4bdaf + last_write_checksum: sha1:b009b4794d3bc426ab812ae401ae678c2ed8a6ed + pristine_git_object: 31ce35a30dfa71de49f055b40083baca20e75ced + src/outpost_sdk/destinations.py: + id: c941d7cf8960 + last_write_checksum: sha1:c06dae3d9839d7e60865a87e2a1f303c91b32381 + pristine_git_object: f4a57308d3563d591079af6820fc4d07a81e01c8 + src/outpost_sdk/errors/__init__.py: + id: 8cd8140f4773 + last_write_checksum: sha1:524bf1840e35a27c7675c3c37320f61f6303089b + pristine_git_object: c87d6cfe227e5e1cfddc54869ab6687cce6832bd + src/outpost_sdk/errors/apierror.py: + id: 615480a01233 + last_write_checksum: sha1:547751790bbd2704372c3effd82f53bdeaaa74bd + pristine_git_object: 0bf469fa840b8f20710af842f8b6e7fd582353e5 + src/outpost_sdk/errors/badrequest_error.py: + id: 1cc4b5489cfd + last_write_checksum: sha1:2199e3f8d3eb9156fd34a71a7b0559a8487b4efa + pristine_git_object: ec3a2abdecdfc402dfddd1381071d179f3cd242e + src/outpost_sdk/errors/internalservererror.py: + id: 6c5f91213f42 + last_write_checksum: sha1:f379d052f165c22bf1d411c194800cf581f74086 + pristine_git_object: a7edf4bd6c0360cf6bed25247b651cbc02fcd620 + src/outpost_sdk/errors/listtenantsop.py: + id: 1aa5a73cfaec + last_write_checksum: sha1:a724614b63f8507e1aec3d433e594e63aa57edd8 + pristine_git_object: d5339488b08dfd6bcbd48a6022bb64044a08a022 + src/outpost_sdk/errors/no_response_error.py: + id: c5f4a1e17789 + last_write_checksum: sha1:7f326424a7d5ae1bcd5c89a0d6b3dbda9138942f + pristine_git_object: 1deab64bc43e1e65bf3c412d326a4032ce342366 + src/outpost_sdk/errors/notfound_error.py: + id: 1a8eff299dc0 + last_write_checksum: sha1:fd10c9f116beaf6c573530d12082a500c6ffb2be + pristine_git_object: a69adcf7649688cc58fbe5c2200364c122a86400 + src/outpost_sdk/errors/outposterror.py: + id: 897f8e3e5abc + last_write_checksum: sha1:3e45941c9c2e947d5fb448165c9f82f56f05bbf2 + pristine_git_object: 2fdb77ce79f2e64a0ed8e5665d472fb948c23f7f + src/outpost_sdk/errors/ratelimited_error.py: + id: 4b725ec5ec92 + last_write_checksum: sha1:74bd9144a76b400caa0355d58177edca09ce08d8 + pristine_git_object: 0f67ceaa06b5e32566a0e55b8d1ec50f5ce72701 + src/outpost_sdk/errors/responsevalidationerror.py: + id: bf0535856165 + last_write_checksum: sha1:019a4794821826d7ff8a9736cd67663745f4db3a + pristine_git_object: 1505064ce9d8bc173ed2198357dc78ce99f62b64 + src/outpost_sdk/errors/timeout_error.py: + id: dd56a4cb2580 + last_write_checksum: sha1:793a806ff89da890ec2c33e0320643489bba8a3a + pristine_git_object: c1db32277b7b11a63f3f7f7d78a043b96b8801fa + src/outpost_sdk/errors/unauthorized_error.py: + id: 4a521084c264 + last_write_checksum: sha1:09e228fe30c05fe04693a5da57a647c2132c5552 + pristine_git_object: 38b68bb656c457a7801b6da04e384737dd5ffdb2 + src/outpost_sdk/events.py: + id: 8b2e2ec7d8c0 + last_write_checksum: sha1:a6e28c6cb308f2563a230db4ec700166da11288e + pristine_git_object: 57ce96b7b9a2b0ec243c1e5c83f9d94d41ae646a + src/outpost_sdk/health.py: + id: 10a3c4bcf747 + last_write_checksum: sha1:aee0baed7d4d328e475db9081b1ed80615d53e15 + pristine_git_object: f8b6eb78325393d186a6ba5388b319f5c75bf77b + src/outpost_sdk/httpclient.py: + id: "608165498304" + last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 + pristine_git_object: 89560b566073785535643e694c112bedbd3db13d + src/outpost_sdk/models/__init__.py: + id: 690a20e1a54c + last_write_checksum: sha1:9124bf2f73659caa6d9c5d4290149aee97cb832b + pristine_git_object: bf4f35d7a5c7bd31fb9be4376e0433488c8d36df + src/outpost_sdk/models/awskinesisconfig.py: + id: fb8571913af4 + last_write_checksum: sha1:506c97c6ee9be4aae2808a9d53c0cc327b87b8b9 + pristine_git_object: e4d4c6e0b31939869c19b5e507f94dbb59f6371b + src/outpost_sdk/models/awskinesiscredentials.py: + id: 0578ec0c9b6e + last_write_checksum: sha1:22c3a71750f0c7855dcc663af8a5bb3f76a8046a + pristine_git_object: fd20ba04453faf4761e7b368a4538d0ffb54ac37 + src/outpost_sdk/models/awss3config.py: + id: a2ed2a804efb + last_write_checksum: sha1:3622841fa850bd943fea719faecd40857265f463 + pristine_git_object: 22d37583c095e4b384a59bd199e356efd85ea3dc + src/outpost_sdk/models/awss3credentials.py: + id: d64070cd6a9d + last_write_checksum: sha1:a09059e2fb0d4ab3c24e674dbc09c1bf2df00f93 + pristine_git_object: 9a145cd91ea81e48637ca3b34d69b0de70feca12 + src/outpost_sdk/models/awssqsconfig.py: + id: 8d2a992822e1 + last_write_checksum: sha1:7fcee1254fd16c6476782369173ba39f7473d6aa + pristine_git_object: 4de8ead7679125a67def4a0b40e0d9e42ed5fa80 + src/outpost_sdk/models/awssqscredentials.py: + id: 83be77c3aac0 + last_write_checksum: sha1:4b7dab397f3c01c492eccc217cdf2bd263b8e2b7 + pristine_git_object: 56f871ee9a650b9e12aaf5a481ecef56603e6bb8 + src/outpost_sdk/models/azureservicebusconfig.py: + id: 9369230317df + last_write_checksum: sha1:b2015d2d8aee1a5d0047297e806d41f979005c5d + pristine_git_object: e57478049f03057c62b088f33898d70a17751e44 + src/outpost_sdk/models/azureservicebuscredentials.py: + id: 335a5fe74daf + last_write_checksum: sha1:b9142ec67ffa4700e1b614cd5ccf64eac7a11278 + pristine_git_object: 30d9b6df725736d076367450277f83c2c9829fc3 + src/outpost_sdk/models/createtenantdestinationop.py: + id: 13d5940f603f + last_write_checksum: sha1:72ad52b600c4d6b37694db80b6328bd6640c9fa0 + pristine_git_object: d79459c242ac76170421ccf7410c2700745c67ff + src/outpost_sdk/models/deletetenantdestinationop.py: + id: cdfdbedc82b2 + last_write_checksum: sha1:e6eebabbe9446b59dc05c5bb730dbfbffaffa019 + pristine_git_object: ddcf72d16e3bbeaf66ec5e9837185c20ea778a5d + src/outpost_sdk/models/deletetenantop.py: + id: 78ada8977846 + last_write_checksum: sha1:11a7f2de718b91cf26591021dc74d45e9e982108 + pristine_git_object: 766b94c07225fef6f434fd4aca1cf67fb802542f + src/outpost_sdk/models/deliveryattempt.py: + id: f90a38ee47ac + last_write_checksum: sha1:c92da084bed9e19ca36695dc5bcdc848c1f243a4 + pristine_git_object: 9932bed4098df67d76831375ed19ab7279cbe718 + src/outpost_sdk/models/destination.py: + id: 024b7643286a + last_write_checksum: sha1:3d69cb8b9708575c0bcd319a5e2cf1bc06dace3b + pristine_git_object: 590c793f35bd2473384ff6de31c60060aaedc81d + src/outpost_sdk/models/destinationawskinesis.py: + id: 55b5d40a6b01 + last_write_checksum: sha1:92e9307e72bc072f02010ebdcb644ea0f768f7cf + pristine_git_object: 468a79ed3b553b2d154a27964e7c1fafa6600c2e + src/outpost_sdk/models/destinationawss3.py: + id: 8beea87159bf + last_write_checksum: sha1:88db432c7401badf4e0cd520ae200016caf8772b + pristine_git_object: 4745911a7e4ebef0368f8d33f6507aef036ba9be + src/outpost_sdk/models/destinationawssqs.py: + id: cdd8eb03e51b + last_write_checksum: sha1:6bbeaec8a32df522497fc749d599137df4cd681f + pristine_git_object: 2b1d4f1d83f594a6f7df70f6f39585dfe2ac8bde + src/outpost_sdk/models/destinationazureservicebus.py: + id: f1c2f3da46c7 + last_write_checksum: sha1:371799b23b3cccf72502413029c68bd59c3e5d04 + pristine_git_object: 5abccb3aae6b3235b1318dd21271d2949c97d9b4 + src/outpost_sdk/models/destinationcreate.py: + id: e5897fffe64a + last_write_checksum: sha1:52cfabb563ef137c8df12aad66eba2813dfe695f + pristine_git_object: 24c3ffee86d177e46072439ea1c92379098bd76d + src/outpost_sdk/models/destinationcreateawskinesis.py: + id: c47c9be03ea9 + last_write_checksum: sha1:2d101d017e6206197ecd88b3b6ff0f78d7e80a5b + pristine_git_object: f96e31ea022a7121aa960c578c5947e51c8ff3b8 + src/outpost_sdk/models/destinationcreateawss3.py: + id: 2a12772aa193 + last_write_checksum: sha1:77965addcbeceb409636852722af776acdf2604a + pristine_git_object: 46fde222bfd59f8cddf8f4e17b4fca6f93ccebac + src/outpost_sdk/models/destinationcreateawssqs.py: + id: d571450aa34c + last_write_checksum: sha1:8f88a41e49bb74ed797d4f2e8bc92e56c33ed7bb + pristine_git_object: 637d3538400da5b24bc22d438a14b98ac332d80e + src/outpost_sdk/models/destinationcreateazureservicebus.py: + id: 40b34cc6d212 + last_write_checksum: sha1:6d117f805148a3447ba0cad1f7c968912c06d761 + pristine_git_object: 2d572cef661b8c038f24857b1d995e19e4f44f22 + src/outpost_sdk/models/destinationcreategcppubsub.py: + id: 175ea4a525fc + last_write_checksum: sha1:f1a1fd5df75b791caa04e8588e0f97292bcf958f + pristine_git_object: 4c7efe6dff815a1cdc467d6730cefb00de8e1576 + src/outpost_sdk/models/destinationcreatehookdeck.py: + id: ff182a9732d1 + last_write_checksum: sha1:555885a6d27d5e5ccd9505a69442ad6961e1575c + pristine_git_object: 8f0caee136d3111305ebd4cd85deb672672172ad + src/outpost_sdk/models/destinationcreaterabbitmq.py: + id: ef6476931b78 + last_write_checksum: sha1:2ce88e291a9566670d6aa230dffb2f84362b560c + pristine_git_object: 69ff1be5063d9fe3c1793ecc3c738bc0186a94f7 + src/outpost_sdk/models/destinationcreatewebhook.py: + id: 7957ca0fcac4 + last_write_checksum: sha1:1dc4df3a5f06e38d312e74fc924928d8239cf050 + pristine_git_object: e7a8a6a73f2d2a7ec7db922f916759e672577674 + src/outpost_sdk/models/destinationgcppubsub.py: + id: b9c427853f36 + last_write_checksum: sha1:1bfd157b1fa91aefef5b3378ae46820cae215189 + pristine_git_object: 95bbc36c9ce981be82f9a6dfce95c02d52b19d21 + src/outpost_sdk/models/destinationhookdeck.py: + id: e77c8b7fe514 + last_write_checksum: sha1:abdec366e0a7770a6c80c213aa7516d506e7c93f + pristine_git_object: 284b5654f95d05d2d41939bb8466d032fbb6aec0 + src/outpost_sdk/models/destinationrabbitmq.py: + id: 31e01ead2367 + last_write_checksum: sha1:426433a10e4bc992e5adaef4964e67fd5cf16c93 + pristine_git_object: ebbcb2657b8bf00d5872ff54b9d86c347eea8148 + src/outpost_sdk/models/destinationschemafield.py: + id: 9fea102c01b8 + last_write_checksum: sha1:fc8bf7066a02708bc67cdab25e76aca5169366e6 + pristine_git_object: 8727389664dd12d6597837765c74d507e43217fc + src/outpost_sdk/models/destinationtype.py: + id: "314568989242" + last_write_checksum: sha1:7e4670afa60a4ed4bf05be1b858ed93577d1c3d4 + pristine_git_object: 8f9c912b233d40dec83e313303befd79452c3ebe + src/outpost_sdk/models/destinationtypeschema.py: + id: 52670c29e85e + last_write_checksum: sha1:591450ccd0dd10d889a5deb1ad15ca103a582709 + pristine_git_object: d6ac3382bc047ec690e67730d7cfa362a11e6333 + src/outpost_sdk/models/destinationupdate.py: + id: 4791a55bcc9b + last_write_checksum: sha1:e03fbdac995d27c0df4680d2fe07bb6f95ec1273 + pristine_git_object: 8af5e55b32919687a5bd097d0a0012c4543f775f + src/outpost_sdk/models/destinationupdateawskinesis.py: + id: 4fafb7c70bff + last_write_checksum: sha1:f04f4d2953e0d202e65b09791408a835a41fca94 + pristine_git_object: 2bbc6d5d58f944f37fe6360c56d4491dea2f6838 + src/outpost_sdk/models/destinationupdateawss3.py: + id: 46ad0c46a423 + last_write_checksum: sha1:7e62b5247824a5df09e24a9e5743538f8330b0e3 + pristine_git_object: aae033b983d3da1ce4979a18a40ab14298a63c3d + src/outpost_sdk/models/destinationupdateawssqs.py: + id: 26cfbd4e6127 + last_write_checksum: sha1:1710ec83b4a756c637770dbaf7cc4efc854b8173 + pristine_git_object: dfa5d9a5dad9248120b636cf721a7a396cf85d4d + src/outpost_sdk/models/destinationupdateazureservicebus.py: + id: 255b1dd4b368 + last_write_checksum: sha1:55334112ff46a7417c1ff53e8ccacbcec9c87bd6 + pristine_git_object: 9ec8df59b154fe8b252b988f398d95cf08036d1d + src/outpost_sdk/models/destinationupdategcppubsub.py: + id: 970389551c42 + last_write_checksum: sha1:946ab460eb89d1e543c34fe510300013a0a1587f + pristine_git_object: a56bb0872cf5fdc882e8d81ae83f61e550fb18dc + src/outpost_sdk/models/destinationupdatehookdeck.py: + id: e1c91a86e3a2 + last_write_checksum: sha1:d13e310f5a914683d4318a48dbe727ffe09f81b5 + pristine_git_object: 52574c322676305f4b4da55e75bb84db80a050b4 + src/outpost_sdk/models/destinationupdaterabbitmq.py: + id: 92e3f15788ed + last_write_checksum: sha1:3321f9655b4e8cef721d1cf06a0f8bb10e64dc5f + pristine_git_object: 9549e5d9ce479e7c7c330bf7defe5ce43d15c8a0 + src/outpost_sdk/models/destinationupdatewebhook.py: + id: 9c02c3e9e713 + last_write_checksum: sha1:6bdeaa022f6c930c397c7952f6f6515ccf79b590 + pristine_git_object: 7d451420bb89c7132756453f17b9269b76ace809 + src/outpost_sdk/models/destinationwebhook.py: + id: 4c4e5b9c334f + last_write_checksum: sha1:e501a92d10e069d30daef69234dc4edf46381f90 + pristine_git_object: 18d7fb6bf8fcb009282983842d6734aeb09a204f + src/outpost_sdk/models/disabletenantdestinationop.py: + id: e0cea60a05fd + last_write_checksum: sha1:6e18dcb389996b60cef3d0b12537dc5941efb3f8 + pristine_git_object: bbe7f77e559983fd30cff719b3d99225ebe56b4c + src/outpost_sdk/models/enabletenantdestinationop.py: + id: 2d8982ad60bf + last_write_checksum: sha1:a8aef4095b5673c4a23a86e93acff9f189e23813 + pristine_git_object: fc673c20328dad3ead38ffe977e535290e97c8bd + src/outpost_sdk/models/event.py: + id: d76334f49c72 + last_write_checksum: sha1:b3a5a2c7ec0a4d06870b393dc395b799adcaef15 + pristine_git_object: 8990d0d934cbb4b72535f0ad94f52afa1e8bd5df + src/outpost_sdk/models/gcppubsubconfig.py: + id: 5088ceb75781 + last_write_checksum: sha1:bdc4cdce9ff95e9b4a55c173469e7417b86dc02f + pristine_git_object: 8c8e730db9c2862a37f5911c2339b58343d282fb + src/outpost_sdk/models/gcppubsubcredentials.py: + id: abca05169737 + last_write_checksum: sha1:dc8390c93bf25ac535e88256a7e4d5b4717055f1 + pristine_git_object: 359c1110785eb1541c9db38d18edf145df04bfc6 + src/outpost_sdk/models/getdestinationtypeschemaop.py: + id: c2eac8f2bbca + last_write_checksum: sha1:4e5a90bad84cff961d514c709c46a6e5a9e3ee5b + pristine_git_object: 8c99b9e519b25f7a2a7e48ee0f7476d913bf2e07 + src/outpost_sdk/models/gettenantdestinationop.py: + id: 6f1966ca7278 + last_write_checksum: sha1:65e4c9d8f48fc85c0796a27fd8474bbaba0df1c3 + pristine_git_object: b4ab6df0e9cf2aa3289a243d6a9eb9823a9e494b + src/outpost_sdk/models/gettenantdestinationtypeschemaop.py: + id: 818c7e8d99b6 + last_write_checksum: sha1:133119b2f9c491afc588d6b8384dceb962dc537e + pristine_git_object: 74cb78d37bfa821106085cff31b76c91cb35f4ac + src/outpost_sdk/models/gettenanteventbydestinationop.py: + id: e81b3b930788 + last_write_checksum: sha1:8b419349e9f93879539c68b6f9a866e652830339 + pristine_git_object: 5db825ba4d442ae05226f10a89f2d8391b71f26c + src/outpost_sdk/models/gettenanteventop.py: + id: a46b669ce6c0 + last_write_checksum: sha1:fb437ddd1636131484017fce44b64a363d06473f + pristine_git_object: 6ed94aacffd33238295b9c66b4027c5011af49d9 + src/outpost_sdk/models/gettenantop.py: + id: 0fa1186c6fdf + last_write_checksum: sha1:d53065d2b1e298dcd250481bffcad0b239f31cef + pristine_git_object: fa2fa4571d7d1fd0bd69ae42c57de4b632485ec3 + src/outpost_sdk/models/gettenantportalurlop.py: + id: 3475f159387a + last_write_checksum: sha1:90abed39740d811c167e2c61ee9b7d7bbf0c97f0 + pristine_git_object: 0ff178615fa8c29a1e00e3cec77508eac1fbe465 + src/outpost_sdk/models/gettenanttokenop.py: + id: 4db19b635abf + last_write_checksum: sha1:5aca10d0637be788ff1f24587ac63947c7982e6f + pristine_git_object: 3da471e1d3031e3783d90c0e3e710ac6ae04a1e2 + src/outpost_sdk/models/healthcheckop.py: + id: 3215956eec3e + last_write_checksum: sha1:f77cc945fd864aaba715ac55522c10f1622c6d14 + pristine_git_object: 954bf84fff0ab29181741cf85c129b54e4706acc + src/outpost_sdk/models/hookdeckcredentials.py: + id: 041a365549a7 + last_write_checksum: sha1:04adb83d109e614b3f7e7fee62ebdcf406155008 + pristine_git_object: 090b478df5d6be4f69b4460766fb4f87411d2d43 + src/outpost_sdk/models/internal/__init__.py: + id: b17f8d9540fa + last_write_checksum: sha1:5beaf7e5a713d3eead465c6edcfdeb7f8076175c + pristine_git_object: e7070a1222c2ed3fa3f6f54e6f122cae7ff9a449 + src/outpost_sdk/models/internal/globals.py: + id: 0e657981f4ef + last_write_checksum: sha1:576a44c12395fd64e52d3a2335ef908fe0fc10e3 + pristine_git_object: f38e029fc5cdf7ee23d024a7fb0ad7ef370e4098 + src/outpost_sdk/models/listtenantdestinationsop.py: + id: 8e9d6032dbe9 + last_write_checksum: sha1:cf610c97a1ee1092eaf792a4a8079cd65c66a82c + pristine_git_object: 4f0fed59d5e208ba818f23cf71e9f79750fc58e7 + src/outpost_sdk/models/listtenantdestinationtypeschemasop.py: + id: d45f6132071b + last_write_checksum: sha1:e00f1d4bd5361ec80e9a34709f0ffe6dd8110af4 + pristine_git_object: 79ac16559d1532a56101edf8d0ebd4f847c1c369 + src/outpost_sdk/models/listtenanteventdeliveriesop.py: + id: 0bbb913adaa4 + last_write_checksum: sha1:3488cc4840b4027b609e086193f9d1601b213b29 + pristine_git_object: b39385b2529907aa7f08af8117d64f30fff8333d + src/outpost_sdk/models/listtenanteventsbydestinationop.py: + id: 24302558bc53 + last_write_checksum: sha1:8e5c00762739e96813ea02990283964910cb7eaa + pristine_git_object: d8218bac891f0a3531933189e4836d107b1c2dbe + src/outpost_sdk/models/listtenanteventsop.py: + id: 0617998b8a18 + last_write_checksum: sha1:3e4866919b12876e82fb208ab2321b17eb619f62 + pristine_git_object: 1f119028425d7aec52cafa21243971391835fb96 + src/outpost_sdk/models/listtenantsop.py: + id: 4f4212a7d66b + last_write_checksum: sha1:ac779d93cdfc356b38ddc406b898d9341b511508 + pristine_git_object: afee00ea9a1278ff92905d9ca44312a17701d2df + src/outpost_sdk/models/listtenanttopicsop.py: + id: 4dc8762cf6d7 + last_write_checksum: sha1:5bab0a987bd66e9e54e32dbb324e1e61c5ff768c + pristine_git_object: 3526a0d55086653ccba2ec32a74b7d1ffb953491 + src/outpost_sdk/models/portalredirect.py: + id: 24df1cb14669 + last_write_checksum: sha1:7ea043843217141238fad319d81660d5ca7da14c + pristine_git_object: b51b4dccd682e2c9e589b3eaa8fef2c9dee027ad + src/outpost_sdk/models/publishrequest.py: + id: baf66d2d3cc8 + last_write_checksum: sha1:36597f446fe2255c180eb32e0bcc3b545d215b03 + pristine_git_object: 289ed5e90f26caa0c97b87a315bd4bf34a815548 + src/outpost_sdk/models/publishresponse.py: + id: 9654d8ee9d84 + last_write_checksum: sha1:2e0430dda68f7a24ffdf8c87743d66975d83f35d + pristine_git_object: f523133f6eef90b989504a9191450130ec0cf848 + src/outpost_sdk/models/rabbitmqconfig.py: + id: 9052e976265f + last_write_checksum: sha1:f81a2d7f793c82912f4f414844807b7637ccdd78 + pristine_git_object: 1c7495d846a476df251424bc9a076536b6acd461 + src/outpost_sdk/models/rabbitmqcredentials.py: + id: 4fd25a9a0775 + last_write_checksum: sha1:02394a65044b85394a0a1cbdb6f63875f0142c83 + pristine_git_object: 5cc38becb768c93078dbb09d7927c7141484b300 + src/outpost_sdk/models/retrytenanteventop.py: + id: e869b381d28f + last_write_checksum: sha1:5e04a8c646c2bbc117ec653963bcd4be0ada8e4d + pristine_git_object: 9393cb06dc1639cb15097fb132ab5555f60e4d22 + src/outpost_sdk/models/security.py: + id: e6e012493b56 + last_write_checksum: sha1:0ebb912abf4790f141c3263f114abca82be22ec6 + pristine_git_object: 3283447301e1b6981ad739401f66b120def01df3 + src/outpost_sdk/models/successresponse.py: + id: 8d64048dbebc + last_write_checksum: sha1:49482bfbdcc3c5c20c60c31d134400b45738ebb7 + pristine_git_object: dc3d0c321bc0686e509752e9f6f8d950fe99c9f6 + src/outpost_sdk/models/tenant.py: + id: 9b3af67659ce + last_write_checksum: sha1:c61fc37f690dad4ab2f137cb50a754e0a5e03ebf + pristine_git_object: 9f076c682c513e92b0e3dc88d9d738e1de2114b3 + src/outpost_sdk/models/tenantlistitem.py: + id: 078db2ac73bb + last_write_checksum: sha1:809e377baf51c29a1c296dd469e6ed2662a5615d + pristine_git_object: bb3afa5414aeef64c2b38e4284b2cbaa7f211ab8 + src/outpost_sdk/models/tenantlistresponse.py: + id: aad2108aaf95 + last_write_checksum: sha1:9f91536f0c61142c5d3bf37d0815f26ee850ef6e + pristine_git_object: bd5038020df3fc00af1de69a98dd1a50bfa97326 + src/outpost_sdk/models/tenanttoken.py: + id: cc80422b1099 + last_write_checksum: sha1:60674a805301142cff82e3146baaaeb7941c44c0 + pristine_git_object: b11906d8d3fadfa12adddb28e0d80aba632d56a6 + src/outpost_sdk/models/tenantupsert.py: + id: 7a3647aa74bf + last_write_checksum: sha1:4ad5494203c0e6602ba0024a8a9e1501a2dda723 + pristine_git_object: 842dbeaaa4bd4585ed47fb902d57b500823547a4 + src/outpost_sdk/models/topics_union.py: + id: 5f1555c3c073 + last_write_checksum: sha1:a13581e78aed2368e38df7877d3eb01950490eaf + pristine_git_object: 5f812aa065ab1e8409d325052ac9cb77de353722 + src/outpost_sdk/models/updatetenantdestinationop.py: + id: a50aeefe37f9 + last_write_checksum: sha1:637de913b650d7c867ff4f81b6cc1ebd2e237246 + pristine_git_object: 7382a36c7465016e8406b57e179ccb1a0db40e9f + src/outpost_sdk/models/upserttenantop.py: + id: 70ae30767fa8 + last_write_checksum: sha1:8ce132982a6d04bbd02613f7b72184169bd4d180 + pristine_git_object: a65ccc4d3cf925a2aa9188611865b37d55797671 + src/outpost_sdk/models/webhookconfig.py: + id: fe92488cf40a + last_write_checksum: sha1:d2b3e43e90f8b573e8bccecf395fe8bc03a331d6 + pristine_git_object: 9da323289ec68b5c083b97c57eb22888f85999d3 + src/outpost_sdk/models/webhookcredentials.py: + id: b7f3472f7eaf + last_write_checksum: sha1:81acb1fe1fbbcc54313056bca754a54cf9f5e64b + pristine_git_object: f4b9e2dd1ca23b3bfcb303cbdd91cb68d94b138d + src/outpost_sdk/models/webhookcredentialsupdate.py: + id: 7d38cc3a7838 + last_write_checksum: sha1:4a12c21f80da8f289e63fd2f0525230811337cde + pristine_git_object: 89b3e3f4f4c236f9ce541907a665e0e685fd568c + src/outpost_sdk/publish.py: + id: 9022d8173f51 + last_write_checksum: sha1:63de3b1c68d957d90681b020997bf7148c4260a0 + pristine_git_object: 34ae85714eced9b162286acf6a5d43a94d54d4ce + src/outpost_sdk/py.typed: + id: 4f30ed072a58 + last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 + pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 + src/outpost_sdk/schemas.py: + id: 8b85dbe9fc05 + last_write_checksum: sha1:6f88c51214b0668a24125c58da8ec27f0452073f + pristine_git_object: b8f7a8d5eec8b5b517aafd0573af2c36485d940c + src/outpost_sdk/sdk.py: + id: 745ed80a189d + last_write_checksum: sha1:35e380e19931f3d39b2bb05f431f99a4fb5af8c2 + pristine_git_object: 3a8aad5292c1dcd9f2ed73cfe40f54915f8a8dd9 + src/outpost_sdk/sdkconfiguration.py: + id: 730fcc1ee551 + last_write_checksum: sha1:5809ed20e69cde5aa5575b5bf86ae4912cebf409 + pristine_git_object: 941298c482ace0cfd772a9e7ec51da9c5cc4886c + src/outpost_sdk/tenants.py: + id: 6575cae7064e + last_write_checksum: sha1:546a2dffd62de85236f1639e9d4822710f72aa78 + pristine_git_object: 888e378535ea4a2fafbd194c82f32f626f2a9391 + src/outpost_sdk/topics_sdk.py: + id: 7e5ee20344bd + last_write_checksum: sha1:35006451cd6d43f968e93f73d68985f6f4d71d1f + pristine_git_object: 6fc6f59c22bc1f1c3ea7802195466eacf8334ba3 + src/outpost_sdk/types/__init__.py: + id: 6a8947a74498 + last_write_checksum: sha1:140ebdd01a46f92ffc710c52c958c4eba3cf68ed + pristine_git_object: fc76fe0c5505e29859b5d2bb707d48fd27661b8c + src/outpost_sdk/types/basemodel.py: + id: a135d73a3022 + last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 + pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee + src/outpost_sdk/utils/__init__.py: + id: 8e61e7189087 + last_write_checksum: sha1:398211d49b762a067ec6d10197a4b11dfd258ff5 + pristine_git_object: c906e1e0192e9017fc13851eb23fc0c2753429c8 + src/outpost_sdk/utils/annotations.py: + id: 5bb9f518a4aa + last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc + pristine_git_object: 12e0aa4f1151bb52474cc02e88397329b90703f6 + src/outpost_sdk/utils/datetimes.py: + id: f526f90f9693 + last_write_checksum: sha1:c721e4123000e7dc61ec52b28a739439d9e17341 + pristine_git_object: a6c52cd61bbe2d459046c940ce5e8c469f2f0664 + src/outpost_sdk/utils/enums.py: + id: 0e45cf29e59d + last_write_checksum: sha1:bc8c3c1285ae09ba8a094ee5c3d9c7f41fa1284d + pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828 + src/outpost_sdk/utils/eventstreaming.py: + id: 820142ef32ea + last_write_checksum: sha1:bababae5d54b7efc360db701daa49e18a92c2f3b + pristine_git_object: 0969899bfc491e5e408d05643525f347ea95e4fc + src/outpost_sdk/utils/forms.py: + id: 906e4bc25e36 + last_write_checksum: sha1:15fa7e9ab1611e062a9984cf06cb20969713d295 + pristine_git_object: f961e76beaf0a8b1fe0dda44754a74eebd3608e7 + src/outpost_sdk/utils/headers.py: + id: bc69a402eee7 + last_write_checksum: sha1:7c6df233ee006332b566a8afa9ce9a245941d935 + pristine_git_object: 37864cbbbc40d1a47112bbfdd3ba79568fc8818a + src/outpost_sdk/utils/logger.py: + id: 942d188ce41b + last_write_checksum: sha1:f3fdb154a3f09b8cc43d74c7e9c02f899f8086e4 + pristine_git_object: b661aff65d38b77d035149699aea09b2785d2fc6 + src/outpost_sdk/utils/metadata.py: + id: 850a0e3be791 + last_write_checksum: sha1:c6a560bd0c63ab158582f34dadb69433ea73b3d4 + pristine_git_object: 173b3e5ce658675c2f504222a56b3daaaa68107d + src/outpost_sdk/utils/queryparams.py: + id: 31e380170c03 + last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59 + pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41 + src/outpost_sdk/utils/requestbodies.py: + id: 99737fa2de7e + last_write_checksum: sha1:41e2d2d2d3ecc394c8122ca4d4b85e1c3e03f054 + pristine_git_object: 1de32b6d26f46590232f398fdba6ce0072f1659c + src/outpost_sdk/utils/retries.py: + id: febe03add039 + last_write_checksum: sha1:5b97ac4f59357d70c2529975d50364c88bcad607 + pristine_git_object: 88a91b10cd2076b4a2c6cff2ac6bfaa5e3c5ad13 + src/outpost_sdk/utils/security.py: + id: 575c509050a4 + last_write_checksum: sha1:a17130ace2c0db6394f38dd941ad2b700cc755c8 + pristine_git_object: 295a3f40031dbb40073ad227fd4a355660f97ab2 + src/outpost_sdk/utils/serializers.py: + id: a71d1afce9d8 + last_write_checksum: sha1:ce1d8d7f500a9ccba0aeca5057cee9c271f4dfd7 + pristine_git_object: 14321eb479de81d0d9580ec8291e0ff91bf29e57 + src/outpost_sdk/utils/unmarshal_json_response.py: + id: 559ebd25bf1b + last_write_checksum: sha1:7a229b6339ba72cb62a8a15f9bce02567eeb511f + pristine_git_object: dd5602b7b691a9a0641f24ff5fe58d960e9450e6 + src/outpost_sdk/utils/url.py: + id: d805095de3d1 + last_write_checksum: sha1:6479961baa90432ca25626f8e40a7bbc32e73b41 + pristine_git_object: c78ccbae426ce6d385709d97ce0b1c2813ea2418 + src/outpost_sdk/utils/values.py: + id: 7ebef851af02 + last_write_checksum: sha1:acaa178a7c41ddd000f58cc691e4632d925b2553 + pristine_git_object: dae01a44384ac3bc13ae07453a053bf6c898ebe3 examples: healthCheck: speakeasy-default-health-check: responses: "200": text/plain: "" + application/json: {"status": "healthy", "timestamp": "2025-11-11T10:30:00Z", "workers": {"key": {"status": "healthy"}}} "404": application/json: {} "401": @@ -340,6 +1282,13 @@ examples: responses: "200": application/json: {"id": "tenant_123", "destinations_count": 5, "topics": ["user.created", "user.deleted"], "created_at": "2024-01-01T00:00:00Z"} + speakeasy-default-upsert-tenant: + parameters: + path: + tenant_id: "" + responses: + "200": + application/json: {"id": "123", "destinations_count": 5, "topics": ["user.created", "user.deleted"], "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z"} getTenant: TenantExample: parameters: @@ -348,6 +1297,13 @@ examples: responses: "200": application/json: {"id": "tenant_123", "destinations_count": 5, "topics": ["user.created", "user.deleted"], "created_at": "2024-01-01T00:00:00Z"} + speakeasy-default-get-tenant: + parameters: + path: + tenant_id: "" + responses: + "200": + application/json: {"id": "123", "destinations_count": 5, "topics": ["user.created", "user.deleted"], "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z"} deleteTenant: SuccessExample: parameters: @@ -364,7 +1320,7 @@ examples: query: {} responses: "200": - application/json: {"redirect_url": "https://webhooks.acme.com/?token=JWT_TOKEN"} + application/json: {"redirect_url": "https://webhooks.acme.com/?token=JWT_TOKEN&tenant_id=tenant_123", "tenant_id": "tenant_123"} getTenantToken: TenantTokenExample: parameters: @@ -372,16 +1328,17 @@ examples: tenant_id: "" responses: "200": - application/json: {"token": "SOME_JWT_TOKEN"} + application/json: {"token": "SOME_JWT_TOKEN", "tenant_id": "tenant_123"} listTenantDestinations: DestinationsListExample: parameters: path: tenant_id: "" - query: {} + query: + type: "webhook" responses: "200": - application/json: [{"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}}, {"id": "des_sqs_456", "type": "aws_sqs", "topics": ["*"], "disabled_at": "2024-03-01T12:00:00Z", "created_at": "2024-02-20T11:30:00Z", "config": {"endpoint": "https://sqs.us-west-2.amazonaws.com", "queue_url": "https://sqs.us-west-2.amazonaws.com/123456789012/my-app-queue"}, "credentials": {"key": "AKIAIOSFODNN7EXAMPLE", "secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"}}, {"id": "des_s3_789", "type": "aws_s3", "topics": ["*"], "disabled_at": null, "created_at": "2024-03-20T12:00:00Z", "config": {"bucket": "my-bucket", "region": "us-east-1"}, "credentials": {"key": "AKIAIOSFODNN7EXAMPLE", "secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"}}] + application/json: [{"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "updated_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}}, {"id": "des_sqs_456", "type": "aws_sqs", "topics": ["*"], "disabled_at": "2024-03-01T12:00:00Z", "created_at": "2024-02-20T11:30:00Z", "updated_at": "2024-02-20T11:30:00Z", "config": {"endpoint": "https://sqs.us-west-2.amazonaws.com", "queue_url": "https://sqs.us-west-2.amazonaws.com/123456789012/my-app-queue"}, "credentials": {"key": "AKIAIOSFODNN7EXAMPLE", "secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"}}, {"id": "des_s3_789", "type": "aws_s3", "topics": ["*"], "disabled_at": null, "created_at": "2024-03-20T12:00:00Z", "updated_at": "2024-03-20T12:00:00Z", "config": {"bucket": "my-bucket", "region": "us-east-1"}, "credentials": {"key": "AKIAIOSFODNN7EXAMPLE", "secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"}}] createTenantDestination: WebhookCreatedExample: parameters: @@ -391,7 +1348,7 @@ examples: application/json: {"id": "user-provided-id", "type": "rabbitmq", "topics": "*", "config": {"server_url": "localhost:5672", "exchange": "my-exchange", "tls": "false"}, "credentials": {"username": "guest", "password": "guest"}} responses: "201": - application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456"}} + application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "updated_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456"}} getTenantDestination: WebhookGetExample: parameters: @@ -400,7 +1357,7 @@ examples: destination_id: "" responses: "200": - application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} + application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "updated_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} updateTenantDestination: DestinationUpdatedExample: parameters: @@ -411,7 +1368,7 @@ examples: application/json: {"topics": "*", "config": {"server_url": "localhost:5672", "exchange": "my-exchange", "tls": "false"}, "credentials": {"username": "guest", "password": "guest"}} responses: "200": - application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/new-handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} + application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "updated_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/new-handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} deleteTenantDestination: SuccessExample: parameters: @@ -429,7 +1386,7 @@ examples: destination_id: "" responses: "200": - application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} + application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": null, "created_at": "2024-02-15T10:00:00Z", "updated_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} disableTenantDestination: WebhookDisabledExample: parameters: @@ -438,7 +1395,7 @@ examples: destination_id: "" responses: "200": - application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": "2024-04-11T21:00:00Z", "created_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} + application/json: {"id": "des_webhook_123", "type": "webhook", "topics": ["user.created", "order.shipped"], "disabled_at": "2024-04-11T21:00:00Z", "created_at": "2024-02-15T10:00:00Z", "updated_at": "2024-02-15T10:00:00Z", "config": {"url": "https://my-service.com/webhook/handler"}, "credentials": {"secret": "whsec_abc123def456", "previous_secret": "whsec_prev789xyz012", "previous_secret_invalid_at": "2024-02-16T10:00:00Z"}} publishEvent: speakeasy-default-publish-event: requestBody: @@ -465,7 +1422,7 @@ examples: "511": application/json: {} "202": - application/json: {"id": "evt_abc123xyz789"} + application/json: {"id": "evt_abc123xyz789", "duplicate": false} listTenantDestinationTypeSchemas: DestinationTypesExample: parameters: @@ -584,5 +1541,291 @@ examples: application/json: {} "511": application/json: {} + listTenants: + speakeasy-default-list-tenants: + parameters: + query: + limit: 20 + order: "desc" + responses: + "200": + application/json: {"data": [{"id": "123", "destinations_count": 5, "topics": ["user.created", "user.deleted"], "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z"}], "next": "MTcwNDA2NzIwMA==", "prev": null, "count": 42} + "400": + application/json: {"error": "invalid cursor format"} + "501": + application/json: {"error": "list tenant not supported"} examplesVersion: 1.0.2 generatedTests: {} +releaseNotes: "## Python SDK Changes:\n* `outpost.destinations.enable()`: \n * `response` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.tenants.get_token()`: \n * `response.tenant_id` **Added**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.tenants.upsert()`: \n * `request.params` **Added**\n * `response` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.tenants.get()`: \n * `response` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.tenants.delete()`: `error` **Changed** **Breaking** :warning:\n* `outpost.tenants.get_portal_url()`: \n * `response.tenant_id` **Added**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.destinations.delete()`: `error` **Changed** **Breaking** :warning:\n* `outpost.destinations.list()`: \n * `request.type` **Changed** **Breaking** :warning:\n * `response.[]` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.destinations.create()`: \n * `request.params` **Changed**\n * `response` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.destinations.get()`: \n * `response` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.health.check()`: `response.status[200]` **Changed** **Breaking** :warning:\n* `outpost.destinations.update()`: \n * `request.params` **Changed**\n * `response.[destination]` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.schemas.get()`: `error` **Changed** **Breaking** :warning:\n* `outpost.destinations.disable()`: \n * `response` **Changed**\n * `error` **Changed** **Breaking** :warning:\n* `outpost.events.retry()`: `error` **Changed** **Breaking** :warning:\n* `outpost.schemas.list_tenant_destination_types()`: `error` **Changed** **Breaking** :warning:\n* `outpost.events.get_by_destination()`: \n * `response` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `outpost.topics.list()`: `error` **Changed** **Breaking** :warning:\n* `outpost.events.list()`: \n * `request` **Changed** **Breaking** :warning:\n * `response.data.[]` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `outpost.events.get()`: \n * `response` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `outpost.events.list_deliveries()`: `error` **Changed** **Breaking** :warning:\n* `outpost.events.list_by_destination()`: \n * `request` **Changed** **Breaking** :warning:\n * `response.data.[]` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `outpost.tenants.list_tenants()`: **Added**\n* `outpost.publish.event()`: `response.duplicate` **Added**\n" +generatedFiles: + - .gitattributes + - .vscode/settings.json + - USAGE.md + - docs/errors/badrequesterror.md + - docs/errors/internalservererror.md + - docs/errors/notfounderror.md + - docs/errors/ratelimitederror.md + - docs/errors/timeouterrort.md + - docs/errors/unauthorizederror.md + - docs/models/awskinesisconfig.md + - docs/models/awskinesiscredentials.md + - docs/models/awss3config.md + - docs/models/awss3credentials.md + - docs/models/awssqsconfig.md + - docs/models/awssqscredentials.md + - docs/models/azureservicebusconfig.md + - docs/models/azureservicebuscredentials.md + - docs/models/createtenantdestinationglobals.md + - docs/models/createtenantdestinationrequest.md + - docs/models/deletetenantdestinationglobals.md + - docs/models/deletetenantdestinationrequest.md + - docs/models/deletetenantglobals.md + - docs/models/deletetenantrequest.md + - docs/models/deliveryattempt.md + - docs/models/destination.md + - docs/models/destinationawskinesis.md + - docs/models/destinationawskinesistype.md + - docs/models/destinationawss3.md + - docs/models/destinationawss3type.md + - docs/models/destinationawssqs.md + - docs/models/destinationawssqstype.md + - docs/models/destinationazureservicebus.md + - docs/models/destinationazureservicebustype.md + - docs/models/destinationcreate.md + - docs/models/destinationcreateawskinesis.md + - docs/models/destinationcreateawskinesistype.md + - docs/models/destinationcreateawss3.md + - docs/models/destinationcreateawss3type.md + - docs/models/destinationcreateawssqs.md + - docs/models/destinationcreateawssqstype.md + - docs/models/destinationcreateazureservicebus.md + - docs/models/destinationcreateazureservicebustype.md + - docs/models/destinationcreatehookdeck.md + - docs/models/destinationcreatehookdecktype.md + - docs/models/destinationcreaterabbitmq.md + - docs/models/destinationcreaterabbitmqtype.md + - docs/models/destinationcreatewebhook.md + - docs/models/destinationcreatewebhooktype.md + - docs/models/destinationhookdeck.md + - docs/models/destinationhookdecktype.md + - docs/models/destinationid.md + - docs/models/destinationrabbitmq.md + - docs/models/destinationrabbitmqtype.md + - docs/models/destinationschemafield.md + - docs/models/destinationschemafieldtype.md + - docs/models/destinationtypeschema.md + - docs/models/destinationupdate.md + - docs/models/destinationupdateawskinesis.md + - docs/models/destinationupdateawss3.md + - docs/models/destinationupdateawssqs.md + - docs/models/destinationupdatehookdeck.md + - docs/models/destinationupdaterabbitmq.md + - docs/models/destinationupdatewebhook.md + - docs/models/destinationwebhook.md + - docs/models/destinationwebhooktype.md + - docs/models/disabletenantdestinationglobals.md + - docs/models/disabletenantdestinationrequest.md + - docs/models/enabletenantdestinationglobals.md + - docs/models/enabletenantdestinationrequest.md + - docs/models/event.md + - docs/models/getdestinationtypeschemarequest.md + - docs/models/getdestinationtypeschematype.md + - docs/models/gettenantdestinationglobals.md + - docs/models/gettenantdestinationrequest.md + - docs/models/gettenantdestinationtypeschemaglobals.md + - docs/models/gettenantdestinationtypeschemarequest.md + - docs/models/gettenantdestinationtypeschematype.md + - docs/models/gettenanteventbydestinationglobals.md + - docs/models/gettenanteventbydestinationrequest.md + - docs/models/gettenanteventglobals.md + - docs/models/gettenanteventrequest.md + - docs/models/gettenantglobals.md + - docs/models/gettenantportalurlglobals.md + - docs/models/gettenantportalurlrequest.md + - docs/models/gettenantrequest.md + - docs/models/gettenanttokenglobals.md + - docs/models/gettenanttokenrequest.md + - docs/models/hookdeckcredentials.md + - docs/models/internal/globals.md + - docs/models/listtenantdestinationsglobals.md + - docs/models/listtenantdestinationsrequest.md + - docs/models/listtenantdestinationstopics.md + - docs/models/listtenantdestinationstypeenum1.md + - docs/models/listtenantdestinationstypeenum2.md + - docs/models/listtenantdestinationtypeschemasglobals.md + - docs/models/listtenantdestinationtypeschemasrequest.md + - docs/models/listtenanteventdeliveriesglobals.md + - docs/models/listtenanteventdeliveriesrequest.md + - docs/models/listtenanteventsbydestinationglobals.md + - docs/models/listtenanteventsbydestinationrequest.md + - docs/models/listtenanteventsbydestinationresponse.md + - docs/models/listtenanteventsbydestinationresponsebody.md + - docs/models/listtenanteventsbydestinationstatus.md + - docs/models/listtenanteventsglobals.md + - docs/models/listtenanteventsrequest.md + - docs/models/listtenanteventsresponse.md + - docs/models/listtenanteventsresponsebody.md + - docs/models/listtenanteventsstatus.md + - docs/models/listtenanttopicsglobals.md + - docs/models/listtenanttopicsrequest.md + - docs/models/portalredirect.md + - docs/models/publishrequest.md + - docs/models/publishresponse.md + - docs/models/rabbitmqconfig.md + - docs/models/rabbitmqcredentials.md + - docs/models/retrytenanteventglobals.md + - docs/models/retrytenanteventrequest.md + - docs/models/security.md + - docs/models/status.md + - docs/models/successresponse.md + - docs/models/tenant.md + - docs/models/tenanttoken.md + - docs/models/theme.md + - docs/models/tls.md + - docs/models/topicsenum.md + - docs/models/topicsunion.md + - docs/models/type.md + - docs/models/updatetenantdestinationglobals.md + - docs/models/updatetenantdestinationrequest.md + - docs/models/updatetenantdestinationresponse.md + - docs/models/upserttenantglobals.md + - docs/models/upserttenantrequest.md + - docs/models/utils/retryconfig.md + - docs/models/webhookconfig.md + - docs/models/webhookcredentials.md + - docs/models/webhookcredentialsupdate.md + - docs/sdks/destinations/README.md + - docs/sdks/events/README.md + - docs/sdks/health/README.md + - docs/sdks/outpost/README.md + - docs/sdks/publish/README.md + - docs/sdks/schemas/README.md + - docs/sdks/tenants/README.md + - docs/sdks/topicssdk/README.md + - poetry.toml + - py.typed + - pylintrc + - pyproject.toml + - scripts/prepare_readme.py + - scripts/publish.sh + - src/outpost_sdk/__init__.py + - src/outpost_sdk/_hooks/__init__.py + - src/outpost_sdk/_hooks/sdkhooks.py + - src/outpost_sdk/_hooks/types.py + - src/outpost_sdk/_version.py + - src/outpost_sdk/basesdk.py + - src/outpost_sdk/destinations.py + - src/outpost_sdk/errors/__init__.py + - src/outpost_sdk/errors/apierror.py + - src/outpost_sdk/errors/badrequest_error.py + - src/outpost_sdk/errors/internalservererror.py + - src/outpost_sdk/errors/no_response_error.py + - src/outpost_sdk/errors/notfound_error.py + - src/outpost_sdk/errors/outposterror.py + - src/outpost_sdk/errors/ratelimited_error.py + - src/outpost_sdk/errors/responsevalidationerror.py + - src/outpost_sdk/errors/timeout_error.py + - src/outpost_sdk/errors/unauthorized_error.py + - src/outpost_sdk/events.py + - src/outpost_sdk/health.py + - src/outpost_sdk/httpclient.py + - src/outpost_sdk/models/__init__.py + - src/outpost_sdk/models/awskinesisconfig.py + - src/outpost_sdk/models/awskinesiscredentials.py + - src/outpost_sdk/models/awss3config.py + - src/outpost_sdk/models/awss3credentials.py + - src/outpost_sdk/models/awssqsconfig.py + - src/outpost_sdk/models/awssqscredentials.py + - src/outpost_sdk/models/azureservicebusconfig.py + - src/outpost_sdk/models/azureservicebuscredentials.py + - src/outpost_sdk/models/createtenantdestinationop.py + - src/outpost_sdk/models/deletetenantdestinationop.py + - src/outpost_sdk/models/deletetenantop.py + - src/outpost_sdk/models/deliveryattempt.py + - src/outpost_sdk/models/destination.py + - src/outpost_sdk/models/destinationawskinesis.py + - src/outpost_sdk/models/destinationawss3.py + - src/outpost_sdk/models/destinationawssqs.py + - src/outpost_sdk/models/destinationazureservicebus.py + - src/outpost_sdk/models/destinationcreate.py + - src/outpost_sdk/models/destinationcreateawskinesis.py + - src/outpost_sdk/models/destinationcreateawss3.py + - src/outpost_sdk/models/destinationcreateawssqs.py + - src/outpost_sdk/models/destinationcreateazureservicebus.py + - src/outpost_sdk/models/destinationcreatehookdeck.py + - src/outpost_sdk/models/destinationcreaterabbitmq.py + - src/outpost_sdk/models/destinationcreatewebhook.py + - src/outpost_sdk/models/destinationhookdeck.py + - src/outpost_sdk/models/destinationrabbitmq.py + - src/outpost_sdk/models/destinationschemafield.py + - src/outpost_sdk/models/destinationtypeschema.py + - src/outpost_sdk/models/destinationupdate.py + - src/outpost_sdk/models/destinationupdateawskinesis.py + - src/outpost_sdk/models/destinationupdateawss3.py + - src/outpost_sdk/models/destinationupdateawssqs.py + - src/outpost_sdk/models/destinationupdatehookdeck.py + - src/outpost_sdk/models/destinationupdaterabbitmq.py + - src/outpost_sdk/models/destinationupdatewebhook.py + - src/outpost_sdk/models/destinationwebhook.py + - src/outpost_sdk/models/disabletenantdestinationop.py + - src/outpost_sdk/models/enabletenantdestinationop.py + - src/outpost_sdk/models/event.py + - src/outpost_sdk/models/getdestinationtypeschemaop.py + - src/outpost_sdk/models/gettenantdestinationop.py + - src/outpost_sdk/models/gettenantdestinationtypeschemaop.py + - src/outpost_sdk/models/gettenanteventbydestinationop.py + - src/outpost_sdk/models/gettenanteventop.py + - src/outpost_sdk/models/gettenantop.py + - src/outpost_sdk/models/gettenantportalurlop.py + - src/outpost_sdk/models/gettenanttokenop.py + - src/outpost_sdk/models/hookdeckcredentials.py + - src/outpost_sdk/models/internal/__init__.py + - src/outpost_sdk/models/internal/globals.py + - src/outpost_sdk/models/listtenantdestinationsop.py + - src/outpost_sdk/models/listtenantdestinationtypeschemasop.py + - src/outpost_sdk/models/listtenanteventdeliveriesop.py + - src/outpost_sdk/models/listtenanteventsbydestinationop.py + - src/outpost_sdk/models/listtenanteventsop.py + - src/outpost_sdk/models/listtenanttopicsop.py + - src/outpost_sdk/models/portalredirect.py + - src/outpost_sdk/models/publishrequest.py + - src/outpost_sdk/models/publishresponse.py + - src/outpost_sdk/models/rabbitmqconfig.py + - src/outpost_sdk/models/rabbitmqcredentials.py + - src/outpost_sdk/models/retrytenanteventop.py + - src/outpost_sdk/models/security.py + - src/outpost_sdk/models/successresponse.py + - src/outpost_sdk/models/tenant.py + - src/outpost_sdk/models/tenanttoken.py + - src/outpost_sdk/models/topics_union.py + - src/outpost_sdk/models/updatetenantdestinationop.py + - src/outpost_sdk/models/upserttenantop.py + - src/outpost_sdk/models/webhookconfig.py + - src/outpost_sdk/models/webhookcredentials.py + - src/outpost_sdk/models/webhookcredentialsupdate.py + - src/outpost_sdk/publish.py + - src/outpost_sdk/py.typed + - src/outpost_sdk/schemas.py + - src/outpost_sdk/sdk.py + - src/outpost_sdk/sdkconfiguration.py + - src/outpost_sdk/tenants.py + - src/outpost_sdk/topics_sdk.py + - src/outpost_sdk/types/__init__.py + - src/outpost_sdk/types/basemodel.py + - src/outpost_sdk/utils/__init__.py + - src/outpost_sdk/utils/annotations.py + - src/outpost_sdk/utils/datetimes.py + - src/outpost_sdk/utils/enums.py + - src/outpost_sdk/utils/eventstreaming.py + - src/outpost_sdk/utils/forms.py + - src/outpost_sdk/utils/headers.py + - src/outpost_sdk/utils/logger.py + - src/outpost_sdk/utils/metadata.py + - src/outpost_sdk/utils/queryparams.py + - src/outpost_sdk/utils/requestbodies.py + - src/outpost_sdk/utils/retries.py + - src/outpost_sdk/utils/security.py + - src/outpost_sdk/utils/serializers.py + - src/outpost_sdk/utils/unmarshal_json_response.py + - src/outpost_sdk/utils/url.py + - src/outpost_sdk/utils/values.py diff --git a/sdks/outpost-python/.speakeasy/gen.yaml b/sdks/outpost-python/.speakeasy/gen.yaml index 16222340a..d932335c9 100644 --- a/sdks/outpost-python/.speakeasy/gen.yaml +++ b/sdks/outpost-python/.speakeasy/gen.yaml @@ -73,3 +73,4 @@ python: responseFormat: flat sseFlatResponse: false templateVersion: v2 + useAsyncHooks: false diff --git a/sdks/outpost-python/README.md b/sdks/outpost-python/README.md index 5a99baad2..5545571d0 100644 --- a/sdks/outpost-python/README.md +++ b/sdks/outpost-python/README.md @@ -135,6 +135,7 @@ with Outpost() as outpost:
The same SDK client can also be used to make asynchronous requests by importing asyncio. + ```python # Asynchronous Example import asyncio @@ -190,7 +191,7 @@ with Outpost(
Available methods -### [destinations](docs/sdks/destinations/README.md) +### [Destinations](docs/sdks/destinations/README.md) * [list](docs/sdks/destinations/README.md#list) - List Destinations * [create](docs/sdks/destinations/README.md#create) - Create Destination @@ -200,7 +201,7 @@ with Outpost( * [enable](docs/sdks/destinations/README.md#enable) - Enable Destination * [disable](docs/sdks/destinations/README.md#disable) - Disable Destination -### [events](docs/sdks/events/README.md) +### [Events](docs/sdks/events/README.md) * [list](docs/sdks/events/README.md#list) - List Events * [get](docs/sdks/events/README.md#get) - Get Event @@ -209,31 +210,31 @@ with Outpost( * [get_by_destination](docs/sdks/events/README.md#get_by_destination) - Get Event by Destination * [retry](docs/sdks/events/README.md#retry) - Retry Event Delivery -### [health](docs/sdks/health/README.md) +### [Health](docs/sdks/health/README.md) * [check](docs/sdks/health/README.md#check) - Health Check - -### [publish](docs/sdks/publish/README.md) +### [Publish](docs/sdks/publish/README.md) * [event](docs/sdks/publish/README.md#event) - Publish Event -### [schemas](docs/sdks/schemas/README.md) +### [Schemas](docs/sdks/schemas/README.md) * [list_tenant_destination_types](docs/sdks/schemas/README.md#list_tenant_destination_types) - List Destination Type Schemas (for Tenant) * [get](docs/sdks/schemas/README.md#get) - Get Destination Type Schema (for Tenant) * [list_destination_types_jwt](docs/sdks/schemas/README.md#list_destination_types_jwt) - List Destination Type Schemas (JWT Auth) * [get_destination_type_jwt](docs/sdks/schemas/README.md#get_destination_type_jwt) - Get Destination Type Schema -### [tenants](docs/sdks/tenants/README.md) +### [Tenants](docs/sdks/tenants/README.md) +* [list_tenants](docs/sdks/tenants/README.md#list_tenants) - List Tenants * [upsert](docs/sdks/tenants/README.md#upsert) - Create or Update Tenant * [get](docs/sdks/tenants/README.md#get) - Get Tenant * [delete](docs/sdks/tenants/README.md#delete) - Delete Tenant * [get_portal_url](docs/sdks/tenants/README.md#get_portal_url) - Get Portal Redirect URL * [get_token](docs/sdks/tenants/README.md#get_token) - Get Tenant JWT Token -### [topics](docs/sdks/topicssdk/README.md) +### [Topics](docs/sdks/topicssdk/README.md) * [list](docs/sdks/topicssdk/README.md#list) - List Available Topics (for Tenant) * [list_jwt](docs/sdks/topicssdk/README.md#list_jwt) - List Available Topics) @@ -390,16 +391,10 @@ with Outpost() as outpost: ``` ### Error Classes -**Primary errors:** +**Primary error:** * [`OutpostError`](./src/outpost_sdk/errors/outposterror.py): The base class for HTTP error responses. - * [`BadRequestError`](./src/outpost_sdk/errors/badrequesterror.py): A collection of codes that generally means the end user got something wrong in making the request. - * [`UnauthorizedError`](./src/outpost_sdk/errors/unauthorizederror.py): A collection of codes that generally means the client was not authenticated correctly for the request they want to make. - * [`NotFoundError`](./src/outpost_sdk/errors/notfounderror.py): Status codes relating to the resource/entity they are requesting not being found or endpoints/routes not existing. - * [`TimeoutErrorT`](./src/outpost_sdk/errors/timeouterrort.py): Timeouts occurred with the request. - * [`RateLimitedError`](./src/outpost_sdk/errors/ratelimitederror.py): Status codes relating to the client being rate limited by the server. Status code `429`. - * [`InternalServerError`](./src/outpost_sdk/errors/internalservererror.py): A collection of status codes that generally mean the server failed in an unexpected way. -
Less common errors (5) +
Less common errors (13)
@@ -410,9 +405,19 @@ with Outpost() as outpost: **Inherit from [`OutpostError`](./src/outpost_sdk/errors/outposterror.py)**: +* [`BadRequestError`](./src/outpost_sdk/errors/badrequesterror.py): A collection of codes that generally means the end user got something wrong in making the request. Applicable to 5 of 27 methods.* +* [`UnauthorizedError`](./src/outpost_sdk/errors/unauthorizederror.py): A collection of codes that generally means the client was not authenticated correctly for the request they want to make. Applicable to 5 of 27 methods.* +* [`NotFoundError`](./src/outpost_sdk/errors/notfounderror.py): Status codes relating to the resource/entity they are requesting not being found or endpoints/routes not existing. Applicable to 5 of 27 methods.* +* [`TimeoutErrorT`](./src/outpost_sdk/errors/timeouterrort.py): Timeouts occurred with the request. Applicable to 5 of 27 methods.* +* [`RateLimitedError`](./src/outpost_sdk/errors/ratelimitederror.py): Status codes relating to the client being rate limited by the server. Status code `429`. Applicable to 5 of 27 methods.* +* [`InternalServerError`](./src/outpost_sdk/errors/internalservererror.py): A collection of status codes that generally mean the server failed in an unexpected way. Applicable to 5 of 27 methods.* +* [`ListTenantsBadRequestError`](./src/outpost_sdk/errors/listtenantsbadrequesterror.py): Invalid request parameters (e.g., invalid cursor, both next and prev provided). Status code `400`. Applicable to 1 of 27 methods.* +* [`NotImplementedErrorT`](./src/outpost_sdk/errors/notimplementederrort.py): List Tenants feature is not available. Requires Redis with RediSearch module. Status code `501`. Applicable to 1 of 27 methods.* * [`ResponseValidationError`](./src/outpost_sdk/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
+ +\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable. diff --git a/sdks/outpost-python/RELEASES.md b/sdks/outpost-python/RELEASES.md index ded04524b..08291277d 100644 --- a/sdks/outpost-python/RELEASES.md +++ b/sdks/outpost-python/RELEASES.md @@ -28,4 +28,14 @@ Based on: ### Generated - [python v0.3.0] sdks/outpost-python ### Releases -- [PyPI v0.3.0] https://pypi.org/project/outpost_sdk/0.3.0 - sdks/outpost-python \ No newline at end of file +- [PyPI v0.3.0] https://pypi.org/project/outpost_sdk/0.3.0 - sdks/outpost-python + +## 2026-01-16 13:06:05 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.686.1 (2.796.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.5.0] sdks/outpost-python +### Releases +- [PyPI v0.5.0] https://pypi.org/project/outpost_sdk/0.5.0 - sdks/outpost-python \ No newline at end of file diff --git a/sdks/outpost-python/USAGE.md b/sdks/outpost-python/USAGE.md index a8d3a7d3c..2d498d272 100644 --- a/sdks/outpost-python/USAGE.md +++ b/sdks/outpost-python/USAGE.md @@ -15,6 +15,7 @@ with Outpost() as outpost:
The same SDK client can also be used to make asynchronous requests by importing asyncio. + ```python # Asynchronous Example import asyncio diff --git a/sdks/outpost-python/docs/errors/listtenantsbadrequesterror.md b/sdks/outpost-python/docs/errors/listtenantsbadrequesterror.md new file mode 100644 index 000000000..28caef5b0 --- /dev/null +++ b/sdks/outpost-python/docs/errors/listtenantsbadrequesterror.md @@ -0,0 +1,10 @@ +# ListTenantsBadRequestError + +Invalid request parameters (e.g., invalid cursor, both next and prev provided). + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------- | --------------------- | --------------------- | --------------------- | --------------------- | +| `error` | *Optional[str]* | :heavy_minus_sign: | N/A | invalid cursor format | \ No newline at end of file diff --git a/sdks/outpost-python/docs/errors/notimplementederrort.md b/sdks/outpost-python/docs/errors/notimplementederrort.md new file mode 100644 index 000000000..009086955 --- /dev/null +++ b/sdks/outpost-python/docs/errors/notimplementederrort.md @@ -0,0 +1,10 @@ +# NotImplementedErrorT + +List Tenants feature is not available. Requires Redis with RediSearch module. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `error` | *Optional[str]* | :heavy_minus_sign: | N/A | list tenant not supported | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/awss3config.md b/sdks/outpost-python/docs/models/awss3config.md index 8171dda62..e7daf4322 100644 --- a/sdks/outpost-python/docs/models/awss3config.md +++ b/sdks/outpost-python/docs/models/awss3config.md @@ -7,5 +7,5 @@ | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | `bucket` | *str* | :heavy_check_mark: | The name of your AWS S3 bucket. | my-bucket | | `region` | *str* | :heavy_check_mark: | The AWS region where your bucket is located. | us-east-1 | -| `key_template` | *Optional[str]* | :heavy_minus_sign: | JMESPath expression for generating S3 object keys. Default is join('', [time.rfc3339_nano, '_', metadata."event-id", '.json']). | join('/', [time.year, time.month, time.day, metadata.`"event-id"`, '.json']) | +| `key_template` | *Optional[str]* | :heavy_minus_sign: | JMESPath expression for generating S3 object keys. Default is join('', [time.rfc3339_nano, '_', metadata."event-id", '.json']). | join('/', [time.year, time.month, time.day, metadata."event-id", '.json']) | | `storage_class` | *Optional[str]* | :heavy_minus_sign: | The storage class for the S3 objects (e.g., STANDARD, INTELLIGENT_TIERING, GLACIER, etc.). Defaults to "STANDARD". | STANDARD | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/createtenantdestinationrequest.md b/sdks/outpost-python/docs/models/createtenantdestinationrequest.md index ff05e8722..b4dce1f8d 100644 --- a/sdks/outpost-python/docs/models/createtenantdestinationrequest.md +++ b/sdks/outpost-python/docs/models/createtenantdestinationrequest.md @@ -6,4 +6,4 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | -| `destination_create` | [models.DestinationCreate](../models/destinationcreate.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `params` | [models.DestinationCreate](../models/destinationcreate.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/deliveryattempt.md b/sdks/outpost-python/docs/models/deliveryattempt.md index 600f6b020..bf2736074 100644 --- a/sdks/outpost-python/docs/models/deliveryattempt.md +++ b/sdks/outpost-python/docs/models/deliveryattempt.md @@ -3,10 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `delivered_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2024-01-01T00:00:00Z | -| `status` | [Optional[models.Status]](../models/status.md) | :heavy_minus_sign: | N/A | success | -| `response_status_code` | *Optional[int]* | :heavy_minus_sign: | N/A | 200 | -| `response_body` | *Optional[str]* | :heavy_minus_sign: | N/A | {"status":"ok"} | -| `response_headers` | Dict[str, *str*] | :heavy_minus_sign: | N/A | {
"content-type": "application/json"
} | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `delivered_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2024-01-01T00:00:00Z | +| `status` | [Optional[models.DeliveryAttemptStatus]](../models/deliveryattemptstatus.md) | :heavy_minus_sign: | N/A | success | +| `response_status_code` | *Optional[int]* | :heavy_minus_sign: | N/A | 200 | +| `response_body` | *Optional[str]* | :heavy_minus_sign: | N/A | {"status":"ok"} | +| `response_headers` | Dict[str, *str*] | :heavy_minus_sign: | N/A | {
"content-type": "application/json"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/deliveryattemptstatus.md b/sdks/outpost-python/docs/models/deliveryattemptstatus.md new file mode 100644 index 000000000..608b73c6b --- /dev/null +++ b/sdks/outpost-python/docs/models/deliveryattemptstatus.md @@ -0,0 +1,9 @@ +# DeliveryAttemptStatus + + +## Values + +| Name | Value | +| --------- | --------- | +| `SUCCESS` | success | +| `FAILED` | failed | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destination.md b/sdks/outpost-python/docs/models/destination.md index b14d840fe..62723c1f0 100644 --- a/sdks/outpost-python/docs/models/destination.md +++ b/sdks/outpost-python/docs/models/destination.md @@ -45,3 +45,9 @@ value: models.DestinationAzureServiceBus = /* values here */ value: models.DestinationAwss3 = /* values here */ ``` +### `models.DestinationGCPPubSub` + +```python +value: models.DestinationGCPPubSub = /* values here */ +``` + diff --git a/sdks/outpost-python/docs/models/destinationawskinesis.md b/sdks/outpost-python/docs/models/destinationawskinesis.md index 2ebb2167e..3c24ce09b 100644 --- a/sdks/outpost-python/docs/models/destinationawskinesis.md +++ b/sdks/outpost-python/docs/models/destinationawskinesis.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationAWSKinesisType](../models/destinationawskinesistype.md) | :heavy_check_mark: | Type of the destination. | aws_kinesis | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | [models.AWSKinesisConfig](../models/awskinesisconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.AWSKinesisCredentials](../models/awskinesiscredentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (Kinesis stream name). Read-only. | production-events | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the stream). Read-only. | https://eu-west-1.console.aws.amazon.com/kinesis/home?region=eu-west-1#/streams/details/production-events/details | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationAWSKinesisType](../models/destinationawskinesistype.md) | :heavy_check_mark: | Type of the destination. | aws_kinesis | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.AWSKinesisConfig](../models/awskinesisconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.AWSKinesisCredentials](../models/awskinesiscredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (Kinesis stream name). Read-only. | production-events | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the stream). Read-only. | https://eu-west-1.console.aws.amazon.com/kinesis/home?region=eu-west-1#/streams/details/production-events/details | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationawss3.md b/sdks/outpost-python/docs/models/destinationawss3.md index e1f7a55a7..4733322cc 100644 --- a/sdks/outpost-python/docs/models/destinationawss3.md +++ b/sdks/outpost-python/docs/models/destinationawss3.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationAwss3Type](../models/destinationawss3type.md) | :heavy_check_mark: | Type of the destination. | aws_s3 | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | [models.Awss3Config](../models/awss3config.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.Awss3Credentials](../models/awss3credentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (bucket and region). Read-only. | my-bucket in us-east-1 | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the bucket). Read-only. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationAwss3Type](../models/destinationawss3type.md) | :heavy_check_mark: | Type of the destination. | aws_s3 | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.Awss3Config](../models/awss3config.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.Awss3Credentials](../models/awss3credentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (bucket and region). Read-only. | my-bucket in us-east-1 | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the bucket). Read-only. | | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationawssqs.md b/sdks/outpost-python/docs/models/destinationawssqs.md index 7ea4e12bc..236321b92 100644 --- a/sdks/outpost-python/docs/models/destinationawssqs.md +++ b/sdks/outpost-python/docs/models/destinationawssqs.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationAWSSQSType](../models/destinationawssqstype.md) | :heavy_check_mark: | Type of the destination. | aws_sqs | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | [models.AWSSQSConfig](../models/awssqsconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.AWSSQSCredentials](../models/awssqscredentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (SQS queue name). Read-only. | my-app-queue | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the queue). Read-only. | https://us-west-2.console.aws.amazon.com/sqs/v2/home?region=us-west-2#/queues/https%3A%2F%2Fsqs.us-west-2.amazonaws.com%2F123456789012%2Fmy-app-queue | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationAWSSQSType](../models/destinationawssqstype.md) | :heavy_check_mark: | Type of the destination. | aws_sqs | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.AWSSQSConfig](../models/awssqsconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.AWSSQSCredentials](../models/awssqscredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (SQS queue name). Read-only. | my-app-queue | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the queue). Read-only. | https://us-west-2.console.aws.amazon.com/sqs/v2/home?region=us-west-2#/queues/https%3A%2F%2Fsqs.us-west-2.amazonaws.com%2F123456789012%2Fmy-app-queue | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationazureservicebus.md b/sdks/outpost-python/docs/models/destinationazureservicebus.md index 756664786..62e1e3ebf 100644 --- a/sdks/outpost-python/docs/models/destinationazureservicebus.md +++ b/sdks/outpost-python/docs/models/destinationazureservicebus.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationAzureServiceBusType](../models/destinationazureservicebustype.md) | :heavy_check_mark: | Type of the destination. | azure_servicebus | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | [models.AzureServiceBusConfig](../models/azureservicebusconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.AzureServiceBusCredentials](../models/azureservicebuscredentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (Azure Service Bus queue/topic name). Read-only. | my-queue-or-topic | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (Azure Portal link to the Service Bus). Read-only. | https://portal.azure.com/#@tenant-id/resource/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.ServiceBus/namespaces/namespace-name/queues/queue-name | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationAzureServiceBusType](../models/destinationazureservicebustype.md) | :heavy_check_mark: | Type of the destination. | azure_servicebus | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.AzureServiceBusConfig](../models/azureservicebusconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.AzureServiceBusCredentials](../models/azureservicebuscredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (Azure Service Bus queue/topic name). Read-only. | my-queue-or-topic | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (Azure Portal link to the Service Bus). Read-only. | https://portal.azure.com/#@tenant-id/resource/subscriptions/subscription-id/resourceGroups/resource-group/providers/Microsoft.ServiceBus/namespaces/namespace-name/queues/queue-name | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreate.md b/sdks/outpost-python/docs/models/destinationcreate.md index 6bc138188..f1c670b0c 100644 --- a/sdks/outpost-python/docs/models/destinationcreate.md +++ b/sdks/outpost-python/docs/models/destinationcreate.md @@ -45,3 +45,9 @@ value: models.DestinationCreateAzureServiceBus = /* values here */ value: models.DestinationCreateAwss3 = /* values here */ ``` +### `models.DestinationCreateGCPPubSub` + +```python +value: models.DestinationCreateGCPPubSub = /* values here */ +``` + diff --git a/sdks/outpost-python/docs/models/destinationcreateawskinesis.md b/sdks/outpost-python/docs/models/destinationcreateawskinesis.md index 7dce7018d..c52d7b314 100644 --- a/sdks/outpost-python/docs/models/destinationcreateawskinesis.md +++ b/sdks/outpost-python/docs/models/destinationcreateawskinesis.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateAWSKinesisType](../models/destinationcreateawskinesistype.md) | :heavy_check_mark: | Type of the destination. Must be 'aws_kinesis'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | [models.AWSKinesisConfig](../models/awskinesisconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.AWSKinesisCredentials](../models/awskinesiscredentials.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateAWSKinesisType](../models/destinationcreateawskinesistype.md) | :heavy_check_mark: | Type of the destination. Must be 'aws_kinesis'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.AWSKinesisConfig](../models/awskinesisconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.AWSKinesisCredentials](../models/awskinesiscredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreateawss3.md b/sdks/outpost-python/docs/models/destinationcreateawss3.md index 2ce1e6b7f..250fd5153 100644 --- a/sdks/outpost-python/docs/models/destinationcreateawss3.md +++ b/sdks/outpost-python/docs/models/destinationcreateawss3.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateAwss3Type](../models/destinationcreateawss3type.md) | :heavy_check_mark: | Type of the destination. Must be 'aws_s3'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | [models.Awss3Config](../models/awss3config.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.Awss3Credentials](../models/awss3credentials.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateAwss3Type](../models/destinationcreateawss3type.md) | :heavy_check_mark: | Type of the destination. Must be 'aws_s3'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.Awss3Config](../models/awss3config.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.Awss3Credentials](../models/awss3credentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreateawssqs.md b/sdks/outpost-python/docs/models/destinationcreateawssqs.md index 0d98cefdc..a59e04de2 100644 --- a/sdks/outpost-python/docs/models/destinationcreateawssqs.md +++ b/sdks/outpost-python/docs/models/destinationcreateawssqs.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateAWSSQSType](../models/destinationcreateawssqstype.md) | :heavy_check_mark: | Type of the destination. Must be 'aws_sqs'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | [models.AWSSQSConfig](../models/awssqsconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.AWSSQSCredentials](../models/awssqscredentials.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateAWSSQSType](../models/destinationcreateawssqstype.md) | :heavy_check_mark: | Type of the destination. Must be 'aws_sqs'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.AWSSQSConfig](../models/awssqsconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.AWSSQSCredentials](../models/awssqscredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreateazureservicebus.md b/sdks/outpost-python/docs/models/destinationcreateazureservicebus.md index 9538bc4e2..b8a431c50 100644 --- a/sdks/outpost-python/docs/models/destinationcreateazureservicebus.md +++ b/sdks/outpost-python/docs/models/destinationcreateazureservicebus.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateAzureServiceBusType](../models/destinationcreateazureservicebustype.md) | :heavy_check_mark: | Type of the destination. Must be 'azure_servicebus'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | [models.AzureServiceBusConfig](../models/azureservicebusconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.AzureServiceBusCredentials](../models/azureservicebuscredentials.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateAzureServiceBusType](../models/destinationcreateazureservicebustype.md) | :heavy_check_mark: | Type of the destination. Must be 'azure_servicebus'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.AzureServiceBusConfig](../models/azureservicebusconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.AzureServiceBusCredentials](../models/azureservicebuscredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreategcppubsub.md b/sdks/outpost-python/docs/models/destinationcreategcppubsub.md new file mode 100644 index 000000000..739d1cca9 --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationcreategcppubsub.md @@ -0,0 +1,15 @@ +# DestinationCreateGCPPubSub + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateGCPPubSubType](../models/destinationcreategcppubsubtype.md) | :heavy_check_mark: | Type of the destination. Must be 'gcp_pubsub'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.GCPPubSubConfig](../models/gcppubsubconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.GCPPubSubCredentials](../models/gcppubsubcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreategcppubsubtype.md b/sdks/outpost-python/docs/models/destinationcreategcppubsubtype.md new file mode 100644 index 000000000..60deed6e0 --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationcreategcppubsubtype.md @@ -0,0 +1,10 @@ +# DestinationCreateGCPPubSubType + +Type of the destination. Must be 'gcp_pubsub'. + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `GCP_PUBSUB` | gcp_pubsub | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreatehookdeck.md b/sdks/outpost-python/docs/models/destinationcreatehookdeck.md index 16a86f51b..6b0fb6f08 100644 --- a/sdks/outpost-python/docs/models/destinationcreatehookdeck.md +++ b/sdks/outpost-python/docs/models/destinationcreatehookdeck.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateHookdeckType](../models/destinationcreatehookdecktype.md) | :heavy_check_mark: | Type of the destination. Must be 'hookdeck'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | *Optional[Any]* | :heavy_minus_sign: | N/A | | -| `credentials` | [models.HookdeckCredentials](../models/hookdeckcredentials.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateHookdeckType](../models/destinationcreatehookdecktype.md) | :heavy_check_mark: | Type of the destination. Must be 'hookdeck'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | *Optional[Any]* | :heavy_minus_sign: | N/A | | +| `credentials` | [models.HookdeckCredentials](../models/hookdeckcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreaterabbitmq.md b/sdks/outpost-python/docs/models/destinationcreaterabbitmq.md index 0b82d88a5..368f52f09 100644 --- a/sdks/outpost-python/docs/models/destinationcreaterabbitmq.md +++ b/sdks/outpost-python/docs/models/destinationcreaterabbitmq.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateRabbitMQType](../models/destinationcreaterabbitmqtype.md) | :heavy_check_mark: | Type of the destination. Must be 'rabbitmq'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | [models.RabbitMQConfig](../models/rabbitmqconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.RabbitMQCredentials](../models/rabbitmqcredentials.md) | :heavy_check_mark: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateRabbitMQType](../models/destinationcreaterabbitmqtype.md) | :heavy_check_mark: | Type of the destination. Must be 'rabbitmq'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.RabbitMQConfig](../models/rabbitmqconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.RabbitMQCredentials](../models/rabbitmqcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationcreatewebhook.md b/sdks/outpost-python/docs/models/destinationcreatewebhook.md index 4065c9bb9..07b9d7160 100644 --- a/sdks/outpost-python/docs/models/destinationcreatewebhook.md +++ b/sdks/outpost-python/docs/models/destinationcreatewebhook.md @@ -3,10 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | -| `type` | [models.DestinationCreateWebhookType](../models/destinationcreatewebhooktype.md) | :heavy_check_mark: | Type of the destination. Must be 'webhook'. | | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `config` | [models.WebhookConfig](../models/webhookconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [Optional[models.WebhookCredentials]](../models/webhookcredentials.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Optional user-provided ID. A UUID will be generated if empty. | user-provided-id | +| `type` | [models.DestinationCreateWebhookType](../models/destinationcreatewebhooktype.md) | :heavy_check_mark: | Type of the destination. Must be 'webhook'. | | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [models.WebhookConfig](../models/webhookconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [Optional[models.WebhookCredentials]](../models/webhookcredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationgcppubsub.md b/sdks/outpost-python/docs/models/destinationgcppubsub.md new file mode 100644 index 000000000..dbafb7bb9 --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationgcppubsub.md @@ -0,0 +1,20 @@ +# DestinationGCPPubSub + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationGCPPubSubType](../models/destinationgcppubsubtype.md) | :heavy_check_mark: | Type of the destination. | gcp_pubsub | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.GCPPubSubConfig](../models/gcppubsubconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.GCPPubSubCredentials](../models/gcppubsubcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (project/topic). Read-only. | my-project-123/events-topic | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (GCP Console link to the topic). Read-only. | https://console.cloud.google.com/cloudpubsub/topic/detail/events-topic?project=my-project-123 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationgcppubsubtype.md b/sdks/outpost-python/docs/models/destinationgcppubsubtype.md new file mode 100644 index 000000000..de36e971d --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationgcppubsubtype.md @@ -0,0 +1,10 @@ +# DestinationGCPPubSubType + +Type of the destination. + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `GCP_PUBSUB` | gcp_pubsub | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationhookdeck.md b/sdks/outpost-python/docs/models/destinationhookdeck.md index 26ba1e9f0..b56b21103 100644 --- a/sdks/outpost-python/docs/models/destinationhookdeck.md +++ b/sdks/outpost-python/docs/models/destinationhookdeck.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationHookdeckType](../models/destinationhookdecktype.md) | :heavy_check_mark: | Type of the destination. | hookdeck | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | *Optional[Any]* | :heavy_minus_sign: | N/A | | -| `credentials` | [models.HookdeckCredentials](../models/hookdeckcredentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (Hookdeck). Read-only. | Hookdeck | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (e.g., Hookdeck dashboard). Read-only. | https://dashboard.hookdeck.com/sources/src_xxxyyyzzz | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationHookdeckType](../models/destinationhookdecktype.md) | :heavy_check_mark: | Type of the destination. | hookdeck | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | *Optional[Any]* | :heavy_minus_sign: | N/A | | +| `credentials` | [models.HookdeckCredentials](../models/hookdeckcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (Hookdeck). Read-only. | Hookdeck | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (e.g., Hookdeck dashboard). Read-only. | https://dashboard.hookdeck.com/sources/src_xxxyyyzzz | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationrabbitmq.md b/sdks/outpost-python/docs/models/destinationrabbitmq.md index cab59bbc1..843e8bcb7 100644 --- a/sdks/outpost-python/docs/models/destinationrabbitmq.md +++ b/sdks/outpost-python/docs/models/destinationrabbitmq.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationRabbitMQType](../models/destinationrabbitmqtype.md) | :heavy_check_mark: | Type of the destination. | rabbitmq | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | [models.RabbitMQConfig](../models/rabbitmqconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.RabbitMQCredentials](../models/rabbitmqcredentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (RabbitMQ exchange). Read-only. | events-exchange | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (not applicable for RabbitMQ exchange). Read-only. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationRabbitMQType](../models/destinationrabbitmqtype.md) | :heavy_check_mark: | Type of the destination. | rabbitmq | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.RabbitMQConfig](../models/rabbitmqconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.RabbitMQCredentials](../models/rabbitmqcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (RabbitMQ exchange). Read-only. | events-exchange | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (not applicable for RabbitMQ exchange). Read-only. | | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationtype.md b/sdks/outpost-python/docs/models/destinationtype.md new file mode 100644 index 000000000..3ca7e4005 --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationtype.md @@ -0,0 +1,17 @@ +# DestinationType + +Type of destination. + + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `WEBHOOK` | webhook | +| `AWS_SQS` | aws_sqs | +| `RABBITMQ` | rabbitmq | +| `HOOKDECK` | hookdeck | +| `AWS_KINESIS` | aws_kinesis | +| `AZURE_SERVICEBUS` | azure_servicebus | +| `AWS_S3` | aws_s3 | +| `GCP_PUBSUB` | gcp_pubsub | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdate.md b/sdks/outpost-python/docs/models/destinationupdate.md index b18d6ea44..37cd62167 100644 --- a/sdks/outpost-python/docs/models/destinationupdate.md +++ b/sdks/outpost-python/docs/models/destinationupdate.md @@ -33,9 +33,21 @@ value: models.DestinationUpdateHookdeck = /* values here */ value: models.DestinationUpdateAWSKinesis = /* values here */ ``` +### `models.DestinationUpdateAzureServiceBus` + +```python +value: models.DestinationUpdateAzureServiceBus = /* values here */ +``` + ### `models.DestinationUpdateAwss3` ```python value: models.DestinationUpdateAwss3 = /* values here */ ``` +### `models.DestinationUpdateGCPPubSub` + +```python +value: models.DestinationUpdateGCPPubSub = /* values here */ +``` + diff --git a/sdks/outpost-python/docs/models/destinationupdateawskinesis.md b/sdks/outpost-python/docs/models/destinationupdateawskinesis.md index 79730bcd8..0eacdce07 100644 --- a/sdks/outpost-python/docs/models/destinationupdateawskinesis.md +++ b/sdks/outpost-python/docs/models/destinationupdateawskinesis.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | -| `config` | [Optional[models.AWSKinesisConfig]](../models/awskinesisconfig.md) | :heavy_minus_sign: | N/A | | -| `credentials` | [Optional[models.AWSKinesisCredentials]](../models/awskinesiscredentials.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.AWSKinesisConfig]](../models/awskinesisconfig.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.AWSKinesisCredentials]](../models/awskinesiscredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdateawss3.md b/sdks/outpost-python/docs/models/destinationupdateawss3.md index 78f6d9d2c..6cbd6d348 100644 --- a/sdks/outpost-python/docs/models/destinationupdateawss3.md +++ b/sdks/outpost-python/docs/models/destinationupdateawss3.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | -| `config` | [Optional[models.Awss3Config]](../models/awss3config.md) | :heavy_minus_sign: | N/A | | -| `credentials` | [Optional[models.Awss3Credentials]](../models/awss3credentials.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.Awss3Config]](../models/awss3config.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.Awss3Credentials]](../models/awss3credentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdateawssqs.md b/sdks/outpost-python/docs/models/destinationupdateawssqs.md index 2be85c66b..009ff5332 100644 --- a/sdks/outpost-python/docs/models/destinationupdateawssqs.md +++ b/sdks/outpost-python/docs/models/destinationupdateawssqs.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | -| `config` | [Optional[models.AWSSQSConfig]](../models/awssqsconfig.md) | :heavy_minus_sign: | N/A | | -| `credentials` | [Optional[models.AWSSQSCredentials]](../models/awssqscredentials.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.AWSSQSConfig]](../models/awssqsconfig.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.AWSSQSCredentials]](../models/awssqscredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdateazureservicebus.md b/sdks/outpost-python/docs/models/destinationupdateazureservicebus.md new file mode 100644 index 000000000..c0edaae81 --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationupdateazureservicebus.md @@ -0,0 +1,13 @@ +# DestinationUpdateAzureServiceBus + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.AzureServiceBusConfig]](../models/azureservicebusconfig.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.AzureServiceBusCredentials]](../models/azureservicebuscredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdategcppubsub.md b/sdks/outpost-python/docs/models/destinationupdategcppubsub.md new file mode 100644 index 000000000..4605278ca --- /dev/null +++ b/sdks/outpost-python/docs/models/destinationupdategcppubsub.md @@ -0,0 +1,13 @@ +# DestinationUpdateGCPPubSub + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.GCPPubSubConfig]](../models/gcppubsubconfig.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.GCPPubSubCredentials]](../models/gcppubsubcredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdatehookdeck.md b/sdks/outpost-python/docs/models/destinationupdatehookdeck.md index 6ff68fae7..fb8d4211c 100644 --- a/sdks/outpost-python/docs/models/destinationupdatehookdeck.md +++ b/sdks/outpost-python/docs/models/destinationupdatehookdeck.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | -| `config` | *Optional[Any]* | :heavy_minus_sign: | N/A | | -| `credentials` | [Optional[models.HookdeckCredentials]](../models/hookdeckcredentials.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | *Optional[Any]* | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.HookdeckCredentials]](../models/hookdeckcredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdaterabbitmq.md b/sdks/outpost-python/docs/models/destinationupdaterabbitmq.md index 5ea73f845..db17ef6aa 100644 --- a/sdks/outpost-python/docs/models/destinationupdaterabbitmq.md +++ b/sdks/outpost-python/docs/models/destinationupdaterabbitmq.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | -| `config` | [Optional[models.RabbitMQConfig]](../models/rabbitmqconfig.md) | :heavy_minus_sign: | N/A | | -| `credentials` | [Optional[models.RabbitMQCredentials]](../models/rabbitmqcredentials.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.RabbitMQConfig]](../models/rabbitmqconfig.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.RabbitMQCredentials]](../models/rabbitmqcredentials.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationupdatewebhook.md b/sdks/outpost-python/docs/models/destinationupdatewebhook.md index 4054e6f76..3132ae923 100644 --- a/sdks/outpost-python/docs/models/destinationupdatewebhook.md +++ b/sdks/outpost-python/docs/models/destinationupdatewebhook.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | -| `config` | [Optional[models.WebhookConfig]](../models/webhookconfig.md) | :heavy_minus_sign: | N/A | | -| `credentials` | [Optional[models.WebhookCredentialsUpdate]](../models/webhookcredentialsupdate.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `topics` | [Optional[models.TopicsUnion]](../models/topicsunion.md) | :heavy_minus_sign: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `config` | [Optional[models.WebhookConfig]](../models/webhookconfig.md) | :heavy_minus_sign: | N/A | | +| `credentials` | [Optional[models.WebhookCredentialsUpdate]](../models/webhookcredentialsupdate.md) | :heavy_minus_sign: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/destinationwebhook.md b/sdks/outpost-python/docs/models/destinationwebhook.md index 9a5320608..a80231bdf 100644 --- a/sdks/outpost-python/docs/models/destinationwebhook.md +++ b/sdks/outpost-python/docs/models/destinationwebhook.md @@ -3,14 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | -| `type` | [models.DestinationWebhookType](../models/destinationwebhooktype.md) | :heavy_check_mark: | Type of the destination. | webhook | -| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | -| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | -| `config` | [models.WebhookConfig](../models/webhookconfig.md) | :heavy_check_mark: | N/A | | -| `credentials` | [models.WebhookCredentials](../models/webhookcredentials.md) | :heavy_check_mark: | N/A | | -| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (e.g., URL host). Read-only. | my-service.com | -| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (the webhook URL). Read-only. | https://my-service.com/webhook/handler | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *str* | :heavy_check_mark: | Control plane generated ID or user provided ID for the destination. | des_12345 | +| `type` | [models.DestinationWebhookType](../models/destinationwebhooktype.md) | :heavy_check_mark: | Type of the destination. | webhook | +| `topics` | [models.TopicsUnion](../models/topicsunion.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * | +| `filter_` | Dict[str, *Any*] | :heavy_minus_sign: | Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination.
Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not.
If null or empty, all events matching the topic filter will be delivered.
To remove an existing filter when updating a destination, set filter to an empty object `{}`.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} | +| `disabled_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z | +| `config` | [models.WebhookConfig](../models/webhookconfig.md) | :heavy_check_mark: | N/A | | +| `credentials` | [models.WebhookCredentials](../models/webhookcredentials.md) | :heavy_check_mark: | N/A | | +| `delivery_metadata` | Dict[str, *str*] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every delivery. | {
"app-id": "my-app",
"region": "us-east-1"
} | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} | +| `target` | *Optional[str]* | :heavy_minus_sign: | A human-readable representation of the destination target (e.g., URL host). Read-only. | my-service.com | +| `target_url` | *OptionalNullable[str]* | :heavy_minus_sign: | A URL link to the destination target (the webhook URL). Read-only. | https://my-service.com/webhook/handler | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/event.md b/sdks/outpost-python/docs/models/event.md index e9617aa7c..7eaca768c 100644 --- a/sdks/outpost-python/docs/models/event.md +++ b/sdks/outpost-python/docs/models/event.md @@ -11,4 +11,5 @@ | `time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Time the event was received/processed. | 2024-01-01T00:00:00Z | | `successful_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Time the event was successfully delivered. | 2024-01-01T00:00:00Z | | `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Key-value string pairs of metadata associated with the event. | {
"source": "crm"
} | +| `status` | [Optional[models.EventStatus]](../models/eventstatus.md) | :heavy_minus_sign: | N/A | success | | `data` | Dict[str, *Any*] | :heavy_minus_sign: | Freeform JSON data of the event. | {
"user_id": "userid",
"status": "active"
} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/status.md b/sdks/outpost-python/docs/models/eventstatus.md similarity index 89% rename from sdks/outpost-python/docs/models/status.md rename to sdks/outpost-python/docs/models/eventstatus.md index 7b84e7932..d7e862741 100644 --- a/sdks/outpost-python/docs/models/status.md +++ b/sdks/outpost-python/docs/models/eventstatus.md @@ -1,4 +1,4 @@ -# Status +# EventStatus ## Values diff --git a/sdks/outpost-python/docs/models/gcppubsubconfig.md b/sdks/outpost-python/docs/models/gcppubsubconfig.md new file mode 100644 index 000000000..e9739d266 --- /dev/null +++ b/sdks/outpost-python/docs/models/gcppubsubconfig.md @@ -0,0 +1,10 @@ +# GCPPubSubConfig + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `project_id` | *str* | :heavy_check_mark: | The GCP project ID. | my-project-123 | +| `topic` | *str* | :heavy_check_mark: | The Pub/Sub topic name. | events-topic | +| `endpoint` | *Optional[str]* | :heavy_minus_sign: | Optional. Custom endpoint URL (e.g., localhost:8085 for emulator). | pubsub.googleapis.com:443 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/gcppubsubcredentials.md b/sdks/outpost-python/docs/models/gcppubsubcredentials.md new file mode 100644 index 000000000..c785edab1 --- /dev/null +++ b/sdks/outpost-python/docs/models/gcppubsubcredentials.md @@ -0,0 +1,8 @@ +# GCPPubSubCredentials + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `service_account_json` | *str* | :heavy_check_mark: | Service account key JSON. The entire JSON key file content as a string. | {"type":"service_account","project_id":"my-project","private_key_id":"key123","private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n","client_email":"my-service@my-project.iam.gserviceaccount.com"} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/healthcheckresponse.md b/sdks/outpost-python/docs/models/healthcheckresponse.md new file mode 100644 index 000000000..81362c495 --- /dev/null +++ b/sdks/outpost-python/docs/models/healthcheckresponse.md @@ -0,0 +1,12 @@ +# HealthCheckResponse + +Service is healthy - all workers are operational. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `status` | [models.HealthCheckStatus1](../models/healthcheckstatus1.md) | :heavy_check_mark: | N/A | healthy | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | When this health check was performed | 2025-11-11T10:30:00Z | +| `workers` | Dict[str, [models.Workers](../models/workers.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/healthcheckstatus1.md b/sdks/outpost-python/docs/models/healthcheckstatus1.md new file mode 100644 index 000000000..40cb2e3cc --- /dev/null +++ b/sdks/outpost-python/docs/models/healthcheckstatus1.md @@ -0,0 +1,8 @@ +# HealthCheckStatus1 + + +## Values + +| Name | Value | +| --------- | --------- | +| `HEALTHY` | healthy | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/healthcheckstatus2.md b/sdks/outpost-python/docs/models/healthcheckstatus2.md new file mode 100644 index 000000000..5eab037a7 --- /dev/null +++ b/sdks/outpost-python/docs/models/healthcheckstatus2.md @@ -0,0 +1,8 @@ +# HealthCheckStatus2 + + +## Values + +| Name | Value | +| --------- | --------- | +| `HEALTHY` | healthy | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/listtenantdestinationsrequest.md b/sdks/outpost-python/docs/models/listtenantdestinationsrequest.md index 4250da29c..d12d2e664 100644 --- a/sdks/outpost-python/docs/models/listtenantdestinationsrequest.md +++ b/sdks/outpost-python/docs/models/listtenantdestinationsrequest.md @@ -6,5 +6,5 @@ | Field | Type | Required | Description | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | -| `type` | [Optional[models.Type]](../models/type.md) | :heavy_minus_sign: | Filter destinations by type(s). | +| `type` | [Optional[models.ListTenantDestinationsType]](../models/listtenantdestinationstype.md) | :heavy_minus_sign: | Filter destinations by type(s). | | `topics` | [Optional[models.ListTenantDestinationsTopics]](../models/listtenantdestinationstopics.md) | :heavy_minus_sign: | Filter destinations by supported topic(s). | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/listtenantdestinationstype.md b/sdks/outpost-python/docs/models/listtenantdestinationstype.md new file mode 100644 index 000000000..fdf4bf525 --- /dev/null +++ b/sdks/outpost-python/docs/models/listtenantdestinationstype.md @@ -0,0 +1,19 @@ +# ListTenantDestinationsType + +Filter destinations by type(s). + + +## Supported Types + +### `models.DestinationType` + +```python +value: models.DestinationType = /* values here */ +``` + +### `List[models.DestinationType]` + +```python +value: List[models.DestinationType] = /* values here */ +``` + diff --git a/sdks/outpost-python/docs/models/listtenantdestinationstypeenum1.md b/sdks/outpost-python/docs/models/listtenantdestinationstypeenum1.md deleted file mode 100644 index c013715a4..000000000 --- a/sdks/outpost-python/docs/models/listtenantdestinationstypeenum1.md +++ /dev/null @@ -1,13 +0,0 @@ -# ListTenantDestinationsTypeEnum1 - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `WEBHOOK` | webhook | -| `AWS_SQS` | aws_sqs | -| `RABBITMQ` | rabbitmq | -| `HOOKDECK` | hookdeck | -| `AWS_KINESIS` | aws_kinesis | -| `AWS_S3` | aws_s3 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/listtenantdestinationstypeenum2.md b/sdks/outpost-python/docs/models/listtenantdestinationstypeenum2.md deleted file mode 100644 index 9fa71bbcf..000000000 --- a/sdks/outpost-python/docs/models/listtenantdestinationstypeenum2.md +++ /dev/null @@ -1,13 +0,0 @@ -# ListTenantDestinationsTypeEnum2 - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `WEBHOOK` | webhook | -| `AWS_SQS` | aws_sqs | -| `RABBITMQ` | rabbitmq | -| `HOOKDECK` | hookdeck | -| `AWS_KINESIS` | aws_kinesis | -| `AWS_S3` | aws_s3 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/listtenanteventsbydestinationrequest.md b/sdks/outpost-python/docs/models/listtenanteventsbydestinationrequest.md index 142770853..6479ccdac 100644 --- a/sdks/outpost-python/docs/models/listtenanteventsbydestinationrequest.md +++ b/sdks/outpost-python/docs/models/listtenanteventsbydestinationrequest.md @@ -8,8 +8,8 @@ | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `destination_id` | *str* | :heavy_check_mark: | The ID of the destination. | | `status` | [Optional[models.ListTenantEventsByDestinationStatus]](../models/listtenanteventsbydestinationstatus.md) | :heavy_minus_sign: | Filter events by delivery status. | -| `next` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | -| `prev` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | +| `next_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | +| `prev_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of items per page (default 100, max 1000) | | `start` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Start time filter (RFC3339 format) | | `end` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | End time filter (RFC3339 format) | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/listtenanteventsrequest.md b/sdks/outpost-python/docs/models/listtenanteventsrequest.md index 851fe44a0..70ce43875 100644 --- a/sdks/outpost-python/docs/models/listtenanteventsrequest.md +++ b/sdks/outpost-python/docs/models/listtenanteventsrequest.md @@ -8,8 +8,8 @@ | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `destination_id` | [Optional[models.DestinationID]](../models/destinationid.md) | :heavy_minus_sign: | Filter events by destination ID(s). | | `status` | [Optional[models.ListTenantEventsStatus]](../models/listtenanteventsstatus.md) | :heavy_minus_sign: | Filter events by delivery status. | -| `next` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | -| `prev` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | +| `next_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | +| `prev_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of items per page (default 100, max 1000) | | `start` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Start time filter (RFC3339 format) | | `end` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | End time filter (RFC3339 format) | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/listtenantsrequest.md b/sdks/outpost-python/docs/models/listtenantsrequest.md new file mode 100644 index 000000000..02636c548 --- /dev/null +++ b/sdks/outpost-python/docs/models/listtenantsrequest.md @@ -0,0 +1,11 @@ +# ListTenantsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of tenants to return per page (1-100, default 20). | +| `order` | [Optional[models.Order]](../models/order.md) | :heavy_minus_sign: | Sort order by `created_at` timestamp. | +| `next_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for the next page of results. Mutually exclusive with `prev`. | +| `prev_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for the previous page of results. Mutually exclusive with `next`. | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/order.md b/sdks/outpost-python/docs/models/order.md new file mode 100644 index 000000000..642ff3642 --- /dev/null +++ b/sdks/outpost-python/docs/models/order.md @@ -0,0 +1,11 @@ +# Order + +Sort order by `created_at` timestamp. + + +## Values + +| Name | Value | +| ------ | ------ | +| `ASC` | asc | +| `DESC` | desc | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/portalredirect.md b/sdks/outpost-python/docs/models/portalredirect.md index 111c5cf9d..12bee4660 100644 --- a/sdks/outpost-python/docs/models/portalredirect.md +++ b/sdks/outpost-python/docs/models/portalredirect.md @@ -5,4 +5,5 @@ | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `redirect_url` | *Optional[str]* | :heavy_minus_sign: | Redirect URL containing a JWT to authenticate the user with the portal. | https://webhooks.acme.com/?token=JWT_TOKEN | \ No newline at end of file +| `redirect_url` | *Optional[str]* | :heavy_minus_sign: | Redirect URL containing a JWT to authenticate the user with the portal. | https://webhooks.acme.com/?token=JWT_TOKEN&tenant_id=tenant_123 | +| `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant associated with this portal session. | tenant_123 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/publishresponse.md b/sdks/outpost-python/docs/models/publishresponse.md index d33d3858e..550350ada 100644 --- a/sdks/outpost-python/docs/models/publishresponse.md +++ b/sdks/outpost-python/docs/models/publishresponse.md @@ -5,4 +5,5 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `id` | *str* | :heavy_check_mark: | The ID of the event that was accepted for publishing. This will be the ID provided in the request's `id` field if present, otherwise it's a server-generated UUID. | evt_abc123xyz789 | \ No newline at end of file +| `id` | *str* | :heavy_check_mark: | The ID of the event that was accepted for publishing. This will be the ID provided in the request's `id` field if present, otherwise it's a server-generated UUID. | evt_abc123xyz789 | +| `duplicate` | *bool* | :heavy_check_mark: | Whether this event was already processed (idempotency hit). If true, the event was not queued again. | false | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/tenant.md b/sdks/outpost-python/docs/models/tenant.md index c763e7a0d..25ef14e9b 100644 --- a/sdks/outpost-python/docs/models/tenant.md +++ b/sdks/outpost-python/docs/models/tenant.md @@ -3,9 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | User-defined system ID for the tenant. | 123 | -| `destinations_count` | *Optional[int]* | :heavy_minus_sign: | Number of destinations associated with the tenant. | 5 | -| `topics` | List[*str*] | :heavy_minus_sign: | List of subscribed topics across all destinations for this tenant. | [
"user.created",
"user.deleted"
] | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the tenant was created. | 2024-01-01T00:00:00Z | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | User-defined system ID for the tenant. | 123 | +| `destinations_count` | *Optional[int]* | :heavy_minus_sign: | Number of destinations associated with the tenant. | 5 | +| `topics` | List[*str*] | :heavy_minus_sign: | List of subscribed topics across all destinations for this tenant. | [
"user.created",
"user.deleted"
] | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary key-value pairs for storing contextual information about the tenant. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the tenant was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the tenant was last updated. | 2024-01-01T00:00:00Z | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/tenantlistitem.md b/sdks/outpost-python/docs/models/tenantlistitem.md new file mode 100644 index 000000000..beb2ea3c8 --- /dev/null +++ b/sdks/outpost-python/docs/models/tenantlistitem.md @@ -0,0 +1,15 @@ +# TenantListItem + +Tenant object returned in list operations. + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | User-defined system ID for the tenant. | 123 | +| `destinations_count` | *Optional[int]* | :heavy_minus_sign: | Number of destinations associated with the tenant. | 5 | +| `topics` | List[*str*] | :heavy_minus_sign: | List of subscribed topics across all destinations for this tenant. | [
"user.created",
"user.deleted"
] | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Arbitrary key-value pairs for storing contextual information about the tenant. | | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the tenant was created. | 2024-01-01T00:00:00Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | ISO Date when the tenant was last updated. | 2024-01-01T00:00:00Z | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/tenantlistresponse.md b/sdks/outpost-python/docs/models/tenantlistresponse.md new file mode 100644 index 000000000..0ac3c0929 --- /dev/null +++ b/sdks/outpost-python/docs/models/tenantlistresponse.md @@ -0,0 +1,13 @@ +# TenantListResponse + +Paginated list of tenants. + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `data` | List[[models.TenantListItem](../models/tenantlistitem.md)] | :heavy_minus_sign: | Array of tenant objects. | | +| `next` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor for the next page of results. Null if no more results. | MTcwNDA2NzIwMA== | +| `prev` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor for the previous page of results. Null if on first page. | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Total count of all tenants. | 42 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/tenanttoken.md b/sdks/outpost-python/docs/models/tenanttoken.md index bcb449f85..94a944ae3 100644 --- a/sdks/outpost-python/docs/models/tenanttoken.md +++ b/sdks/outpost-python/docs/models/tenanttoken.md @@ -5,4 +5,5 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `token` | *Optional[str]* | :heavy_minus_sign: | JWT token scoped to the tenant for safe browser API calls. | SOME_JWT_TOKEN | \ No newline at end of file +| `token` | *Optional[str]* | :heavy_minus_sign: | JWT token scoped to the tenant for safe browser API calls. | SOME_JWT_TOKEN | +| `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant this token is scoped to. | tenant_123 | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/tenantupsert.md b/sdks/outpost-python/docs/models/tenantupsert.md new file mode 100644 index 000000000..536a1d9e8 --- /dev/null +++ b/sdks/outpost-python/docs/models/tenantupsert.md @@ -0,0 +1,8 @@ +# TenantUpsert + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `metadata` | Dict[str, *str*] | :heavy_minus_sign: | Optional metadata to store with the tenant. | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/type.md b/sdks/outpost-python/docs/models/type.md deleted file mode 100644 index 1be389385..000000000 --- a/sdks/outpost-python/docs/models/type.md +++ /dev/null @@ -1,19 +0,0 @@ -# Type - -Filter destinations by type(s). - - -## Supported Types - -### `models.ListTenantDestinationsTypeEnum1` - -```python -value: models.ListTenantDestinationsTypeEnum1 = /* values here */ -``` - -### `List[models.ListTenantDestinationsTypeEnum2]` - -```python -value: List[models.ListTenantDestinationsTypeEnum2] = /* values here */ -``` - diff --git a/sdks/outpost-python/docs/models/updatetenantdestinationrequest.md b/sdks/outpost-python/docs/models/updatetenantdestinationrequest.md index aec46c990..e9581e312 100644 --- a/sdks/outpost-python/docs/models/updatetenantdestinationrequest.md +++ b/sdks/outpost-python/docs/models/updatetenantdestinationrequest.md @@ -7,4 +7,4 @@ | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `destination_id` | *str* | :heavy_check_mark: | The ID of the destination. | -| `destination_update` | [models.DestinationUpdate](../models/destinationupdate.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| `params` | [models.DestinationUpdate](../models/destinationupdate.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/upserttenantrequest.md b/sdks/outpost-python/docs/models/upserttenantrequest.md index 29d74a8c3..1bc55be44 100644 --- a/sdks/outpost-python/docs/models/upserttenantrequest.md +++ b/sdks/outpost-python/docs/models/upserttenantrequest.md @@ -5,4 +5,5 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | \ No newline at end of file +| `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | +| `params` | [Optional[models.TenantUpsert]](../models/tenantupsert.md) | :heavy_minus_sign: | Optional tenant metadata | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/webhookconfig.md b/sdks/outpost-python/docs/models/webhookconfig.md index f2eaa67fa..f2af882b0 100644 --- a/sdks/outpost-python/docs/models/webhookconfig.md +++ b/sdks/outpost-python/docs/models/webhookconfig.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | -| `url` | *str* | :heavy_check_mark: | The URL to send the webhook events to. | https://example.com/webhooks/user | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `url` | *str* | :heavy_check_mark: | The URL to send the webhook events to. | https://example.com/webhooks/user | +| `custom_headers` | *Optional[str]* | :heavy_minus_sign: | JSON string of custom HTTP headers to include with every webhook request. Header names must be valid HTTP header tokens (alphanumeric, hyphens, underscores). Reserved headers (Content-Type, Host, etc.) cannot be overridden. | {"x-api-key":"secret123","x-tenant-id":"customer-456"} | \ No newline at end of file diff --git a/sdks/outpost-python/docs/models/workers.md b/sdks/outpost-python/docs/models/workers.md new file mode 100644 index 000000000..365720887 --- /dev/null +++ b/sdks/outpost-python/docs/models/workers.md @@ -0,0 +1,8 @@ +# Workers + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `status` | [models.HealthCheckStatus2](../models/healthcheckstatus2.md) | :heavy_check_mark: | N/A | healthy | \ No newline at end of file diff --git a/sdks/outpost-python/docs/sdks/destinations/README.md b/sdks/outpost-python/docs/sdks/destinations/README.md index 18303ac10..b3c5e98f2 100644 --- a/sdks/outpost-python/docs/sdks/destinations/README.md +++ b/sdks/outpost-python/docs/sdks/destinations/README.md @@ -1,5 +1,4 @@ # Destinations -(*destinations*) ## Overview @@ -44,7 +43,7 @@ Return a list of the destinations for the tenant. The endpoint is not paged. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -56,7 +55,7 @@ with Outpost( ), ) as outpost: - res = outpost.destinations.list() + res = outpost.destinations.list(type_=models.DestinationType.WEBHOOK) # Handle response print(res) @@ -68,7 +67,7 @@ with Outpost( | Parameter | Type | Required | Description | | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | -| `type` | [Optional[models.Type]](../../models/type.md) | :heavy_minus_sign: | Filter destinations by type(s). | +| `type` | [Optional[models.ListTenantDestinationsType]](../../models/listtenantdestinationstype.md) | :heavy_minus_sign: | Filter destinations by type(s). | | `topics` | [Optional[models.ListTenantDestinationsTopics]](../../models/listtenantdestinationstopics.md) | :heavy_minus_sign: | Filter destinations by supported topic(s). | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | @@ -78,18 +77,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## create @@ -97,7 +87,7 @@ Creates a new destination for the tenant. The request body structure depends on ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -109,7 +99,7 @@ with Outpost( ), ) as outpost: - res = outpost.destinations.create(destination_create={ + res = outpost.destinations.create(params={ "id": "user-provided-id", "type": models.DestinationCreateRabbitMQType.RABBITMQ, "topics": models.TopicsEnum.WILDCARD_, @@ -133,7 +123,7 @@ with Outpost( | Parameter | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `destination_create` | [models.DestinationCreate](../../models/destinationcreate.md) | :heavy_check_mark: | N/A | +| `params` | [models.DestinationCreate](../../models/destinationcreate.md) | :heavy_check_mark: | N/A | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | @@ -143,18 +133,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get @@ -162,7 +143,7 @@ Retrieves details for a specific destination. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -195,18 +176,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## update @@ -214,7 +186,7 @@ Updates the configuration of an existing destination. The request body structure ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -226,7 +198,7 @@ with Outpost( ), ) as outpost: - res = outpost.destinations.update(destination_id="", destination_update={ + res = outpost.destinations.update(destination_id="", params={ "topics": models.TopicsEnum.WILDCARD_, "config": { "server_url": "localhost:5672", @@ -249,7 +221,7 @@ with Outpost( | Parameter | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | | `destination_id` | *str* | :heavy_check_mark: | The ID of the destination. | -| `destination_update` | [models.DestinationUpdate](../../models/destinationupdate.md) | :heavy_check_mark: | N/A | +| `params` | [models.DestinationUpdate](../../models/destinationupdate.md) | :heavy_check_mark: | N/A | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | @@ -259,18 +231,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## delete @@ -278,7 +241,7 @@ Deletes a specific destination. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -311,18 +274,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## enable @@ -330,7 +284,7 @@ Enables a previously disabled destination. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -363,18 +317,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## disable @@ -382,7 +327,7 @@ Disables a previously enabled destination. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -415,15 +360,6 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/sdks/outpost-python/docs/sdks/events/README.md b/sdks/outpost-python/docs/sdks/events/README.md index c57f39bd4..8417c6810 100644 --- a/sdks/outpost-python/docs/sdks/events/README.md +++ b/sdks/outpost-python/docs/sdks/events/README.md @@ -1,5 +1,4 @@ # Events -(*events*) ## Overview @@ -20,7 +19,7 @@ Retrieves a list of events for the tenant, supporting cursor navigation (details ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -48,8 +47,8 @@ with Outpost( | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `destination_id` | [Optional[models.DestinationID]](../../models/destinationid.md) | :heavy_minus_sign: | Filter events by destination ID(s). | | `status` | [Optional[models.ListTenantEventsStatus]](../../models/listtenanteventsstatus.md) | :heavy_minus_sign: | Filter events by delivery status. | -| `next` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | -| `prev` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | +| `next_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | +| `prev_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of items per page (default 100, max 1000) | | `start` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Start time filter (RFC3339 format) | | `end` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | End time filter (RFC3339 format) | @@ -61,18 +60,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get @@ -80,7 +70,7 @@ Retrieves details for a specific event. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -113,18 +103,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## list_deliveries @@ -132,7 +113,7 @@ Retrieves a list of delivery attempts for a specific event, including response d ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -165,18 +146,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## list_by_destination @@ -184,7 +156,7 @@ Retrieves events associated with a specific destination for the tenant. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -212,8 +184,8 @@ with Outpost( | `destination_id` | *str* | :heavy_check_mark: | The ID of the destination. | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | | `status` | [Optional[models.ListTenantEventsByDestinationStatus]](../../models/listtenanteventsbydestinationstatus.md) | :heavy_minus_sign: | Filter events by delivery status. | -| `next` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | -| `prev` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | +| `next_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for next page of results | +| `prev_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for previous page of results | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of items per page (default 100, max 1000) | | `start` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Start time filter (RFC3339 format) | | `end` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | End time filter (RFC3339 format) | @@ -225,18 +197,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get_by_destination @@ -244,7 +207,7 @@ Retrieves a specific event associated with a specific destination for the tenant ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -278,18 +241,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## retry @@ -297,7 +251,7 @@ Triggers a retry for a failed event delivery. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -326,15 +280,6 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/sdks/outpost-python/docs/sdks/health/README.md b/sdks/outpost-python/docs/sdks/health/README.md index 44db32f15..450073a93 100644 --- a/sdks/outpost-python/docs/sdks/health/README.md +++ b/sdks/outpost-python/docs/sdks/health/README.md @@ -1,5 +1,4 @@ # Health -(*health*) ## Overview @@ -11,7 +10,20 @@ API Health Check ## check -Simple health check endpoint. +Health check endpoint that reports the status of all workers. + +Returns HTTP 200 when all workers are healthy, or HTTP 503 if any worker has failed. + +The response includes: +- `status`: Overall health status ("healthy" or "failed") +- `timestamp`: When this health check was performed (ISO 8601 format) +- `workers`: Map of worker names to their individual health status + +Each worker reports: +- `status`: Worker health ("healthy" or "failed") + +Note: Error details are not exposed for security reasons. Check application logs for detailed error information. + ### Example Usage @@ -37,7 +49,7 @@ with Outpost() as outpost: ### Response -**[str](../../models/.md)** +**[models.HealthCheckResponse](../../models/healthcheckresponse.md)** ### Errors diff --git a/sdks/outpost-python/docs/sdks/outpost/README.md b/sdks/outpost-python/docs/sdks/outpost/README.md deleted file mode 100644 index cc9ab457d..000000000 --- a/sdks/outpost-python/docs/sdks/outpost/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Outpost SDK - -## Overview - -Outpost API: The Outpost API is a REST-based JSON API for managing tenants, destinations, and publishing events. - -### Available Operations diff --git a/sdks/outpost-python/docs/sdks/publish/README.md b/sdks/outpost-python/docs/sdks/publish/README.md index 19a9e9ef7..3fb70cb90 100644 --- a/sdks/outpost-python/docs/sdks/publish/README.md +++ b/sdks/outpost-python/docs/sdks/publish/README.md @@ -1,5 +1,4 @@ # Publish -(*publish*) ## Overview diff --git a/sdks/outpost-python/docs/sdks/schemas/README.md b/sdks/outpost-python/docs/sdks/schemas/README.md index 807e920d7..70a014900 100644 --- a/sdks/outpost-python/docs/sdks/schemas/README.md +++ b/sdks/outpost-python/docs/sdks/schemas/README.md @@ -1,5 +1,4 @@ # Schemas -(*schemas*) ## Overview @@ -18,7 +17,7 @@ Returns a list of JSON-based input schemas for each available destination type. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -50,18 +49,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get @@ -69,7 +59,7 @@ Returns the input schema for a specific destination type. Requires Admin API Key ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -102,18 +92,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## list_destination_types_jwt diff --git a/sdks/outpost-python/docs/sdks/tenants/README.md b/sdks/outpost-python/docs/sdks/tenants/README.md index 9406f5464..421496ba7 100644 --- a/sdks/outpost-python/docs/sdks/tenants/README.md +++ b/sdks/outpost-python/docs/sdks/tenants/README.md @@ -1,5 +1,4 @@ # Tenants -(*tenants*) ## Overview @@ -10,19 +9,73 @@ If your system is not multi-tenant, create a single tenant with a hard-code tena ### Available Operations +* [list_tenants](#list_tenants) - List Tenants * [upsert](#upsert) - Create or Update Tenant * [get](#get) - Get Tenant * [delete](#delete) - Delete Tenant * [get_portal_url](#get_portal_url) - Get Portal Redirect URL * [get_token](#get_token) - Get Tenant JWT Token +## list_tenants + +List all tenants with cursor-based pagination. + +**Requirements:** This endpoint requires Redis with RediSearch module (e.g., `redis/redis-stack-server`). +If RediSearch is not available, this endpoint returns `501 Not Implemented`. + +The response includes lightweight tenant objects without computed fields like `destinations_count` and `topics`. +Use `GET /tenants/{tenant_id}` to retrieve full tenant details including these fields. + + +### Example Usage + + +```python +from outpost_sdk import Outpost, models + + +with Outpost( + security=models.Security( + admin_api_key="", + ), +) as outpost: + + res = outpost.tenants.list_tenants(limit=20, order=models.Order.DESC) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of tenants to return per page (1-100, default 20). | +| `order` | [Optional[models.Order]](../../models/order.md) | :heavy_minus_sign: | Sort order by `created_at` timestamp. | +| `next_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for the next page of results. Mutually exclusive with `prev`. | +| `prev_cursor` | *Optional[str]* | :heavy_minus_sign: | Cursor for the previous page of results. Mutually exclusive with `next`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.TenantListResponse](../../models/tenantlistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ListTenantsBadRequestError | 400 | application/json | +| errors.NotImplementedErrorT | 501 | application/json | +| errors.APIError | 4XX, 5XX | \*/\* | + ## upsert Idempotently creates or updates a tenant. Required before associating destinations. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -46,6 +99,7 @@ with Outpost( | Parameter | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | | `tenant_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the tenant. Required when using AdminApiKey authentication. | +| `params` | [Optional[models.TenantUpsert]](../../models/tenantupsert.md) | :heavy_minus_sign: | Optional tenant metadata | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -54,19 +108,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.NotFoundError | 404 | application/json | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get @@ -74,7 +118,7 @@ Retrieves details for a specific tenant. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -106,18 +150,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## delete @@ -125,7 +160,7 @@ Deletes the tenant and all associated destinations. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -157,18 +192,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get_portal_url @@ -176,7 +202,7 @@ Returns a redirect URL containing a JWT to authenticate the user with the portal ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -209,18 +235,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## get_token @@ -228,7 +245,7 @@ Returns a JWT token scoped to the tenant for safe browser API calls. ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -260,15 +277,6 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/sdks/outpost-python/docs/sdks/topicssdk/README.md b/sdks/outpost-python/docs/sdks/topicssdk/README.md index a29e30246..d603783d0 100644 --- a/sdks/outpost-python/docs/sdks/topicssdk/README.md +++ b/sdks/outpost-python/docs/sdks/topicssdk/README.md @@ -1,5 +1,4 @@ -# TopicsSDK -(*topics*) +# Topics ## Overview @@ -16,7 +15,7 @@ Returns a list of available event topics configured in the Outpost instance. Req ### Example Usage - + ```python from outpost_sdk import Outpost, models @@ -48,18 +47,9 @@ with Outpost( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.UnauthorizedError | 401, 403, 407 | application/json | -| errors.TimeoutErrorT | 408 | application/json | -| errors.RateLimitedError | 429 | application/json | -| errors.BadRequestError | 400, 413, 414, 415, 422, 431 | application/json | -| errors.TimeoutErrorT | 504 | application/json | -| errors.NotFoundError | 501, 505 | application/json | -| errors.InternalServerError | 500, 502, 503, 506, 507, 508 | application/json | -| errors.BadRequestError | 510 | application/json | -| errors.UnauthorizedError | 511 | application/json | -| errors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.APIError | 4XX, 5XX | \*/\* | ## list_jwt diff --git a/sdks/outpost-python/poetry.lock b/sdks/outpost-python/poetry.lock index 39128a8bd..9df5e53b2 100644 --- a/sdks/outpost-python/poetry.lock +++ b/sdks/outpost-python/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -196,6 +196,21 @@ files = [ [package.extras] colors = ["colorama (>=0.4.6)"] +[[package]] +name = "jsonpath-python" +version = "1.1.4" +description = "A lightweight and powerful JSONPath implementation for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "jsonpath_python-1.1.4-py3-none-any.whl", hash = "sha256:8700cb8610c44da6e5e9bff50232779c44bf7dc5bc62662d49319ee746898442"}, + {file = "jsonpath_python-1.1.4.tar.gz", hash = "sha256:bb3e13854e4807c078a1503ae2d87c211b8bff4d9b40b6455ed583b3b50a7fdd"}, +] + +[package.extras] +dev = ["poethepoet", "pytest (>=8.0)", "pytest-benchmark[histogram] (>=4.0)", "pytest-cov (>=5.0)", "ruff (>=0.3)"] + [[package]] name = "mccabe" version = "0.7.0" @@ -274,6 +289,18 @@ files = [ {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, ] +[[package]] +name = "nodeenv" +version = "1.10.0" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +files = [ + {file = "nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827"}, + {file = "nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb"}, +] + [[package]] name = "platformdirs" version = "4.3.7" @@ -456,6 +483,27 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] +[[package]] +name = "pyright" +version = "1.1.398" +description = "Command line wrapper for pyright" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "pyright-1.1.398-py3-none-any.whl", hash = "sha256:0a70bfd007d9ea7de1cf9740e1ad1a40a122592cfe22a3f6791b06162ad08753"}, + {file = "pyright-1.1.398.tar.gz", hash = "sha256:357a13edd9be8082dc73be51190913e475fa41a6efb6ec0d4b7aab3bc11638d8"}, +] + +[package.dependencies] +nodeenv = ">=1.6.0" +typing-extensions = ">=4.1" + +[package.extras] +all = ["nodejs-wheel-binaries", "twine (>=3.4.1)"] +dev = ["twine (>=3.4.1)"] +nodejs = ["nodejs-wheel-binaries"] + [[package]] name = "sniffio" version = "1.3.1" @@ -553,4 +601,4 @@ typing-extensions = ">=4.12.0" [metadata] lock-version = "2.1" python-versions = ">=3.9.2" -content-hash = "fd5d2a9148a00cbc5258586b48c24f763e191bdc12367f4e92abdbfc15e30679" +content-hash = "544eca21b1a9b8dee23add5a72a9abaa34df5be8b6d26897a52387db452a02fd" diff --git a/sdks/outpost-python/pyproject.toml b/sdks/outpost-python/pyproject.toml index fa9ca3ff6..255213f6b 100644 --- a/sdks/outpost-python/pyproject.toml +++ b/sdks/outpost-python/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "outpost_sdk" -version = "0.4.0" +version = "0.5.0" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" @@ -29,6 +29,7 @@ in-project = true [tool.poetry.group.dev.dependencies] mypy = "==1.15.0" pylint = "==3.2.3" +pyright = "==1.1.398" [build-system] requires = ["poetry-core"] @@ -36,7 +37,6 @@ build-backend = "poetry.core.masonry.api" [tool.pytest.ini_options] asyncio_default_fixture_loop_scope = "function" -asyncio_mode = "auto" pythonpath = ["src"] [tool.mypy] diff --git a/sdks/outpost-python/src/outpost_sdk/_version.py b/sdks/outpost-python/src/outpost_sdk/_version.py index 846f7c93d..97d0f6a1c 100644 --- a/sdks/outpost-python/src/outpost_sdk/_version.py +++ b/sdks/outpost-python/src/outpost_sdk/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "outpost_sdk" -__version__: str = "0.4.0" +__version__: str = "0.5.0" __openapi_doc_version__: str = "0.0.1" -__gen_version__: str = "2.692.0" -__user_agent__: str = "speakeasy-sdk/python 0.4.0 2.692.0 0.0.1 outpost_sdk" +__gen_version__: str = "2.796.1" +__user_agent__: str = "speakeasy-sdk/python 0.5.0 2.796.1 0.0.1 outpost_sdk" try: if __package__ is not None: diff --git a/sdks/outpost-python/src/outpost_sdk/basesdk.py b/sdks/outpost-python/src/outpost_sdk/basesdk.py index d4ba700b6..31ce35a30 100644 --- a/sdks/outpost-python/src/outpost_sdk/basesdk.py +++ b/sdks/outpost-python/src/outpost_sdk/basesdk.py @@ -8,7 +8,12 @@ AfterSuccessContext, BeforeRequestContext, ) -from outpost_sdk.utils import RetryConfig, SerializedRequestBody, get_body_content +from outpost_sdk.utils import ( + RetryConfig, + SerializedRequestBody, + get_body_content, + run_sync_in_thread, +) from typing import Callable, List, Mapping, Optional, Tuple from urllib.parse import parse_qs, urlparse @@ -60,6 +65,7 @@ def _build_request_async( ] = None, url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, + allow_empty_value: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.async_client return self._build_request_with_client( @@ -80,6 +86,7 @@ def _build_request_async( get_serialized_body, url_override, http_headers, + allow_empty_value, ) def _build_request( @@ -102,6 +109,7 @@ def _build_request( ] = None, url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, + allow_empty_value: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.client return self._build_request_with_client( @@ -122,6 +130,7 @@ def _build_request( get_serialized_body, url_override, http_headers, + allow_empty_value, ) def _build_request_with_client( @@ -145,6 +154,7 @@ def _build_request_with_client( ] = None, url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, + allow_empty_value: Optional[List[str]] = None, ) -> httpx.Request: query_params = {} @@ -160,6 +170,7 @@ def _build_request_with_client( query_params = utils.get_query_params( request if request_has_query_params else None, _globals if request_has_query_params else None, + allow_empty_value, ) else: # Pick up the query parameter from the override so they can be @@ -305,7 +316,10 @@ async def do_request_async( async def do(): http_res = None try: - req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + req = await run_sync_in_thread( + hooks.before_request, BeforeRequestContext(hook_ctx), request + ) + logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -319,7 +333,10 @@ async def do(): http_res = await client.send(req, stream=stream) except Exception as e: - _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e) + _, e = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), None, e + ) + if e is not None: logger.debug("Request Exception", exc_info=True) raise e @@ -337,9 +354,10 @@ async def do(): ) if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None + result, err = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), http_res, None ) + if err is not None: logger.debug("Request Exception", exc_info=True) raise err @@ -359,6 +377,8 @@ async def do(): http_res = await do() if not utils.match_status_codes(error_status_codes, http_res.status_code): - http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) + http_res = await run_sync_in_thread( + hooks.after_success, AfterSuccessContext(hook_ctx), http_res + ) return http_res diff --git a/sdks/outpost-python/src/outpost_sdk/destinations.py b/sdks/outpost-python/src/outpost_sdk/destinations.py index b89c7c893..f4a57308d 100644 --- a/sdks/outpost-python/src/outpost_sdk/destinations.py +++ b/sdks/outpost-python/src/outpost_sdk/destinations.py @@ -5,7 +5,7 @@ from outpost_sdk._hooks import HookContext from outpost_sdk.types import OptionalNullable, UNSET from outpost_sdk.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union +from typing import List, Mapping, Optional, Union class Destinations(BaseSDK): @@ -39,7 +39,12 @@ def list( self, *, tenant_id: Optional[str] = None, - type_: Optional[Union[models.Type, models.TypeTypedDict]] = None, + type_: Optional[ + Union[ + models.ListTenantDestinationsType, + models.ListTenantDestinationsTypeTypedDict, + ] + ] = None, topics: Optional[ Union[ models.ListTenantDestinationsTopics, @@ -81,7 +86,7 @@ def list( req = self._build_request( method="GET", - path="/{tenant_id}/destinations", + path="/tenants/{tenant_id}/destinations", base_url=base_url, url_variables=url_variables, request=request, @@ -95,6 +100,7 @@ def list( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -111,86 +117,16 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantDestinations", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[models.Destination], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -204,7 +140,12 @@ async def list_async( self, *, tenant_id: Optional[str] = None, - type_: Optional[Union[models.Type, models.TypeTypedDict]] = None, + type_: Optional[ + Union[ + models.ListTenantDestinationsType, + models.ListTenantDestinationsTypeTypedDict, + ] + ] = None, topics: Optional[ Union[ models.ListTenantDestinationsTopics, @@ -246,7 +187,7 @@ async def list_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/destinations", + path="/tenants/{tenant_id}/destinations", base_url=base_url, url_variables=url_variables, request=request, @@ -260,6 +201,7 @@ async def list_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -276,86 +218,16 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantDestinations", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[models.Destination], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -368,9 +240,7 @@ async def list_async( def create( self, *, - destination_create: Union[ - models.DestinationCreate, models.DestinationCreateTypedDict - ], + params: Union[models.DestinationCreate, models.DestinationCreateTypedDict], tenant_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -381,7 +251,7 @@ def create( Creates a new destination for the tenant. The request body structure depends on the `type`. - :param destination_create: + :param params: :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -400,14 +270,12 @@ def create( request = models.CreateTenantDestinationRequest( tenant_id=tenant_id, - destination_create=utils.get_pydantic_model( - destination_create, models.DestinationCreate - ), + params=utils.get_pydantic_model(params, models.DestinationCreate), ) req = self._build_request( method="POST", - path="/{tenant_id}/destinations", + path="/tenants/{tenant_id}/destinations", base_url=base_url, url_variables=url_variables, request=request, @@ -422,12 +290,9 @@ def create( ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.destination_create, - False, - False, - "json", - models.DestinationCreate, + request.params, False, False, "json", models.DestinationCreate ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -444,86 +309,16 @@ def create( config=self.sdk_configuration, base_url=base_url or "", operation_id="createTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -536,9 +331,7 @@ def create( async def create_async( self, *, - destination_create: Union[ - models.DestinationCreate, models.DestinationCreateTypedDict - ], + params: Union[models.DestinationCreate, models.DestinationCreateTypedDict], tenant_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -549,7 +342,7 @@ async def create_async( Creates a new destination for the tenant. The request body structure depends on the `type`. - :param destination_create: + :param params: :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -568,14 +361,12 @@ async def create_async( request = models.CreateTenantDestinationRequest( tenant_id=tenant_id, - destination_create=utils.get_pydantic_model( - destination_create, models.DestinationCreate - ), + params=utils.get_pydantic_model(params, models.DestinationCreate), ) req = self._build_request_async( method="POST", - path="/{tenant_id}/destinations", + path="/tenants/{tenant_id}/destinations", base_url=base_url, url_variables=url_variables, request=request, @@ -590,12 +381,9 @@ async def create_async( ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.destination_create, - False, - False, - "json", - models.DestinationCreate, + request.params, False, False, "json", models.DestinationCreate ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -612,86 +400,16 @@ async def create_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="createTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -739,7 +457,7 @@ def get( req = self._build_request( method="GET", - path="/{tenant_id}/destinations/{destination_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -753,6 +471,7 @@ def get( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -769,86 +488,16 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -896,7 +545,7 @@ async def get_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/destinations/{destination_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -910,6 +559,7 @@ async def get_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -926,86 +576,16 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1019,9 +599,7 @@ def update( self, *, destination_id: str, - destination_update: Union[ - models.DestinationUpdate, models.DestinationUpdateTypedDict - ], + params: Union[models.DestinationUpdate, models.DestinationUpdateTypedDict], tenant_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1033,7 +611,7 @@ def update( Updates the configuration of an existing destination. The request body structure depends on the destination's `type`. Type itself cannot be updated. May return an OAuth redirect URL for certain types. :param destination_id: The ID of the destination. - :param destination_update: + :param params: :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1053,14 +631,12 @@ def update( request = models.UpdateTenantDestinationRequest( tenant_id=tenant_id, destination_id=destination_id, - destination_update=utils.get_pydantic_model( - destination_update, models.DestinationUpdate - ), + params=utils.get_pydantic_model(params, models.DestinationUpdate), ) req = self._build_request( method="PATCH", - path="/{tenant_id}/destinations/{destination_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -1075,12 +651,9 @@ def update( ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.destination_update, - False, - False, - "json", - models.DestinationUpdate, + request.params, False, False, "json", models.DestinationUpdate ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1097,88 +670,18 @@ def update( config=self.sdk_configuration, base_url=base_url or "", operation_id="updateTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response( models.UpdateTenantDestinationResponse, http_res ) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1192,9 +695,7 @@ async def update_async( self, *, destination_id: str, - destination_update: Union[ - models.DestinationUpdate, models.DestinationUpdateTypedDict - ], + params: Union[models.DestinationUpdate, models.DestinationUpdateTypedDict], tenant_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1206,7 +707,7 @@ async def update_async( Updates the configuration of an existing destination. The request body structure depends on the destination's `type`. Type itself cannot be updated. May return an OAuth redirect URL for certain types. :param destination_id: The ID of the destination. - :param destination_update: + :param params: :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1226,14 +727,12 @@ async def update_async( request = models.UpdateTenantDestinationRequest( tenant_id=tenant_id, destination_id=destination_id, - destination_update=utils.get_pydantic_model( - destination_update, models.DestinationUpdate - ), + params=utils.get_pydantic_model(params, models.DestinationUpdate), ) req = self._build_request_async( method="PATCH", - path="/{tenant_id}/destinations/{destination_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -1248,12 +747,9 @@ async def update_async( ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.destination_update, - False, - False, - "json", - models.DestinationUpdate, + request.params, False, False, "json", models.DestinationUpdate ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1270,88 +766,18 @@ async def update_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="updateTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response( models.UpdateTenantDestinationResponse, http_res ) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1399,7 +825,7 @@ def delete( req = self._build_request( method="DELETE", - path="/{tenant_id}/destinations/{destination_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -1413,6 +839,7 @@ def delete( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1429,86 +856,16 @@ def delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="deleteTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.SuccessResponse, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1556,7 +913,7 @@ async def delete_async( req = self._build_request_async( method="DELETE", - path="/{tenant_id}/destinations/{destination_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -1570,6 +927,7 @@ async def delete_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1586,86 +944,16 @@ async def delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="deleteTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.SuccessResponse, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1713,7 +1001,7 @@ def enable( req = self._build_request( method="PUT", - path="/{tenant_id}/destinations/{destination_id}/enable", + path="/tenants/{tenant_id}/destinations/{destination_id}/enable", base_url=base_url, url_variables=url_variables, request=request, @@ -1727,6 +1015,7 @@ def enable( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1743,86 +1032,16 @@ def enable( config=self.sdk_configuration, base_url=base_url or "", operation_id="enableTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1870,7 +1089,7 @@ async def enable_async( req = self._build_request_async( method="PUT", - path="/{tenant_id}/destinations/{destination_id}/enable", + path="/tenants/{tenant_id}/destinations/{destination_id}/enable", base_url=base_url, url_variables=url_variables, request=request, @@ -1884,6 +1103,7 @@ async def enable_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1900,86 +1120,16 @@ async def enable_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="enableTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -2027,7 +1177,7 @@ def disable( req = self._build_request( method="PUT", - path="/{tenant_id}/destinations/{destination_id}/disable", + path="/tenants/{tenant_id}/destinations/{destination_id}/disable", base_url=base_url, url_variables=url_variables, request=request, @@ -2041,6 +1191,7 @@ def disable( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2057,86 +1208,16 @@ def disable( config=self.sdk_configuration, base_url=base_url or "", operation_id="disableTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -2184,7 +1265,7 @@ async def disable_async( req = self._build_request_async( method="PUT", - path="/{tenant_id}/destinations/{destination_id}/disable", + path="/tenants/{tenant_id}/destinations/{destination_id}/disable", base_url=base_url, url_variables=url_variables, request=request, @@ -2198,6 +1279,7 @@ async def disable_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2214,86 +1296,16 @@ async def disable_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="disableTenantDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Destination, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/__init__.py b/sdks/outpost-python/src/outpost_sdk/errors/__init__.py index 74936d0c6..c87d6cfe2 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/__init__.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/__init__.py @@ -10,6 +10,12 @@ from .apierror import APIError from .badrequest_error import BadRequestError, BadRequestErrorData from .internalservererror import InternalServerError, InternalServerErrorData + from .listtenantsop import ( + ListTenantsBadRequestError, + ListTenantsBadRequestErrorData, + NotImplementedErrorT, + NotImplementedErrorTData, + ) from .no_response_error import NoResponseError from .notfound_error import NotFoundError, NotFoundErrorData from .ratelimited_error import RateLimitedError, RateLimitedErrorData @@ -23,9 +29,13 @@ "BadRequestErrorData", "InternalServerError", "InternalServerErrorData", + "ListTenantsBadRequestError", + "ListTenantsBadRequestErrorData", "NoResponseError", "NotFoundError", "NotFoundErrorData", + "NotImplementedErrorT", + "NotImplementedErrorTData", "OutpostError", "RateLimitedError", "RateLimitedErrorData", @@ -42,6 +52,10 @@ "BadRequestErrorData": ".badrequest_error", "InternalServerError": ".internalservererror", "InternalServerErrorData": ".internalservererror", + "ListTenantsBadRequestError": ".listtenantsop", + "ListTenantsBadRequestErrorData": ".listtenantsop", + "NotImplementedErrorT": ".listtenantsop", + "NotImplementedErrorTData": ".listtenantsop", "NoResponseError": ".no_response_error", "NotFoundError": ".notfound_error", "NotFoundErrorData": ".notfound_error", diff --git a/sdks/outpost-python/src/outpost_sdk/errors/apierror.py b/sdks/outpost-python/src/outpost_sdk/errors/apierror.py index bec9d57b4..0bf469fa8 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/apierror.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/apierror.py @@ -2,12 +2,14 @@ import httpx from typing import Optional +from dataclasses import dataclass from outpost_sdk.errors import OutpostError MAX_MESSAGE_LEN = 10_000 +@dataclass(unsafe_hash=True) class APIError(OutpostError): """The fallback error class if no more specific error class is matched.""" diff --git a/sdks/outpost-python/src/outpost_sdk/errors/badrequest_error.py b/sdks/outpost-python/src/outpost_sdk/errors/badrequest_error.py index ec08dd7bc..ec3a2abde 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/badrequest_error.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/badrequest_error.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from dataclasses import dataclass, field import httpx from outpost_sdk.errors import OutpostError from outpost_sdk.types import BaseModel @@ -11,16 +12,16 @@ class BadRequestErrorData(BaseModel): message: Optional[str] = None - additional_properties: Annotated[ Optional[Dict[str, Any]], pydantic.Field(exclude=True) ] = None +@dataclass(unsafe_hash=True) class BadRequestError(OutpostError): r"""A collection of codes that generally means the end user got something wrong in making the request""" - data: BadRequestErrorData + data: BadRequestErrorData = field(hash=False) def __init__( self, @@ -31,4 +32,4 @@ def __init__( fallback = body or raw_response.text message = str(data.message) or fallback super().__init__(message, raw_response, body) - self.data = data + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/internalservererror.py b/sdks/outpost-python/src/outpost_sdk/errors/internalservererror.py index 80b71f413..a7edf4bd6 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/internalservererror.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/internalservererror.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from dataclasses import dataclass, field import httpx from outpost_sdk.errors import OutpostError from outpost_sdk.types import BaseModel @@ -11,16 +12,16 @@ class InternalServerErrorData(BaseModel): message: Optional[str] = None - additional_properties: Annotated[ Optional[Dict[str, Any]], pydantic.Field(exclude=True) ] = None +@dataclass(unsafe_hash=True) class InternalServerError(OutpostError): r"""A collection of status codes that generally mean the server failed in an unexpected way""" - data: InternalServerErrorData + data: InternalServerErrorData = field(hash=False) def __init__( self, @@ -31,4 +32,4 @@ def __init__( fallback = body or raw_response.text message = str(data.message) or fallback super().__init__(message, raw_response, body) - self.data = data + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/listtenantsop.py b/sdks/outpost-python/src/outpost_sdk/errors/listtenantsop.py new file mode 100644 index 000000000..d5339488b --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/errors/listtenantsop.py @@ -0,0 +1,50 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +import httpx +from outpost_sdk.errors import OutpostError +from outpost_sdk.types import BaseModel +from typing import Optional + + +class NotImplementedErrorTData(BaseModel): + error: Optional[str] = None + + +@dataclass(unsafe_hash=True) +class NotImplementedErrorT(OutpostError): + r"""List Tenants feature is not available. Requires Redis with RediSearch module.""" + + data: NotImplementedErrorTData = field(hash=False) + + def __init__( + self, + data: NotImplementedErrorTData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + message = body or raw_response.text + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) + + +class ListTenantsBadRequestErrorData(BaseModel): + error: Optional[str] = None + + +@dataclass(unsafe_hash=True) +class ListTenantsBadRequestError(OutpostError): + r"""Invalid request parameters (e.g., invalid cursor, both next and prev provided).""" + + data: ListTenantsBadRequestErrorData = field(hash=False) + + def __init__( + self, + data: ListTenantsBadRequestErrorData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + message = body or raw_response.text + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/no_response_error.py b/sdks/outpost-python/src/outpost_sdk/errors/no_response_error.py index f98beea27..1deab64bc 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/no_response_error.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/no_response_error.py @@ -1,12 +1,16 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from dataclasses import dataclass + + +@dataclass(unsafe_hash=True) class NoResponseError(Exception): """Error raised when no HTTP response is received from the server.""" message: str def __init__(self, message: str = "No response received"): - self.message = message + object.__setattr__(self, "message", message) super().__init__(message) def __str__(self): diff --git a/sdks/outpost-python/src/outpost_sdk/errors/notfound_error.py b/sdks/outpost-python/src/outpost_sdk/errors/notfound_error.py index a71eeca8b..a69adcf76 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/notfound_error.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/notfound_error.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from dataclasses import dataclass, field import httpx from outpost_sdk.errors import OutpostError from outpost_sdk.types import BaseModel @@ -11,16 +12,16 @@ class NotFoundErrorData(BaseModel): message: Optional[str] = None - additional_properties: Annotated[ Optional[Dict[str, Any]], pydantic.Field(exclude=True) ] = None +@dataclass(unsafe_hash=True) class NotFoundError(OutpostError): r"""Status codes relating to the resource/entity they are requesting not being found or endpoints/routes not existing""" - data: NotFoundErrorData + data: NotFoundErrorData = field(hash=False) def __init__( self, @@ -31,4 +32,4 @@ def __init__( fallback = body or raw_response.text message = str(data.message) or fallback super().__init__(message, raw_response, body) - self.data = data + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/outposterror.py b/sdks/outpost-python/src/outpost_sdk/errors/outposterror.py index 3c2bf8340..2fdb77ce7 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/outposterror.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/outposterror.py @@ -2,25 +2,29 @@ import httpx from typing import Optional +from dataclasses import dataclass, field +@dataclass(unsafe_hash=True) class OutpostError(Exception): """The base class for all HTTP error responses.""" message: str status_code: int body: str - headers: httpx.Headers - raw_response: httpx.Response + headers: httpx.Headers = field(hash=False) + raw_response: httpx.Response = field(hash=False) def __init__( self, message: str, raw_response: httpx.Response, body: Optional[str] = None ): - self.message = message - self.status_code = raw_response.status_code - self.body = body if body is not None else raw_response.text - self.headers = raw_response.headers - self.raw_response = raw_response + object.__setattr__(self, "message", message) + object.__setattr__(self, "status_code", raw_response.status_code) + object.__setattr__( + self, "body", body if body is not None else raw_response.text + ) + object.__setattr__(self, "headers", raw_response.headers) + object.__setattr__(self, "raw_response", raw_response) def __str__(self): return self.message diff --git a/sdks/outpost-python/src/outpost_sdk/errors/ratelimited_error.py b/sdks/outpost-python/src/outpost_sdk/errors/ratelimited_error.py index 52a3655b9..0f67ceaa0 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/ratelimited_error.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/ratelimited_error.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from dataclasses import dataclass, field import httpx from outpost_sdk.errors import OutpostError from outpost_sdk.types import BaseModel @@ -11,16 +12,16 @@ class RateLimitedErrorData(BaseModel): message: Optional[str] = None - additional_properties: Annotated[ Optional[Dict[str, Any]], pydantic.Field(exclude=True) ] = None +@dataclass(unsafe_hash=True) class RateLimitedError(OutpostError): r"""Status codes relating to the client being rate limited by the server""" - data: RateLimitedErrorData + data: RateLimitedErrorData = field(hash=False) def __init__( self, @@ -31,4 +32,4 @@ def __init__( fallback = body or raw_response.text message = str(data.message) or fallback super().__init__(message, raw_response, body) - self.data = data + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/responsevalidationerror.py b/sdks/outpost-python/src/outpost_sdk/errors/responsevalidationerror.py index 11dabe9ce..1505064ce 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/responsevalidationerror.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/responsevalidationerror.py @@ -2,10 +2,12 @@ import httpx from typing import Optional +from dataclasses import dataclass from outpost_sdk.errors import OutpostError +@dataclass(unsafe_hash=True) class ResponseValidationError(OutpostError): """Error raised when there is a type mismatch between the response data and the expected Pydantic model.""" diff --git a/sdks/outpost-python/src/outpost_sdk/errors/timeout_error.py b/sdks/outpost-python/src/outpost_sdk/errors/timeout_error.py index 030e9da02..c1db32277 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/timeout_error.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/timeout_error.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from dataclasses import dataclass, field import httpx from outpost_sdk.errors import OutpostError from outpost_sdk.types import BaseModel @@ -11,16 +12,16 @@ class TimeoutErrorTData(BaseModel): message: Optional[str] = None - additional_properties: Annotated[ Optional[Dict[str, Any]], pydantic.Field(exclude=True) ] = None +@dataclass(unsafe_hash=True) class TimeoutErrorT(OutpostError): r"""Timeouts occurred with the request""" - data: TimeoutErrorTData + data: TimeoutErrorTData = field(hash=False) def __init__( self, @@ -31,4 +32,4 @@ def __init__( fallback = body or raw_response.text message = str(data.message) or fallback super().__init__(message, raw_response, body) - self.data = data + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/errors/unauthorized_error.py b/sdks/outpost-python/src/outpost_sdk/errors/unauthorized_error.py index 7b015a25a..38b68bb65 100644 --- a/sdks/outpost-python/src/outpost_sdk/errors/unauthorized_error.py +++ b/sdks/outpost-python/src/outpost_sdk/errors/unauthorized_error.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from dataclasses import dataclass, field import httpx from outpost_sdk.errors import OutpostError from outpost_sdk.types import BaseModel @@ -11,16 +12,16 @@ class UnauthorizedErrorData(BaseModel): message: Optional[str] = None - additional_properties: Annotated[ Optional[Dict[str, Any]], pydantic.Field(exclude=True) ] = None +@dataclass(unsafe_hash=True) class UnauthorizedError(OutpostError): r"""A collection of codes that generally means the client was not authenticated correctly for the request they want to make""" - data: UnauthorizedErrorData + data: UnauthorizedErrorData = field(hash=False) def __init__( self, @@ -31,4 +32,4 @@ def __init__( fallback = body or raw_response.text message = str(data.message) or fallback super().__init__(message, raw_response, body) - self.data = data + object.__setattr__(self, "data", data) diff --git a/sdks/outpost-python/src/outpost_sdk/events.py b/sdks/outpost-python/src/outpost_sdk/events.py index 7911a4e76..57ce96b7b 100644 --- a/sdks/outpost-python/src/outpost_sdk/events.py +++ b/sdks/outpost-python/src/outpost_sdk/events.py @@ -21,8 +21,8 @@ def list( Union[models.DestinationID, models.DestinationIDTypedDict] ] = None, status: Optional[models.ListTenantEventsStatus] = None, - next: Optional[str] = None, - prev: Optional[str] = None, + next_cursor: Optional[str] = None, + prev_cursor: Optional[str] = None, limit: Optional[int] = 100, start: Optional[datetime] = None, end: Optional[datetime] = None, @@ -38,8 +38,8 @@ def list( :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param destination_id: Filter events by destination ID(s). :param status: Filter events by delivery status. - :param next: Cursor for next page of results - :param prev: Cursor for previous page of results + :param next_cursor: Cursor for next page of results + :param prev_cursor: Cursor for previous page of results :param limit: Number of items per page (default 100, max 1000) :param start: Start time filter (RFC3339 format) :param end: End time filter (RFC3339 format) @@ -62,8 +62,8 @@ def list( tenant_id=tenant_id, destination_id=destination_id, status=status, - next=next, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, @@ -71,7 +71,7 @@ def list( req = self._build_request( method="GET", - path="/{tenant_id}/events", + path="/tenants/{tenant_id}/events", base_url=base_url, url_variables=url_variables, request=request, @@ -85,6 +85,7 @@ def list( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -101,37 +102,11 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantEvents", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) @@ -156,15 +131,14 @@ def next_func() -> Optional[models.ListTenantEventsResponse]: tenant_id=tenant_id, destination_id=destination_id, status=status, - next=next_cursor, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, retries=retries, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return models.ListTenantEventsResponse( result=unmarshal_json_response( @@ -172,49 +146,6 @@ def next_func() -> Optional[models.ListTenantEventsResponse]: ), next=next_func, ) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -232,8 +163,8 @@ async def list_async( Union[models.DestinationID, models.DestinationIDTypedDict] ] = None, status: Optional[models.ListTenantEventsStatus] = None, - next: Optional[str] = None, - prev: Optional[str] = None, + next_cursor: Optional[str] = None, + prev_cursor: Optional[str] = None, limit: Optional[int] = 100, start: Optional[datetime] = None, end: Optional[datetime] = None, @@ -249,8 +180,8 @@ async def list_async( :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param destination_id: Filter events by destination ID(s). :param status: Filter events by delivery status. - :param next: Cursor for next page of results - :param prev: Cursor for previous page of results + :param next_cursor: Cursor for next page of results + :param prev_cursor: Cursor for previous page of results :param limit: Number of items per page (default 100, max 1000) :param start: Start time filter (RFC3339 format) :param end: End time filter (RFC3339 format) @@ -273,8 +204,8 @@ async def list_async( tenant_id=tenant_id, destination_id=destination_id, status=status, - next=next, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, @@ -282,7 +213,7 @@ async def list_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/events", + path="/tenants/{tenant_id}/events", base_url=base_url, url_variables=url_variables, request=request, @@ -296,6 +227,7 @@ async def list_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -312,37 +244,11 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantEvents", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) @@ -367,15 +273,14 @@ def next_func() -> Optional[models.ListTenantEventsResponse]: tenant_id=tenant_id, destination_id=destination_id, status=status, - next=next_cursor, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, retries=retries, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return models.ListTenantEventsResponse( result=unmarshal_json_response( @@ -383,49 +288,6 @@ def next_func() -> Optional[models.ListTenantEventsResponse]: ), next=next_func, ) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -473,7 +335,7 @@ def get( req = self._build_request( method="GET", - path="/{tenant_id}/events/{event_id}", + path="/tenants/{tenant_id}/events/{event_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -487,6 +349,7 @@ def get( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -503,86 +366,16 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantEvent", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Event, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -630,7 +423,7 @@ async def get_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/events/{event_id}", + path="/tenants/{tenant_id}/events/{event_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -644,6 +437,7 @@ async def get_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -660,86 +454,16 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantEvent", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Event, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -787,7 +511,7 @@ def list_deliveries( req = self._build_request( method="GET", - path="/{tenant_id}/events/{event_id}/deliveries", + path="/tenants/{tenant_id}/events/{event_id}/deliveries", base_url=base_url, url_variables=url_variables, request=request, @@ -801,6 +525,7 @@ def list_deliveries( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -817,86 +542,16 @@ def list_deliveries( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantEventDeliveries", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[models.DeliveryAttempt], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -944,7 +599,7 @@ async def list_deliveries_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/events/{event_id}/deliveries", + path="/tenants/{tenant_id}/events/{event_id}/deliveries", base_url=base_url, url_variables=url_variables, request=request, @@ -958,6 +613,7 @@ async def list_deliveries_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -974,86 +630,16 @@ async def list_deliveries_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantEventDeliveries", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[models.DeliveryAttempt], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1069,8 +655,8 @@ def list_by_destination( destination_id: str, tenant_id: Optional[str] = None, status: Optional[models.ListTenantEventsByDestinationStatus] = None, - next: Optional[str] = None, - prev: Optional[str] = None, + next_cursor: Optional[str] = None, + prev_cursor: Optional[str] = None, limit: Optional[int] = 100, start: Optional[datetime] = None, end: Optional[datetime] = None, @@ -1086,8 +672,8 @@ def list_by_destination( :param destination_id: The ID of the destination. :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param status: Filter events by delivery status. - :param next: Cursor for next page of results - :param prev: Cursor for previous page of results + :param next_cursor: Cursor for next page of results + :param prev_cursor: Cursor for previous page of results :param limit: Number of items per page (default 100, max 1000) :param start: Start time filter (RFC3339 format) :param end: End time filter (RFC3339 format) @@ -1110,8 +696,8 @@ def list_by_destination( tenant_id=tenant_id, destination_id=destination_id, status=status, - next=next, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, @@ -1119,7 +705,7 @@ def list_by_destination( req = self._build_request( method="GET", - path="/{tenant_id}/destinations/{destination_id}/events", + path="/tenants/{tenant_id}/destinations/{destination_id}/events", base_url=base_url, url_variables=url_variables, request=request, @@ -1133,6 +719,7 @@ def list_by_destination( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1149,37 +736,11 @@ def list_by_destination( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantEventsByDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) @@ -1204,15 +765,14 @@ def next_func() -> Optional[models.ListTenantEventsByDestinationResponse]: destination_id=destination_id, tenant_id=tenant_id, status=status, - next=next_cursor, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, retries=retries, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return models.ListTenantEventsByDestinationResponse( result=unmarshal_json_response( @@ -1220,49 +780,6 @@ def next_func() -> Optional[models.ListTenantEventsByDestinationResponse]: ), next=next_func, ) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1278,8 +795,8 @@ async def list_by_destination_async( destination_id: str, tenant_id: Optional[str] = None, status: Optional[models.ListTenantEventsByDestinationStatus] = None, - next: Optional[str] = None, - prev: Optional[str] = None, + next_cursor: Optional[str] = None, + prev_cursor: Optional[str] = None, limit: Optional[int] = 100, start: Optional[datetime] = None, end: Optional[datetime] = None, @@ -1295,8 +812,8 @@ async def list_by_destination_async( :param destination_id: The ID of the destination. :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. :param status: Filter events by delivery status. - :param next: Cursor for next page of results - :param prev: Cursor for previous page of results + :param next_cursor: Cursor for next page of results + :param prev_cursor: Cursor for previous page of results :param limit: Number of items per page (default 100, max 1000) :param start: Start time filter (RFC3339 format) :param end: End time filter (RFC3339 format) @@ -1319,8 +836,8 @@ async def list_by_destination_async( tenant_id=tenant_id, destination_id=destination_id, status=status, - next=next, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, @@ -1328,7 +845,7 @@ async def list_by_destination_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/destinations/{destination_id}/events", + path="/tenants/{tenant_id}/destinations/{destination_id}/events", base_url=base_url, url_variables=url_variables, request=request, @@ -1342,6 +859,7 @@ async def list_by_destination_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1358,37 +876,11 @@ async def list_by_destination_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantEventsByDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) @@ -1413,15 +905,14 @@ def next_func() -> Optional[models.ListTenantEventsByDestinationResponse]: destination_id=destination_id, tenant_id=tenant_id, status=status, - next=next_cursor, - prev=prev, + next_cursor=next_cursor, + prev_cursor=prev_cursor, limit=limit, start=start, end=end, retries=retries, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return models.ListTenantEventsByDestinationResponse( result=unmarshal_json_response( @@ -1429,49 +920,6 @@ def next_func() -> Optional[models.ListTenantEventsByDestinationResponse]: ), next=next_func, ) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1522,7 +970,7 @@ def get_by_destination( req = self._build_request( method="GET", - path="/{tenant_id}/destinations/{destination_id}/events/{event_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}/events/{event_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -1536,6 +984,7 @@ def get_by_destination( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1552,86 +1001,16 @@ def get_by_destination( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantEventByDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Event, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1682,7 +1061,7 @@ async def get_by_destination_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/destinations/{destination_id}/events/{event_id}", + path="/tenants/{tenant_id}/destinations/{destination_id}/events/{event_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -1696,6 +1075,7 @@ async def get_by_destination_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1712,86 +1092,16 @@ async def get_by_destination_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantEventByDestination", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Event, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1842,7 +1152,7 @@ def retry( req = self._build_request( method="POST", - path="/{tenant_id}/destinations/{destination_id}/events/{event_id}/retry", + path="/tenants/{tenant_id}/destinations/{destination_id}/events/{event_id}/retry", base_url=base_url, url_variables=url_variables, request=request, @@ -1850,12 +1160,13 @@ def retry( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, _globals=models.RetryTenantEventGlobals( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1872,87 +1183,16 @@ def retry( config=self.sdk_configuration, base_url=base_url or "", operation_id="retryTenantEvent", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "409", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "409", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "202", "*"): return - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "409", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -2003,7 +1243,7 @@ async def retry_async( req = self._build_request_async( method="POST", - path="/{tenant_id}/destinations/{destination_id}/events/{event_id}/retry", + path="/tenants/{tenant_id}/destinations/{destination_id}/events/{event_id}/retry", base_url=base_url, url_variables=url_variables, request=request, @@ -2011,12 +1251,13 @@ async def retry_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, _globals=models.RetryTenantEventGlobals( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2033,87 +1274,16 @@ async def retry_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="retryTenantEvent", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "409", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "409", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "202", "*"): return - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "409", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) diff --git a/sdks/outpost-python/src/outpost_sdk/health.py b/sdks/outpost-python/src/outpost_sdk/health.py index e933f1669..f8b6eb783 100644 --- a/sdks/outpost-python/src/outpost_sdk/health.py +++ b/sdks/outpost-python/src/outpost_sdk/health.py @@ -1,7 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from outpost_sdk import errors, utils +from outpost_sdk import errors, models, utils from outpost_sdk._hooks import HookContext from outpost_sdk.types import OptionalNullable, UNSET from outpost_sdk.utils.unmarshal_json_response import unmarshal_json_response @@ -18,10 +18,23 @@ def check( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> str: + ) -> models.HealthCheckResponse: r"""Health Check - Simple health check endpoint. + Health check endpoint that reports the status of all workers. + + Returns HTTP 200 when all workers are healthy, or HTTP 503 if any worker has failed. + + The response includes: + - `status`: Overall health status (\"healthy\" or \"failed\") + - `timestamp`: When this health check was performed (ISO 8601 format) + - `workers`: Map of worker names to their individual health status + + Each worker reports: + - `status`: Worker health (\"healthy\" or \"failed\") + + Note: Error details are not exposed for security reasons. Check application logs for detailed error information. + :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -47,8 +60,9 @@ def check( request_has_path_params=False, request_has_query_params=False, user_agent_header="user-agent", - accept_header_value="text/plain", + accept_header_value="application/json", http_headers=http_headers, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -65,7 +79,7 @@ def check( config=self.sdk_configuration, base_url=base_url or "", operation_id="healthCheck", - oauth2_scopes=[], + oauth2_scopes=None, security_source=None, ), request=req, @@ -100,8 +114,8 @@ def check( ) response_data: Any = None - if utils.match_response(http_res, "200", "text/plain"): - return http_res.text + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.HealthCheckResponse, http_res) if utils.match_response(http_res, "404", "application/json"): response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) raise errors.NotFoundError(response_data, http_res) @@ -164,10 +178,23 @@ async def check_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> str: + ) -> models.HealthCheckResponse: r"""Health Check - Simple health check endpoint. + Health check endpoint that reports the status of all workers. + + Returns HTTP 200 when all workers are healthy, or HTTP 503 if any worker has failed. + + The response includes: + - `status`: Overall health status (\"healthy\" or \"failed\") + - `timestamp`: When this health check was performed (ISO 8601 format) + - `workers`: Map of worker names to their individual health status + + Each worker reports: + - `status`: Worker health (\"healthy\" or \"failed\") + + Note: Error details are not exposed for security reasons. Check application logs for detailed error information. + :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -193,8 +220,9 @@ async def check_async( request_has_path_params=False, request_has_query_params=False, user_agent_header="user-agent", - accept_header_value="text/plain", + accept_header_value="application/json", http_headers=http_headers, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -211,7 +239,7 @@ async def check_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="healthCheck", - oauth2_scopes=[], + oauth2_scopes=None, security_source=None, ), request=req, @@ -246,8 +274,8 @@ async def check_async( ) response_data: Any = None - if utils.match_response(http_res, "200", "text/plain"): - return http_res.text + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.HealthCheckResponse, http_res) if utils.match_response(http_res, "404", "application/json"): response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) raise errors.NotFoundError(response_data, http_res) diff --git a/sdks/outpost-python/src/outpost_sdk/httpclient.py b/sdks/outpost-python/src/outpost_sdk/httpclient.py index 47b052cb3..89560b566 100644 --- a/sdks/outpost-python/src/outpost_sdk/httpclient.py +++ b/sdks/outpost-python/src/outpost_sdk/httpclient.py @@ -107,7 +107,6 @@ def close_clients( # to them from the owning SDK instance and they can be reaped. owner.client = None owner.async_client = None - if sync_client is not None and not sync_client_supplied: try: sync_client.close() diff --git a/sdks/outpost-python/src/outpost_sdk/models/__init__.py b/sdks/outpost-python/src/outpost_sdk/models/__init__.py index cd108e186..bf4f35d7a 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/__init__.py +++ b/sdks/outpost-python/src/outpost_sdk/models/__init__.py @@ -41,7 +41,11 @@ DeleteTenantRequest, DeleteTenantRequestTypedDict, ) - from .deliveryattempt import DeliveryAttempt, DeliveryAttemptTypedDict, Status + from .deliveryattempt import ( + DeliveryAttempt, + DeliveryAttemptStatus, + DeliveryAttemptTypedDict, + ) from .destination import Destination, DestinationTypedDict from .destinationawskinesis import ( DestinationAWSKinesis, @@ -84,6 +88,11 @@ DestinationCreateAzureServiceBusType, DestinationCreateAzureServiceBusTypedDict, ) + from .destinationcreategcppubsub import ( + DestinationCreateGCPPubSub, + DestinationCreateGCPPubSubType, + DestinationCreateGCPPubSubTypedDict, + ) from .destinationcreatehookdeck import ( DestinationCreateHookdeck, DestinationCreateHookdeckType, @@ -99,6 +108,11 @@ DestinationCreateWebhookType, DestinationCreateWebhookTypedDict, ) + from .destinationgcppubsub import ( + DestinationGCPPubSub, + DestinationGCPPubSubType, + DestinationGCPPubSubTypedDict, + ) from .destinationhookdeck import ( DestinationHookdeck, DestinationHookdeckType, @@ -114,6 +128,7 @@ DestinationSchemaFieldType, DestinationSchemaFieldTypedDict, ) + from .destinationtype import DestinationType from .destinationtypeschema import ( DestinationTypeSchema, DestinationTypeSchemaTypedDict, @@ -131,6 +146,14 @@ DestinationUpdateAWSSQS, DestinationUpdateAWSSQSTypedDict, ) + from .destinationupdateazureservicebus import ( + DestinationUpdateAzureServiceBus, + DestinationUpdateAzureServiceBusTypedDict, + ) + from .destinationupdategcppubsub import ( + DestinationUpdateGCPPubSub, + DestinationUpdateGCPPubSubTypedDict, + ) from .destinationupdatehookdeck import ( DestinationUpdateHookdeck, DestinationUpdateHookdeckTypedDict, @@ -160,7 +183,12 @@ EnableTenantDestinationRequest, EnableTenantDestinationRequestTypedDict, ) - from .event import Event, EventTypedDict + from .event import Event, EventStatus, EventTypedDict + from .gcppubsubconfig import GCPPubSubConfig, GCPPubSubConfigTypedDict + from .gcppubsubcredentials import ( + GCPPubSubCredentials, + GCPPubSubCredentialsTypedDict, + ) from .getdestinationtypeschemaop import ( GetDestinationTypeSchemaRequest, GetDestinationTypeSchemaRequestTypedDict, @@ -210,6 +238,14 @@ GetTenantTokenRequest, GetTenantTokenRequestTypedDict, ) + from .healthcheckop import ( + HealthCheckResponse, + HealthCheckResponseTypedDict, + HealthCheckStatus1, + HealthCheckStatus2, + Workers, + WorkersTypedDict, + ) from .hookdeckcredentials import HookdeckCredentials, HookdeckCredentialsTypedDict from .listtenantdestinationsop import ( ListTenantDestinationsGlobals, @@ -218,10 +254,8 @@ ListTenantDestinationsRequestTypedDict, ListTenantDestinationsTopics, ListTenantDestinationsTopicsTypedDict, - ListTenantDestinationsTypeEnum1, - ListTenantDestinationsTypeEnum2, - Type, - TypeTypedDict, + ListTenantDestinationsType, + ListTenantDestinationsTypeTypedDict, ) from .listtenantdestinationtypeschemasop import ( ListTenantDestinationTypeSchemasGlobals, @@ -259,6 +293,7 @@ ListTenantEventsResponseTypedDict, ListTenantEventsStatus, ) + from .listtenantsop import ListTenantsRequest, ListTenantsRequestTypedDict, Order from .listtenanttopicsop import ( ListTenantTopicsGlobals, ListTenantTopicsGlobalsTypedDict, @@ -279,7 +314,10 @@ from .security import Security, SecurityTypedDict from .successresponse import SuccessResponse, SuccessResponseTypedDict from .tenant import Tenant, TenantTypedDict + from .tenantlistitem import TenantListItem, TenantListItemTypedDict + from .tenantlistresponse import TenantListResponse, TenantListResponseTypedDict from .tenanttoken import TenantToken, TenantTokenTypedDict + from .tenantupsert import TenantUpsert, TenantUpsertTypedDict from .topics_union import TopicsEnum, TopicsUnion, TopicsUnionTypedDict from .updatetenantdestinationop import ( UpdateTenantDestinationGlobals, @@ -332,6 +370,7 @@ "DeleteTenantRequest", "DeleteTenantRequestTypedDict", "DeliveryAttempt", + "DeliveryAttemptStatus", "DeliveryAttemptTypedDict", "Destination", "DestinationAWSKinesis", @@ -359,6 +398,9 @@ "DestinationCreateAzureServiceBus", "DestinationCreateAzureServiceBusType", "DestinationCreateAzureServiceBusTypedDict", + "DestinationCreateGCPPubSub", + "DestinationCreateGCPPubSubType", + "DestinationCreateGCPPubSubTypedDict", "DestinationCreateHookdeck", "DestinationCreateHookdeckType", "DestinationCreateHookdeckTypedDict", @@ -369,6 +411,9 @@ "DestinationCreateWebhook", "DestinationCreateWebhookType", "DestinationCreateWebhookTypedDict", + "DestinationGCPPubSub", + "DestinationGCPPubSubType", + "DestinationGCPPubSubTypedDict", "DestinationHookdeck", "DestinationHookdeckType", "DestinationHookdeckTypedDict", @@ -380,6 +425,7 @@ "DestinationSchemaField", "DestinationSchemaFieldType", "DestinationSchemaFieldTypedDict", + "DestinationType", "DestinationTypeSchema", "DestinationTypeSchemaTypedDict", "DestinationTypedDict", @@ -390,6 +436,10 @@ "DestinationUpdateAWSSQSTypedDict", "DestinationUpdateAwss3", "DestinationUpdateAwss3TypedDict", + "DestinationUpdateAzureServiceBus", + "DestinationUpdateAzureServiceBusTypedDict", + "DestinationUpdateGCPPubSub", + "DestinationUpdateGCPPubSubTypedDict", "DestinationUpdateHookdeck", "DestinationUpdateHookdeckTypedDict", "DestinationUpdateRabbitMQ", @@ -409,7 +459,12 @@ "EnableTenantDestinationRequest", "EnableTenantDestinationRequestTypedDict", "Event", + "EventStatus", "EventTypedDict", + "GCPPubSubConfig", + "GCPPubSubConfigTypedDict", + "GCPPubSubCredentials", + "GCPPubSubCredentialsTypedDict", "GetDestinationTypeSchemaRequest", "GetDestinationTypeSchemaRequestTypedDict", "GetDestinationTypeSchemaType", @@ -442,6 +497,10 @@ "GetTenantTokenGlobalsTypedDict", "GetTenantTokenRequest", "GetTenantTokenRequestTypedDict", + "HealthCheckResponse", + "HealthCheckResponseTypedDict", + "HealthCheckStatus1", + "HealthCheckStatus2", "HookdeckCredentials", "HookdeckCredentialsTypedDict", "ListTenantDestinationTypeSchemasGlobals", @@ -454,8 +513,8 @@ "ListTenantDestinationsRequestTypedDict", "ListTenantDestinationsTopics", "ListTenantDestinationsTopicsTypedDict", - "ListTenantDestinationsTypeEnum1", - "ListTenantDestinationsTypeEnum2", + "ListTenantDestinationsType", + "ListTenantDestinationsTypeTypedDict", "ListTenantEventDeliveriesGlobals", "ListTenantEventDeliveriesGlobalsTypedDict", "ListTenantEventDeliveriesRequest", @@ -482,6 +541,9 @@ "ListTenantTopicsGlobalsTypedDict", "ListTenantTopicsRequest", "ListTenantTopicsRequestTypedDict", + "ListTenantsRequest", + "ListTenantsRequestTypedDict", + "Order", "PortalRedirect", "PortalRedirectTypedDict", "PublishRequest", @@ -498,20 +560,23 @@ "RetryTenantEventRequestTypedDict", "Security", "SecurityTypedDict", - "Status", "SuccessResponse", "SuccessResponseTypedDict", "TLS", "Tenant", + "TenantListItem", + "TenantListItemTypedDict", + "TenantListResponse", + "TenantListResponseTypedDict", "TenantToken", "TenantTokenTypedDict", "TenantTypedDict", + "TenantUpsert", + "TenantUpsertTypedDict", "Theme", "TopicsEnum", "TopicsUnion", "TopicsUnionTypedDict", - "Type", - "TypeTypedDict", "UpdateTenantDestinationGlobals", "UpdateTenantDestinationGlobalsTypedDict", "UpdateTenantDestinationRequest", @@ -528,6 +593,8 @@ "WebhookCredentialsTypedDict", "WebhookCredentialsUpdate", "WebhookCredentialsUpdateTypedDict", + "Workers", + "WorkersTypedDict", ] _dynamic_imports: dict[str, str] = { @@ -560,8 +627,8 @@ "DeleteTenantRequest": ".deletetenantop", "DeleteTenantRequestTypedDict": ".deletetenantop", "DeliveryAttempt": ".deliveryattempt", + "DeliveryAttemptStatus": ".deliveryattempt", "DeliveryAttemptTypedDict": ".deliveryattempt", - "Status": ".deliveryattempt", "Destination": ".destination", "DestinationTypedDict": ".destination", "DestinationAWSKinesis": ".destinationawskinesis", @@ -590,6 +657,9 @@ "DestinationCreateAzureServiceBus": ".destinationcreateazureservicebus", "DestinationCreateAzureServiceBusType": ".destinationcreateazureservicebus", "DestinationCreateAzureServiceBusTypedDict": ".destinationcreateazureservicebus", + "DestinationCreateGCPPubSub": ".destinationcreategcppubsub", + "DestinationCreateGCPPubSubType": ".destinationcreategcppubsub", + "DestinationCreateGCPPubSubTypedDict": ".destinationcreategcppubsub", "DestinationCreateHookdeck": ".destinationcreatehookdeck", "DestinationCreateHookdeckType": ".destinationcreatehookdeck", "DestinationCreateHookdeckTypedDict": ".destinationcreatehookdeck", @@ -599,6 +669,9 @@ "DestinationCreateWebhook": ".destinationcreatewebhook", "DestinationCreateWebhookType": ".destinationcreatewebhook", "DestinationCreateWebhookTypedDict": ".destinationcreatewebhook", + "DestinationGCPPubSub": ".destinationgcppubsub", + "DestinationGCPPubSubType": ".destinationgcppubsub", + "DestinationGCPPubSubTypedDict": ".destinationgcppubsub", "DestinationHookdeck": ".destinationhookdeck", "DestinationHookdeckType": ".destinationhookdeck", "DestinationHookdeckTypedDict": ".destinationhookdeck", @@ -608,6 +681,7 @@ "DestinationSchemaField": ".destinationschemafield", "DestinationSchemaFieldType": ".destinationschemafield", "DestinationSchemaFieldTypedDict": ".destinationschemafield", + "DestinationType": ".destinationtype", "DestinationTypeSchema": ".destinationtypeschema", "DestinationTypeSchemaTypedDict": ".destinationtypeschema", "DestinationUpdate": ".destinationupdate", @@ -618,6 +692,10 @@ "DestinationUpdateAwss3TypedDict": ".destinationupdateawss3", "DestinationUpdateAWSSQS": ".destinationupdateawssqs", "DestinationUpdateAWSSQSTypedDict": ".destinationupdateawssqs", + "DestinationUpdateAzureServiceBus": ".destinationupdateazureservicebus", + "DestinationUpdateAzureServiceBusTypedDict": ".destinationupdateazureservicebus", + "DestinationUpdateGCPPubSub": ".destinationupdategcppubsub", + "DestinationUpdateGCPPubSubTypedDict": ".destinationupdategcppubsub", "DestinationUpdateHookdeck": ".destinationupdatehookdeck", "DestinationUpdateHookdeckTypedDict": ".destinationupdatehookdeck", "DestinationUpdateRabbitMQ": ".destinationupdaterabbitmq", @@ -636,7 +714,12 @@ "EnableTenantDestinationRequest": ".enabletenantdestinationop", "EnableTenantDestinationRequestTypedDict": ".enabletenantdestinationop", "Event": ".event", + "EventStatus": ".event", "EventTypedDict": ".event", + "GCPPubSubConfig": ".gcppubsubconfig", + "GCPPubSubConfigTypedDict": ".gcppubsubconfig", + "GCPPubSubCredentials": ".gcppubsubcredentials", + "GCPPubSubCredentialsTypedDict": ".gcppubsubcredentials", "GetDestinationTypeSchemaRequest": ".getdestinationtypeschemaop", "GetDestinationTypeSchemaRequestTypedDict": ".getdestinationtypeschemaop", "GetDestinationTypeSchemaType": ".getdestinationtypeschemaop", @@ -670,6 +753,12 @@ "GetTenantTokenGlobalsTypedDict": ".gettenanttokenop", "GetTenantTokenRequest": ".gettenanttokenop", "GetTenantTokenRequestTypedDict": ".gettenanttokenop", + "HealthCheckResponse": ".healthcheckop", + "HealthCheckResponseTypedDict": ".healthcheckop", + "HealthCheckStatus1": ".healthcheckop", + "HealthCheckStatus2": ".healthcheckop", + "Workers": ".healthcheckop", + "WorkersTypedDict": ".healthcheckop", "HookdeckCredentials": ".hookdeckcredentials", "HookdeckCredentialsTypedDict": ".hookdeckcredentials", "ListTenantDestinationsGlobals": ".listtenantdestinationsop", @@ -678,10 +767,8 @@ "ListTenantDestinationsRequestTypedDict": ".listtenantdestinationsop", "ListTenantDestinationsTopics": ".listtenantdestinationsop", "ListTenantDestinationsTopicsTypedDict": ".listtenantdestinationsop", - "ListTenantDestinationsTypeEnum1": ".listtenantdestinationsop", - "ListTenantDestinationsTypeEnum2": ".listtenantdestinationsop", - "Type": ".listtenantdestinationsop", - "TypeTypedDict": ".listtenantdestinationsop", + "ListTenantDestinationsType": ".listtenantdestinationsop", + "ListTenantDestinationsTypeTypedDict": ".listtenantdestinationsop", "ListTenantDestinationTypeSchemasGlobals": ".listtenantdestinationtypeschemasop", "ListTenantDestinationTypeSchemasGlobalsTypedDict": ".listtenantdestinationtypeschemasop", "ListTenantDestinationTypeSchemasRequest": ".listtenantdestinationtypeschemasop", @@ -710,6 +797,9 @@ "ListTenantEventsResponseBodyTypedDict": ".listtenanteventsop", "ListTenantEventsResponseTypedDict": ".listtenanteventsop", "ListTenantEventsStatus": ".listtenanteventsop", + "ListTenantsRequest": ".listtenantsop", + "ListTenantsRequestTypedDict": ".listtenantsop", + "Order": ".listtenantsop", "ListTenantTopicsGlobals": ".listtenanttopicsop", "ListTenantTopicsGlobalsTypedDict": ".listtenanttopicsop", "ListTenantTopicsRequest": ".listtenanttopicsop", @@ -735,8 +825,14 @@ "SuccessResponseTypedDict": ".successresponse", "Tenant": ".tenant", "TenantTypedDict": ".tenant", + "TenantListItem": ".tenantlistitem", + "TenantListItemTypedDict": ".tenantlistitem", + "TenantListResponse": ".tenantlistresponse", + "TenantListResponseTypedDict": ".tenantlistresponse", "TenantToken": ".tenanttoken", "TenantTokenTypedDict": ".tenanttoken", + "TenantUpsert": ".tenantupsert", + "TenantUpsertTypedDict": ".tenantupsert", "TopicsEnum": ".topics_union", "TopicsUnion": ".topics_union", "TopicsUnionTypedDict": ".topics_union", diff --git a/sdks/outpost-python/src/outpost_sdk/models/awskinesisconfig.py b/sdks/outpost-python/src/outpost_sdk/models/awskinesisconfig.py index c37c6d5ff..e4d4c6e0b 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/awskinesisconfig.py +++ b/sdks/outpost-python/src/outpost_sdk/models/awskinesisconfig.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -29,3 +30,19 @@ class AWSKinesisConfig(BaseModel): partition_key_template: Optional[str] = None r"""Optional. JMESPath template to extract the partition key from the event payload (e.g., `metadata.\"event-id\"`). Defaults to event ID.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["endpoint", "partition_key_template"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/awskinesiscredentials.py b/sdks/outpost-python/src/outpost_sdk/models/awskinesiscredentials.py index d123b13dd..fd20ba044 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/awskinesiscredentials.py +++ b/sdks/outpost-python/src/outpost_sdk/models/awskinesiscredentials.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -24,3 +25,19 @@ class AWSKinesisCredentials(BaseModel): session: Optional[str] = None r"""Optional AWS Session Token (for temporary credentials).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["session"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/awss3config.py b/sdks/outpost-python/src/outpost_sdk/models/awss3config.py index 477feec5b..22d37583c 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/awss3config.py +++ b/sdks/outpost-python/src/outpost_sdk/models/awss3config.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -29,3 +30,19 @@ class Awss3Config(BaseModel): storage_class: Optional[str] = None r"""The storage class for the S3 objects (e.g., STANDARD, INTELLIGENT_TIERING, GLACIER, etc.). Defaults to \"STANDARD\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["key_template", "storage_class"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/awss3credentials.py b/sdks/outpost-python/src/outpost_sdk/models/awss3credentials.py index 460fd74dc..9a145cd91 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/awss3credentials.py +++ b/sdks/outpost-python/src/outpost_sdk/models/awss3credentials.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -24,3 +25,19 @@ class Awss3Credentials(BaseModel): session: Optional[str] = None r"""Optional AWS Session Token (for temporary credentials).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["session"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/awssqsconfig.py b/sdks/outpost-python/src/outpost_sdk/models/awssqsconfig.py index 0c1de6f06..4de8ead76 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/awssqsconfig.py +++ b/sdks/outpost-python/src/outpost_sdk/models/awssqsconfig.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class AWSSQSConfig(BaseModel): endpoint: Optional[str] = None r"""Optional. Custom AWS endpoint URL (e.g., for LocalStack or specific regions).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["endpoint"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/awssqscredentials.py b/sdks/outpost-python/src/outpost_sdk/models/awssqscredentials.py index 8e0c758ac..56f871ee9 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/awssqscredentials.py +++ b/sdks/outpost-python/src/outpost_sdk/models/awssqscredentials.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -24,3 +25,19 @@ class AWSSQSCredentials(BaseModel): session: Optional[str] = None r"""Optional AWS Session Token (for temporary credentials).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["session"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/createtenantdestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/createtenantdestinationop.py index ffc05b97e..d79459c24 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/createtenantdestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/createtenantdestinationop.py @@ -2,8 +2,9 @@ from __future__ import annotations from .destinationcreate import DestinationCreate, DestinationCreateTypedDict -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,15 +19,31 @@ class CreateTenantDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class CreateTenantDestinationRequestTypedDict(TypedDict): - destination_create: DestinationCreateTypedDict + params: DestinationCreateTypedDict tenant_id: NotRequired[str] r"""The ID of the tenant. Required when using AdminApiKey authentication.""" class CreateTenantDestinationRequest(BaseModel): - destination_create: Annotated[ + params: Annotated[ DestinationCreate, FieldMetadata(request=RequestMetadata(media_type="application/json")), ] @@ -36,3 +53,19 @@ class CreateTenantDestinationRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/deletetenantdestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/deletetenantdestinationop.py index 21eec2274..ddcf72d16 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/deletetenantdestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/deletetenantdestinationop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class DeleteTenantDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteTenantDestinationRequestTypedDict(TypedDict): destination_id: str @@ -36,3 +53,19 @@ class DeleteTenantDestinationRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/deletetenantop.py b/sdks/outpost-python/src/outpost_sdk/models/deletetenantop.py index 0a914ab5f..766b94c07 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/deletetenantop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/deletetenantop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class DeleteTenantGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DeleteTenantRequestTypedDict(TypedDict): tenant_id: NotRequired[str] @@ -29,3 +46,19 @@ class DeleteTenantRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/deliveryattempt.py b/sdks/outpost-python/src/outpost_sdk/models/deliveryattempt.py index 0de44016a..9932bed40 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/deliveryattempt.py +++ b/sdks/outpost-python/src/outpost_sdk/models/deliveryattempt.py @@ -3,19 +3,20 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import NotRequired, TypedDict -class Status(str, Enum): +class DeliveryAttemptStatus(str, Enum): SUCCESS = "success" FAILED = "failed" class DeliveryAttemptTypedDict(TypedDict): delivered_at: NotRequired[datetime] - status: NotRequired[Status] + status: NotRequired[DeliveryAttemptStatus] response_status_code: NotRequired[int] response_body: NotRequired[str] response_headers: NotRequired[Dict[str, str]] @@ -24,10 +25,34 @@ class DeliveryAttemptTypedDict(TypedDict): class DeliveryAttempt(BaseModel): delivered_at: Optional[datetime] = None - status: Optional[Status] = None + status: Optional[DeliveryAttemptStatus] = None response_status_code: Optional[int] = None response_body: Optional[str] = None response_headers: Optional[Dict[str, str]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "delivered_at", + "status", + "response_status_code", + "response_body", + "response_headers", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destination.py b/sdks/outpost-python/src/outpost_sdk/models/destination.py index 5f47ca693..590c793f3 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destination.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destination.py @@ -8,6 +8,7 @@ DestinationAzureServiceBus, DestinationAzureServiceBusTypedDict, ) +from .destinationgcppubsub import DestinationGCPPubSub, DestinationGCPPubSubTypedDict from .destinationhookdeck import DestinationHookdeck, DestinationHookdeckTypedDict from .destinationrabbitmq import DestinationRabbitMQ, DestinationRabbitMQTypedDict from .destinationwebhook import DestinationWebhook, DestinationWebhookTypedDict @@ -27,6 +28,7 @@ DestinationAWSKinesisTypedDict, DestinationAzureServiceBusTypedDict, DestinationAwss3TypedDict, + DestinationGCPPubSubTypedDict, ], ) @@ -40,6 +42,7 @@ Annotated[DestinationAWSKinesis, Tag("aws_kinesis")], Annotated[DestinationAzureServiceBus, Tag("azure_servicebus")], Annotated[DestinationAwss3, Tag("aws_s3")], + Annotated[DestinationGCPPubSub, Tag("gcp_pubsub")], ], Discriminator(lambda m: get_discriminator(m, "type", "type")), ] diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationawskinesis.py b/sdks/outpost-python/src/outpost_sdk/models/destinationawskinesis.py index 3b4038b55..468a79ed3 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationawskinesis.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationawskinesis.py @@ -13,9 +13,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationAWSKinesisType(str, Enum): @@ -35,8 +36,21 @@ class DestinationAWSKinesisTypedDict(TypedDict): r"""ISO Date when the destination was disabled, or null if enabled.""" created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" config: AWSKinesisConfigTypedDict credentials: AWSKinesisCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (Kinesis stream name). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -59,10 +73,29 @@ class DestinationAWSKinesis(BaseModel): created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + config: AWSKinesisConfig credentials: AWSKinesisCredentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (Kinesis stream name). Read-only.""" @@ -71,30 +104,29 @@ class DestinationAWSKinesis(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + ["filter", "delivery_metadata", "metadata", "target", "target_url"] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationawss3.py b/sdks/outpost-python/src/outpost_sdk/models/destinationawss3.py index 52db47b47..4745911a7 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationawss3.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationawss3.py @@ -13,9 +13,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationAwss3Type(str, Enum): @@ -35,8 +36,21 @@ class DestinationAwss3TypedDict(TypedDict): r"""ISO Date when the destination was disabled, or null if enabled.""" created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" config: Awss3ConfigTypedDict credentials: Awss3CredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (bucket and region). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -59,10 +73,29 @@ class DestinationAwss3(BaseModel): created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + config: Awss3Config credentials: Awss3Credentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (bucket and region). Read-only.""" @@ -71,30 +104,29 @@ class DestinationAwss3(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + ["filter", "delivery_metadata", "metadata", "target", "target_url"] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationawssqs.py b/sdks/outpost-python/src/outpost_sdk/models/destinationawssqs.py index 72e3014d8..2b1d4f1d8 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationawssqs.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationawssqs.py @@ -13,9 +13,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationAWSSQSType(str, Enum): @@ -35,8 +36,21 @@ class DestinationAWSSQSTypedDict(TypedDict): r"""ISO Date when the destination was disabled, or null if enabled.""" created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" config: AWSSQSConfigTypedDict credentials: AWSSQSCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (SQS queue name). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -59,10 +73,29 @@ class DestinationAWSSQS(BaseModel): created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + config: AWSSQSConfig credentials: AWSSQSCredentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (SQS queue name). Read-only.""" @@ -71,30 +104,29 @@ class DestinationAWSSQS(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + ["filter", "delivery_metadata", "metadata", "target", "target_url"] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationazureservicebus.py b/sdks/outpost-python/src/outpost_sdk/models/destinationazureservicebus.py index 32b5e3c29..5abccb3aa 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationazureservicebus.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationazureservicebus.py @@ -16,9 +16,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationAzureServiceBusType(str, Enum): @@ -40,6 +41,19 @@ class DestinationAzureServiceBusTypedDict(TypedDict): r"""ISO Date when the destination was created.""" config: AzureServiceBusConfigTypedDict credentials: AzureServiceBusCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + updated_at: NotRequired[datetime] + r"""ISO Date when the destination was last updated.""" + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (Azure Service Bus queue/topic name). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -66,6 +80,25 @@ class DestinationAzureServiceBus(BaseModel): credentials: AzureServiceBusCredentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + updated_at: Optional[datetime] = None + r"""ISO Date when the destination was last updated.""" + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (Azure Service Bus queue/topic name). Read-only.""" @@ -74,30 +107,36 @@ class DestinationAzureServiceBus(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + [ + "filter", + "updated_at", + "delivery_metadata", + "metadata", + "target", + "target_url", + ] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreate.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreate.py index 3905168db..24c3ffee8 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreate.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreate.py @@ -17,6 +17,10 @@ DestinationCreateAzureServiceBus, DestinationCreateAzureServiceBusTypedDict, ) +from .destinationcreategcppubsub import ( + DestinationCreateGCPPubSub, + DestinationCreateGCPPubSubTypedDict, +) from .destinationcreatehookdeck import ( DestinationCreateHookdeck, DestinationCreateHookdeckTypedDict, @@ -45,6 +49,7 @@ DestinationCreateAWSKinesisTypedDict, DestinationCreateAzureServiceBusTypedDict, DestinationCreateAwss3TypedDict, + DestinationCreateGCPPubSubTypedDict, ], ) @@ -58,6 +63,7 @@ Annotated[DestinationCreateAWSKinesis, Tag("aws_kinesis")], Annotated[DestinationCreateAzureServiceBus, Tag("azure_servicebus")], Annotated[DestinationCreateAwss3, Tag("aws_s3")], + Annotated[DestinationCreateGCPPubSub, Tag("gcp_pubsub")], ], Discriminator(lambda m: get_discriminator(m, "type", "type")), ] diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawskinesis.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawskinesis.py index 6dccd9f03..f96e31ea0 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawskinesis.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawskinesis.py @@ -5,9 +5,17 @@ from .awskinesiscredentials import AWSKinesisCredentials, AWSKinesisCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateAWSKinesisType(str, Enum): @@ -25,6 +33,17 @@ class DestinationCreateAWSKinesisTypedDict(TypedDict): credentials: AWSKinesisCredentialsTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateAWSKinesis(BaseModel): @@ -40,3 +59,44 @@ class DestinationCreateAWSKinesis(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "filter", "delivery_metadata", "metadata"]) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawss3.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawss3.py index a4a195c92..46fde222b 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawss3.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawss3.py @@ -5,9 +5,17 @@ from .awss3credentials import Awss3Credentials, Awss3CredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateAwss3Type(str, Enum): @@ -25,6 +33,17 @@ class DestinationCreateAwss3TypedDict(TypedDict): credentials: Awss3CredentialsTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateAwss3(BaseModel): @@ -40,3 +59,44 @@ class DestinationCreateAwss3(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "filter", "delivery_metadata", "metadata"]) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawssqs.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawssqs.py index 020192f74..637d35384 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawssqs.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateawssqs.py @@ -5,9 +5,17 @@ from .awssqscredentials import AWSSQSCredentials, AWSSQSCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateAWSSQSType(str, Enum): @@ -25,6 +33,17 @@ class DestinationCreateAWSSQSTypedDict(TypedDict): credentials: AWSSQSCredentialsTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateAWSSQS(BaseModel): @@ -40,3 +59,44 @@ class DestinationCreateAWSSQS(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "filter", "delivery_metadata", "metadata"]) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateazureservicebus.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateazureservicebus.py index 24adb12c0..2d572cef6 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreateazureservicebus.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreateazureservicebus.py @@ -8,9 +8,17 @@ ) from .topics_union import TopicsUnion, TopicsUnionTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateAzureServiceBusType(str, Enum): @@ -28,6 +36,17 @@ class DestinationCreateAzureServiceBusTypedDict(TypedDict): credentials: AzureServiceBusCredentialsTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateAzureServiceBus(BaseModel): @@ -43,3 +62,44 @@ class DestinationCreateAzureServiceBus(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "filter", "delivery_metadata", "metadata"]) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreategcppubsub.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreategcppubsub.py new file mode 100644 index 000000000..4c7efe6df --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreategcppubsub.py @@ -0,0 +1,102 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .gcppubsubconfig import GCPPubSubConfig, GCPPubSubConfigTypedDict +from .gcppubsubcredentials import GCPPubSubCredentials, GCPPubSubCredentialsTypedDict +from .topics_union import TopicsUnion, TopicsUnionTypedDict +from enum import Enum +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DestinationCreateGCPPubSubType(str, Enum): + r"""Type of the destination. Must be 'gcp_pubsub'.""" + + GCP_PUBSUB = "gcp_pubsub" + + +class DestinationCreateGCPPubSubTypedDict(TypedDict): + type: DestinationCreateGCPPubSubType + r"""Type of the destination. Must be 'gcp_pubsub'.""" + topics: TopicsUnionTypedDict + r"""\"*\" or an array of enabled topics.""" + config: GCPPubSubConfigTypedDict + credentials: GCPPubSubCredentialsTypedDict + id: NotRequired[str] + r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" + + +class DestinationCreateGCPPubSub(BaseModel): + type: DestinationCreateGCPPubSubType + r"""Type of the destination. Must be 'gcp_pubsub'.""" + + topics: TopicsUnion + r"""\"*\" or an array of enabled topics.""" + + config: GCPPubSubConfig + + credentials: GCPPubSubCredentials + + id: Optional[str] = None + r"""Optional user-provided ID. A UUID will be generated if empty.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "filter", "delivery_metadata", "metadata"]) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreatehookdeck.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreatehookdeck.py index 9f3787a47..8f0caee13 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreatehookdeck.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreatehookdeck.py @@ -4,9 +4,17 @@ from .hookdeckcredentials import HookdeckCredentials, HookdeckCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Any, Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateHookdeckType(str, Enum): @@ -23,7 +31,18 @@ class DestinationCreateHookdeckTypedDict(TypedDict): credentials: HookdeckCredentialsTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[Any] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateHookdeck(BaseModel): @@ -38,4 +57,47 @@ class DestinationCreateHookdeck(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[Any] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["id", "filter", "config", "delivery_metadata", "metadata"] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreaterabbitmq.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreaterabbitmq.py index c83f24c72..69ff1be50 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreaterabbitmq.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreaterabbitmq.py @@ -5,9 +5,17 @@ from .rabbitmqcredentials import RabbitMQCredentials, RabbitMQCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateRabbitMQType(str, Enum): @@ -25,6 +33,17 @@ class DestinationCreateRabbitMQTypedDict(TypedDict): credentials: RabbitMQCredentialsTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateRabbitMQ(BaseModel): @@ -40,3 +59,44 @@ class DestinationCreateRabbitMQ(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "filter", "delivery_metadata", "metadata"]) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationcreatewebhook.py b/sdks/outpost-python/src/outpost_sdk/models/destinationcreatewebhook.py index 36694690e..e7a8a6a73 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationcreatewebhook.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationcreatewebhook.py @@ -5,9 +5,17 @@ from .webhookconfig import WebhookConfig, WebhookConfigTypedDict from .webhookcredentials import WebhookCredentials, WebhookCredentialsTypedDict from enum import Enum -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationCreateWebhookType(str, Enum): @@ -24,7 +32,18 @@ class DestinationCreateWebhookTypedDict(TypedDict): config: WebhookConfigTypedDict id: NotRequired[str] r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ credentials: NotRequired[WebhookCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationCreateWebhook(BaseModel): @@ -39,4 +58,47 @@ class DestinationCreateWebhook(BaseModel): id: Optional[str] = None r"""Optional user-provided ID. A UUID will be generated if empty.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + credentials: Optional[WebhookCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["id", "filter", "credentials", "delivery_metadata", "metadata"] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationgcppubsub.py b/sdks/outpost-python/src/outpost_sdk/models/destinationgcppubsub.py new file mode 100644 index 000000000..95bbc36c9 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationgcppubsub.py @@ -0,0 +1,132 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .gcppubsubconfig import GCPPubSubConfig, GCPPubSubConfigTypedDict +from .gcppubsubcredentials import GCPPubSubCredentials, GCPPubSubCredentialsTypedDict +from .topics_union import TopicsUnion, TopicsUnionTypedDict +from datetime import datetime +from enum import Enum +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DestinationGCPPubSubType(str, Enum): + r"""Type of the destination.""" + + GCP_PUBSUB = "gcp_pubsub" + + +class DestinationGCPPubSubTypedDict(TypedDict): + id: str + r"""Control plane generated ID or user provided ID for the destination.""" + type: DestinationGCPPubSubType + r"""Type of the destination.""" + topics: TopicsUnionTypedDict + r"""\"*\" or an array of enabled topics.""" + disabled_at: Nullable[datetime] + r"""ISO Date when the destination was disabled, or null if enabled.""" + created_at: datetime + r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + config: GCPPubSubConfigTypedDict + credentials: GCPPubSubCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" + target: NotRequired[str] + r"""A human-readable representation of the destination target (project/topic). Read-only.""" + target_url: NotRequired[Nullable[str]] + r"""A URL link to the destination target (GCP Console link to the topic). Read-only.""" + + +class DestinationGCPPubSub(BaseModel): + id: str + r"""Control plane generated ID or user provided ID for the destination.""" + + type: DestinationGCPPubSubType + r"""Type of the destination.""" + + topics: TopicsUnion + r"""\"*\" or an array of enabled topics.""" + + disabled_at: Nullable[datetime] + r"""ISO Date when the destination was disabled, or null if enabled.""" + + created_at: datetime + r"""ISO Date when the destination was created.""" + + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + + config: GCPPubSubConfig + + credentials: GCPPubSubCredentials + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + target: Optional[str] = None + r"""A human-readable representation of the destination target (project/topic). Read-only.""" + + target_url: OptionalNullable[str] = UNSET + r"""A URL link to the destination target (GCP Console link to the topic). Read-only.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["filter", "delivery_metadata", "metadata", "target", "target_url"] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationhookdeck.py b/sdks/outpost-python/src/outpost_sdk/models/destinationhookdeck.py index 065933531..284b5654f 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationhookdeck.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationhookdeck.py @@ -12,9 +12,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Any, Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationHookdeckType(str, Enum): @@ -35,7 +36,20 @@ class DestinationHookdeckTypedDict(TypedDict): created_at: datetime r"""ISO Date when the destination was created.""" credentials: HookdeckCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + updated_at: NotRequired[datetime] + r"""ISO Date when the destination was last updated.""" config: NotRequired[Any] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (Hookdeck). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -60,8 +74,27 @@ class DestinationHookdeck(BaseModel): credentials: HookdeckCredentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + updated_at: Optional[datetime] = None + r"""ISO Date when the destination was last updated.""" + config: Optional[Any] = None + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (Hookdeck). Read-only.""" @@ -70,30 +103,37 @@ class DestinationHookdeck(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["config", "target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + [ + "filter", + "updated_at", + "config", + "delivery_metadata", + "metadata", + "target", + "target_url", + ] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationrabbitmq.py b/sdks/outpost-python/src/outpost_sdk/models/destinationrabbitmq.py index 131006344..ebbcb2657 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationrabbitmq.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationrabbitmq.py @@ -13,9 +13,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationRabbitMQType(str, Enum): @@ -35,8 +36,21 @@ class DestinationRabbitMQTypedDict(TypedDict): r"""ISO Date when the destination was disabled, or null if enabled.""" created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" config: RabbitMQConfigTypedDict credentials: RabbitMQCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (RabbitMQ exchange). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -59,10 +73,29 @@ class DestinationRabbitMQ(BaseModel): created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + config: RabbitMQConfig credentials: RabbitMQCredentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (RabbitMQ exchange). Read-only.""" @@ -71,30 +104,29 @@ class DestinationRabbitMQ(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + ["filter", "delivery_metadata", "metadata", "target", "target_url"] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationschemafield.py b/sdks/outpost-python/src/outpost_sdk/models/destinationschemafield.py index 83251eb59..872738966 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationschemafield.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationschemafield.py @@ -2,7 +2,8 @@ from __future__ import annotations from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -52,3 +53,29 @@ class DestinationSchemaField(BaseModel): pattern: Optional[str] = None r"""Regex pattern for validation (compatible with HTML5 pattern attribute).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "label", + "description", + "sensitive", + "default", + "minlength", + "maxlength", + "pattern", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationtype.py b/sdks/outpost-python/src/outpost_sdk/models/destinationtype.py new file mode 100644 index 000000000..8f9c912b2 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationtype.py @@ -0,0 +1,17 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class DestinationType(str, Enum): + r"""Type of destination.""" + + WEBHOOK = "webhook" + AWS_SQS = "aws_sqs" + RABBITMQ = "rabbitmq" + HOOKDECK = "hookdeck" + AWS_KINESIS = "aws_kinesis" + AZURE_SERVICEBUS = "azure_servicebus" + AWS_S3 = "aws_s3" + GCP_PUBSUB = "gcp_pubsub" diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationtypeschema.py b/sdks/outpost-python/src/outpost_sdk/models/destinationtypeschema.py index 80f2498e9..d6ac3382b 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationtypeschema.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationtypeschema.py @@ -5,7 +5,8 @@ DestinationSchemaField, DestinationSchemaFieldTypedDict, ) -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -51,3 +52,30 @@ class DestinationTypeSchema(BaseModel): credential_fields: Optional[List[DestinationSchemaField]] = None r"""Credential fields are secret values that will be AES encrypted and obfuscated to the user. Some credentials may not be obfuscated; the destination type dictates the obfuscation logic.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "type", + "label", + "description", + "icon", + "instructions", + "remote_setup_url", + "config_fields", + "credential_fields", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdate.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdate.py index 80b43c910..8af5e55b3 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdate.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdate.py @@ -13,6 +13,14 @@ DestinationUpdateAWSSQS, DestinationUpdateAWSSQSTypedDict, ) +from .destinationupdateazureservicebus import ( + DestinationUpdateAzureServiceBus, + DestinationUpdateAzureServiceBusTypedDict, +) +from .destinationupdategcppubsub import ( + DestinationUpdateGCPPubSub, + DestinationUpdateGCPPubSubTypedDict, +) from .destinationupdatehookdeck import ( DestinationUpdateHookdeck, DestinationUpdateHookdeckTypedDict, @@ -37,7 +45,9 @@ DestinationUpdateRabbitMQTypedDict, DestinationUpdateHookdeckTypedDict, DestinationUpdateAWSKinesisTypedDict, + DestinationUpdateAzureServiceBusTypedDict, DestinationUpdateAwss3TypedDict, + DestinationUpdateGCPPubSubTypedDict, ], ) @@ -50,6 +60,8 @@ DestinationUpdateRabbitMQ, DestinationUpdateHookdeck, DestinationUpdateAWSKinesis, + DestinationUpdateAzureServiceBus, DestinationUpdateAwss3, + DestinationUpdateGCPPubSub, ], ) diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawskinesis.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawskinesis.py index 9c1278083..2bbc6d5d5 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawskinesis.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawskinesis.py @@ -4,22 +4,91 @@ from .awskinesisconfig import AWSKinesisConfig, AWSKinesisConfigTypedDict from .awskinesiscredentials import AWSKinesisCredentials, AWSKinesisCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationUpdateAWSKinesisTypedDict(TypedDict): topics: NotRequired[TopicsUnionTypedDict] r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[AWSKinesisConfigTypedDict] credentials: NotRequired[AWSKinesisCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationUpdateAWSKinesis(BaseModel): topics: Optional[TopicsUnion] = None r"""\"*\" or an array of enabled topics.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[AWSKinesisConfig] = None credentials: Optional[AWSKinesisCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawss3.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawss3.py index 8760e8ee8..aae033b98 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawss3.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawss3.py @@ -4,22 +4,91 @@ from .awss3config import Awss3Config, Awss3ConfigTypedDict from .awss3credentials import Awss3Credentials, Awss3CredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationUpdateAwss3TypedDict(TypedDict): topics: NotRequired[TopicsUnionTypedDict] r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[Awss3ConfigTypedDict] credentials: NotRequired[Awss3CredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationUpdateAwss3(BaseModel): topics: Optional[TopicsUnion] = None r"""\"*\" or an array of enabled topics.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[Awss3Config] = None credentials: Optional[Awss3Credentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawssqs.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawssqs.py index aa465919e..dfa5d9a5d 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawssqs.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateawssqs.py @@ -4,22 +4,91 @@ from .awssqsconfig import AWSSQSConfig, AWSSQSConfigTypedDict from .awssqscredentials import AWSSQSCredentials, AWSSQSCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationUpdateAWSSQSTypedDict(TypedDict): topics: NotRequired[TopicsUnionTypedDict] r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[AWSSQSConfigTypedDict] credentials: NotRequired[AWSSQSCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationUpdateAWSSQS(BaseModel): topics: Optional[TopicsUnion] = None r"""\"*\" or an array of enabled topics.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[AWSSQSConfig] = None credentials: Optional[AWSSQSCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdateazureservicebus.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateazureservicebus.py new file mode 100644 index 000000000..9ec8df59b --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdateazureservicebus.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .azureservicebusconfig import AzureServiceBusConfig, AzureServiceBusConfigTypedDict +from .azureservicebuscredentials import ( + AzureServiceBusCredentials, + AzureServiceBusCredentialsTypedDict, +) +from .topics_union import TopicsUnion, TopicsUnionTypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DestinationUpdateAzureServiceBusTypedDict(TypedDict): + topics: NotRequired[TopicsUnionTypedDict] + r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: NotRequired[AzureServiceBusConfigTypedDict] + credentials: NotRequired[AzureServiceBusCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" + + +class DestinationUpdateAzureServiceBus(BaseModel): + topics: Optional[TopicsUnion] = None + r"""\"*\" or an array of enabled topics.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + config: Optional[AzureServiceBusConfig] = None + + credentials: Optional[AzureServiceBusCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdategcppubsub.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdategcppubsub.py new file mode 100644 index 000000000..a56bb0872 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdategcppubsub.py @@ -0,0 +1,94 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .gcppubsubconfig import GCPPubSubConfig, GCPPubSubConfigTypedDict +from .gcppubsubcredentials import GCPPubSubCredentials, GCPPubSubCredentialsTypedDict +from .topics_union import TopicsUnion, TopicsUnionTypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DestinationUpdateGCPPubSubTypedDict(TypedDict): + topics: NotRequired[TopicsUnionTypedDict] + r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: NotRequired[GCPPubSubConfigTypedDict] + credentials: NotRequired[GCPPubSubCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" + + +class DestinationUpdateGCPPubSub(BaseModel): + topics: Optional[TopicsUnion] = None + r"""\"*\" or an array of enabled topics.""" + + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + config: Optional[GCPPubSubConfig] = None + + credentials: Optional[GCPPubSubCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdatehookdeck.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdatehookdeck.py index 43fb9080f..52574c322 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdatehookdeck.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdatehookdeck.py @@ -3,22 +3,91 @@ from __future__ import annotations from .hookdeckcredentials import HookdeckCredentials, HookdeckCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict -from outpost_sdk.types import BaseModel -from typing import Any, Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationUpdateHookdeckTypedDict(TypedDict): topics: NotRequired[TopicsUnionTypedDict] r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[Any] credentials: NotRequired[HookdeckCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationUpdateHookdeck(BaseModel): topics: Optional[TopicsUnion] = None r"""\"*\" or an array of enabled topics.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[Any] = None credentials: Optional[HookdeckCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdaterabbitmq.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdaterabbitmq.py index 660c6d9b2..9549e5d9c 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdaterabbitmq.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdaterabbitmq.py @@ -4,22 +4,91 @@ from .rabbitmqconfig import RabbitMQConfig, RabbitMQConfigTypedDict from .rabbitmqcredentials import RabbitMQCredentials, RabbitMQCredentialsTypedDict from .topics_union import TopicsUnion, TopicsUnionTypedDict -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationUpdateRabbitMQTypedDict(TypedDict): topics: NotRequired[TopicsUnionTypedDict] r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[RabbitMQConfigTypedDict] credentials: NotRequired[RabbitMQCredentialsTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationUpdateRabbitMQ(BaseModel): topics: Optional[TopicsUnion] = None r"""\"*\" or an array of enabled topics.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[RabbitMQConfig] = None credentials: Optional[RabbitMQCredentials] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationupdatewebhook.py b/sdks/outpost-python/src/outpost_sdk/models/destinationupdatewebhook.py index d4056eb09..7d451420b 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationupdatewebhook.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationupdatewebhook.py @@ -7,22 +7,91 @@ WebhookCredentialsUpdate, WebhookCredentialsUpdateTypedDict, ) -from outpost_sdk.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationUpdateWebhookTypedDict(TypedDict): topics: NotRequired[TopicsUnionTypedDict] r"""\"*\" or an array of enabled topics.""" + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ config: NotRequired[WebhookConfigTypedDict] credentials: NotRequired[WebhookCredentialsUpdateTypedDict] + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" class DestinationUpdateWebhook(BaseModel): topics: Optional[TopicsUnion] = None r"""\"*\" or an array of enabled topics.""" + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + config: Optional[WebhookConfig] = None credentials: Optional[WebhookCredentialsUpdate] = None + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "topics", + "filter", + "config", + "credentials", + "delivery_metadata", + "metadata", + ] + ) + nullable_fields = set(["filter", "delivery_metadata", "metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/destinationwebhook.py b/sdks/outpost-python/src/outpost_sdk/models/destinationwebhook.py index 2788ca143..18d7fb6bf 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/destinationwebhook.py +++ b/sdks/outpost-python/src/outpost_sdk/models/destinationwebhook.py @@ -13,9 +13,10 @@ UNSET, UNSET_SENTINEL, ) +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class DestinationWebhookType(str, Enum): @@ -35,8 +36,21 @@ class DestinationWebhookTypedDict(TypedDict): r"""ISO Date when the destination was disabled, or null if enabled.""" created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" config: WebhookConfigTypedDict credentials: WebhookCredentialsTypedDict + filter_: NotRequired[Nullable[Dict[str, Any]]] + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + delivery_metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Static key-value pairs merged into event metadata on every delivery.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary contextual information stored with the destination.""" target: NotRequired[str] r"""A human-readable representation of the destination target (e.g., URL host). Read-only.""" target_url: NotRequired[Nullable[str]] @@ -59,10 +73,29 @@ class DestinationWebhook(BaseModel): created_at: datetime r"""ISO Date when the destination was created.""" + updated_at: datetime + r"""ISO Date when the destination was last updated.""" + config: WebhookConfig credentials: WebhookCredentials + filter_: Annotated[ + OptionalNullable[Dict[str, Any]], pydantic.Field(alias="filter") + ] = UNSET + r"""Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. + Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. + If null or empty, all events matching the topic filter will be delivered. + To remove an existing filter when updating a destination, set filter to an empty object `{}`. + + """ + + delivery_metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Static key-value pairs merged into event metadata on every delivery.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary contextual information stored with the destination.""" + target: Optional[str] = None r"""A human-readable representation of the destination target (e.g., URL host). Read-only.""" @@ -71,30 +104,29 @@ class DestinationWebhook(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["target", "target_url"] - nullable_fields = ["disabled_at", "target_url"] - null_default_fields = [] - + optional_fields = set( + ["filter", "delivery_metadata", "metadata", "target", "target_url"] + ) + nullable_fields = set( + ["filter", "disabled_at", "delivery_metadata", "metadata", "target_url"] + ) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/disabletenantdestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/disabletenantdestinationop.py index 393e54bdc..bbe7f77e5 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/disabletenantdestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/disabletenantdestinationop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class DisableTenantDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class DisableTenantDestinationRequestTypedDict(TypedDict): destination_id: str @@ -36,3 +53,19 @@ class DisableTenantDestinationRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/enabletenantdestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/enabletenantdestinationop.py index 0187a6af4..fc673c203 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/enabletenantdestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/enabletenantdestinationop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class EnableTenantDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class EnableTenantDestinationRequestTypedDict(TypedDict): destination_id: str @@ -36,3 +53,19 @@ class EnableTenantDestinationRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/event.py b/sdks/outpost-python/src/outpost_sdk/models/event.py index 36689e88d..8990d0d93 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/event.py +++ b/sdks/outpost-python/src/outpost_sdk/models/event.py @@ -2,6 +2,7 @@ from __future__ import annotations from datetime import datetime +from enum import Enum from outpost_sdk.types import ( BaseModel, Nullable, @@ -14,6 +15,11 @@ from typing_extensions import NotRequired, TypedDict +class EventStatus(str, Enum): + SUCCESS = "success" + FAILED = "failed" + + class EventTypedDict(TypedDict): id: NotRequired[str] destination_id: NotRequired[str] @@ -22,8 +28,9 @@ class EventTypedDict(TypedDict): r"""Time the event was received/processed.""" successful_at: NotRequired[Nullable[datetime]] r"""Time the event was successfully delivered.""" - metadata: NotRequired[Dict[str, str]] + metadata: NotRequired[Nullable[Dict[str, str]]] r"""Key-value string pairs of metadata associated with the event.""" + status: NotRequired[EventStatus] data: NotRequired[Dict[str, Any]] r"""Freeform JSON data of the event.""" @@ -41,46 +48,46 @@ class Event(BaseModel): successful_at: OptionalNullable[datetime] = UNSET r"""Time the event was successfully delivered.""" - metadata: Optional[Dict[str, str]] = None + metadata: OptionalNullable[Dict[str, str]] = UNSET r"""Key-value string pairs of metadata associated with the event.""" + status: Optional[EventStatus] = None + data: Optional[Dict[str, Any]] = None r"""Freeform JSON data of the event.""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = [ - "id", - "destination_id", - "topic", - "time", - "successful_at", - "metadata", - "data", - ] - nullable_fields = ["successful_at"] - null_default_fields = [] - + optional_fields = set( + [ + "id", + "destination_id", + "topic", + "time", + "successful_at", + "metadata", + "status", + "data", + ] + ) + nullable_fields = set(["successful_at", "metadata"]) serialized = handler(self) - m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gcppubsubconfig.py b/sdks/outpost-python/src/outpost_sdk/models/gcppubsubconfig.py new file mode 100644 index 000000000..8c8e730db --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/gcppubsubconfig.py @@ -0,0 +1,43 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class GCPPubSubConfigTypedDict(TypedDict): + project_id: str + r"""The GCP project ID.""" + topic: str + r"""The Pub/Sub topic name.""" + endpoint: NotRequired[str] + r"""Optional. Custom endpoint URL (e.g., localhost:8085 for emulator).""" + + +class GCPPubSubConfig(BaseModel): + project_id: str + r"""The GCP project ID.""" + + topic: str + r"""The Pub/Sub topic name.""" + + endpoint: Optional[str] = None + r"""Optional. Custom endpoint URL (e.g., localhost:8085 for emulator).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["endpoint"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gcppubsubcredentials.py b/sdks/outpost-python/src/outpost_sdk/models/gcppubsubcredentials.py new file mode 100644 index 000000000..359c11107 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/gcppubsubcredentials.py @@ -0,0 +1,15 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from outpost_sdk.types import BaseModel +from typing_extensions import TypedDict + + +class GCPPubSubCredentialsTypedDict(TypedDict): + service_account_json: str + r"""Service account key JSON. The entire JSON key file content as a string.""" + + +class GCPPubSubCredentials(BaseModel): + service_account_json: str + r"""Service account key JSON. The entire JSON key file content as a string.""" diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationop.py index f9d96aa35..b4ab6df0e 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class GetTenantDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTenantDestinationRequestTypedDict(TypedDict): destination_id: str @@ -36,3 +53,19 @@ class GetTenantDestinationRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationtypeschemaop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationtypeschemaop.py index 536b7c514..74cb78d37 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationtypeschemaop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenantdestinationtypeschemaop.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,6 +19,22 @@ class GetTenantDestinationTypeSchemaGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTenantDestinationTypeSchemaType(str, Enum): r"""The type of the destination.""" @@ -49,3 +66,19 @@ class GetTenantDestinationTypeSchemaRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenanteventbydestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenanteventbydestinationop.py index 9e29dea42..5db825ba4 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenanteventbydestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenanteventbydestinationop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class GetTenantEventByDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTenantEventByDestinationRequestTypedDict(TypedDict): destination_id: str @@ -43,3 +60,19 @@ class GetTenantEventByDestinationRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenanteventop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenanteventop.py index ef29fd3f8..6ed94aacf 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenanteventop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenanteventop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class GetTenantEventGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTenantEventRequestTypedDict(TypedDict): event_id: str @@ -36,3 +53,19 @@ class GetTenantEventRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenantop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenantop.py index 24cde01d2..fa2fa4571 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenantop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenantop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class GetTenantGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTenantRequestTypedDict(TypedDict): tenant_id: NotRequired[str] @@ -29,3 +46,19 @@ class GetTenantRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenantportalurlop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenantportalurlop.py index a806f3aad..0ff178615 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenantportalurlop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenantportalurlop.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,6 +19,22 @@ class GetTenantPortalURLGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class Theme(str, Enum): r"""Optional theme preference for the portal.""" @@ -45,3 +62,19 @@ class GetTenantPortalURLRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Optional theme preference for the portal.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id", "theme"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/gettenanttokenop.py b/sdks/outpost-python/src/outpost_sdk/models/gettenanttokenop.py index c36a79a20..3da471e1d 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/gettenanttokenop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/gettenanttokenop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class GetTenantTokenGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class GetTenantTokenRequestTypedDict(TypedDict): tenant_id: NotRequired[str] @@ -29,3 +46,19 @@ class GetTenantTokenRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/healthcheckop.py b/sdks/outpost-python/src/outpost_sdk/models/healthcheckop.py new file mode 100644 index 000000000..954bf84ff --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/healthcheckop.py @@ -0,0 +1,44 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import datetime +from enum import Enum +from outpost_sdk.types import BaseModel +from typing import Dict +from typing_extensions import TypedDict + + +class HealthCheckStatus1(str, Enum): + HEALTHY = "healthy" + + +class HealthCheckStatus2(str, Enum): + HEALTHY = "healthy" + + +class WorkersTypedDict(TypedDict): + status: HealthCheckStatus2 + + +class Workers(BaseModel): + status: HealthCheckStatus2 + + +class HealthCheckResponseTypedDict(TypedDict): + r"""Service is healthy - all workers are operational.""" + + status: HealthCheckStatus1 + timestamp: datetime + r"""When this health check was performed""" + workers: Dict[str, WorkersTypedDict] + + +class HealthCheckResponse(BaseModel): + r"""Service is healthy - all workers are operational.""" + + status: HealthCheckStatus1 + + timestamp: datetime + r"""When this health check was performed""" + + workers: Dict[str, Workers] diff --git a/sdks/outpost-python/src/outpost_sdk/models/internal/globals.py b/sdks/outpost-python/src/outpost_sdk/models/internal/globals.py index df1054a55..f38e029fc 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/internal/globals.py +++ b/sdks/outpost-python/src/outpost_sdk/models/internal/globals.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,3 +17,19 @@ class Globals(BaseModel): Optional[str], FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationsop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationsop.py index 5746a0f1b..4f0fed59d 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationsop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationsop.py @@ -1,9 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from enum import Enum -from outpost_sdk.types import BaseModel +from .destinationtype import DestinationType +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer from typing import List, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -18,35 +19,31 @@ class ListTenantDestinationsGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} -class ListTenantDestinationsTypeEnum2(str, Enum): - WEBHOOK = "webhook" - AWS_SQS = "aws_sqs" - RABBITMQ = "rabbitmq" - HOOKDECK = "hookdeck" - AWS_KINESIS = "aws_kinesis" - AWS_S3 = "aws_s3" + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val -class ListTenantDestinationsTypeEnum1(str, Enum): - WEBHOOK = "webhook" - AWS_SQS = "aws_sqs" - RABBITMQ = "rabbitmq" - HOOKDECK = "hookdeck" - AWS_KINESIS = "aws_kinesis" - AWS_S3 = "aws_s3" + return m -TypeTypedDict = TypeAliasType( - "TypeTypedDict", - Union[ListTenantDestinationsTypeEnum1, List[ListTenantDestinationsTypeEnum2]], +ListTenantDestinationsTypeTypedDict = TypeAliasType( + "ListTenantDestinationsTypeTypedDict", Union[DestinationType, List[DestinationType]] ) r"""Filter destinations by type(s).""" -Type = TypeAliasType( - "Type", - Union[ListTenantDestinationsTypeEnum1, List[ListTenantDestinationsTypeEnum2]], +ListTenantDestinationsType = TypeAliasType( + "ListTenantDestinationsType", Union[DestinationType, List[DestinationType]] ) r"""Filter destinations by type(s).""" @@ -66,7 +63,7 @@ class ListTenantDestinationsTypeEnum1(str, Enum): class ListTenantDestinationsRequestTypedDict(TypedDict): tenant_id: NotRequired[str] r"""The ID of the tenant. Required when using AdminApiKey authentication.""" - type: NotRequired[TypeTypedDict] + type: NotRequired[ListTenantDestinationsTypeTypedDict] r"""Filter destinations by type(s).""" topics: NotRequired[ListTenantDestinationsTopicsTypedDict] r"""Filter destinations by supported topic(s).""" @@ -80,7 +77,7 @@ class ListTenantDestinationsRequest(BaseModel): r"""The ID of the tenant. Required when using AdminApiKey authentication.""" type: Annotated[ - Optional[Type], + Optional[ListTenantDestinationsType], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Filter destinations by type(s).""" @@ -90,3 +87,19 @@ class ListTenantDestinationsRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Filter destinations by supported topic(s).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id", "type", "topics"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationtypeschemasop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationtypeschemasop.py index 07427823e..79ac16559 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationtypeschemasop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenantdestinationtypeschemasop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class ListTenantDestinationTypeSchemasGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTenantDestinationTypeSchemasRequestTypedDict(TypedDict): tenant_id: NotRequired[str] @@ -29,3 +46,19 @@ class ListTenantDestinationTypeSchemasRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenanteventdeliveriesop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenanteventdeliveriesop.py index bc4539962..b39385b25 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/listtenanteventdeliveriesop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenanteventdeliveriesop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class ListTenantEventDeliveriesGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTenantEventDeliveriesRequestTypedDict(TypedDict): event_id: str @@ -36,3 +53,19 @@ class ListTenantEventDeliveriesRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsbydestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsbydestinationop.py index d69471bc2..d8218bac8 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsbydestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsbydestinationop.py @@ -4,9 +4,10 @@ from .event import Event, EventTypedDict from datetime import datetime from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Callable, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,22 @@ class ListTenantEventsByDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTenantEventsByDestinationStatus(str, Enum): r"""Filter events by delivery status.""" @@ -36,9 +53,9 @@ class ListTenantEventsByDestinationRequestTypedDict(TypedDict): r"""The ID of the tenant. Required when using AdminApiKey authentication.""" status: NotRequired[ListTenantEventsByDestinationStatus] r"""Filter events by delivery status.""" - next: NotRequired[str] + next_cursor: NotRequired[str] r"""Cursor for next page of results""" - prev: NotRequired[str] + prev_cursor: NotRequired[str] r"""Cursor for previous page of results""" limit: NotRequired[int] r"""Number of items per page (default 100, max 1000)""" @@ -66,14 +83,16 @@ class ListTenantEventsByDestinationRequest(BaseModel): ] = None r"""Filter events by delivery status.""" - next: Annotated[ + next_cursor: Annotated[ Optional[str], + pydantic.Field(alias="next"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Cursor for next page of results""" - prev: Annotated[ + prev_cursor: Annotated[ Optional[str], + pydantic.Field(alias="prev"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Cursor for previous page of results""" @@ -96,6 +115,32 @@ class ListTenantEventsByDestinationRequest(BaseModel): ] = None r"""End time filter (RFC3339 format)""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "tenant_id", + "status", + "next_cursor", + "prev_cursor", + "limit", + "start", + "end", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTenantEventsByDestinationResponseBodyTypedDict(TypedDict): r"""A paginated list of events for the destination.""" diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsop.py index 75f1c32e6..1f1190284 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenanteventsop.py @@ -4,9 +4,10 @@ from .event import Event, EventTypedDict from datetime import datetime from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Callable, List, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -21,6 +22,22 @@ class ListTenantEventsGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + DestinationIDTypedDict = TypeAliasType("DestinationIDTypedDict", Union[str, List[str]]) r"""Filter events by destination ID(s).""" @@ -44,9 +61,9 @@ class ListTenantEventsRequestTypedDict(TypedDict): r"""Filter events by destination ID(s).""" status: NotRequired[ListTenantEventsStatus] r"""Filter events by delivery status.""" - next: NotRequired[str] + next_cursor: NotRequired[str] r"""Cursor for next page of results""" - prev: NotRequired[str] + prev_cursor: NotRequired[str] r"""Cursor for previous page of results""" limit: NotRequired[int] r"""Number of items per page (default 100, max 1000)""" @@ -75,14 +92,16 @@ class ListTenantEventsRequest(BaseModel): ] = None r"""Filter events by delivery status.""" - next: Annotated[ + next_cursor: Annotated[ Optional[str], + pydantic.Field(alias="next"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Cursor for next page of results""" - prev: Annotated[ + prev_cursor: Annotated[ Optional[str], + pydantic.Field(alias="prev"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Cursor for previous page of results""" @@ -105,6 +124,33 @@ class ListTenantEventsRequest(BaseModel): ] = None r"""End time filter (RFC3339 format)""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "tenant_id", + "destination_id", + "status", + "next_cursor", + "prev_cursor", + "limit", + "start", + "end", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTenantEventsResponseBodyTypedDict(TypedDict): r"""A paginated list of events.""" diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenantsop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenantsop.py new file mode 100644 index 000000000..afee00ea9 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenantsop.py @@ -0,0 +1,72 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from outpost_sdk.utils import FieldMetadata, QueryParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class Order(str, Enum): + r"""Sort order by `created_at` timestamp.""" + + ASC = "asc" + DESC = "desc" + + +class ListTenantsRequestTypedDict(TypedDict): + limit: NotRequired[int] + r"""Number of tenants to return per page (1-100, default 20).""" + order: NotRequired[Order] + r"""Sort order by `created_at` timestamp.""" + next_cursor: NotRequired[str] + r"""Cursor for the next page of results. Mutually exclusive with `prev`.""" + prev_cursor: NotRequired[str] + r"""Cursor for the previous page of results. Mutually exclusive with `next`.""" + + +class ListTenantsRequest(BaseModel): + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 20 + r"""Number of tenants to return per page (1-100, default 20).""" + + order: Annotated[ + Optional[Order], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = Order.DESC + r"""Sort order by `created_at` timestamp.""" + + next_cursor: Annotated[ + Optional[str], + pydantic.Field(alias="next"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Cursor for the next page of results. Mutually exclusive with `prev`.""" + + prev_cursor: Annotated[ + Optional[str], + pydantic.Field(alias="prev"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Cursor for the previous page of results. Mutually exclusive with `next`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["limit", "order", "next_cursor", "prev_cursor"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/listtenanttopicsop.py b/sdks/outpost-python/src/outpost_sdk/models/listtenanttopicsop.py index 0c92ab3b5..3526a0d55 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/listtenanttopicsop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/listtenanttopicsop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class ListTenantTopicsGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class ListTenantTopicsRequestTypedDict(TypedDict): tenant_id: NotRequired[str] @@ -29,3 +46,19 @@ class ListTenantTopicsRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/portalredirect.py b/sdks/outpost-python/src/outpost_sdk/models/portalredirect.py index 295d5ea90..b51b4dccd 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/portalredirect.py +++ b/sdks/outpost-python/src/outpost_sdk/models/portalredirect.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -9,8 +10,29 @@ class PortalRedirectTypedDict(TypedDict): redirect_url: NotRequired[str] r"""Redirect URL containing a JWT to authenticate the user with the portal.""" + tenant_id: NotRequired[str] + r"""The ID of the tenant associated with this portal session.""" class PortalRedirect(BaseModel): redirect_url: Optional[str] = None r"""Redirect URL containing a JWT to authenticate the user with the portal.""" + + tenant_id: Optional[str] = None + r"""The ID of the tenant associated with this portal session.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["redirect_url", "tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/publishrequest.py b/sdks/outpost-python/src/outpost_sdk/models/publishrequest.py index b71b20dc3..289ed5e90 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/publishrequest.py +++ b/sdks/outpost-python/src/outpost_sdk/models/publishrequest.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Any, Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -44,3 +45,28 @@ class PublishRequest(BaseModel): metadata: Optional[Dict[str, str]] = None r"""Any key-value string pairs for metadata.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "tenant_id", + "destination_id", + "topic", + "eligible_for_retry", + "metadata", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/publishresponse.py b/sdks/outpost-python/src/outpost_sdk/models/publishresponse.py index ba6df06f1..f523133f6 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/publishresponse.py +++ b/sdks/outpost-python/src/outpost_sdk/models/publishresponse.py @@ -8,8 +8,13 @@ class PublishResponseTypedDict(TypedDict): id: str r"""The ID of the event that was accepted for publishing. This will be the ID provided in the request's `id` field if present, otherwise it's a server-generated UUID.""" + duplicate: bool + r"""Whether this event was already processed (idempotency hit). If true, the event was not queued again.""" class PublishResponse(BaseModel): id: str r"""The ID of the event that was accepted for publishing. This will be the ID provided in the request's `id` field if present, otherwise it's a server-generated UUID.""" + + duplicate: bool + r"""Whether this event was already processed (idempotency hit). If true, the event was not queued again.""" diff --git a/sdks/outpost-python/src/outpost_sdk/models/rabbitmqconfig.py b/sdks/outpost-python/src/outpost_sdk/models/rabbitmqconfig.py index 9d11ef690..1c7495d84 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/rabbitmqconfig.py +++ b/sdks/outpost-python/src/outpost_sdk/models/rabbitmqconfig.py @@ -2,7 +2,8 @@ from __future__ import annotations from enum import Enum -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -32,3 +33,19 @@ class RabbitMQConfig(BaseModel): tls: Optional[TLS] = None r"""Whether to use TLS connection (amqps). Defaults to \"false\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tls"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/retrytenanteventop.py b/sdks/outpost-python/src/outpost_sdk/models/retrytenanteventop.py index 0eb2b7118..9393cb06d 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/retrytenanteventop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/retrytenanteventop.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class RetryTenantEventGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class RetryTenantEventRequestTypedDict(TypedDict): destination_id: str @@ -43,3 +60,19 @@ class RetryTenantEventRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/security.py b/sdks/outpost-python/src/outpost_sdk/models/security.py index d07c07e52..328344730 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/security.py +++ b/sdks/outpost-python/src/outpost_sdk/models/security.py @@ -1,8 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, SecurityMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -36,3 +37,19 @@ class Security(BaseModel): ) ), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["AdminApiKey", "TenantJwt"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/successresponse.py b/sdks/outpost-python/src/outpost_sdk/models/successresponse.py index 2b5f5d11e..dc3d0c321 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/successresponse.py +++ b/sdks/outpost-python/src/outpost_sdk/models/successresponse.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -12,3 +13,19 @@ class SuccessResponseTypedDict(TypedDict): class SuccessResponse(BaseModel): success: Optional[bool] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["success"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/tenant.py b/sdks/outpost-python/src/outpost_sdk/models/tenant.py index 3288e7039..9f076c682 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/tenant.py +++ b/sdks/outpost-python/src/outpost_sdk/models/tenant.py @@ -2,8 +2,15 @@ from __future__ import annotations from datetime import datetime -from outpost_sdk.types import BaseModel -from typing import List, Optional +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import Dict, List, Optional from typing_extensions import NotRequired, TypedDict @@ -14,8 +21,12 @@ class TenantTypedDict(TypedDict): r"""Number of destinations associated with the tenant.""" topics: NotRequired[List[str]] r"""List of subscribed topics across all destinations for this tenant.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary key-value pairs for storing contextual information about the tenant.""" created_at: NotRequired[datetime] r"""ISO Date when the tenant was created.""" + updated_at: NotRequired[datetime] + r"""ISO Date when the tenant was last updated.""" class Tenant(BaseModel): @@ -28,5 +39,45 @@ class Tenant(BaseModel): topics: Optional[List[str]] = None r"""List of subscribed topics across all destinations for this tenant.""" + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary key-value pairs for storing contextual information about the tenant.""" + created_at: Optional[datetime] = None r"""ISO Date when the tenant was created.""" + + updated_at: Optional[datetime] = None + r"""ISO Date when the tenant was last updated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "destinations_count", + "topics", + "metadata", + "created_at", + "updated_at", + ] + ) + nullable_fields = set(["metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/tenantlistitem.py b/sdks/outpost-python/src/outpost_sdk/models/tenantlistitem.py new file mode 100644 index 000000000..bb3afa541 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/tenantlistitem.py @@ -0,0 +1,87 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from datetime import datetime +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import NotRequired, TypedDict + + +class TenantListItemTypedDict(TypedDict): + r"""Tenant object returned in list operations.""" + + id: NotRequired[str] + r"""User-defined system ID for the tenant.""" + destinations_count: NotRequired[int] + r"""Number of destinations associated with the tenant.""" + topics: NotRequired[List[str]] + r"""List of subscribed topics across all destinations for this tenant.""" + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Arbitrary key-value pairs for storing contextual information about the tenant.""" + created_at: NotRequired[datetime] + r"""ISO Date when the tenant was created.""" + updated_at: NotRequired[datetime] + r"""ISO Date when the tenant was last updated.""" + + +class TenantListItem(BaseModel): + r"""Tenant object returned in list operations.""" + + id: Optional[str] = None + r"""User-defined system ID for the tenant.""" + + destinations_count: Optional[int] = None + r"""Number of destinations associated with the tenant.""" + + topics: Optional[List[str]] = None + r"""List of subscribed topics across all destinations for this tenant.""" + + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Arbitrary key-value pairs for storing contextual information about the tenant.""" + + created_at: Optional[datetime] = None + r"""ISO Date when the tenant was created.""" + + updated_at: Optional[datetime] = None + r"""ISO Date when the tenant was last updated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "destinations_count", + "topics", + "metadata", + "created_at", + "updated_at", + ] + ) + nullable_fields = set(["metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/tenantlistresponse.py b/sdks/outpost-python/src/outpost_sdk/models/tenantlistresponse.py new file mode 100644 index 000000000..bd5038020 --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/tenantlistresponse.py @@ -0,0 +1,68 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .tenantlistitem import TenantListItem, TenantListItemTypedDict +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class TenantListResponseTypedDict(TypedDict): + r"""Paginated list of tenants.""" + + data: NotRequired[List[TenantListItemTypedDict]] + r"""Array of tenant objects.""" + next: NotRequired[Nullable[str]] + r"""Cursor for the next page of results. Null if no more results.""" + prev: NotRequired[Nullable[str]] + r"""Cursor for the previous page of results. Null if on first page.""" + count: NotRequired[int] + r"""Total count of all tenants.""" + + +class TenantListResponse(BaseModel): + r"""Paginated list of tenants.""" + + data: Optional[List[TenantListItem]] = None + r"""Array of tenant objects.""" + + next: OptionalNullable[str] = UNSET + r"""Cursor for the next page of results. Null if no more results.""" + + prev: OptionalNullable[str] = UNSET + r"""Cursor for the previous page of results. Null if on first page.""" + + count: Optional[int] = None + r"""Total count of all tenants.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["data", "next", "prev", "count"]) + nullable_fields = set(["next", "prev"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/tenanttoken.py b/sdks/outpost-python/src/outpost_sdk/models/tenanttoken.py index 500875433..b11906d8d 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/tenanttoken.py +++ b/sdks/outpost-python/src/outpost_sdk/models/tenanttoken.py @@ -1,7 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -9,8 +10,29 @@ class TenantTokenTypedDict(TypedDict): token: NotRequired[str] r"""JWT token scoped to the tenant for safe browser API calls.""" + tenant_id: NotRequired[str] + r"""The ID of the tenant this token is scoped to.""" class TenantToken(BaseModel): token: Optional[str] = None r"""JWT token scoped to the tenant for safe browser API calls.""" + + tenant_id: Optional[str] = None + r"""The ID of the tenant this token is scoped to.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["token", "tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/tenantupsert.py b/sdks/outpost-python/src/outpost_sdk/models/tenantupsert.py new file mode 100644 index 000000000..842dbeaaa --- /dev/null +++ b/sdks/outpost-python/src/outpost_sdk/models/tenantupsert.py @@ -0,0 +1,48 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from outpost_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from pydantic import model_serializer +from typing import Dict +from typing_extensions import NotRequired, TypedDict + + +class TenantUpsertTypedDict(TypedDict): + metadata: NotRequired[Nullable[Dict[str, str]]] + r"""Optional metadata to store with the tenant.""" + + +class TenantUpsert(BaseModel): + metadata: OptionalNullable[Dict[str, str]] = UNSET + r"""Optional metadata to store with the tenant.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["metadata"]) + nullable_fields = set(["metadata"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/updatetenantdestinationop.py b/sdks/outpost-python/src/outpost_sdk/models/updatetenantdestinationop.py index 0079bcb50..7382a36c7 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/updatetenantdestinationop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/updatetenantdestinationop.py @@ -3,8 +3,9 @@ from __future__ import annotations from .destination import Destination, DestinationTypedDict from .destinationupdate import DestinationUpdate, DestinationUpdateTypedDict -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL from outpost_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -19,11 +20,27 @@ class UpdateTenantDestinationGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpdateTenantDestinationRequestTypedDict(TypedDict): destination_id: str r"""The ID of the destination.""" - destination_update: DestinationUpdateTypedDict + params: DestinationUpdateTypedDict tenant_id: NotRequired[str] r"""The ID of the tenant. Required when using AdminApiKey authentication.""" @@ -34,7 +51,7 @@ class UpdateTenantDestinationRequest(BaseModel): ] r"""The ID of the destination.""" - destination_update: Annotated[ + params: Annotated[ DestinationUpdate, FieldMetadata(request=RequestMetadata(media_type="application/json")), ] @@ -45,6 +62,22 @@ class UpdateTenantDestinationRequest(BaseModel): ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + UpdateTenantDestinationResponseTypedDict = DestinationTypedDict r"""Destination updated successfully or OAuth redirect needed.""" diff --git a/sdks/outpost-python/src/outpost_sdk/models/upserttenantop.py b/sdks/outpost-python/src/outpost_sdk/models/upserttenantop.py index 611283dac..a65ccc4d3 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/upserttenantop.py +++ b/sdks/outpost-python/src/outpost_sdk/models/upserttenantop.py @@ -1,8 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel -from outpost_sdk.utils import FieldMetadata, PathParamMetadata +from .tenantupsert import TenantUpsert, TenantUpsertTypedDict +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from outpost_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,10 +19,28 @@ class UpsertTenantGlobals(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + class UpsertTenantRequestTypedDict(TypedDict): tenant_id: NotRequired[str] r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + params: NotRequired[TenantUpsertTypedDict] + r"""Optional tenant metadata""" class UpsertTenantRequest(BaseModel): @@ -29,3 +49,25 @@ class UpsertTenantRequest(BaseModel): FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] = None r"""The ID of the tenant. Required when using AdminApiKey authentication.""" + + params: Annotated[ + Optional[TenantUpsert], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + r"""Optional tenant metadata""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tenant_id", "params"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/webhookconfig.py b/sdks/outpost-python/src/outpost_sdk/models/webhookconfig.py index 9ddc1b4f9..9da323289 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/webhookconfig.py +++ b/sdks/outpost-python/src/outpost_sdk/models/webhookconfig.py @@ -1,15 +1,38 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from outpost_sdk.types import BaseModel -from typing_extensions import TypedDict +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict class WebhookConfigTypedDict(TypedDict): url: str r"""The URL to send the webhook events to.""" + custom_headers: NotRequired[str] + r"""JSON string of custom HTTP headers to include with every webhook request. Header names must be valid HTTP header tokens (alphanumeric, hyphens, underscores). Reserved headers (Content-Type, Host, etc.) cannot be overridden.""" class WebhookConfig(BaseModel): url: str r"""The URL to send the webhook events to.""" + + custom_headers: Optional[str] = None + r"""JSON string of custom HTTP headers to include with every webhook request. Header names must be valid HTTP header tokens (alphanumeric, hyphens, underscores). Reserved headers (Content-Type, Host, etc.) cannot be overridden.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["custom_headers"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/webhookcredentials.py b/sdks/outpost-python/src/outpost_sdk/models/webhookcredentials.py index f7783c1c2..f4b9e2dd1 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/webhookcredentials.py +++ b/sdks/outpost-python/src/outpost_sdk/models/webhookcredentials.py @@ -2,7 +2,8 @@ from __future__ import annotations from datetime import datetime -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -25,3 +26,21 @@ class WebhookCredentials(BaseModel): previous_secret_invalid_at: Optional[datetime] = None r"""ISO timestamp when the previous secret becomes invalid. Read-only.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["secret", "previous_secret", "previous_secret_invalid_at"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/models/webhookcredentialsupdate.py b/sdks/outpost-python/src/outpost_sdk/models/webhookcredentialsupdate.py index d5d320eb7..89b3e3f4f 100644 --- a/sdks/outpost-python/src/outpost_sdk/models/webhookcredentialsupdate.py +++ b/sdks/outpost-python/src/outpost_sdk/models/webhookcredentialsupdate.py @@ -2,7 +2,8 @@ from __future__ import annotations from datetime import datetime -from outpost_sdk.types import BaseModel +from outpost_sdk.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -30,3 +31,21 @@ class WebhookCredentialsUpdate(BaseModel): rotate_secret: Optional[bool] = None r"""Set to true to rotate the secret. The current secret becomes the previous_secret, and a new secret is generated. `previous_secret_invalid_at` defaults to 24h if not provided.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["secret", "previous_secret", "previous_secret_invalid_at", "rotate_secret"] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/sdks/outpost-python/src/outpost_sdk/publish.py b/sdks/outpost-python/src/outpost_sdk/publish.py index 28e2aa6b2..34ae85714 100644 --- a/sdks/outpost-python/src/outpost_sdk/publish.py +++ b/sdks/outpost-python/src/outpost_sdk/publish.py @@ -78,6 +78,7 @@ def event( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.PublishRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -94,7 +95,7 @@ def event( config=self.sdk_configuration, base_url=base_url or "", operation_id="publishEvent", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, @@ -254,6 +255,7 @@ async def event_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.PublishRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -270,7 +272,7 @@ async def event_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="publishEvent", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, diff --git a/sdks/outpost-python/src/outpost_sdk/schemas.py b/sdks/outpost-python/src/outpost_sdk/schemas.py index fb584040e..b8f7a8d5e 100644 --- a/sdks/outpost-python/src/outpost_sdk/schemas.py +++ b/sdks/outpost-python/src/outpost_sdk/schemas.py @@ -46,7 +46,7 @@ def list_tenant_destination_types( req = self._build_request( method="GET", - path="/{tenant_id}/destination-types", + path="/tenants/{tenant_id}/destination-types", base_url=base_url, url_variables=url_variables, request=request, @@ -60,6 +60,7 @@ def list_tenant_destination_types( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -76,86 +77,16 @@ def list_tenant_destination_types( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantDestinationTypeSchemas", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[models.DestinationTypeSchema], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -200,7 +131,7 @@ async def list_tenant_destination_types_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/destination-types", + path="/tenants/{tenant_id}/destination-types", base_url=base_url, url_variables=url_variables, request=request, @@ -214,6 +145,7 @@ async def list_tenant_destination_types_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -230,86 +162,16 @@ async def list_tenant_destination_types_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantDestinationTypeSchemas", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[models.DestinationTypeSchema], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -357,7 +219,7 @@ def get( req = self._build_request( method="GET", - path="/{tenant_id}/destination-types/{type}", + path="/tenants/{tenant_id}/destination-types/{type}", base_url=base_url, url_variables=url_variables, request=request, @@ -371,6 +233,7 @@ def get( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -387,86 +250,16 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantDestinationTypeSchema", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DestinationTypeSchema, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -514,7 +307,7 @@ async def get_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/destination-types/{type}", + path="/tenants/{tenant_id}/destination-types/{type}", base_url=base_url, url_variables=url_variables, request=request, @@ -528,6 +321,7 @@ async def get_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -544,86 +338,16 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantDestinationTypeSchema", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DestinationTypeSchema, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -672,6 +396,7 @@ def list_destination_types_jwt( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -688,7 +413,7 @@ def list_destination_types_jwt( config=self.sdk_configuration, base_url=base_url or "", operation_id="listDestinationTypeSchemasJwt", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, @@ -819,6 +544,7 @@ async def list_destination_types_jwt_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -835,7 +561,7 @@ async def list_destination_types_jwt_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listDestinationTypeSchemasJwt", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, @@ -973,6 +699,7 @@ def get_destination_type_jwt( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -989,7 +716,7 @@ def get_destination_type_jwt( config=self.sdk_configuration, base_url=base_url or "", operation_id="getDestinationTypeSchema", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, @@ -1124,6 +851,7 @@ async def get_destination_type_jwt_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1140,7 +868,7 @@ async def get_destination_type_jwt_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getDestinationTypeSchema", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, diff --git a/sdks/outpost-python/src/outpost_sdk/sdk.py b/sdks/outpost-python/src/outpost_sdk/sdk.py index a6ad06021..3a8aad529 100644 --- a/sdks/outpost-python/src/outpost_sdk/sdk.py +++ b/sdks/outpost-python/src/outpost_sdk/sdk.py @@ -109,7 +109,7 @@ def __init__( """ client_supplied = True if client is None: - client = httpx.Client() + client = httpx.Client(follow_redirects=True) client_supplied = False assert issubclass( @@ -118,7 +118,7 @@ def __init__( async_client_supplied = True if async_client is None: - async_client = httpx.AsyncClient() + async_client = httpx.AsyncClient(follow_redirects=True) async_client_supplied = False if debug_logger is None: diff --git a/sdks/outpost-python/src/outpost_sdk/tenants.py b/sdks/outpost-python/src/outpost_sdk/tenants.py index d965f2332..888e37853 100644 --- a/sdks/outpost-python/src/outpost_sdk/tenants.py +++ b/sdks/outpost-python/src/outpost_sdk/tenants.py @@ -5,7 +5,7 @@ from outpost_sdk._hooks import HookContext from outpost_sdk.types import OptionalNullable, UNSET from outpost_sdk.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional +from typing import Any, Mapping, Optional, Union class Tenants(BaseSDK): @@ -15,10 +15,231 @@ class Tenants(BaseSDK): """ + def list_tenants( + self, + *, + limit: Optional[int] = 20, + order: Optional[models.Order] = models.Order.DESC, + next_cursor: Optional[str] = None, + prev_cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.TenantListResponse: + r"""List Tenants + + List all tenants with cursor-based pagination. + + **Requirements:** This endpoint requires Redis with RediSearch module (e.g., `redis/redis-stack-server`). + If RediSearch is not available, this endpoint returns `501 Not Implemented`. + + The response includes lightweight tenant objects without computed fields like `destinations_count` and `topics`. + Use `GET /tenants/{tenant_id}` to retrieve full tenant details including these fields. + + + :param limit: Number of tenants to return per page (1-100, default 20). + :param order: Sort order by `created_at` timestamp. + :param next_cursor: Cursor for the next page of results. Mutually exclusive with `prev`. + :param prev_cursor: Cursor for the previous page of results. Mutually exclusive with `next`. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.ListTenantsRequest( + limit=limit, + order=order, + next_cursor=next_cursor, + prev_cursor=prev_cursor, + ) + + req = self._build_request( + method="GET", + path="/tenants", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listTenants", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "401", "4XX", "501", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.TenantListResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.ListTenantsBadRequestErrorData, http_res + ) + raise errors.ListTenantsBadRequestError(response_data, http_res) + if utils.match_response(http_res, "501", "application/json"): + response_data = unmarshal_json_response( + errors.NotImplementedErrorTData, http_res + ) + raise errors.NotImplementedErrorT(response_data, http_res) + if utils.match_response(http_res, ["401", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + + async def list_tenants_async( + self, + *, + limit: Optional[int] = 20, + order: Optional[models.Order] = models.Order.DESC, + next_cursor: Optional[str] = None, + prev_cursor: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.TenantListResponse: + r"""List Tenants + + List all tenants with cursor-based pagination. + + **Requirements:** This endpoint requires Redis with RediSearch module (e.g., `redis/redis-stack-server`). + If RediSearch is not available, this endpoint returns `501 Not Implemented`. + + The response includes lightweight tenant objects without computed fields like `destinations_count` and `topics`. + Use `GET /tenants/{tenant_id}` to retrieve full tenant details including these fields. + + + :param limit: Number of tenants to return per page (1-100, default 20). + :param order: Sort order by `created_at` timestamp. + :param next_cursor: Cursor for the next page of results. Mutually exclusive with `prev`. + :param prev_cursor: Cursor for the previous page of results. Mutually exclusive with `next`. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.ListTenantsRequest( + limit=limit, + order=order, + next_cursor=next_cursor, + prev_cursor=prev_cursor, + ) + + req = self._build_request_async( + method="GET", + path="/tenants", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listTenants", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "401", "4XX", "501", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.TenantListResponse, http_res) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + errors.ListTenantsBadRequestErrorData, http_res + ) + raise errors.ListTenantsBadRequestError(response_data, http_res) + if utils.match_response(http_res, "501", "application/json"): + response_data = unmarshal_json_response( + errors.NotImplementedErrorTData, http_res + ) + raise errors.NotImplementedErrorT(response_data, http_res) + if utils.match_response(http_res, ["401", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.APIError("API error occurred", http_res, http_res_text) + + raise errors.APIError("Unexpected response received", http_res) + def upsert( self, *, tenant_id: Optional[str] = None, + params: Optional[ + Union[models.TenantUpsert, models.TenantUpsertTypedDict] + ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -29,6 +250,7 @@ def upsert( Idempotently creates or updates a tenant. Required before associating destinations. :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. + :param params: Optional tenant metadata :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -46,11 +268,12 @@ def upsert( request = models.UpsertTenantRequest( tenant_id=tenant_id, + params=utils.get_pydantic_model(params, Optional[models.TenantUpsert]), ) req = self._build_request( method="PUT", - path="/{tenant_id}", + path="/tenants/{tenant_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -64,6 +287,10 @@ def upsert( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.params, False, True, "json", Optional[models.TenantUpsert] + ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -80,89 +307,16 @@ def upsert( config=self.sdk_configuration, base_url=base_url or "", operation_id="upsertTenant", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, ["200", "201"], "application/json"): return unmarshal_json_response(models.Tenant, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -176,6 +330,9 @@ async def upsert_async( self, *, tenant_id: Optional[str] = None, + params: Optional[ + Union[models.TenantUpsert, models.TenantUpsertTypedDict] + ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -186,6 +343,7 @@ async def upsert_async( Idempotently creates or updates a tenant. Required before associating destinations. :param tenant_id: The ID of the tenant. Required when using AdminApiKey authentication. + :param params: Optional tenant metadata :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -203,11 +361,12 @@ async def upsert_async( request = models.UpsertTenantRequest( tenant_id=tenant_id, + params=utils.get_pydantic_model(params, Optional[models.TenantUpsert]), ) req = self._build_request_async( method="PUT", - path="/{tenant_id}", + path="/tenants/{tenant_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -221,6 +380,10 @@ async def upsert_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.params, False, True, "json", Optional[models.TenantUpsert] + ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -237,89 +400,16 @@ async def upsert_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="upsertTenant", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, ["200", "201"], "application/json"): return unmarshal_json_response(models.Tenant, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -364,7 +454,7 @@ def get( req = self._build_request( method="GET", - path="/{tenant_id}", + path="/tenants/{tenant_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -378,6 +468,7 @@ def get( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -394,86 +485,16 @@ def get( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenant", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Tenant, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -518,7 +539,7 @@ async def get_async( req = self._build_request_async( method="GET", - path="/{tenant_id}", + path="/tenants/{tenant_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -532,6 +553,7 @@ async def get_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -548,86 +570,16 @@ async def get_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenant", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Tenant, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -672,7 +624,7 @@ def delete( req = self._build_request( method="DELETE", - path="/{tenant_id}", + path="/tenants/{tenant_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -686,6 +638,7 @@ def delete( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -702,86 +655,16 @@ def delete( config=self.sdk_configuration, base_url=base_url or "", operation_id="deleteTenant", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.SuccessResponse, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -826,7 +709,7 @@ async def delete_async( req = self._build_request_async( method="DELETE", - path="/{tenant_id}", + path="/tenants/{tenant_id}", base_url=base_url, url_variables=url_variables, request=request, @@ -840,6 +723,7 @@ async def delete_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -856,86 +740,16 @@ async def delete_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="deleteTenant", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.SuccessResponse, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -983,7 +797,7 @@ def get_portal_url( req = self._build_request( method="GET", - path="/{tenant_id}/portal", + path="/tenants/{tenant_id}/portal", base_url=base_url, url_variables=url_variables, request=request, @@ -997,6 +811,7 @@ def get_portal_url( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1013,86 +828,16 @@ def get_portal_url( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantPortalUrl", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.PortalRedirect, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1140,7 +885,7 @@ async def get_portal_url_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/portal", + path="/tenants/{tenant_id}/portal", base_url=base_url, url_variables=url_variables, request=request, @@ -1154,6 +899,7 @@ async def get_portal_url_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1170,86 +916,16 @@ async def get_portal_url_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantPortalUrl", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.PortalRedirect, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1294,7 +970,7 @@ def get_token( req = self._build_request( method="GET", - path="/{tenant_id}/token", + path="/tenants/{tenant_id}/token", base_url=base_url, url_variables=url_variables, request=request, @@ -1308,6 +984,7 @@ def get_token( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1324,86 +1001,16 @@ def get_token( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantToken", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.TenantToken, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -1448,7 +1055,7 @@ async def get_token_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/token", + path="/tenants/{tenant_id}/token", base_url=base_url, url_variables=url_variables, request=request, @@ -1462,6 +1069,7 @@ async def get_token_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1478,86 +1086,16 @@ async def get_token_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="getTenantToken", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.TenantToken, http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) diff --git a/sdks/outpost-python/src/outpost_sdk/topics_sdk.py b/sdks/outpost-python/src/outpost_sdk/topics_sdk.py index 149975b8b..6fc6f59c2 100644 --- a/sdks/outpost-python/src/outpost_sdk/topics_sdk.py +++ b/sdks/outpost-python/src/outpost_sdk/topics_sdk.py @@ -46,7 +46,7 @@ def list( req = self._build_request( method="GET", - path="/{tenant_id}/topics", + path="/tenants/{tenant_id}/topics", base_url=base_url, url_variables=url_variables, request=request, @@ -60,6 +60,7 @@ def list( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -76,86 +77,16 @@ def list( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantTopics", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[str], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -200,7 +131,7 @@ async def list_async( req = self._build_request_async( method="GET", - path="/{tenant_id}/topics", + path="/tenants/{tenant_id}/topics", base_url=base_url, url_variables=url_variables, request=request, @@ -214,6 +145,7 @@ async def list_async( tenant_id=self.sdk_configuration.globals.tenant_id, ), security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -230,86 +162,16 @@ async def list_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTenantTopics", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=[ - "400", - "401", - "403", - "404", - "407", - "408", - "413", - "414", - "415", - "422", - "429", - "431", - "4XX", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "510", - "511", - "5XX", - ], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(List[str], http_res) - if utils.match_response(http_res, ["401", "403", "407"], "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, "429", "application/json"): - response_data = unmarshal_json_response( - errors.RateLimitedErrorData, http_res - ) - raise errors.RateLimitedError(response_data, http_res) - if utils.match_response( - http_res, ["400", "413", "414", "415", "422", "431"], "application/json" - ): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "504", "application/json"): - response_data = unmarshal_json_response(errors.TimeoutErrorTData, http_res) - raise errors.TimeoutErrorT(response_data, http_res) - if utils.match_response(http_res, ["501", "505"], "application/json"): - response_data = unmarshal_json_response(errors.NotFoundErrorData, http_res) - raise errors.NotFoundError(response_data, http_res) - if utils.match_response( - http_res, ["500", "502", "503", "506", "507", "508"], "application/json" - ): - response_data = unmarshal_json_response( - errors.InternalServerErrorData, http_res - ) - raise errors.InternalServerError(response_data, http_res) - if utils.match_response(http_res, "510", "application/json"): - response_data = unmarshal_json_response( - errors.BadRequestErrorData, http_res - ) - raise errors.BadRequestError(response_data, http_res) - if utils.match_response(http_res, "511", "application/json"): - response_data = unmarshal_json_response( - errors.UnauthorizedErrorData, http_res - ) - raise errors.UnauthorizedError(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.APIError("API error occurred", http_res, http_res_text) @@ -358,6 +220,7 @@ def list_jwt( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -374,7 +237,7 @@ def list_jwt( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTopics", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, @@ -505,6 +368,7 @@ async def list_jwt_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -521,7 +385,7 @@ async def list_jwt_async( config=self.sdk_configuration, base_url=base_url or "", operation_id="listTopics", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, diff --git a/sdks/outpost-python/src/outpost_sdk/types/basemodel.py b/sdks/outpost-python/src/outpost_sdk/types/basemodel.py index 231c2e372..a9a640a1a 100644 --- a/sdks/outpost-python/src/outpost_sdk/types/basemodel.py +++ b/sdks/outpost-python/src/outpost_sdk/types/basemodel.py @@ -2,7 +2,8 @@ from pydantic import ConfigDict, model_serializer from pydantic import BaseModel as PydanticBaseModel -from typing import TYPE_CHECKING, Literal, Optional, TypeVar, Union +from pydantic_core import core_schema +from typing import TYPE_CHECKING, Any, Literal, Optional, TypeVar, Union from typing_extensions import TypeAliasType, TypeAlias @@ -35,5 +36,42 @@ def __bool__(self) -> Literal[False]: "OptionalNullable", Union[Optional[Nullable[T]], Unset], type_params=(T,) ) -UnrecognizedInt: TypeAlias = int -UnrecognizedStr: TypeAlias = str + +class UnrecognizedStr(str): + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Any) -> core_schema.CoreSchema: + # Make UnrecognizedStr only work in lax mode, not strict mode + # This makes it a "fallback" option when more specific types (like Literals) don't match + def validate_lax(v: Any) -> 'UnrecognizedStr': + if isinstance(v, cls): + return v + return cls(str(v)) + + # Use lax_or_strict_schema where strict always fails + # This forces Pydantic to prefer other union members in strict mode + # and only fall back to UnrecognizedStr in lax mode + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema([ + core_schema.str_schema(), + core_schema.no_info_plain_validator_function(validate_lax) + ]), + strict_schema=core_schema.none_schema(), # Always fails in strict mode + ) + + +class UnrecognizedInt(int): + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Any) -> core_schema.CoreSchema: + # Make UnrecognizedInt only work in lax mode, not strict mode + # This makes it a "fallback" option when more specific types (like Literals) don't match + def validate_lax(v: Any) -> 'UnrecognizedInt': + if isinstance(v, cls): + return v + return cls(int(v)) + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema([ + core_schema.int_schema(), + core_schema.no_info_plain_validator_function(validate_lax) + ]), + strict_schema=core_schema.none_schema(), # Always fails in strict mode + ) diff --git a/sdks/outpost-python/src/outpost_sdk/utils/__init__.py b/sdks/outpost-python/src/outpost_sdk/utils/__init__.py index 56164cf3a..c906e1e01 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/__init__.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/__init__.py @@ -1,10 +1,22 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Callable, TypeVar from importlib import import_module +import asyncio import builtins import sys +_T = TypeVar("_T") + + +async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: + """Run a synchronous function in a thread pool to avoid blocking the event loop.""" + if sys.version_info >= (3, 9): + return await asyncio.to_thread(func, *args) + loop = asyncio.get_event_loop() + return await loop.run_in_executor(None, func, *args) + + if TYPE_CHECKING: from .annotations import get_discriminator from .datetimes import parse_datetime @@ -41,7 +53,6 @@ validate_decimal, validate_float, validate_int, - validate_open_enum, ) from .url import generate_url, template_url, remove_suffix from .values import ( @@ -102,7 +113,6 @@ "validate_const", "validate_float", "validate_int", - "validate_open_enum", "cast_partial", ] @@ -155,7 +165,6 @@ "validate_const": ".serializers", "validate_float": ".serializers", "validate_int": ".serializers", - "validate_open_enum": ".serializers", "cast_partial": ".values", } diff --git a/sdks/outpost-python/src/outpost_sdk/utils/annotations.py b/sdks/outpost-python/src/outpost_sdk/utils/annotations.py index 387874edd..12e0aa4f1 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/annotations.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/annotations.py @@ -3,6 +3,7 @@ from enum import Enum from typing import Any, Optional + def get_discriminator(model: Any, fieldname: str, key: str) -> str: """ Recursively search for the discriminator attribute in a model. @@ -25,31 +26,54 @@ def get_field_discriminator(field: Any) -> Optional[str]: if isinstance(field, dict): if key in field: - return f'{field[key]}' + return f"{field[key]}" if hasattr(field, fieldname): attr = getattr(field, fieldname) if isinstance(attr, Enum): - return f'{attr.value}' - return f'{attr}' + return f"{attr.value}" + return f"{attr}" if hasattr(field, upper_fieldname): attr = getattr(field, upper_fieldname) if isinstance(attr, Enum): - return f'{attr.value}' - return f'{attr}' + return f"{attr.value}" + return f"{attr}" return None + def search_nested_discriminator(obj: Any) -> Optional[str]: + """Recursively search for discriminator in nested structures.""" + # First try direct field lookup + discriminator = get_field_discriminator(obj) + if discriminator is not None: + return discriminator + + # If it's a dict, search in nested values + if isinstance(obj, dict): + for value in obj.values(): + if isinstance(value, list): + # Search in list items + for item in value: + nested_discriminator = search_nested_discriminator(item) + if nested_discriminator is not None: + return nested_discriminator + elif isinstance(value, dict): + # Search in nested dict + nested_discriminator = search_nested_discriminator(value) + if nested_discriminator is not None: + return nested_discriminator + + return None if isinstance(model, list): for field in model: - discriminator = get_field_discriminator(field) + discriminator = search_nested_discriminator(field) if discriminator is not None: return discriminator - discriminator = get_field_discriminator(model) + discriminator = search_nested_discriminator(model) if discriminator is not None: return discriminator - raise ValueError(f'Could not find discriminator field {fieldname} in {model}') + raise ValueError(f"Could not find discriminator field {fieldname} in {model}") diff --git a/sdks/outpost-python/src/outpost_sdk/utils/enums.py b/sdks/outpost-python/src/outpost_sdk/utils/enums.py index c3bc13cfc..3324e1bc2 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/enums.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/enums.py @@ -2,6 +2,10 @@ import enum import sys +from typing import Any + +from pydantic_core import core_schema + class OpenEnumMeta(enum.EnumMeta): # The __call__ method `boundary` kwarg was added in 3.11 and must be present @@ -72,3 +76,59 @@ def __call__( ) except ValueError: return value + + def __new__(mcs, name, bases, namespace, **kwargs): + cls = super().__new__(mcs, name, bases, namespace, **kwargs) + + # Add __get_pydantic_core_schema__ to make open enums work correctly + # in union discrimination. In strict mode (used by Pydantic for unions), + # only known enum values match. In lax mode, unknown values are accepted. + def __get_pydantic_core_schema__( + cls_inner: Any, _source_type: Any, _handler: Any + ) -> core_schema.CoreSchema: + # Create a validator that only accepts known enum values (for strict mode) + def validate_strict(v: Any) -> Any: + if isinstance(v, cls_inner): + return v + # Use the parent EnumMeta's __call__ which raises ValueError for unknown values + return enum.EnumMeta.__call__(cls_inner, v) + + # Create a lax validator that accepts unknown values + def validate_lax(v: Any) -> Any: + if isinstance(v, cls_inner): + return v + try: + return enum.EnumMeta.__call__(cls_inner, v) + except ValueError: + # Return the raw value for unknown enum values + return v + + # Determine the base type schema (str or int) + is_int_enum = False + for base in cls_inner.__mro__: + if base is int: + is_int_enum = True + break + if base is str: + break + + base_schema = ( + core_schema.int_schema() + if is_int_enum + else core_schema.str_schema() + ) + + # Use lax_or_strict_schema: + # - strict mode: only known enum values match (raises ValueError for unknown) + # - lax mode: accept any value, return enum member or raw value + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema( + [base_schema, core_schema.no_info_plain_validator_function(validate_lax)] + ), + strict_schema=core_schema.chain_schema( + [base_schema, core_schema.no_info_plain_validator_function(validate_strict)] + ), + ) + + setattr(cls, "__get_pydantic_core_schema__", classmethod(__get_pydantic_core_schema__)) + return cls diff --git a/sdks/outpost-python/src/outpost_sdk/utils/forms.py b/sdks/outpost-python/src/outpost_sdk/utils/forms.py index e873495f4..f961e76be 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/forms.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/forms.py @@ -142,16 +142,21 @@ def serialize_multipart_form( if field_metadata.file: if isinstance(val, List): # Handle array of files + array_field_name = f_name + "[]" for file_obj in val: if not _is_set(file_obj): continue - - file_name, content, content_type = _extract_file_properties(file_obj) + + file_name, content, content_type = _extract_file_properties( + file_obj + ) if content_type is not None: - files.append((f_name + "[]", (file_name, content, content_type))) + files.append( + (array_field_name, (file_name, content, content_type)) + ) else: - files.append((f_name + "[]", (file_name, content))) + files.append((array_field_name, (file_name, content))) else: # Handle single file file_name, content, content_type = _extract_file_properties(val) @@ -161,11 +166,16 @@ def serialize_multipart_form( else: files.append((f_name, (file_name, content))) elif field_metadata.json: - files.append((f_name, ( - None, - marshal_json(val, request_field_types[name]), - "application/json", - ))) + files.append( + ( + f_name, + ( + None, + marshal_json(val, request_field_types[name]), + "application/json", + ), + ) + ) else: if isinstance(val, List): values = [] @@ -175,7 +185,8 @@ def serialize_multipart_form( continue values.append(_val_to_string(value)) - form[f_name + "[]"] = values + array_field_name = f_name + "[]" + form[array_field_name] = values else: form[f_name] = _val_to_string(val) return media_type, form, files diff --git a/sdks/outpost-python/src/outpost_sdk/utils/queryparams.py b/sdks/outpost-python/src/outpost_sdk/utils/queryparams.py index 37a6e7f9a..c04e0db82 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/queryparams.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/queryparams.py @@ -27,12 +27,13 @@ def get_query_params( query_params: Any, gbls: Optional[Any] = None, + allow_empty_value: Optional[List[str]] = None, ) -> Dict[str, List[str]]: params: Dict[str, List[str]] = {} - globals_already_populated = _populate_query_params(query_params, gbls, params, []) + globals_already_populated = _populate_query_params(query_params, gbls, params, [], allow_empty_value) if _is_set(gbls): - _populate_query_params(gbls, None, params, globals_already_populated) + _populate_query_params(gbls, None, params, globals_already_populated, allow_empty_value) return params @@ -42,6 +43,7 @@ def _populate_query_params( gbls: Any, query_param_values: Dict[str, List[str]], skip_fields: List[str], + allow_empty_value: Optional[List[str]] = None, ) -> List[str]: globals_already_populated: List[str] = [] @@ -69,6 +71,16 @@ def _populate_query_params( globals_already_populated.append(name) f_name = field.alias if field.alias is not None else name + + allow_empty_set = set(allow_empty_value or []) + should_include_empty = f_name in allow_empty_set and ( + value is None or value == [] or value == "" + ) + + if should_include_empty: + query_param_values[f_name] = [""] + continue + serialization = metadata.serialization if serialization is not None: serialized_parms = _get_serialized_params( diff --git a/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py b/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py index d5240dd5f..1de32b6d2 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py @@ -44,15 +44,15 @@ def serialize_request_body( serialized_request_body = SerializedRequestBody(media_type) - if re.match(r"(application|text)\/.*?\+*json.*", media_type) is not None: + if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None: serialized_request_body.content = marshal_json(request_body, request_body_type) - elif re.match(r"multipart\/.*", media_type) is not None: + elif re.match(r"^multipart\/.*", media_type) is not None: ( serialized_request_body.media_type, serialized_request_body.data, serialized_request_body.files, ) = serialize_multipart_form(media_type, request_body) - elif re.match(r"application\/x-www-form-urlencoded.*", media_type) is not None: + elif re.match(r"^application\/x-www-form-urlencoded.*", media_type) is not None: serialized_request_body.data = serialize_form_data(request_body) elif isinstance(request_body, (bytes, bytearray, io.BytesIO, io.BufferedReader)): serialized_request_body.content = request_body diff --git a/sdks/outpost-python/src/outpost_sdk/utils/retries.py b/sdks/outpost-python/src/outpost_sdk/utils/retries.py index 4d6086716..88a91b10c 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/retries.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/retries.py @@ -3,7 +3,9 @@ import asyncio import random import time -from typing import List +from datetime import datetime +from email.utils import parsedate_to_datetime +from typing import List, Optional import httpx @@ -51,9 +53,11 @@ def __init__(self, config: RetryConfig, status_codes: List[str]): class TemporaryError(Exception): response: httpx.Response + retry_after: Optional[int] def __init__(self, response: httpx.Response): self.response = response + self.retry_after = _parse_retry_after_header(response) class PermanentError(Exception): @@ -63,6 +67,62 @@ def __init__(self, inner: Exception): self.inner = inner +def _parse_retry_after_header(response: httpx.Response) -> Optional[int]: + """Parse Retry-After header from response. + + Returns: + Retry interval in milliseconds, or None if header is missing or invalid. + """ + retry_after_header = response.headers.get("retry-after") + if not retry_after_header: + return None + + try: + seconds = float(retry_after_header) + return round(seconds * 1000) + except ValueError: + pass + + try: + retry_date = parsedate_to_datetime(retry_after_header) + delta = (retry_date - datetime.now(retry_date.tzinfo)).total_seconds() + return round(max(0, delta) * 1000) + except (ValueError, TypeError): + pass + + return None + + +def _get_sleep_interval( + exception: Exception, + initial_interval: int, + max_interval: int, + exponent: float, + retries: int, +) -> float: + """Get sleep interval for retry with exponential backoff. + + Args: + exception: The exception that triggered the retry. + initial_interval: Initial retry interval in milliseconds. + max_interval: Maximum retry interval in milliseconds. + exponent: Base for exponential backoff calculation. + retries: Current retry attempt count. + + Returns: + Sleep interval in seconds. + """ + if ( + isinstance(exception, TemporaryError) + and exception.retry_after is not None + and exception.retry_after > 0 + ): + return exception.retry_after / 1000 + + sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) + return min(sleep, max_interval / 1000) + + def retry(func, retries: Retries): if retries.config.strategy == "backoff": @@ -183,8 +243,10 @@ def retry_with_backoff( return exception.response raise - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) - sleep = min(sleep, max_interval / 1000) + + sleep = _get_sleep_interval( + exception, initial_interval, max_interval, exponent, retries + ) time.sleep(sleep) retries += 1 @@ -211,7 +273,9 @@ async def retry_with_backoff_async( return exception.response raise - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) - sleep = min(sleep, max_interval / 1000) + + sleep = _get_sleep_interval( + exception, initial_interval, max_interval, exponent, retries + ) await asyncio.sleep(sleep) retries += 1 diff --git a/sdks/outpost-python/src/outpost_sdk/utils/serializers.py b/sdks/outpost-python/src/outpost_sdk/utils/serializers.py index 378a14c0f..14321eb47 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/serializers.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/serializers.py @@ -102,26 +102,6 @@ def validate_int(b): return int(b) -def validate_open_enum(is_int: bool): - def validate(e): - if e is None: - return None - - if isinstance(e, Unset): - return e - - if is_int: - if not isinstance(e, int): - raise ValueError("Expected int") - else: - if not isinstance(e, str): - raise ValueError("Expected string") - - return e - - return validate - - def validate_const(v): def validate(c): # Optional[T] is a Union[T, None] diff --git a/sdks/outpost-python/src/outpost_sdk/utils/unmarshal_json_response.py b/sdks/outpost-python/src/outpost_sdk/utils/unmarshal_json_response.py index a39725c20..dd5602b7b 100644 --- a/sdks/outpost-python/src/outpost_sdk/utils/unmarshal_json_response.py +++ b/sdks/outpost-python/src/outpost_sdk/utils/unmarshal_json_response.py @@ -1,12 +1,26 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import Any, Optional +from typing import Any, Optional, Type, TypeVar, overload import httpx from .serializers import unmarshal_json from outpost_sdk import errors +T = TypeVar("T") + + +@overload +def unmarshal_json_response( + typ: Type[T], http_res: httpx.Response, body: Optional[str] = None +) -> T: ... + + +@overload +def unmarshal_json_response( + typ: Any, http_res: httpx.Response, body: Optional[str] = None +) -> Any: ... + def unmarshal_json_response( typ: Any, http_res: httpx.Response, body: Optional[str] = None