diff --git a/.speakeasy/logs/changes/changes.html b/.speakeasy/logs/changes/changes.html
index 723646ea..f490ee32 100644
--- a/.speakeasy/logs/changes/changes.html
+++ b/.speakeasy/logs/changes/changes.html
@@ -98,27 +98,30 @@
Typescript SDK Changes:
-outpost.destinations.update(): request.body Changed (Breaking ⚠️)
+outpost.configuration.getManagedConfig(): response Changed (Breaking ⚠️)
-union(DestinationUpdateAWSKinesis) Removed (Breaking ⚠️)
-union(DestinationUpdateAWSS3) Removed (Breaking ⚠️)
-union(DestinationUpdateAWSSQS) Removed (Breaking ⚠️)
-union(DestinationUpdateAzureServiceBus) Removed (Breaking ⚠️)
-union(DestinationUpdateGCPPubSub) Removed (Breaking ⚠️)
-union(DestinationUpdateHookdeck) Removed (Breaking ⚠️)
-union(DestinationUpdateKafka) Removed (Breaking ⚠️)
-union(DestinationUpdateRabbitMQ) Removed (Breaking ⚠️)
-union(DestinationUpdateWebhook) Removed (Breaking ⚠️)
-union(aws_kinesis) Added
-union(aws_s3) Added
-union(aws_sqs) Added
-union(azure_servicebus) Added
-union(gcp_pubsub) Added
-union(hookdeck) Added
-union(kafka) Added
-union(rabbitmq) Added
-union(webhook) Added
+alertCallbackUrl Removed (Breaking ⚠️)
+alertExhaustedRetriesWindowSeconds Added
+organizationName Removed (Breaking ⚠️)
+
+outpost.configuration.updateManagedConfig():
+
+
+request Changed (Breaking ⚠️)
+
+
+alertCallbackUrl Removed (Breaking ⚠️)
+alertExhaustedRetriesWindowSeconds Added
+organizationName Removed (Breaking ⚠️)
+
+response Changed (Breaking ⚠️)
+
+
+alertCallbackUrl Removed (Breaking ⚠️)
+alertExhaustedRetriesWindowSeconds Added
+organizationName Removed (Breaking ⚠️)
+
diff --git a/.speakeasy/logs/changes/changes.md b/.speakeasy/logs/changes/changes.md
index 84222596..0b9d7c6e 100644
--- a/.speakeasy/logs/changes/changes.md
+++ b/.speakeasy/logs/changes/changes.md
@@ -1,20 +1,14 @@
## Typescript SDK Changes:
-* `outpost.destinations.update()`: `request.body` **Changed** (Breaking ⚠️)
- - `union(DestinationUpdateAWSKinesis)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateAWSS3)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateAWSSQS)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateAzureServiceBus)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateGCPPubSub)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateHookdeck)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateKafka)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateRabbitMQ)` **Removed** (Breaking ⚠️)
- - `union(DestinationUpdateWebhook)` **Removed** (Breaking ⚠️)
- - `union(aws_kinesis)` **Added**
- - `union(aws_s3)` **Added**
- - `union(aws_sqs)` **Added**
- - `union(azure_servicebus)` **Added**
- - `union(gcp_pubsub)` **Added**
- - `union(hookdeck)` **Added**
- - `union(kafka)` **Added**
- - `union(rabbitmq)` **Added**
- - `union(webhook)` **Added**
+* `outpost.configuration.getManagedConfig()`: `response` **Changed** (Breaking ⚠️)
+ - `alertCallbackUrl` **Removed** (Breaking ⚠️)
+ - `alertExhaustedRetriesWindowSeconds` **Added**
+ - `organizationName` **Removed** (Breaking ⚠️)
+* `outpost.configuration.updateManagedConfig()`:
+ * `request` **Changed** (Breaking ⚠️)
+ - `alertCallbackUrl` **Removed** (Breaking ⚠️)
+ - `alertExhaustedRetriesWindowSeconds` **Added**
+ - `organizationName` **Removed** (Breaking ⚠️)
+ * `response` **Changed** (Breaking ⚠️)
+ - `alertCallbackUrl` **Removed** (Breaking ⚠️)
+ - `alertExhaustedRetriesWindowSeconds` **Added**
+ - `organizationName` **Removed** (Breaking ⚠️)
diff --git a/.speakeasy/logs/changes/new.openapi.yaml b/.speakeasy/logs/changes/new.openapi.yaml
index 1bfbd666..675d4c8b 100644
--- a/.speakeasy/logs/changes/new.openapi.yaml
+++ b/.speakeasy/logs/changes/new.openapi.yaml
@@ -2857,10 +2857,10 @@ components:
properties:
ALERT_AUTO_DISABLE_DESTINATION:
type: string
- ALERT_CALLBACK_URL:
- type: string
ALERT_CONSECUTIVE_FAILURE_COUNT:
type: string
+ ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS:
+ type: string
DELIVERY_TIMEOUT_SECONDS:
type: string
DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD:
@@ -2903,8 +2903,6 @@ components:
type: string
MAX_DESTINATIONS_PER_TENANT:
type: string
- ORGANIZATION_NAME:
- type: string
PORTAL_BRAND_COLOR:
type: string
PORTAL_DISABLE_OUTPOST_BRANDING:
diff --git a/.speakeasy/logs/changes/old.openapi.yaml b/.speakeasy/logs/changes/old.openapi.yaml
index 1fded13f..7a7c955e 100644
--- a/.speakeasy/logs/changes/old.openapi.yaml
+++ b/.speakeasy/logs/changes/old.openapi.yaml
@@ -1755,8 +1755,25 @@ components:
gcp_pubsub: "#/components/schemas/DestinationCreateGCPPubSub"
kafka: "#/components/schemas/DestinationCreateKafka"
# Type-Specific Destination Update Schemas (for Request Bodies)
+ # Type-Specific Partial Schemas for PATCH Request Bodies
+ # All fields are optional — RFC 7396 JSON merge-patch semantics apply:
+ # omit a field to leave it unchanged; include a field to update it in place.
+ WebhookConfigUpdate:
+ type: object
+ description: Partial Webhook config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ url:
+ type: string
+ format: url
+ description: The URL to send the webhook events to.
+ example: "https://example.com/webhooks/user"
+ custom_headers:
+ type: string
+ description: JSON string of custom HTTP headers to include with every webhook request.
+ example: '{"x-api-key":"secret123","x-tenant-id":"customer-456"}'
WebhookCredentialsUpdate:
type: object
+ description: Partial Webhook credentials for PATCH updates (RFC 7396 merge-patch).
properties:
secret:
type: string
@@ -1771,17 +1788,206 @@ components:
rotate_secret:
type: boolean
description: 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.
+ AWSSQSConfigUpdate:
+ type: object
+ description: Partial AWS SQS config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ endpoint:
+ type: string
+ format: url
+ description: Optional. Custom AWS endpoint URL (e.g., for LocalStack or specific regions).
+ example: "https://sqs.us-east-1.amazonaws.com"
+ queue_url:
+ type: string
+ format: url
+ description: The URL of the SQS queue.
+ example: "https://sqs.us-east-1.amazonaws.com/123456789012/my-queue"
+ AWSSQSCredentialsUpdate:
+ type: object
+ description: Partial AWS SQS credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ key:
+ type: string
+ description: AWS Access Key ID.
+ secret:
+ type: string
+ description: AWS Secret Access Key.
+ session:
+ type: string
+ description: Optional AWS Session Token (for temporary credentials).
+ RabbitMQConfigUpdate:
+ type: object
+ description: Partial RabbitMQ config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ server_url:
+ type: string
+ description: RabbitMQ server address (host:port).
+ exchange:
+ type: string
+ description: The exchange to publish messages to.
+ tls:
+ type: string
+ enum: ["true", "false"]
+ description: Whether to use TLS connection (amqps).
+ RabbitMQCredentialsUpdate:
+ type: object
+ description: Partial RabbitMQ credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ username:
+ type: string
+ description: RabbitMQ username.
+ password:
+ type: string
+ description: RabbitMQ password.
+ HookdeckCredentialsUpdate:
+ type: object
+ description: Partial Hookdeck credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ token:
+ type: string
+ description: Hookdeck authentication token.
+ AWSKinesisConfigUpdate:
+ type: object
+ description: Partial AWS Kinesis config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ stream_name:
+ type: string
+ description: The name of the AWS Kinesis stream.
+ region:
+ type: string
+ description: The AWS region where the Kinesis stream is located.
+ endpoint:
+ type: string
+ format: url
+ description: Optional. Custom AWS endpoint URL (e.g., for LocalStack or VPC endpoints).
+ partition_key_template:
+ type: string
+ description: Optional. JMESPath template to extract the partition key from the event payload.
+ AWSKinesisCredentialsUpdate:
+ type: object
+ description: Partial AWS Kinesis credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ key:
+ type: string
+ description: AWS Access Key ID.
+ secret:
+ type: string
+ description: AWS Secret Access Key.
+ session:
+ type: string
+ description: Optional AWS Session Token (for temporary credentials).
+ AzureServiceBusConfigUpdate:
+ type: object
+ description: Partial Azure Service Bus config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ name:
+ type: string
+ description: The name of the Azure Service Bus queue or topic to publish messages to.
+ AzureServiceBusCredentialsUpdate:
+ type: object
+ description: Partial Azure Service Bus credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ connection_string:
+ type: string
+ description: The connection string for the Azure Service Bus namespace.
+ AWSS3ConfigUpdate:
+ type: object
+ description: Partial AWS S3 config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ bucket:
+ type: string
+ description: The name of your AWS S3 bucket.
+ region:
+ type: string
+ pattern: "^[a-z]{2}-[a-z]+-[0-9]+$"
+ description: The AWS region where your bucket is located.
+ key_template:
+ type: string
+ description: JMESPath expression for generating S3 object keys.
+ storage_class:
+ type: string
+ description: The storage class for the S3 objects.
+ AWSS3CredentialsUpdate:
+ type: object
+ description: Partial AWS S3 credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ key:
+ type: string
+ description: AWS Access Key ID.
+ secret:
+ type: string
+ description: AWS Secret Access Key.
+ session:
+ type: string
+ description: Optional AWS Session Token (for temporary credentials).
+ GCPPubSubConfigUpdate:
+ type: object
+ description: Partial GCP Pub/Sub config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ project_id:
+ type: string
+ description: The GCP project ID.
+ topic:
+ type: string
+ description: The Pub/Sub topic name.
+ endpoint:
+ type: string
+ description: Optional. Custom endpoint URL (e.g., localhost:8085 for emulator).
+ GCPPubSubCredentialsUpdate:
+ type: object
+ description: Partial GCP Pub/Sub credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ service_account_json:
+ type: string
+ description: Service account key JSON. The entire JSON key file content as a string.
+ KafkaConfigUpdate:
+ type: object
+ description: Partial Kafka config for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ brokers:
+ type: string
+ description: Comma-separated list of Kafka broker addresses.
+ topic:
+ type: string
+ description: The Kafka topic to publish messages to.
+ sasl_mechanism:
+ type: string
+ enum: [plain, scram-sha-256, scram-sha-512]
+ description: SASL authentication mechanism.
+ tls:
+ type: string
+ enum: ["true", "false"]
+ description: Whether to enable TLS for the connection.
+ partition_key_template:
+ type: string
+ description: Optional JMESPath template to extract the partition key from the event payload.
+ KafkaCredentialsUpdate:
+ type: object
+ description: Partial Kafka credentials for PATCH updates (RFC 7396 merge-patch).
+ properties:
+ username:
+ type: string
+ description: SASL username for authentication.
+ password:
+ type: string
+ description: SASL password for authentication.
DestinationUpdateWebhook:
type: object
x-docs-type: "Webhook"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [webhook]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "webhook"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/WebhookConfig" # URL is required here, but PATCH means it's optional in the request
+ $ref: "#/components/schemas/WebhookConfigUpdate"
credentials:
$ref: "#/components/schemas/WebhookCredentialsUpdate"
delivery_metadata:
@@ -1815,15 +2021,21 @@ components:
type: object
x-docs-type: "AWS SQS"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [aws_sqs]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "aws_sqs"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/AWSSQSConfig" # queue_url is required here, but PATCH means it's optional
+ $ref: "#/components/schemas/AWSSQSConfigUpdate"
credentials:
- $ref: "#/components/schemas/AWSSQSCredentials" # key/secret required here, but PATCH means optional
+ $ref: "#/components/schemas/AWSSQSCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -1855,15 +2067,21 @@ components:
type: object
x-docs-type: "RabbitMQ"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [rabbitmq]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "rabbitmq"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/RabbitMQConfig" # server_url/exchange required here, but PATCH means optional
+ $ref: "#/components/schemas/RabbitMQConfigUpdate"
credentials:
- $ref: "#/components/schemas/RabbitMQCredentials" # username/password required here, but PATCH means optional
+ $ref: "#/components/schemas/RabbitMQCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -1895,14 +2113,20 @@ components:
type: object
x-docs-type: "Hookdeck Event Gateway"
# Properties duplicated from DestinationUpdateBase
+ # Hookdeck has no updatable `config`.
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [hookdeck]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "hookdeck"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
- config: {} # Empty config, cannot be updated
credentials:
- $ref: "#/components/schemas/HookdeckCredentials" # token required here, but PATCH means optional
+ $ref: "#/components/schemas/HookdeckCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -1934,15 +2158,21 @@ components:
type: object
x-docs-type: "AWS Kinesis"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [aws_kinesis]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "aws_kinesis"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/AWSKinesisConfig" # stream_name/region required here, but PATCH means optional
+ $ref: "#/components/schemas/AWSKinesisConfigUpdate"
credentials:
- $ref: "#/components/schemas/AWSKinesisCredentials" # key/secret required here, but PATCH means optional
+ $ref: "#/components/schemas/AWSKinesisCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -1974,15 +2204,21 @@ components:
type: object
x-docs-type: "Azure Service Bus"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [azure_servicebus]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "azure_servicebus"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/AzureServiceBusConfig" # name required here, but PATCH means optional
+ $ref: "#/components/schemas/AzureServiceBusConfigUpdate"
credentials:
- $ref: "#/components/schemas/AzureServiceBusCredentials" # connection_string required here, but PATCH means optional
+ $ref: "#/components/schemas/AzureServiceBusCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -2014,15 +2250,21 @@ components:
type: object
x-docs-type: "AWS S3"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [aws_s3]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "aws_s3"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/AWSS3Config" # bucket/region required here, but PATCH means optional
+ $ref: "#/components/schemas/AWSS3ConfigUpdate"
credentials:
- $ref: "#/components/schemas/AWSS3Credentials" # key/secret required here, but PATCH means optional
+ $ref: "#/components/schemas/AWSS3CredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -2054,15 +2296,21 @@ components:
type: object
x-docs-type: "GCP PubSub"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [gcp_pubsub]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "gcp_pubsub"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/GCPPubSubConfig" # project_id/topic required here, but PATCH means optional
+ $ref: "#/components/schemas/GCPPubSubConfigUpdate"
credentials:
- $ref: "#/components/schemas/GCPPubSubCredentials" # service_account_json required here, but PATCH means optional
+ $ref: "#/components/schemas/GCPPubSubCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -2094,15 +2342,21 @@ components:
type: object
x-docs-type: "Apache Kafka"
# Properties duplicated from DestinationUpdateBase
+ required: [type]
properties:
+ type:
+ type: string
+ enum: [kafka]
+ description: Destination type discriminator. Must equal the existing destination's type — type itself cannot be changed via PATCH.
+ example: "kafka"
topics:
$ref: "#/components/schemas/Topics"
filter:
$ref: "#/components/schemas/Filter"
config:
- $ref: "#/components/schemas/KafkaConfig" # brokers/topic/sasl_mechanism required here, but PATCH means optional
+ $ref: "#/components/schemas/KafkaConfigUpdate"
credentials:
- $ref: "#/components/schemas/KafkaCredentials" # username/password required here, but PATCH means optional
+ $ref: "#/components/schemas/KafkaCredentialsUpdate"
delivery_metadata:
type: object
additionalProperties:
@@ -2142,6 +2396,18 @@ components:
- $ref: "#/components/schemas/DestinationUpdateGCPPubSub"
- $ref: "#/components/schemas/DestinationUpdateRabbitMQ"
- $ref: "#/components/schemas/DestinationUpdateKafka"
+ discriminator:
+ propertyName: type
+ mapping:
+ webhook: "#/components/schemas/DestinationUpdateWebhook"
+ aws_sqs: "#/components/schemas/DestinationUpdateAWSSQS"
+ rabbitmq: "#/components/schemas/DestinationUpdateRabbitMQ"
+ hookdeck: "#/components/schemas/DestinationUpdateHookdeck"
+ aws_kinesis: "#/components/schemas/DestinationUpdateAWSKinesis"
+ azure_servicebus: "#/components/schemas/DestinationUpdateAzureServiceBus"
+ aws_s3: "#/components/schemas/DestinationUpdateAWSS3"
+ gcp_pubsub: "#/components/schemas/DestinationUpdateGCPPubSub"
+ kafka: "#/components/schemas/DestinationUpdateKafka"
# Event Schemas
PublishRequest:
type: object
@@ -2307,8 +2573,8 @@ components:
event:
nullable: true
oneOf:
- - $ref: "#/components/schemas/EventSummary"
- $ref: "#/components/schemas/EventFull"
+ - $ref: "#/components/schemas/EventSummary"
description: The associated event object. Only present when include=event or include=event.data.
destination:
nullable: true
@@ -3061,18 +3327,6 @@ paths:
x-speakeasy-max-method-params: 0
security:
- BearerAuth: []
- x-speakeasy-pagination:
- type: cursor
- inputs:
- - name: next
- in: parameters
- type: cursor
- - name: limit
- in: parameters
- type: limit
- outputs:
- nextCursor: $.pagination.next
- results: $.models
/tenants/{tenant_id}:
parameters:
- name: tenant_id
@@ -3319,18 +3573,6 @@ paths:
x-speakeasy-name-override: list
security:
- BearerAuth: []
- x-speakeasy-pagination:
- type: cursor
- inputs:
- - name: next
- in: parameters
- type: cursor
- - name: limit
- in: parameters
- type: limit
- outputs:
- nextCursor: $.pagination.next
- results: $.models
/events/{event_id}:
parameters:
- name: event_id
@@ -3571,18 +3813,6 @@ paths:
x-speakeasy-name-override: list
security:
- BearerAuth: []
- x-speakeasy-pagination:
- type: cursor
- inputs:
- - name: next
- in: parameters
- type: cursor
- - name: limit
- in: parameters
- type: limit
- outputs:
- nextCursor: $.pagination.next
- results: $.models
/attempts/{attempt_id}:
parameters:
- name: attempt_id
@@ -4250,18 +4480,6 @@ paths:
"500":
$ref: "#/components/responses/InternalServerError"
x-speakeasy-name-override: listAttempts
- x-speakeasy-pagination:
- type: cursor
- inputs:
- - name: next
- in: parameters
- type: cursor
- - name: limit
- in: parameters
- type: limit
- outputs:
- nextCursor: $.pagination.next
- results: $.models
/tenants/{tenant_id}/destinations/{destination_id}/attempts/{attempt_id}:
parameters:
- name: tenant_id
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 34711d80..18cbac47 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -1,23 +1,23 @@
-speakeasyVersion: 1.768.2
+speakeasyVersion: 1.780.0
sources:
Outpost API:
sourceNamespace: outpost-api
- sourceRevisionDigest: sha256:96304f062759f5fc5117c2aaab1cd81139210e92f7ef3bd4e655b6416ad6bc65
- sourceBlobDigest: sha256:22045b6400f7ff362dbec1ec0b490f398fa36df760d82574866161d8d1455821
+ sourceRevisionDigest: sha256:24a17a5df69df39bbfcb267ecd21f7f25e819333ec8a28788d2be401da4b418a
+ sourceBlobDigest: sha256:f0746ce81a2f018b57511af0fce5ce8c7e21ebe6ea1a3ed41b34419a0d8b63f0
tags:
- latest
- 0.0.1
Outpost API (Go):
sourceNamespace: outpost-api
- sourceRevisionDigest: sha256:fa0463ed9fac6e1ea1d4d27ca3c8fd28f250c107549edc96fc3130dce2fa2591
- sourceBlobDigest: sha256:66aab8b551893e83f5702de4ab4d57f24cdc1a68c4a17efa0e51b0d4249aa83b
+ sourceRevisionDigest: sha256:272832aae60da69564adb28db3e59a48a3da710195a9afd0c2a6a6324a5e0161
+ sourceBlobDigest: sha256:a5d8386e9a62e23bf3190863ce77caf3f7abf4bf65ef3329546dc73872310ce6
tags:
- latest
- 0.0.1
Outpost API (Python):
sourceNamespace: outpost-api
- sourceRevisionDigest: sha256:8fc2f426f65cf81bf5669dcc12129d035defc79e39301585eb8136ff680113bf
- sourceBlobDigest: sha256:6124246c73fe55dc934fdb41c51a8c54d0bbebec617f3f8fb92f41031fe5e951
+ sourceRevisionDigest: sha256:937055133d51d769613a52eba7ae6ef4106e5b682589e863e12c336b25646930
+ sourceBlobDigest: sha256:b4d9106bc1376950b213e639f5e5fa4b5da5cc51277ee3d6bdf44b48068a17a2
tags:
- latest
- 0.0.1
@@ -25,24 +25,24 @@ targets:
outpost-go:
source: Outpost API (Go)
sourceNamespace: outpost-api
- sourceRevisionDigest: sha256:fa0463ed9fac6e1ea1d4d27ca3c8fd28f250c107549edc96fc3130dce2fa2591
- sourceBlobDigest: sha256:66aab8b551893e83f5702de4ab4d57f24cdc1a68c4a17efa0e51b0d4249aa83b
+ sourceRevisionDigest: sha256:272832aae60da69564adb28db3e59a48a3da710195a9afd0c2a6a6324a5e0161
+ sourceBlobDigest: sha256:a5d8386e9a62e23bf3190863ce77caf3f7abf4bf65ef3329546dc73872310ce6
codeSamplesNamespace: outpost-api-go-code-samples
- codeSamplesRevisionDigest: sha256:57c198724b8e924a4d7b2aa692412b0ce003c66999d46bd45ab6f8e129218c2d
+ codeSamplesRevisionDigest: sha256:8abaec796a7e281a9f8fdb053397c5e11ecd7ba80508d9317980f8039ad15b7b
outpost-python:
source: Outpost API (Python)
sourceNamespace: outpost-api
- sourceRevisionDigest: sha256:8fc2f426f65cf81bf5669dcc12129d035defc79e39301585eb8136ff680113bf
- sourceBlobDigest: sha256:6124246c73fe55dc934fdb41c51a8c54d0bbebec617f3f8fb92f41031fe5e951
+ sourceRevisionDigest: sha256:937055133d51d769613a52eba7ae6ef4106e5b682589e863e12c336b25646930
+ sourceBlobDigest: sha256:b4d9106bc1376950b213e639f5e5fa4b5da5cc51277ee3d6bdf44b48068a17a2
codeSamplesNamespace: outpost-api-python-code-samples
- codeSamplesRevisionDigest: sha256:8240eddf814a5129e5dec41c90dd18b9d394e634c0fc74f6d4e99ecf8f6dd4c7
+ codeSamplesRevisionDigest: sha256:261e1231d3e2a0b21b6ab7b19985993f3002bb1ac6c14eb752e16bb7615c92bf
outpost-ts:
source: Outpost API
sourceNamespace: outpost-api
- sourceRevisionDigest: sha256:96304f062759f5fc5117c2aaab1cd81139210e92f7ef3bd4e655b6416ad6bc65
- sourceBlobDigest: sha256:22045b6400f7ff362dbec1ec0b490f398fa36df760d82574866161d8d1455821
+ sourceRevisionDigest: sha256:24a17a5df69df39bbfcb267ecd21f7f25e819333ec8a28788d2be401da4b418a
+ sourceBlobDigest: sha256:f0746ce81a2f018b57511af0fce5ce8c7e21ebe6ea1a3ed41b34419a0d8b63f0
codeSamplesNamespace: outpost-api-typescript-code-samples
- codeSamplesRevisionDigest: sha256:a15fd6703c88fa061ef44cb88f4c4ecc42fdf4c19350cd971fac05c3758d9336
+ codeSamplesRevisionDigest: sha256:c9058af42924432f4201d42c07f43ca7bb4b1ff7ee25e9b3c1387e51e031340c
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
diff --git a/cmd/e2e/regression_format_error_test.go b/cmd/e2e/regression_format_error_test.go
new file mode 100644
index 00000000..eb2d8861
--- /dev/null
+++ b/cmd/e2e/regression_format_error_test.go
@@ -0,0 +1,176 @@
+package e2e_test
+
+import (
+ "context"
+ "fmt"
+ "log"
+ "net/http"
+ "testing"
+ "time"
+
+ "github.com/aws/aws-sdk-go-v2/aws"
+ awsconfig "github.com/aws/aws-sdk-go-v2/config"
+ "github.com/aws/aws-sdk-go-v2/credentials"
+ "github.com/aws/aws-sdk-go-v2/service/s3"
+ "github.com/gin-gonic/gin"
+ "github.com/hookdeck/outpost/cmd/e2e/configs"
+ "github.com/hookdeck/outpost/internal/app"
+ "github.com/hookdeck/outpost/internal/config"
+ "github.com/hookdeck/outpost/internal/util/testinfra"
+ "github.com/stretchr/testify/require"
+)
+
+// TestE2E_Regression_FormatErrorIsDeliveredAttempt verifies that a per-event
+// formatting failure is handled as a normal failed delivery, not a system error
+// that gets nacked and dead-lettered.
+//
+// We use aws_s3 because its key_template is only syntax-validated at creation, so a
+// valid template can still fail at delivery for an event missing a referenced field.
+//
+// Asserts, end to end:
+// 1. nothing is written to S3 (the failure is pre-delivery)
+// 2. each attempt is recorded as a failed delivery
+// 3. it retries on the normal schedule and exhausts, rather than being dead-lettered
+func TestE2E_Regression_FormatErrorIsDeliveredAttempt(t *testing.T) {
+ t.Parallel()
+ if testing.Short() {
+ t.Skip("skipping e2e test")
+ }
+
+ testinfraCleanup := testinfra.Start(t)
+ defer testinfraCleanup()
+ gin.SetMode(gin.TestMode)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ // LocalStack S3: the bucket doubles as the "was anything actually delivered?" sink.
+ endpoint := testinfra.EnsureLocalStack()
+ awsCfg, err := awsconfig.LoadDefaultConfig(ctx,
+ awsconfig.WithRegion("us-east-1"),
+ awsconfig.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("test", "test", "")),
+ )
+ require.NoError(t, err)
+ s3Client := s3.NewFromConfig(awsCfg, func(o *s3.Options) {
+ o.UsePathStyle = true // required for LocalStack
+ o.BaseEndpoint = aws.String(endpoint)
+ })
+ bucket := fmt.Sprintf("regr-format-%d", time.Now().UnixNano())
+ _, err = s3Client.CreateBucket(ctx, &s3.CreateBucketInput{Bucket: aws.String(bucket)})
+ require.NoError(t, err)
+
+ // Isolated outpost instance with a short, bounded retry schedule so the budget
+ // exhausts quickly: schedule length 2 => 2 retries => 3 total attempts.
+ cfg := configs.Basic(t, configs.BasicOpts{LogStorage: configs.LogStorageTypeClickHouse})
+ cfg.RetrySchedule = []int{1, 1}
+ cfg.RetryPollBackoffMs = 50
+ cfg.LogBatchThresholdSeconds = 0 // immediate flush so /attempts is reliable
+ require.NoError(t, cfg.Validate(config.Flags{}))
+ configs.ApplyMigrations(t, &cfg)
+
+ appDone := make(chan struct{})
+ go func() {
+ defer close(appDone)
+ application := app.New(&cfg)
+ if err := application.Run(ctx); err != nil {
+ log.Println("Application stopped:", err)
+ }
+ }()
+ defer func() {
+ cancel()
+ <-appDone
+ }()
+
+ waitForHealthy(t, cfg.APIPort, 5*time.Second)
+
+ client := newRegressionHTTPClient(cfg.APIKey)
+ apiURL := fmt.Sprintf("http://localhost:%d/api/v1", cfg.APIPort)
+
+ tenantID := fmt.Sprintf("tenant_format_%d", time.Now().UnixNano())
+ destinationID := fmt.Sprintf("dest_format_%d", time.Now().UnixNano())
+ eventID := fmt.Sprintf("evt_format_%d", time.Now().UnixNano())
+
+ // Create tenant.
+ status := client.doJSON(t, http.MethodPut, apiURL+"/tenants/"+tenantID, nil, nil)
+ require.Equal(t, 201, status, "failed to create tenant")
+
+ // Create an aws_s3 destination whose key_template is valid at creation but cannot be
+ // evaluated for an event lacking metadata.operationId (join over a nil value fails).
+ status = client.doJSON(t, http.MethodPost, apiURL+"/tenants/"+tenantID+"/destinations", map[string]any{
+ "id": destinationID,
+ "type": "aws_s3",
+ "topics": "*",
+ "config": map[string]any{
+ "bucket": bucket,
+ "region": "us-east-1",
+ "endpoint": endpoint,
+ "storage_class": "STANDARD",
+ "key_template": `join('/', ['prefix', metadata.operationId])`,
+ },
+ "credentials": map[string]any{
+ "key": "test",
+ "secret": "test",
+ },
+ }, nil)
+ require.Equal(t, 201, status, "failed to create aws_s3 destination")
+
+ // Publish a retry-eligible event WITHOUT metadata.operationId -> formatting fails at delivery.
+ status = client.doJSON(t, http.MethodPost, apiURL+"/publish", map[string]any{
+ "id": eventID,
+ "tenant_id": tenantID,
+ "topic": "user.created",
+ "eligible_for_retry": true,
+ "metadata": map[string]any{"foo": "bar"},
+ "data": map[string]any{"hello": "world"},
+ }, nil)
+ require.Equal(t, 202, status, "failed to publish event")
+
+ attemptsURL := apiURL + "/attempts?tenant_id=" + tenantID + "&event_id=" + eventID + "&dir=asc&include=response_data"
+ pollAttempts := func(t *testing.T, minCount int, timeout time.Duration) []map[string]any {
+ t.Helper()
+ deadline := time.Now().Add(timeout)
+ for time.Now().Before(deadline) {
+ var resp struct {
+ Models []map[string]any `json:"models"`
+ }
+ s := client.doJSON(t, http.MethodGet, attemptsURL, nil, &resp)
+ if s == http.StatusOK && len(resp.Models) >= minCount {
+ return resp.Models
+ }
+ time.Sleep(100 * time.Millisecond)
+ }
+ t.Fatalf("timed out waiting for %d attempts", minCount)
+ return nil
+ }
+
+ // (2) + (3): retries run on the normal schedule and produce recorded failed attempts.
+ // 1 initial + 2 scheduled retries = 3 attempts. If the fix regressed, the format error
+ // would nack/dead-letter the message and ZERO attempts would be logged -> this times out.
+ attempts := pollAttempts(t, 3, 15*time.Second)
+ for i, atm := range attempts {
+ require.Equal(t, "failed", atm["status"], "attempt %d should be a failed delivery", i+1)
+ // (2) the attempt carries the format error as a normal, customer-facing delivery error.
+ if rd, ok := atm["response_data"].(map[string]any); ok {
+ require.Equal(t, "could not format event for delivery", rd["error"],
+ "attempt %d should record the format error", i+1)
+ } else {
+ t.Fatalf("attempt %d missing response_data", i+1)
+ }
+ }
+
+ // Budget exhausted: after the schedule completes, no further attempts appear. A
+ // dead-letter/requeue loop would keep producing attempts (or none at all) instead
+ // of stopping cleanly at the retry budget.
+ time.Sleep(2 * time.Second)
+ var finalResp struct {
+ Models []map[string]any `json:"models"`
+ }
+ client.doJSON(t, http.MethodGet, attemptsURL, nil, &finalResp)
+ require.Len(t, finalResp.Models, 3,
+ "should have exactly 3 attempts (1 initial + 2 retries) then stop — not requeue into a DLQ")
+
+ // (1) nothing was ever written to S3 — the failure happened before any PutObject.
+ listed, err := s3Client.ListObjectsV2(ctx, &s3.ListObjectsV2Input{Bucket: aws.String(bucket)})
+ require.NoError(t, err)
+ require.Empty(t, listed.Contents, "no object should have been written to S3")
+}
diff --git a/examples/docker-compose/compose.yml b/examples/docker-compose/compose.yml
index 645ab911..4eeeda9a 100644
--- a/examples/docker-compose/compose.yml
+++ b/examples/docker-compose/compose.yml
@@ -1,7 +1,7 @@
name: outpost-example
services:
migrate:
- image: hookdeck/outpost:v1.0.4
+ image: hookdeck/outpost:v1.0.5
command: migrate apply --yes
env_file: .env
depends_on:
@@ -10,7 +10,7 @@ services:
restart: "no"
api:
- image: hookdeck/outpost:v1.0.4
+ image: hookdeck/outpost:v1.0.5
env_file: .env
depends_on:
migrate:
@@ -25,7 +25,7 @@ services:
- 3333:3333
delivery:
- image: hookdeck/outpost:v1.0.4
+ image: hookdeck/outpost:v1.0.5
env_file: .env
depends_on:
migrate:
@@ -38,7 +38,7 @@ services:
SERVICE: delivery
log:
- image: hookdeck/outpost:v1.0.4
+ image: hookdeck/outpost:v1.0.5
env_file: .env
depends_on:
migrate:
diff --git a/internal/destregistry/error.go b/internal/destregistry/error.go
index c824d9b2..f07f576d 100644
--- a/internal/destregistry/error.go
+++ b/internal/destregistry/error.go
@@ -39,6 +39,27 @@ func NewErrDestinationPublishAttempt(err error, provider string, data map[string
return &ErrDestinationPublishAttempt{Err: err, Provider: provider, Data: data}
}
+// NewFormatError returns the (*Delivery, error) a publisher should return when
+// formatting an event fails before it can be sent (e.g. an invalid key/partition
+// template or an unparseable payload). It records a failed attempt so the failure
+// is visible to the customer and the message is acked, instead of nacking into the DLQ.
+//
+// message is the customer-facing string persisted on the attempt (ResponseData);
+// when empty a generic default is used. The raw err is carried only in the returned
+// error (for logs/telemetry) and is not persisted on the attempt.
+func NewFormatError(provider, message string, err error) (*Delivery, error) {
+ if message == "" {
+ message = "could not format event for delivery"
+ }
+ return &Delivery{
+ Status: "failed",
+ Code: "ERR",
+ Response: map[string]interface{}{"error": message},
+ }, NewErrDestinationPublishAttempt(err, provider, map[string]interface{}{
+ "error": "format_failed",
+ })
+}
+
// NewErrPublishCanceled creates an error for when publish is canceled (e.g., service shutdown).
// This should return nil Delivery to trigger nack → requeue for another instance.
// See: https://github.com/hookdeck/outpost/issues/571
diff --git a/internal/destregistry/format_error_test.go b/internal/destregistry/format_error_test.go
new file mode 100644
index 00000000..b2db7c09
--- /dev/null
+++ b/internal/destregistry/format_error_test.go
@@ -0,0 +1,52 @@
+package destregistry_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/hookdeck/outpost/internal/destregistry"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+func TestNewFormatError(t *testing.T) {
+ t.Parallel()
+
+ rawErr := errors.New("failed to evaluate key template: invalid type")
+
+ t.Run("returns a failed delivery and a publish-attempt error", func(t *testing.T) {
+ t.Parallel()
+
+ delivery, err := destregistry.NewFormatError("aws_s3", "", rawErr)
+
+ // A non-nil failed delivery means the registry records an attempt and acks
+ // the message instead of nacking it into the DLQ.
+ require.NotNil(t, delivery)
+ assert.Equal(t, "failed", delivery.Status)
+ assert.Equal(t, "ERR", delivery.Code)
+
+ var pubErr *destregistry.ErrDestinationPublishAttempt
+ require.ErrorAs(t, err, &pubErr)
+ assert.Equal(t, "aws_s3", pubErr.Provider)
+ assert.Equal(t, "format_failed", pubErr.Data["error"])
+ // Raw Go error is carried on the error for logs/telemetry...
+ assert.Equal(t, rawErr, pubErr.Err)
+ })
+
+ t.Run("uses a generic message when none is given", func(t *testing.T) {
+ t.Parallel()
+
+ delivery, _ := destregistry.NewFormatError("aws_s3", "", rawErr)
+
+ // ...but is NOT persisted on the attempt; the customer-facing response is generic.
+ assert.Equal(t, "could not format event for delivery", delivery.Response["error"])
+ assert.NotContains(t, delivery.Response["error"], "key template")
+ })
+
+ t.Run("uses the provided message when given", func(t *testing.T) {
+ t.Parallel()
+
+ delivery, _ := destregistry.NewFormatError("aws_s3", "could not build S3 object key", rawErr)
+ assert.Equal(t, "could not build S3 object key", delivery.Response["error"])
+ })
+}
diff --git a/internal/destregistry/providers/destawskinesis/destawskinesis.go b/internal/destregistry/providers/destawskinesis/destawskinesis.go
index 7d5ec3e5..0baf29d1 100644
--- a/internal/destregistry/providers/destawskinesis/destawskinesis.go
+++ b/internal/destregistry/providers/destawskinesis/destawskinesis.go
@@ -258,14 +258,7 @@ func (p *AWSKinesisPublisher) Publish(ctx context.Context, event *models.Event)
// Format the event into a PutRecordInput
input, err := p.Format(ctx, event)
if err != nil {
- return nil, destregistry.NewErrDestinationPublishAttempt(
- err,
- "aws_kinesis",
- map[string]interface{}{
- "error": "format_failed",
- "message": err.Error(),
- },
- )
+ return destregistry.NewFormatError("aws_kinesis", "", err)
}
// Send the record to Kinesis
diff --git a/internal/destregistry/providers/destawss3/destawss3.go b/internal/destregistry/providers/destawss3/destawss3.go
index 1d7d80bc..6a30a126 100644
--- a/internal/destregistry/providers/destawss3/destawss3.go
+++ b/internal/destregistry/providers/destawss3/destawss3.go
@@ -304,7 +304,7 @@ func (p *AWSS3Publisher) Publish(ctx context.Context, event *models.Event) (*des
input, err := p.Format(ctx, event)
if err != nil {
- return nil, err
+ return destregistry.NewFormatError("aws_s3", "", err)
}
_, err = p.client.PutObject(ctx, input)
diff --git a/internal/destregistry/providers/destawss3/destawss3_format_test.go b/internal/destregistry/providers/destawss3/destawss3_format_test.go
index e206c5c5..c197c784 100644
--- a/internal/destregistry/providers/destawss3/destawss3_format_test.go
+++ b/internal/destregistry/providers/destawss3/destawss3_format_test.go
@@ -198,6 +198,42 @@ func TestAWSS3Publisher_Format_NilResult(t *testing.T) {
assert.Contains(t, err.Error(), "nil result")
}
+// TestAWSS3Publisher_Publish_FormatError reproduces the production incident where a
+// key_template references a field absent from the event (here metadata.operationId on
+// an event with no such metadata). The key cannot be built, so Format fails. Publish
+// must surface this as a failed delivery + ErrDestinationPublishAttempt (so the registry
+// records an attempt and acks) rather than a nil delivery (which nacks into the DLQ).
+func TestAWSS3Publisher_Publish_FormatError(t *testing.T) {
+ event := models.Event{
+ ID: "event-123",
+ Time: time.Now(),
+ Data: json.RawMessage(`{}`),
+ }
+
+ // Mirrors the incident template: join over a missing metadata field yields nil,
+ // which join rejects. Reaches Publish's Format step before any S3 client call,
+ // so a nil client is safe here.
+ template := `join('/', ['prefix', metadata.operationId])`
+ publisher := destawss3.NewAWSS3Publisher(
+ destregistry.NewBasePublisher(),
+ nil,
+ "my-bucket",
+ template,
+ "STANDARD",
+ )
+
+ delivery, err := publisher.Publish(context.Background(), &event)
+
+ require.NotNil(t, delivery, "format failure must yield a non-nil delivery so the message is acked, not DLQ'd")
+ assert.Equal(t, "failed", delivery.Status)
+ assert.Equal(t, "ERR", delivery.Code)
+
+ var pubErr *destregistry.ErrDestinationPublishAttempt
+ require.ErrorAs(t, err, &pubErr)
+ assert.Equal(t, "aws_s3", pubErr.Provider)
+ assert.Equal(t, "format_failed", pubErr.Data["error"])
+}
+
func TestAWSS3Publisher_Format_EmptyResult(t *testing.T) {
event := models.Event{
ID: "event-123",
diff --git a/internal/destregistry/providers/destawssqs/destawssqs.go b/internal/destregistry/providers/destawssqs/destawssqs.go
index f605e3b2..511140b4 100644
--- a/internal/destregistry/providers/destawssqs/destawssqs.go
+++ b/internal/destregistry/providers/destawssqs/destawssqs.go
@@ -163,7 +163,7 @@ func (p *AWSSQSPublisher) Publish(ctx context.Context, event *models.Event) (*de
msg, err := p.Format(ctx, event)
if err != nil {
- return nil, err
+ return destregistry.NewFormatError("aws_sqs", "", err)
}
if _, err = p.client.SendMessage(ctx, msg); err != nil {
diff --git a/internal/destregistry/providers/destazureservicebus/destazureservicebus.go b/internal/destregistry/providers/destazureservicebus/destazureservicebus.go
index 65252bfd..7034d991 100644
--- a/internal/destregistry/providers/destazureservicebus/destazureservicebus.go
+++ b/internal/destregistry/providers/destazureservicebus/destazureservicebus.go
@@ -149,7 +149,7 @@ func (p *AzureServiceBusPublisher) Publish(ctx context.Context, event *models.Ev
message, err := p.Format(ctx, event)
if err != nil {
- return nil, err
+ return destregistry.NewFormatError("azure_servicebus", "", err)
}
sender, err := p.ensureSender()
diff --git a/internal/destregistry/providers/destgcppubsub/destgcppubsub.go b/internal/destregistry/providers/destgcppubsub/destgcppubsub.go
index f522411b..9ee1e9ad 100644
--- a/internal/destregistry/providers/destgcppubsub/destgcppubsub.go
+++ b/internal/destregistry/providers/destgcppubsub/destgcppubsub.go
@@ -184,7 +184,7 @@ func (pub *GCPPubSubPublisher) Publish(ctx context.Context, event *models.Event)
// Format the message
msg, err := pub.Format(ctx, event)
if err != nil {
- return nil, err
+ return destregistry.NewFormatError("gcp_pubsub", "", err)
}
// Publish the message
diff --git a/internal/destregistry/providers/destkafka/destkafka.go b/internal/destregistry/providers/destkafka/destkafka.go
index a75cdc63..6d7cfafa 100644
--- a/internal/destregistry/providers/destkafka/destkafka.go
+++ b/internal/destregistry/providers/destkafka/destkafka.go
@@ -222,12 +222,7 @@ func (p *KafkaPublisher) Publish(ctx context.Context, event *models.Event) (*des
// Build parsed payload for partition key JMESPath evaluation
dataMap, err := event.ParsedData()
if err != nil {
- return nil, destregistry.NewErrDestinationPublishAttempt(
- err, "kafka", map[string]interface{}{
- "error": "format_failed",
- "message": err.Error(),
- },
- )
+ return destregistry.NewFormatError("kafka", "", err)
}
if dataMap == nil {
dataMap = make(map[string]interface{})
diff --git a/internal/destregistry/providers/destwebhook/destwebhook.go b/internal/destregistry/providers/destwebhook/destwebhook.go
index 0162a2e2..055a4318 100644
--- a/internal/destregistry/providers/destwebhook/destwebhook.go
+++ b/internal/destregistry/providers/destwebhook/destwebhook.go
@@ -658,7 +658,7 @@ func (p *WebhookPublisher) Publish(ctx context.Context, event *models.Event) (*d
httpReq, err := p.Format(ctx, event)
if err != nil {
- return nil, err
+ return destregistry.NewFormatError("webhook", "", err)
}
result := ExecuteHTTPRequest(ctx, p.httpClient, httpReq, "webhook")
diff --git a/internal/destregistry/providers/destwebhookstandard/destwebhookstandard.go b/internal/destregistry/providers/destwebhookstandard/destwebhookstandard.go
index fc4f098b..33d47c74 100644
--- a/internal/destregistry/providers/destwebhookstandard/destwebhookstandard.go
+++ b/internal/destregistry/providers/destwebhookstandard/destwebhookstandard.go
@@ -555,7 +555,7 @@ func (p *StandardWebhookPublisher) Publish(ctx context.Context, event *models.Ev
httpReq, err := p.Format(ctx, event)
if err != nil {
- return nil, err
+ return destregistry.NewFormatError("webhook_standard", "", err)
}
result := destwebhook.ExecuteHTTPRequest(ctx, p.httpClient, httpReq, "webhook_standard")
diff --git a/sdks/outpost-go/.speakeasy/gen.lock b/sdks/outpost-go/.speakeasy/gen.lock
index 6b24a114..1235ea17 100644
--- a/sdks/outpost-go/.speakeasy/gen.lock
+++ b/sdks/outpost-go/.speakeasy/gen.lock
@@ -1,25 +1,25 @@
lockVersion: 2.0.0
id: f0627709-5a00-43ac-8678-ca716d6f379c
management:
- docChecksum: 59653b88754ae178057b100551d5c49e
+ docChecksum: 44bd8e72c1ac611e3e28caba9255116e
docVersion: 0.0.1
- speakeasyVersion: 1.763.0
- generationVersion: 2.884.0
- releaseVersion: 1.4.0
- configChecksum: ba7a328eae8a56894b30bc9f473aa6e8
+ speakeasyVersion: 1.780.0
+ generationVersion: 2.906.0
+ releaseVersion: 1.4.1
+ configChecksum: bc8af1404897e448022eebdab9faad6f
repoURL: https://github.com/hookdeck/outpost.git
repoSubDirectory: sdks/outpost-go
installationURL: https://github.com/hookdeck/outpost
persistentEdits:
- generation_id: a23ea2b9-7dcc-4eee-8417-9db77c8080f5
- pristine_commit_hash: 430200e7d130958c5d51da5b8f76aaac7c11c33e
- pristine_tree_hash: efdbe2e1c4fbd7d832698c7e7b2a93c9a6956b17
+ generation_id: b02faf30-19f7-42ce-b491-e92462679a56
+ pristine_commit_hash: 5c9651df7f920b02860e367aa9f480278cebed7c
+ pristine_tree_hash: 55be1017e9d850f96db764178c65ad8d2750d07c
features:
go:
additionalDependencies: 0.1.0
additionalProperties: 0.1.2
constsAndDefaults: 0.1.14
- core: 3.13.40
+ core: 3.13.46
defaultEnabledRetries: 0.2.0
envVarSecurityUsage: 0.3.2
flattening: 2.81.2
@@ -32,7 +32,7 @@ features:
nameOverrides: 2.81.4
nullables: 0.2.1
responseFormat: 0.1.2
- retries: 2.84.2
+ retries: 2.84.3
sdkHooks: 0.3.0
unions: 2.87.7
trackedFiles:
@@ -170,32 +170,32 @@ trackedFiles:
pristine_git_object: 9a93f00e9b078361c71824996ff8aebb209d5d4f
docs/models/components/destinationawskinesis.md:
id: b14a0a005618
- last_write_checksum: sha1:951a2447439af159741c5b3ea81388664e679550
- pristine_git_object: 819b9814554850900462c6eaa50c6750c2f9fde5
+ last_write_checksum: sha1:0b8f7e0593e5dae0a4959084b288dd3a84e035b0
+ pristine_git_object: a35bcc42c0f0460fc269c7974a263a1678be289e
docs/models/components/destinationawskinesistype.md:
id: bcee015e58a9
last_write_checksum: sha1:b9951247da199aea74c93f86ab57b4237d72d41a
pristine_git_object: edb6251b826ee6c3dc4ffabe7310ec4b0794cb5a
docs/models/components/destinationawss3.md:
id: 906ec923f423
- last_write_checksum: sha1:6bd619c9b3848f85d415da2d38e970a81153da9a
- pristine_git_object: 10864b3cf1857235f4cbe8271872fab0ae288f5c
+ last_write_checksum: sha1:495d9d300a95eb8b0e556747abaee442c190a4ec
+ pristine_git_object: 3a75f4b4cc40134b1eb221fd53b76554d1e1e555
docs/models/components/destinationawss3type.md:
id: a0a8c1c43c1e
last_write_checksum: sha1:bfd94b18c2604daa8c60435ce5617367f6b75e0b
pristine_git_object: 574cf5df39e6ea0322b9879cb062fddbafdcc6d2
docs/models/components/destinationawssqs.md:
id: 3a958a8ebec9
- last_write_checksum: sha1:453c29dc1f3df75b882e0e5d98ad17d2f875292d
- pristine_git_object: 5dbfb35ac69a4b1914360c7c0f2033da59e07260
+ last_write_checksum: sha1:52c4611db492d6128671d88db41df31e361ad585
+ pristine_git_object: 7c00cca45dcd49c997adf03cb11ed31d9eb97268
docs/models/components/destinationawssqstype.md:
id: 26c8eec5f1a2
last_write_checksum: sha1:191822f7c6437691a4d169f095619bcd7582ad74
pristine_git_object: 3e5168c821dde0205748389fae0626ebf86a16b6
docs/models/components/destinationazureservicebus.md:
id: fcf6d1e4ce40
- last_write_checksum: sha1:bf7c6cdd2e876497e6b716132f34cdbe8af860b4
- pristine_git_object: dabd1fd9bd878c020546304ab460dc87d2ac36da
+ last_write_checksum: sha1:e8e175499cead00b37eb8e9c55fb6c7e65726200
+ pristine_git_object: f2bc3b1e309c015d60059d5fadb6882e849a77ea
docs/models/components/destinationazureservicebustype.md:
id: 293590e753b9
last_write_checksum: sha1:d65d7d74b01a0860dd32a3d88a857fa6594c80f7
@@ -206,104 +206,104 @@ trackedFiles:
pristine_git_object: 302a4307d84d3d0be6d24287f39636478f82317f
docs/models/components/destinationcreateawskinesis.md:
id: 5593f1bd5e1a
- last_write_checksum: sha1:e93d6d3d7bc80f6edccaba0302c24fce7bfe8db7
- pristine_git_object: 663c136320c99a83ce985e64c3dcae6d6fc4876b
+ last_write_checksum: sha1:4904f2e169ebe0723f518eb351a16ca6347bbc0c
+ pristine_git_object: 80106b0c9d5ca4c782dbc3062858d1adbe0f0be8
docs/models/components/destinationcreateawskinesistype.md:
id: 6956680339a0
last_write_checksum: sha1:ccfe37b5aec6c9cc151a70e4c9a83badcebf0ce9
pristine_git_object: 0a54ef9a6fd668ebc2e658bacb3556cdb18a4f5e
docs/models/components/destinationcreateawss3.md:
id: af91634b61a0
- last_write_checksum: sha1:fce629bff9ce32aec5c0b572af14e971a9579744
- pristine_git_object: 13f58791c1b3aa5202a67512d945684a71d67fc3
+ last_write_checksum: sha1:6a2d2435816d0275aa2e4403dade0835f28e493d
+ pristine_git_object: 439d97ac7c2183050b0dea2ee1592f661d49c948
docs/models/components/destinationcreateawss3type.md:
id: 6877bf7e23ec
last_write_checksum: sha1:15f7ecdaf26e36c0293c8da23599a38b81bc3be0
pristine_git_object: 3c81a08e5b289348be136baa3a104afbfda0abae
docs/models/components/destinationcreateawssqs.md:
id: c6b726f0ec14
- last_write_checksum: sha1:624a53c289d7ce9085e1a98248a3ffe38b8bca85
- pristine_git_object: 89dec8c8d2693b600e888e2a278d1d66d77777e8
+ last_write_checksum: sha1:8acfb03b3f0a1e6eadc15d66d859a04a61020270
+ pristine_git_object: 66faa016cb89319789500a19a297065327104551
docs/models/components/destinationcreateawssqstype.md:
id: 1ef234381d5e
last_write_checksum: sha1:6fa312b73dffdacc62b2d05b264d3b6794da974f
pristine_git_object: 31eab2ef4c64390f168a4ff6808d7e1e3b685089
docs/models/components/destinationcreateazureservicebus.md:
id: 89472b979d07
- last_write_checksum: sha1:2cf9deb396f7a939117089c2dd8024dc81b2e2d5
- pristine_git_object: 2272715f46a8496ddfe6a6cb013e0cf72828b78a
+ last_write_checksum: sha1:bcabc9a45ece480093dbf7e29871d7d86a73e322
+ pristine_git_object: e6350d9a64ceeafc288a31036effe6b1930ba0e4
docs/models/components/destinationcreateazureservicebustype.md:
id: 7bcec8499967
last_write_checksum: sha1:4556330df57f6e8afb09b8f70ba8899214a33373
pristine_git_object: 45c69a88d58579d1450876db00bb913772b61f28
docs/models/components/destinationcreategcppubsub.md:
id: 83e1ebef3406
- last_write_checksum: sha1:6f00dbfcc12e4d2e57546173ba8ee51f367aa193
- pristine_git_object: 00928462a2aeb6b9fac6c1a3c93cec1ffc4c3db8
+ last_write_checksum: sha1:5b3cf7e8f30a85f5f0a008bc4ae862464aa7b0b8
+ pristine_git_object: 397fc131b5185ae23e4af0ea1e33fb37611689ea
docs/models/components/destinationcreategcppubsubtype.md:
id: dc2f412568a7
last_write_checksum: sha1:b6e81a8cdb239107506d6f7c6a946f0e980623f8
pristine_git_object: 2d821818d1265a121a3386844818bb679079a4db
docs/models/components/destinationcreatehookdeck.md:
id: a06f19b079ed
- last_write_checksum: sha1:15efb07afd442088e512c7acc1ae8ca575b8478e
- pristine_git_object: 28ef2cdf78cbca380df8b0a995dd2aae1109cbf1
+ last_write_checksum: sha1:f174aadfd51f76b52002d45ad5497d9880c783b3
+ pristine_git_object: cb7c04266dab1fc9c680d8e1cc2d9e1c57ba7180
docs/models/components/destinationcreatehookdecktype.md:
id: 7633062252b9
last_write_checksum: sha1:6ca9d40f2c4eac5e7d540c5c0e0a7bc4e4a73d6d
pristine_git_object: 034fb5298041b5d42008c7a5a8a86c2fb50002cb
docs/models/components/destinationcreatekafka.md:
id: 7c43fe1d2c1f
- last_write_checksum: sha1:7ada6179a97a5da69b0afb71d490b1c88f96146c
- pristine_git_object: cb567538cedec2ca4ae98569e728536c3421a777
+ last_write_checksum: sha1:5d439344719d4d427a6bd218a7fbe1246b1cba32
+ pristine_git_object: 83413354a8199ce4fe49ff26cdb69ed872b8aeb7
docs/models/components/destinationcreatekafkatype.md:
id: d63a5ec5cd5c
last_write_checksum: sha1:bf2d38ec8b1b1869907fcf4406c7eaad09c3c53c
pristine_git_object: 09388b639b8f73730259ed54a2f7c9515d4e35f5
docs/models/components/destinationcreaterabbitmq.md:
id: 3f95bd0221e2
- last_write_checksum: sha1:d8f2221eec47a8957cdb243162211b3492d4bdb7
- pristine_git_object: 3316027202bc407c674a67bc050f80b191874b3b
+ last_write_checksum: sha1:a967042bded0edc0380ce842244e2b3cbbbc4d2a
+ pristine_git_object: d03c4c709931b515e8e5bc716ba40a851816cec3
docs/models/components/destinationcreaterabbitmqtype.md:
id: 71cf19ccfc8b
last_write_checksum: sha1:f66d756b3e5f4321643ee26fe4b6963fda64828f
pristine_git_object: fb92b828c9737d6279145a208f79df0fb41d8fe0
docs/models/components/destinationcreatewebhook.md:
id: 92e4ccbf4461
- last_write_checksum: sha1:8855b8158b4dc7f3653e25c39108ebc059827b0c
- pristine_git_object: b6f782c0a53786ddf69ebbd2580c5d8bf19bcfdd
+ last_write_checksum: sha1:0f18bd83b0e347e4f40bb20fc58abc9e0f6c05fc
+ pristine_git_object: 34d26398aaf88ec5c01fe04d9b6a116a3411c6c6
docs/models/components/destinationcreatewebhooktype.md:
id: b112cbdd9f49
last_write_checksum: sha1:d2446eb8980f8027afd9b4e8e96007077a3c9fed
pristine_git_object: 4fc8c45179cd9ceed9f9f38c4df532d6dd9257e8
docs/models/components/destinationgcppubsub.md:
id: 557a06720b9c
- last_write_checksum: sha1:31e01813181dcabe353772e4bc2e6d462d35a4b7
- pristine_git_object: 08637263534d2a4a2ff628426f4eedac8d0d4e25
+ last_write_checksum: sha1:3e9a31b8b0f23c36d54e828dbcb12438725ed2a5
+ pristine_git_object: 7cadf6af520c3fc5a4555f6bf7f6719c343a8c88
docs/models/components/destinationgcppubsubtype.md:
id: 534d34c1b5da
last_write_checksum: sha1:9565b47deb99273e373e3983629e5f98c28fdf3f
pristine_git_object: f5c90e98edde70281d4069d65b2a3670b44134ff
docs/models/components/destinationhookdeck.md:
id: 96d7701b7615
- last_write_checksum: sha1:b8318e93ae418d68597ddae160ff7152902ccfb1
- pristine_git_object: 4aa80340adc4038a631d0fab5ce229d34742bbb1
+ last_write_checksum: sha1:6e9b43d5aff87570fd48c5bb6e3ce1b1a3e55a40
+ pristine_git_object: 89f1dcb0fc48d36c4580cadafa679c65e36cc76b
docs/models/components/destinationhookdecktype.md:
id: 20b93e4b32a3
last_write_checksum: sha1:ab3d845bedfc96d091498992ae82bcd6cfffea82
pristine_git_object: d72769fda77f452e8007b6da877a37180280a18b
docs/models/components/destinationkafka.md:
id: 2c87d51f8d4c
- last_write_checksum: sha1:e9759df4199c99ee51537ea085bede2d8f54e130
- pristine_git_object: 9cf60c875256583cb20237465cd1cca4bf455660
+ last_write_checksum: sha1:70f5874809824efee164dcb0929decde138a1a1d
+ pristine_git_object: 8faf22905bc9943fa824539a59cb393128305e61
docs/models/components/destinationkafkatype.md:
id: 085501970a60
last_write_checksum: sha1:8ce1c6f563a6ce326594603e63e8336b353532f8
pristine_git_object: f9b0b6a919f34a02540e3d458f0c666dc29d9308
docs/models/components/destinationrabbitmq.md:
id: 30c699fde40a
- last_write_checksum: sha1:526c5b2f2c98ae7087a5e3d5306bb65f43a9dcd9
- pristine_git_object: 1b28823664d2fab36c3d93cdf0a481d611c5800d
+ last_write_checksum: sha1:88fd7e4351455f145274ecd1818adf41c3c46fdb
+ pristine_git_object: b4b833e453952d930fba4a76b47871f620c5a4db
docs/models/components/destinationrabbitmqtype.md:
id: 36f7e64c4fe6
last_write_checksum: sha1:a9dfc1e02b50445b35ecabab2959b9b18ecb4367
@@ -330,80 +330,80 @@ trackedFiles:
pristine_git_object: 52c6589fb259bf449d607a4c0e70092de449e9d1
docs/models/components/destinationupdateawskinesis.md:
id: e0a4842ef74c
- last_write_checksum: sha1:a33b4d01f1afee3c2a713acb6b01565ff8ed5945
- pristine_git_object: 9699af9313ca72bc83b1f3a93dcaee188fdb4a66
+ last_write_checksum: sha1:54957289eb22fcb7dcab17c75b64d441e3474513
+ pristine_git_object: 06ef7553dd8ab7774e8b19a4640e20a8315b55d3
docs/models/components/destinationupdateawskinesistype.md:
id: b950376a277c
last_write_checksum: sha1:3a40b845ecffff83f424b58bc0349d9095f8cd0d
pristine_git_object: d1c5388c97e7a3bee929d478007a3ec7f77ab966
docs/models/components/destinationupdateawss3.md:
id: c250ff90df94
- last_write_checksum: sha1:13c1eb59de053c8e74bab368702d4dcf921f7118
- pristine_git_object: be5ec60fd1ab6026bdad94bf87faefb5390552d8
+ last_write_checksum: sha1:eccd016dcff1efb95adef280298a69e405799d6d
+ pristine_git_object: a563ef41f18713eb4521bb9f3647fd0004961b2b
docs/models/components/destinationupdateawss3type.md:
id: e12ac4e5e869
last_write_checksum: sha1:c00d84e82cc700b16744e6892f720aed2465934e
pristine_git_object: b92ee289dbc4851b63ff893484ad1c3965597b0b
docs/models/components/destinationupdateawssqs.md:
id: e2401ded4e44
- last_write_checksum: sha1:d2be2498efa6e00753db56ab8f36218fbac10a51
- pristine_git_object: 2fe94de104bbc1cb7cf4a26709d1b0111f934216
+ last_write_checksum: sha1:81d833761834b78987acf5030dd7e69d655df79c
+ pristine_git_object: cad0c44e7c183c46e2608733b5a32d430201164b
docs/models/components/destinationupdateawssqstype.md:
id: 5cc2dc65e193
last_write_checksum: sha1:d8355ac4ab61cfb06d7267b8834fc9fc8f73dbeb
pristine_git_object: 3328adc71892ee38dfdb36e119d226c0daa624b2
docs/models/components/destinationupdateazureservicebus.md:
id: f230709db383
- last_write_checksum: sha1:ee076dd3ea4b3aa469cead07357420c523ef1460
- pristine_git_object: 125aac4e8ba1f86c1d6bf4df342443700fd32190
+ last_write_checksum: sha1:a5242ec66fd7bd1bd5fdf8e0bcda045e5b98cc62
+ pristine_git_object: 8487da067d8f6c86442740253322ee0c541b3f07
docs/models/components/destinationupdateazureservicebustype.md:
id: 19c362ba1ced
last_write_checksum: sha1:34d5a3f9a4322af44d8d16eae95f312242b8f8f1
pristine_git_object: 68e5914e0d60b4cc7b2c4a4be5767e133b5b2772
docs/models/components/destinationupdategcppubsub.md:
id: dfb954a0431a
- last_write_checksum: sha1:6b3f9b13b5d59af603630813d9ff9da7d5ad5572
- pristine_git_object: 4c5443d092bfde7975828d0018a298328ee78e58
+ last_write_checksum: sha1:b7fb822cc0f525c9df3e6f6aba510253c5930df1
+ pristine_git_object: ad4c3713d86f6d818abf17bcbf545c51ccc18bb3
docs/models/components/destinationupdategcppubsubtype.md:
id: a095172171c7
last_write_checksum: sha1:968f650186995d3daab1ea06ac9f41f9624484b4
pristine_git_object: 307a428b2713172d770cafcc12f1762c27be6420
docs/models/components/destinationupdatehookdeck.md:
id: 2d0fe3ebe94f
- last_write_checksum: sha1:d8d46f37811fb917b097cb7cc1d6d68773ec3941
- pristine_git_object: 1e4b82b2891e5ecf813f620cac2adbcee583e961
+ last_write_checksum: sha1:d774a75dddc91d53806a35bd89a142379a7d1f5c
+ pristine_git_object: 2ef157c20b70abc3b94218a5288fd507dd9bf133
docs/models/components/destinationupdatehookdecktype.md:
id: a611289cdb0e
last_write_checksum: sha1:97870de8f50423e6b3f2181bb7ddafcaccc88d7f
pristine_git_object: dcb4cf55719ec5a4e714a7646baaa232a2789a69
docs/models/components/destinationupdatekafka.md:
id: 10be812cf1c0
- last_write_checksum: sha1:51d725802868184a62bff1acb9382376bc31c1d2
- pristine_git_object: 978c8a78c02b4d90dec4f8fbf49d8a6df365a736
+ last_write_checksum: sha1:2e9ee858e3f47871663e3a57aaa4d19a00c48d1e
+ pristine_git_object: fcf81970352f637f7d060aa3566e85933f5b8835
docs/models/components/destinationupdatekafkatype.md:
id: 577718f3b8d0
last_write_checksum: sha1:d56c73c4f2de8bd9daf5bb2cdfe256811da48d0d
pristine_git_object: 7aef17a3e134fec7ca61c0aef0f66dc00c4c17cd
docs/models/components/destinationupdaterabbitmq.md:
id: 75ae8e40dfd5
- last_write_checksum: sha1:d5ac7df3ec095cd9cea68713f2ff96153d26127a
- pristine_git_object: 4c859623c47d6e6ab8881abc7504f419a5cd9b14
+ last_write_checksum: sha1:606660301f90b6cc95c1581082731ccc14943f25
+ pristine_git_object: 03620c5a3387469af352457db5c66363cfa4799c
docs/models/components/destinationupdaterabbitmqtype.md:
id: e7d99db9e418
last_write_checksum: sha1:58323c14c9f1fd64ecf8cc7146b193b2d58edeec
pristine_git_object: a1807b457d8f49163eb31fa048372fe73b4e65b9
docs/models/components/destinationupdatewebhook.md:
id: 86013f6d41fd
- last_write_checksum: sha1:79d4cdf6b645c2294aaabade0c1a03e59ea7339b
- pristine_git_object: 2e7257013e6a3fdab68eaa8c6bc5e5f27a762554
+ last_write_checksum: sha1:42d10663053c09321cd471cd4e649a3c6f022170
+ pristine_git_object: 6a6efeeaae13131beba0d234b6a19f9089032a7d
docs/models/components/destinationupdatewebhooktype.md:
id: d6c44fdc6bcf
last_write_checksum: sha1:cbaf0cdcdafd54c19e9115acf0f4157f1234b698
pristine_git_object: 1124d415c33ab8f7582d6b0072f25f1ac9bde2d6
docs/models/components/destinationwebhook.md:
id: 1b6ca867dbc9
- last_write_checksum: sha1:5dd9693db96dae3adf383dfd0a7185a511e96935
- pristine_git_object: 7bf9f5b5c46cd84c14a616dbf3bdd60620dca40d
+ last_write_checksum: sha1:8968f03a2d667125b72d66f868b1452ef9cd9537
+ pristine_git_object: e350c8c2b97e9fe4e53c58ceb2f943bb0e51075a
docs/models/components/destinationwebhooktype.md:
id: 9af3df11d0a9
last_write_checksum: sha1:011daec8699debd918c086819320e74e8f7061f8
@@ -494,8 +494,8 @@ trackedFiles:
pristine_git_object: d1141a02d60743c7339302652f66bb64c71fe2fc
docs/models/components/managedconfig.md:
id: f5084f1c1f7a
- last_write_checksum: sha1:d75c5c0ca295d5557f9ad7531cb35d4df8ad58bb
- pristine_git_object: 6acd2997d7a2a2d78ebb0677c81af2bc4c950d08
+ last_write_checksum: sha1:96bb26b5ce4054f1764923cce6ec5af307694533
+ pristine_git_object: a2684de0dfbed8350d3e21d4a50e48a67ff4a351
docs/models/components/metricsdatapoint.md:
id: dfbc8ed48932
last_write_checksum: sha1:10e6085c6aa487c68ef15b853671fe15a530f311
@@ -562,8 +562,8 @@ trackedFiles:
pristine_git_object: 634e6368385c203eacc61b1d31e40bf72b7dca0e
docs/models/components/seekpagination.md:
id: 72fb642d581e
- last_write_checksum: sha1:f5e15f96c1171b5760cb04ac596a0d3a7a6c3a60
- pristine_git_object: 8c9ea95c926ea0505d9a9ceabd4a90bc032e0826
+ last_write_checksum: sha1:1a621ffe41785fafab5c9727ae4fa6681dd1f76d
+ pristine_git_object: 63f22083cf369e3f4123556878ff49702f3a364d
docs/models/components/setuplink.md:
id: 0a5d61010a41
last_write_checksum: sha1:352088e7ae6371a58bb756c309d69c709f5978af
@@ -1050,8 +1050,8 @@ trackedFiles:
pristine_git_object: bcbe6cd80ded6c1d55e249bed50f26ab37ea3cb5
go.mod:
id: c47645c391ad
- last_write_checksum: sha1:79dd70b8063184ec2aedf2a926c867febdda9263
- pristine_git_object: 5dd9b9351841dfcd9fb261d2f83a2f1884fd0753
+ last_write_checksum: sha1:68a67727206f999e3558a2dcf89ad01be3be299e
+ pristine_git_object: 50a35ad21da26e97d2ad84fd2c2a7e87681bbbb4
health.go:
id: ca291aa88e47
last_write_checksum: sha1:d84401562999c3e4ccb36facaf3c388da185ce90
@@ -1082,8 +1082,8 @@ trackedFiles:
pristine_git_object: d44fa066f74f2b6b1fbc13bb4c79a2b6b09ac174
internal/utils/json.go:
id: ad03e3c502d8
- last_write_checksum: sha1:804b1db787f8914af263b5c09ea014d4ebc7d06b
- pristine_git_object: 187b094dcafbe024fb9d8f17b1b4aca68340d5f7
+ last_write_checksum: sha1:fc28baf22a291ddbd8f9f2ef458fd728a10e576a
+ pristine_git_object: 83d4a48e0b58b7fa7df1bcfcf5be957d1d4c11f6
internal/utils/pathparams.go:
id: 1f3e0c30fd90
last_write_checksum: sha1:6f59c72b7d953a2507689b4beb0e4a83d1f6458d
@@ -1414,8 +1414,8 @@ trackedFiles:
pristine_git_object: 820239d134351f7b2189ee6f5b95c1619f05190a
models/components/managedconfig.go:
id: 183ca33f4b26
- last_write_checksum: sha1:b8d16ee3380394ecdc94d1b5825fd8e9e6199c64
- pristine_git_object: 4d9ea686f48fccd294b3722d07f4586e4dd854e2
+ last_write_checksum: sha1:9a6d1fee0e1e88ce90f06c3812d46ff2d4624b9d
+ pristine_git_object: 77e50f234028c7078afcf71f2aabe8256f667de5
models/components/metricsdatapoint.go:
id: 7a1d3a5a8a04
last_write_checksum: sha1:135b2e19a5a1053675cc62e1b718d985e8fb733e
@@ -1642,12 +1642,12 @@ trackedFiles:
pristine_git_object: e6e5a01c6e721e879e24a38a1f97e3e27d4686d4
outpost.go:
id: 7aebc57e3f81
- last_write_checksum: sha1:95fbe1078067689ac8c27ffc7d6e4a191a7c59be
- pristine_git_object: 80f42bb3dbb0a124ce9aa5c5203f1819400192b3
+ last_write_checksum: sha1:75ee7b393ab3ee2f6205e91fd1b492879dac370c
+ pristine_git_object: 6846cd10dd566d6acc72af10185b3410776e2f98
retry/config.go:
id: 82d673cb0389
- last_write_checksum: sha1:7f7d96b59a18e95bac847ae09c63bbd911ee8432
- pristine_git_object: 5b3dc7c122d8ab08905485342d7474f8f163888d
+ last_write_checksum: sha1:102d1953fbd7e9f312c4442c71ccca2eaaeaa27d
+ pristine_git_object: 767002c7898128324d8741ce9c534bd466492169
schemas.go:
id: 5a2cc530e9a9
last_write_checksum: sha1:b43d2cf4a1db1289f71daac654fe8918bbc89457
@@ -2258,9 +2258,7 @@ examples:
application/json: {}
examplesVersion: 1.0.2
generatedTests: {}
-releaseNotes: |
- ## Go SDK Changes:
- * `Outpost.Destinations.Update()`: `request.Body` **Changed** (Breaking ⚠️)
+releaseNotes: "## Go SDK Changes:\n* `Outpost.Configuration.GetManagedConfig()`: `response` **Changed** (Breaking ⚠️)\n* `Outpost.Configuration.UpdateManagedConfig()`: \n * `request.Request` **Changed** (Breaking ⚠️)\n * `response` **Changed** (Breaking ⚠️)\n"
generatedFiles:
- .gitattributes
- /models/apierrors/badrequesterror.go
diff --git a/sdks/outpost-go/.speakeasy/gen.yaml b/sdks/outpost-go/.speakeasy/gen.yaml
index be395d92..067ae03d 100644
--- a/sdks/outpost-go/.speakeasy/gen.yaml
+++ b/sdks/outpost-go/.speakeasy/gen.yaml
@@ -29,7 +29,7 @@ generation:
generateNewTests: false
skipResponseBodyAssertions: false
go:
- version: 1.4.0
+ version: 1.4.1
additionalDependencies: {}
allowUnknownFieldsInWeakUnions: false
baseErrorName: OutpostError
diff --git a/sdks/outpost-go/RELEASES.md b/sdks/outpost-go/RELEASES.md
index ae8c2fef..a49e7496 100644
--- a/sdks/outpost-go/RELEASES.md
+++ b/sdks/outpost-go/RELEASES.md
@@ -208,4 +208,14 @@ Based on:
### Generated
- [go v1.4.0] sdks/outpost-go
### Releases
-- [Go v1.4.0] https://github.com/hookdeck/outpost/releases/tag/sdks/outpost-go/v1.4.0 - sdks/outpost-go
\ No newline at end of file
+- [Go v1.4.0] https://github.com/hookdeck/outpost/releases/tag/sdks/outpost-go/v1.4.0 - sdks/outpost-go
+
+## 2026-06-16 18:34:50
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.780.0 (2.906.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [go v1.4.1] sdks/outpost-go
+### Releases
+- [Go v1.4.1] https://github.com/hookdeck/outpost/releases/tag/sdks/outpost-go/v1.4.1 - sdks/outpost-go
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationawskinesis.md b/sdks/outpost-go/docs/models/components/destinationawskinesis.md
index 819b9814..a35bcc42 100644
--- a/sdks/outpost-go/docs/models/components/destinationawskinesis.md
+++ b/sdks/outpost-go/docs/models/components/destinationawskinesis.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationAWSKinesisType](../../models/components/destinationawskinesistype.md) | :heavy_check_mark: | Type of the destination. | aws_kinesis |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.AWSKinesisConfig](../../models/components/awskinesisconfig.md) | :heavy_check_mark: | N/A | |
diff --git a/sdks/outpost-go/docs/models/components/destinationawss3.md b/sdks/outpost-go/docs/models/components/destinationawss3.md
index 10864b3c..3a75f4b4 100644
--- a/sdks/outpost-go/docs/models/components/destinationawss3.md
+++ b/sdks/outpost-go/docs/models/components/destinationawss3.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationAwss3Type](../../models/components/destinationawss3type.md) | :heavy_check_mark: | Type of the destination. | aws_s3 |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.Awss3Config](../../models/components/awss3config.md) | :heavy_check_mark: | N/A | |
@@ -17,4 +17,4 @@
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `Target` | `*string` | :heavy_minus_sign: | A human-readable representation of the destination target (bucket and region). Read-only. | my-bucket in us-east-1 |
-| `TargetURL` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the bucket). Read-only. | |
\ No newline at end of file
+| `TargetURL` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | A URL link to the destination target (AWS Console link to the bucket). Read-only. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationawssqs.md b/sdks/outpost-go/docs/models/components/destinationawssqs.md
index 5dbfb35a..7c00cca4 100644
--- a/sdks/outpost-go/docs/models/components/destinationawssqs.md
+++ b/sdks/outpost-go/docs/models/components/destinationawssqs.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationAWSSQSType](../../models/components/destinationawssqstype.md) | :heavy_check_mark: | Type of the destination. | aws_sqs |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.AWSSQSConfig](../../models/components/awssqsconfig.md) | :heavy_check_mark: | N/A | |
diff --git a/sdks/outpost-go/docs/models/components/destinationazureservicebus.md b/sdks/outpost-go/docs/models/components/destinationazureservicebus.md
index dabd1fd9..f2bc3b1e 100644
--- a/sdks/outpost-go/docs/models/components/destinationazureservicebus.md
+++ b/sdks/outpost-go/docs/models/components/destinationazureservicebus.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationAzureServiceBusType](../../models/components/destinationazureservicebustype.md) | :heavy_check_mark: | Type of the destination. | azure_servicebus |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_minus_sign: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.AzureServiceBusConfig](../../models/components/azureservicebusconfig.md) | :heavy_check_mark: | N/A | |
diff --git a/sdks/outpost-go/docs/models/components/destinationcreateawskinesis.md b/sdks/outpost-go/docs/models/components/destinationcreateawskinesis.md
index 663c1363..80106b0c 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreateawskinesis.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreateawskinesis.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreateawss3.md b/sdks/outpost-go/docs/models/components/destinationcreateawss3.md
index 13f58791..439d97ac 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreateawss3.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreateawss3.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreateawssqs.md b/sdks/outpost-go/docs/models/components/destinationcreateawssqs.md
index 89dec8c8..66faa016 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreateawssqs.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreateawssqs.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreateazureservicebus.md b/sdks/outpost-go/docs/models/components/destinationcreateazureservicebus.md
index 2272715f..e6350d9a 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreateazureservicebus.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreateazureservicebus.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreategcppubsub.md b/sdks/outpost-go/docs/models/components/destinationcreategcppubsub.md
index 00928462..397fc131 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreategcppubsub.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreategcppubsub.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreatehookdeck.md b/sdks/outpost-go/docs/models/components/destinationcreatehookdeck.md
index 28ef2cdf..cb7c0426 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreatehookdeck.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreatehookdeck.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreatekafka.md b/sdks/outpost-go/docs/models/components/destinationcreatekafka.md
index cb567538..83413354 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreatekafka.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreatekafka.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreaterabbitmq.md b/sdks/outpost-go/docs/models/components/destinationcreaterabbitmq.md
index 33160272..d03c4c70 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreaterabbitmq.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreaterabbitmq.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationcreatewebhook.md b/sdks/outpost-go/docs/models/components/destinationcreatewebhook.md
index b6f782c0..34d26398 100644
--- a/sdks/outpost-go/docs/models/components/destinationcreatewebhook.md
+++ b/sdks/outpost-go/docs/models/components/destinationcreatewebhook.md
@@ -15,4 +15,4 @@
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `CreatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the creation timestamp. Intended for importing destinations from another system. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to the current time when omitted. | 2024-02-15T10:00:00Z |
| `UpdatedAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Optional override for the last-updated timestamp. Intended for importing destinations. Must not be in the future. **Admin (API key) auth only — sending this with JWT auth returns 403.** Defaults to created_at when omitted. | 2024-02-15T10:00:00Z |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | If set, the destination is created in a disabled state with this timestamp. Must not be in the future. Defaults to null (enabled). | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationgcppubsub.md b/sdks/outpost-go/docs/models/components/destinationgcppubsub.md
index 08637263..7cadf6af 100644
--- a/sdks/outpost-go/docs/models/components/destinationgcppubsub.md
+++ b/sdks/outpost-go/docs/models/components/destinationgcppubsub.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationGCPPubSubType](../../models/components/destinationgcppubsubtype.md) | :heavy_check_mark: | Type of the destination. | gcp_pubsub |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.GCPPubSubConfig](../../models/components/gcppubsubconfig.md) | :heavy_check_mark: | N/A | |
diff --git a/sdks/outpost-go/docs/models/components/destinationhookdeck.md b/sdks/outpost-go/docs/models/components/destinationhookdeck.md
index 4aa80340..89f1dcb0 100644
--- a/sdks/outpost-go/docs/models/components/destinationhookdeck.md
+++ b/sdks/outpost-go/docs/models/components/destinationhookdeck.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationHookdeckType](../../models/components/destinationhookdecktype.md) | :heavy_check_mark: | Type of the destination. | hookdeck |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_minus_sign: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | `any` | :heavy_minus_sign: | N/A | |
diff --git a/sdks/outpost-go/docs/models/components/destinationkafka.md b/sdks/outpost-go/docs/models/components/destinationkafka.md
index 9cf60c87..8faf2290 100644
--- a/sdks/outpost-go/docs/models/components/destinationkafka.md
+++ b/sdks/outpost-go/docs/models/components/destinationkafka.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationKafkaType](../../models/components/destinationkafkatype.md) | :heavy_check_mark: | Type of the destination. | kafka |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.KafkaConfig](../../models/components/kafkaconfig.md) | :heavy_check_mark: | N/A | |
@@ -17,4 +17,4 @@
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `Target` | `*string` | :heavy_minus_sign: | A human-readable representation of the destination target (broker and topic). Read-only. | broker1.example.com:9092 / events |
-| `TargetURL` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | A URL link to the destination target. Read-only. | |
\ No newline at end of file
+| `TargetURL` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | A URL link to the destination target. Read-only. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationrabbitmq.md b/sdks/outpost-go/docs/models/components/destinationrabbitmq.md
index 1b288236..b4b833e4 100644
--- a/sdks/outpost-go/docs/models/components/destinationrabbitmq.md
+++ b/sdks/outpost-go/docs/models/components/destinationrabbitmq.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationRabbitMQType](../../models/components/destinationrabbitmqtype.md) | :heavy_check_mark: | Type of the destination. | rabbitmq |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.RabbitMQConfig](../../models/components/rabbitmqconfig.md) | :heavy_check_mark: | N/A | |
@@ -17,4 +17,4 @@
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. | {
"internal-id": "123",
"team": "platform"
} |
| `Target` | `*string` | :heavy_minus_sign: | A human-readable representation of the destination target (RabbitMQ exchange). Read-only. | events-exchange |
-| `TargetURL` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | A URL link to the destination target (not applicable for RabbitMQ exchange). Read-only. | |
\ No newline at end of file
+| `TargetURL` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | A URL link to the destination target (not applicable for RabbitMQ exchange). Read-only. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdateawskinesis.md b/sdks/outpost-go/docs/models/components/destinationupdateawskinesis.md
index 9699af93..06ef7553 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdateawskinesis.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdateawskinesis.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.AWSKinesisCredentialsUpdate](../../models/components/awskinesiscredentialsupdate.md) | :heavy_minus_sign: | Partial AWS Kinesis credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdateawss3.md b/sdks/outpost-go/docs/models/components/destinationupdateawss3.md
index be5ec60f..a563ef41 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdateawss3.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdateawss3.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.Awss3CredentialsUpdate](../../models/components/awss3credentialsupdate.md) | :heavy_minus_sign: | Partial AWS S3 credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdateawssqs.md b/sdks/outpost-go/docs/models/components/destinationupdateawssqs.md
index 2fe94de1..cad0c44e 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdateawssqs.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdateawssqs.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.AWSSQSCredentialsUpdate](../../models/components/awssqscredentialsupdate.md) | :heavy_minus_sign: | Partial AWS SQS credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdateazureservicebus.md b/sdks/outpost-go/docs/models/components/destinationupdateazureservicebus.md
index 125aac4e..8487da06 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdateazureservicebus.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdateazureservicebus.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.AzureServiceBusCredentialsUpdate](../../models/components/azureservicebuscredentialsupdate.md) | :heavy_minus_sign: | Partial Azure Service Bus credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdategcppubsub.md b/sdks/outpost-go/docs/models/components/destinationupdategcppubsub.md
index 4c5443d0..ad4c3713 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdategcppubsub.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdategcppubsub.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.GCPPubSubCredentialsUpdate](../../models/components/gcppubsubcredentialsupdate.md) | :heavy_minus_sign: | Partial GCP Pub/Sub credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdatehookdeck.md b/sdks/outpost-go/docs/models/components/destinationupdatehookdeck.md
index 1e4b82b2..2ef157c2 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdatehookdeck.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdatehookdeck.md
@@ -11,4 +11,4 @@
| `Credentials` | [*components.HookdeckCredentialsUpdate](../../models/components/hookdeckcredentialsupdate.md) | :heavy_minus_sign: | Partial Hookdeck credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdatekafka.md b/sdks/outpost-go/docs/models/components/destinationupdatekafka.md
index 978c8a78..fcf81970 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdatekafka.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdatekafka.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.KafkaCredentialsUpdate](../../models/components/kafkacredentialsupdate.md) | :heavy_minus_sign: | Partial Kafka credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdaterabbitmq.md b/sdks/outpost-go/docs/models/components/destinationupdaterabbitmq.md
index 4c859623..03620c5a 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdaterabbitmq.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdaterabbitmq.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.RabbitMQCredentialsUpdate](../../models/components/rabbitmqcredentialsupdate.md) | :heavy_minus_sign: | Partial RabbitMQ credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationupdatewebhook.md b/sdks/outpost-go/docs/models/components/destinationupdatewebhook.md
index 2e725701..6a6efeea 100644
--- a/sdks/outpost-go/docs/models/components/destinationupdatewebhook.md
+++ b/sdks/outpost-go/docs/models/components/destinationupdatewebhook.md
@@ -12,4 +12,4 @@
| `Credentials` | [*components.WebhookCredentialsUpdate](../../models/components/webhookcredentialsupdate.md) | :heavy_minus_sign: | Partial Webhook credentials for PATCH updates (RFC 7396 merge-patch). | |
| `DeliveryMetadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Static key-value pairs merged into event metadata on every attempt. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"app-id": "my-app",
"region": "us-east-1"
} |
| `Metadata` | optionalnullable.OptionalNullable[map[string]`*string`] | :heavy_minus_sign: | Arbitrary contextual information stored with the destination. Uses JSON merge-patch semantics (RFC 7396): send keys to add/update, null values to delete keys, null for entire field to clear all. Omit or send {} for no change. | {
"internal-id": "123",
"team": "platform"
} |
-| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | |
\ No newline at end of file
+| `DisabledAt` | optionalnullable.OptionalNullable[[time.Time](https://pkg.go.dev/time#Time)] | :heavy_minus_sign: | Update the disabled state of the destination. Send a timestamp (must not be in the future) to disable, null to enable, or omit to leave unchanged. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/docs/models/components/destinationwebhook.md b/sdks/outpost-go/docs/models/components/destinationwebhook.md
index 7bf9f5b5..e350c8c2 100644
--- a/sdks/outpost-go/docs/models/components/destinationwebhook.md
+++ b/sdks/outpost-go/docs/models/components/destinationwebhook.md
@@ -9,7 +9,7 @@
| `Type` | [components.DestinationWebhookType](../../models/components/destinationwebhooktype.md) | :heavy_check_mark: | Type of the destination. | webhook |
| `Topics` | [components.Topics](../../models/components/topics.md) | :heavy_check_mark: | "*" or an array of enabled topics. | * |
| `Filter` | optionalnullable.OptionalNullable[map[string]`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.
Uses full-replacement semantics on update: send a new object to replace, null or `{}` to clear, omit for no change.
| {
"data": {
"amount": {
"$gte": 100
},
"customer": {
"tier": "premium"
}
}
} |
-| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | |
+| `DisabledAt` | [*time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was disabled, or null if enabled. | null |
| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was created. | 2024-01-01T00:00:00Z |
| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | ISO Date when the destination was last updated. | 2024-01-01T00:00:00Z |
| `Config` | [components.WebhookConfig](../../models/components/webhookconfig.md) | :heavy_check_mark: | N/A | |
diff --git a/sdks/outpost-go/docs/models/components/managedconfig.md b/sdks/outpost-go/docs/models/components/managedconfig.md
index 6acd2997..a2684de0 100644
--- a/sdks/outpost-go/docs/models/components/managedconfig.md
+++ b/sdks/outpost-go/docs/models/components/managedconfig.md
@@ -11,8 +11,8 @@ Self-hosted deployments configure these values using environment variables.
| Field | Type | Required | Description |
| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
| `AlertAutoDisableDestination` | `*string` | :heavy_minus_sign: | N/A |
-| `AlertCallbackURL` | `*string` | :heavy_minus_sign: | N/A |
| `AlertConsecutiveFailureCount` | `*string` | :heavy_minus_sign: | N/A |
+| `AlertExhaustedRetriesWindowSeconds` | `*string` | :heavy_minus_sign: | N/A |
| `DeliveryTimeoutSeconds` | `*string` | :heavy_minus_sign: | N/A |
| `DestinationsAwsKinesisMetadataInPayload` | `*string` | :heavy_minus_sign: | N/A |
| `DestinationsIncludeMillisecondTimestamp` | `*string` | :heavy_minus_sign: | N/A |
@@ -34,7 +34,6 @@ Self-hosted deployments configure these values using environment variables.
| `IdgenEventPrefix` | `*string` | :heavy_minus_sign: | N/A |
| `IdgenType` | `*string` | :heavy_minus_sign: | N/A |
| `MaxDestinationsPerTenant` | `*string` | :heavy_minus_sign: | N/A |
-| `OrganizationName` | `*string` | :heavy_minus_sign: | N/A |
| `PortalBrandColor` | `*string` | :heavy_minus_sign: | N/A |
| `PortalDisableOutpostBranding` | `*string` | :heavy_minus_sign: | N/A |
| `PortalFaviconURL` | `*string` | :heavy_minus_sign: | N/A |
diff --git a/sdks/outpost-go/docs/models/components/seekpagination.md b/sdks/outpost-go/docs/models/components/seekpagination.md
index 8c9ea95c..63f22083 100644
--- a/sdks/outpost-go/docs/models/components/seekpagination.md
+++ b/sdks/outpost-go/docs/models/components/seekpagination.md
@@ -11,4 +11,4 @@ Cursor-based pagination metadata for list responses.
| `Dir` | [*components.Dir](../../models/components/dir.md) | :heavy_minus_sign: | Sort direction. | desc |
| `Limit` | `*int64` | :heavy_minus_sign: | Page size limit. | 100 |
| `Next` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | Cursor for the next page of results. Null if no more results. | MTcwNDA2NzIwMA== |
-| `Prev` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | Cursor for the previous page of results. Null if on first page. | |
\ No newline at end of file
+| `Prev` | optionalnullable.OptionalNullable[`string`] | :heavy_minus_sign: | Cursor for the previous page of results. Null if on first page. | null |
\ No newline at end of file
diff --git a/sdks/outpost-go/go.mod b/sdks/outpost-go/go.mod
index 5dd9b935..50a35ad2 100644
--- a/sdks/outpost-go/go.mod
+++ b/sdks/outpost-go/go.mod
@@ -1,6 +1,6 @@
module github.com/hookdeck/outpost/sdks/outpost-go
-go 1.22
+go 1.25.10
require github.com/stretchr/testify v1.11.1
diff --git a/sdks/outpost-go/internal/utils/json.go b/sdks/outpost-go/internal/utils/json.go
index 187b094d..83d4a48e 100644
--- a/sdks/outpost-go/internal/utils/json.go
+++ b/sdks/outpost-go/internal/utils/json.go
@@ -512,6 +512,13 @@ func unmarshalValue(value json.RawMessage, v reflect.Value, tag reflect.StructTa
return nil
}
case reflect.Map:
+ if implementsJSONUnmarshaler(v.Type()) {
+ if v.CanAddr() {
+ return json.Unmarshal(value, v.Addr().Interface())
+ }
+ return json.Unmarshal(value, v.Interface())
+ }
+
if bytes.Equal(value, []byte("null")) || !isComplexValueType(dereferenceTypePointer(typ.Elem())) {
if v.CanAddr() {
return json.Unmarshal(value, v.Addr().Interface())
diff --git a/sdks/outpost-go/models/components/managedconfig.go b/sdks/outpost-go/models/components/managedconfig.go
index 4d9ea686..77e50f23 100644
--- a/sdks/outpost-go/models/components/managedconfig.go
+++ b/sdks/outpost-go/models/components/managedconfig.go
@@ -7,8 +7,8 @@ package components
// Self-hosted deployments configure these values using environment variables.
type ManagedConfig struct {
AlertAutoDisableDestination *string `json:"ALERT_AUTO_DISABLE_DESTINATION,omitempty"`
- AlertCallbackURL *string `json:"ALERT_CALLBACK_URL,omitempty"`
AlertConsecutiveFailureCount *string `json:"ALERT_CONSECUTIVE_FAILURE_COUNT,omitempty"`
+ AlertExhaustedRetriesWindowSeconds *string `json:"ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS,omitempty"`
DeliveryTimeoutSeconds *string `json:"DELIVERY_TIMEOUT_SECONDS,omitempty"`
DestinationsAwsKinesisMetadataInPayload *string `json:"DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD,omitempty"`
DestinationsIncludeMillisecondTimestamp *string `json:"DESTINATIONS_INCLUDE_MILLISECOND_TIMESTAMP,omitempty"`
@@ -30,7 +30,6 @@ type ManagedConfig struct {
IdgenEventPrefix *string `json:"IDGEN_EVENT_PREFIX,omitempty"`
IdgenType *string `json:"IDGEN_TYPE,omitempty"`
MaxDestinationsPerTenant *string `json:"MAX_DESTINATIONS_PER_TENANT,omitempty"`
- OrganizationName *string `json:"ORGANIZATION_NAME,omitempty"`
PortalBrandColor *string `json:"PORTAL_BRAND_COLOR,omitempty"`
PortalDisableOutpostBranding *string `json:"PORTAL_DISABLE_OUTPOST_BRANDING,omitempty"`
PortalFaviconURL *string `json:"PORTAL_FAVICON_URL,omitempty"`
@@ -77,18 +76,18 @@ func (m *ManagedConfig) GetAlertAutoDisableDestination() *string {
return m.AlertAutoDisableDestination
}
-func (m *ManagedConfig) GetAlertCallbackURL() *string {
+func (m *ManagedConfig) GetAlertConsecutiveFailureCount() *string {
if m == nil {
return nil
}
- return m.AlertCallbackURL
+ return m.AlertConsecutiveFailureCount
}
-func (m *ManagedConfig) GetAlertConsecutiveFailureCount() *string {
+func (m *ManagedConfig) GetAlertExhaustedRetriesWindowSeconds() *string {
if m == nil {
return nil
}
- return m.AlertConsecutiveFailureCount
+ return m.AlertExhaustedRetriesWindowSeconds
}
func (m *ManagedConfig) GetDeliveryTimeoutSeconds() *string {
@@ -238,13 +237,6 @@ func (m *ManagedConfig) GetMaxDestinationsPerTenant() *string {
return m.MaxDestinationsPerTenant
}
-func (m *ManagedConfig) GetOrganizationName() *string {
- if m == nil {
- return nil
- }
- return m.OrganizationName
-}
-
func (m *ManagedConfig) GetPortalBrandColor() *string {
if m == nil {
return nil
diff --git a/sdks/outpost-go/outpost.go b/sdks/outpost-go/outpost.go
index 80f42bb3..6846cd10 100644
--- a/sdks/outpost-go/outpost.go
+++ b/sdks/outpost-go/outpost.go
@@ -2,7 +2,7 @@
package outpostgo
-// Generated from OpenAPI doc version 0.0.1 and generator version 2.884.0
+// Generated from OpenAPI doc version 0.0.1 and generator version 2.906.0
import (
"bytes"
@@ -172,9 +172,9 @@ func WithTimeout(timeout time.Duration) SDKOption {
// New creates a new instance of the SDK with the provided options
func New(opts ...SDKOption) *Outpost {
sdk := &Outpost{
- SDKVersion: "1.4.0",
+ SDKVersion: "1.4.1",
sdkConfiguration: config.SDKConfiguration{
- UserAgent: "speakeasy-sdk/go 1.4.0 2.884.0 0.0.1 github.com/hookdeck/outpost/sdks/outpost-go",
+ UserAgent: "speakeasy-sdk/go 1.4.1 2.906.0 0.0.1 github.com/hookdeck/outpost/sdks/outpost-go",
ServerList: ServerList,
},
hooks: hooks.New(),
diff --git a/sdks/outpost-go/retry/config.go b/sdks/outpost-go/retry/config.go
index 5b3dc7c1..767002c7 100644
--- a/sdks/outpost-go/retry/config.go
+++ b/sdks/outpost-go/retry/config.go
@@ -98,6 +98,14 @@ func retryIntervalFromResponse(res *http.Response) time.Duration {
return 0
}
+ retryAfterMsVal := res.Header.Get("retry-after-ms")
+ if retryAfterMsVal != "" {
+ parsedMs, err := strconv.ParseInt(retryAfterMsVal, 10, 64)
+ if err == nil && parsedMs >= 0 {
+ return time.Duration(parsedMs) * time.Millisecond
+ }
+ }
+
retryVal := res.Header.Get("retry-after")
if retryVal == "" {
return 0
diff --git a/sdks/outpost-go/shields.json b/sdks/outpost-go/shields.json
index 0397ad6e..320a626d 100644
--- a/sdks/outpost-go/shields.json
+++ b/sdks/outpost-go/shields.json
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "outpost-go",
- "message": "v1.4.0",
+ "message": "v1.4.1",
"color": "blue"
}
diff --git a/sdks/outpost-python/.speakeasy/gen.lock b/sdks/outpost-python/.speakeasy/gen.lock
index d004c961..c2dce8f7 100644
--- a/sdks/outpost-python/.speakeasy/gen.lock
+++ b/sdks/outpost-python/.speakeasy/gen.lock
@@ -1,26 +1,26 @@
lockVersion: 2.0.0
id: da774284-22d9-4b6c-bb26-1c3fc9f2c7ee
management:
- docChecksum: b8231303350debfcd93ddd3554fe8788
+ docChecksum: 48af941c89104f4f85ea8ab3092ec5db
docVersion: 0.0.1
- speakeasyVersion: 1.768.2
- generationVersion: 2.889.1
- releaseVersion: 1.4.0
- configChecksum: dc6879811fea886ac36dc4ca4e884bdd
+ speakeasyVersion: 1.780.0
+ generationVersion: 2.906.0
+ releaseVersion: 1.4.1
+ configChecksum: 3638cc0683d7f21c56f364bc790986c5
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: 44f495cc-36d8-41d1-9934-555d39a1dbc2
- pristine_commit_hash: 7235c25bedb9eaa83bd637b193a7d36588f86690
- pristine_tree_hash: 023defff34787c361ee1f23acd337f2af733ee7e
+ generation_id: 0e3d80db-a4a3-4118-81a6-b7eed903a397
+ pristine_commit_hash: 0bbc29e2649815dd26aecab9b4f9b180d95f66ab
+ pristine_tree_hash: 115488e008e709f95a5aa5a1ad34a5c2b6df6a7c
features:
python:
- additionalDependencies: 1.0.0
+ additionalDependencies: 1.1.0
additionalProperties: 1.0.1
constsAndDefaults: 1.0.7
- core: 6.0.23
+ core: 6.0.30
defaultEnabledRetries: 0.2.0
enumUnions: 0.1.1
envVarSecurityUsage: 0.3.3
@@ -33,9 +33,9 @@ features:
nameOverrides: 3.0.3
nullables: 1.0.2
responseFormat: 1.1.0
- retries: 3.0.5
+ retries: 3.0.6
sdkHooks: 1.2.1
- unions: 3.1.5
+ unions: 3.1.6
trackedFiles:
.gitattributes:
id: 24139dae6567
@@ -795,8 +795,8 @@ trackedFiles:
pristine_git_object: 14d312b6d1c8a81415b625253eefe05f3f0ad276
docs/models/managedconfig.md:
id: 56bc51d52ab0
- last_write_checksum: sha1:a284cef0619ba61f14446d8cd9b0f99ac6ea5748
- pristine_git_object: 2260881c2ab73757397cb8740cc76ce0b62145a6
+ last_write_checksum: sha1:d56fd1aad7a64939efa6d86b0c5759b7b4798765
+ pristine_git_object: d8bbc76c7a12360403118cf71565cf086c3554e7
docs/models/metricsdatapoint.md:
id: 7ab5449287c3
last_write_checksum: sha1:ed280c92a54e7b8a0d55cb99261bfb689bbc47a1
@@ -995,8 +995,8 @@ trackedFiles:
pristine_git_object: cca330736fb6ecec666b32012a4c346570dd5085
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:0eecd88c59f1524f8dcb01f4c9cd5d4024ae488f
- pristine_git_object: e99eac12ff9b9344e45d659aebb9661ffd194d0c
+ last_write_checksum: sha1:9932d96fcd29f9481ed1e95ec9f6ad88630cabb5
+ pristine_git_object: 4718bc884daa20ea6a24218ef0562c4f4eb00487
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:eb460f85c06b287fee629d997b2df75c92fa1cab
@@ -1023,12 +1023,12 @@ trackedFiles:
pristine_git_object: b1777a2eacece4434c53b2e136158f0c1360707d
src/outpost_sdk/_version.py:
id: 22be68f35ad0
- last_write_checksum: sha1:f1a6eb61e14f8d8199c376cf22b0ce38fafc27aa
- pristine_git_object: cf8ba2ca11c1f1936c734b69b920af2732c1841e
+ last_write_checksum: sha1:b72248c18b4d1a533872fea8cbfbeb66a861f0d6
+ pristine_git_object: d54d29394f1924b0db1110ae8adc616559d003ef
src/outpost_sdk/attempts.py:
id: 304ea4e0bbf1
- last_write_checksum: sha1:f7950262c68b31eee16d8868da4265583ed3f707
- pristine_git_object: 7c5191a8ac7f830a295f5c1f302c0dc837eb9237
+ last_write_checksum: sha1:7093d57bf48237637c69526e2caa6112372ac84f
+ pristine_git_object: d12693228a074d5dd88d718cd1b76f3e7486d797
src/outpost_sdk/basesdk.py:
id: 06a87cb4bdaf
last_write_checksum: sha1:a3f270afc94f10f54e18bbb46c6c2cc988fec1b1
@@ -1039,8 +1039,8 @@ trackedFiles:
pristine_git_object: 5db6f13013abe76da1d7d01cd09ea8b69f8b77c9
src/outpost_sdk/destinations.py:
id: c941d7cf8960
- last_write_checksum: sha1:5bd98a9bf0a2b2b044d1b78b7b9ef6e108cf82e1
- pristine_git_object: df104c01905f67dbb328542115fe64c05627f002
+ last_write_checksum: sha1:35f24a2053067aafed8a37363ef7f82c1a39e1d4
+ pristine_git_object: c2d22e1821e80fa531347093a6d5c324a4f9c849
src/outpost_sdk/errors/__init__.py:
id: 8cd8140f4773
last_write_checksum: sha1:32a90fdbd5d713cbffb8ff6e4066055df2268392
@@ -1451,8 +1451,8 @@ trackedFiles:
pristine_git_object: fff65f0f24d2f2717481ea57b803c03acc35d10f
src/outpost_sdk/models/managedconfig.py:
id: 6e2467f6cfb6
- last_write_checksum: sha1:9371d6424fb548a90658dfa23cb88400ffa34990
- pristine_git_object: cc6b2742f2e6a1b4b4db331eb55e6ed4f6272595
+ last_write_checksum: sha1:b7ed823460fdcd778ae2c32d688d6fa288b2153d
+ pristine_git_object: 9bc9b8edfc2119633ea188df7265ce4ab900b77d
src/outpost_sdk/models/metricsdatapoint.py:
id: 402c8bbf628c
last_write_checksum: sha1:6f9c42b80858d89c0d0c4f5e06c4e5d23567f6ce
@@ -1587,8 +1587,8 @@ trackedFiles:
pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96
src/outpost_sdk/types/base64fileinput.py:
id: efd371b5f586
- last_write_checksum: sha1:4780e893d3853b5a6e28d9a6ca3ee102ce0f502d
- pristine_git_object: 25fc53989ed497649363f983219fc58705c8bf87
+ last_write_checksum: sha1:1522687ae3398374c35710cad993a6e82b5ab99d
+ pristine_git_object: 862566fe2b1db830276b390e136e65090e5963d2
src/outpost_sdk/types/basemodel.py:
id: a135d73a3022
last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584
@@ -1615,12 +1615,12 @@ trackedFiles:
pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828
src/outpost_sdk/utils/eventstreaming.py:
id: 820142ef32ea
- last_write_checksum: sha1:620d78a8b4e3b854e08d136e02e40a01a786bd70
- pristine_git_object: 3bdcd6d3d4fc772cb7f5fca8685dcdc8c85e13e8
+ last_write_checksum: sha1:7d1dc68f8b48486ab646653aa05cc38752e1f912
+ pristine_git_object: a8d4fe5cc88d3c7337339e1b36a61bbf7ca8c4eb
src/outpost_sdk/utils/forms.py:
id: 906e4bc25e36
- last_write_checksum: sha1:15fa7e9ab1611e062a9984cf06cb20969713d295
- pristine_git_object: f961e76beaf0a8b1fe0dda44754a74eebd3608e7
+ last_write_checksum: sha1:a971cdb120ad3d416d296d5d0ad89e4808350a7f
+ pristine_git_object: fdf0dc9b2a67bca773eefe6b471498cccaa83424
src/outpost_sdk/utils/headers.py:
id: bc69a402eee7
last_write_checksum: sha1:7c6df233ee006332b566a8afa9ce9a245941d935
@@ -1639,20 +1639,20 @@ trackedFiles:
pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41
src/outpost_sdk/utils/requestbodies.py:
id: 99737fa2de7e
- last_write_checksum: sha1:41e2d2d2d3ecc394c8122ca4d4b85e1c3e03f054
- pristine_git_object: 1de32b6d26f46590232f398fdba6ce0072f1659c
+ last_write_checksum: sha1:e1fef575283b7fe7fe2ad392dbbb3fb105309124
+ pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13
src/outpost_sdk/utils/retries.py:
id: febe03add039
- last_write_checksum: sha1:471372f5c5d1dd5583239c9cf3c75f1b636e5d87
- pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e
+ last_write_checksum: sha1:9fcb404e0a5113634df964b4f393ba4eea5a76f3
+ pristine_git_object: bab2066f128973f7a38a94ccc5b378bd849a3cd9
src/outpost_sdk/utils/security.py:
id: 575c509050a4
last_write_checksum: sha1:c11eef495b6aaa249178c24c796940cc540b7a00
pristine_git_object: 42d8d78e9981eed7507670014d99588e27ab325a
src/outpost_sdk/utils/serializers.py:
id: a71d1afce9d8
- last_write_checksum: sha1:61009f2e4ef6613a1a5af813fe020373dae5a492
- pristine_git_object: d2149f8b909cb96628db140ac3cddb1b1e981367
+ last_write_checksum: sha1:7485f1425b0661fd84836186570df90207eec6af
+ pristine_git_object: 1031ed930bad5ece220cf7416a56c29f40f0588b
src/outpost_sdk/utils/unmarshal_json_response.py:
id: 559ebd25bf1b
last_write_checksum: sha1:7a229b6339ba72cb62a8a15f9bce02567eeb511f
@@ -2247,9 +2247,7 @@ examples:
application/json: {}
examplesVersion: 1.0.2
generatedTests: {}
-releaseNotes: |
- ## Python SDK Changes:
- * `outpost.destinations.update()`: `request.body` **Changed** (Breaking ⚠️)
+releaseNotes: "## Python SDK Changes:\n* `outpost.configuration.get_managed_config()`: `response` **Changed** (Breaking ⚠️)\n* `outpost.configuration.update_managed_config()`: \n * `request` **Changed** (Breaking ⚠️)\n * `response` **Changed** (Breaking ⚠️)\n"
generatedFiles:
- .gitattributes
- .vscode/settings.json
diff --git a/sdks/outpost-python/.speakeasy/gen.yaml b/sdks/outpost-python/.speakeasy/gen.yaml
index 47b22953..d6f1606c 100644
--- a/sdks/outpost-python/.speakeasy/gen.yaml
+++ b/sdks/outpost-python/.speakeasy/gen.yaml
@@ -29,7 +29,7 @@ generation:
generateNewTests: false
skipResponseBodyAssertions: false
python:
- version: 1.4.0
+ version: 1.4.1
additionalDependencies:
dev: {}
main: {}
@@ -40,12 +40,17 @@ python:
authors:
- Speakeasy
baseErrorName: OutpostError
+ bodyVariantOverloads: false
clientServerStatusCodesAsErrors: true
constFieldCasing: upper
defaultErrorName: APIError
description: Python Client SDK Generated by Speakeasy.
enableCustomCodeRegions: false
enumFormat: enum
+ errorSchemaValidation: true
+ eventStreamClassNames:
+ async: EventStreamAsync
+ sync: EventStream
fixFlags:
asyncPaginationSep2025: false
conflictResistantModelImportsFeb2026: false
@@ -65,17 +70,22 @@ python:
webhooks: ""
inferUnionDiscriminators: true
inputModelSuffix: input
+ inputTypedDictSuffix: TypedDict
license: ""
maxMethodParams: 4
methodArguments: require-security-and-request
+ methodTimeoutArgument: timeout-ms
+ methodTimeoutUnits: milliseconds
moduleName: ""
multipartArrayFormat: legacy
+ optionalDependencies: {}
outputModelSuffix: output
packageManager: poetry
packageName: outpost_sdk
preApplyUnionDiscriminators: false
pytestFilterWarnings: []
pytestTimeout: 0
+ rawResponseHelpers: false
responseFormat: flat
sseFlatResponse: false
templateVersion: v2
diff --git a/sdks/outpost-python/RELEASES.md b/sdks/outpost-python/RELEASES.md
index 53ec6031..942bfdf1 100644
--- a/sdks/outpost-python/RELEASES.md
+++ b/sdks/outpost-python/RELEASES.md
@@ -168,4 +168,14 @@ Based on:
### Generated
- [python v1.4.0] sdks/outpost-python
### Releases
-- [PyPI v1.4.0] https://pypi.org/project/outpost_sdk/1.4.0 - sdks/outpost-python
\ No newline at end of file
+- [PyPI v1.4.0] https://pypi.org/project/outpost_sdk/1.4.0 - sdks/outpost-python
+
+## 2026-06-16 18:48:07
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.780.0 (2.906.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.4.1] sdks/outpost-python
+### Releases
+- [PyPI v1.4.1] https://pypi.org/project/outpost_sdk/1.4.1 - sdks/outpost-python
\ No newline at end of file
diff --git a/sdks/outpost-python/docs/models/managedconfig.md b/sdks/outpost-python/docs/models/managedconfig.md
index 2260881c..d8bbc76c 100644
--- a/sdks/outpost-python/docs/models/managedconfig.md
+++ b/sdks/outpost-python/docs/models/managedconfig.md
@@ -11,8 +11,8 @@ Self-hosted deployments configure these values using environment variables.
| Field | Type | Required | Description |
| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
| `alert_auto_disable_destination` | *Optional[str]* | :heavy_minus_sign: | N/A |
-| `alert_callback_url` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `alert_consecutive_failure_count` | *Optional[str]* | :heavy_minus_sign: | N/A |
+| `alert_exhausted_retries_window_seconds` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `delivery_timeout_seconds` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `destinations_aws_kinesis_metadata_in_payload` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `destinations_include_millisecond_timestamp` | *Optional[str]* | :heavy_minus_sign: | N/A |
@@ -34,7 +34,6 @@ Self-hosted deployments configure these values using environment variables.
| `idgen_event_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `idgen_type` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `max_destinations_per_tenant` | *Optional[str]* | :heavy_minus_sign: | N/A |
-| `organization_name` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `portal_brand_color` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `portal_disable_outpost_branding` | *Optional[str]* | :heavy_minus_sign: | N/A |
| `portal_favicon_url` | *Optional[str]* | :heavy_minus_sign: | N/A |
diff --git a/sdks/outpost-python/pyproject.toml b/sdks/outpost-python/pyproject.toml
index e99eac12..4718bc88 100644
--- a/sdks/outpost-python/pyproject.toml
+++ b/sdks/outpost-python/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "outpost_sdk"
-version = "1.4.0"
+version = "1.4.1"
description = "Python Client SDK Generated by Speakeasy."
authors = [{ name = "Speakeasy" },]
readme = "README-PYPI.md"
diff --git a/sdks/outpost-python/src/outpost_sdk/_version.py b/sdks/outpost-python/src/outpost_sdk/_version.py
index cf8ba2ca..d54d2939 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 = "1.4.0"
+__version__: str = "1.4.1"
__openapi_doc_version__: str = "0.0.1"
-__gen_version__: str = "2.889.1"
-__user_agent__: str = "speakeasy-sdk/python 1.4.0 2.889.1 0.0.1 outpost_sdk"
+__gen_version__: str = "2.906.0"
+__user_agent__: str = "speakeasy-sdk/python 1.4.1 2.906.0 0.0.1 outpost_sdk"
try:
if __package__ is not None:
diff --git a/sdks/outpost-python/src/outpost_sdk/attempts.py b/sdks/outpost-python/src/outpost_sdk/attempts.py
index 7c5191a8..d1269322 100644
--- a/sdks/outpost-python/src/outpost_sdk/attempts.py
+++ b/sdks/outpost-python/src/outpost_sdk/attempts.py
@@ -266,7 +266,7 @@ def get(
request = models.GetAttemptRequest(
attempt_id=attempt_id,
tenant_id=tenant_id,
- include=include,
+ include=utils.unmarshal(include, Optional[models.GetAttemptInclude]),
)
req = self._build_request(
@@ -379,7 +379,7 @@ async def get_async(
request = models.GetAttemptRequest(
attempt_id=attempt_id,
tenant_id=tenant_id,
- include=include,
+ include=utils.unmarshal(include, Optional[models.GetAttemptInclude]),
)
req = self._build_request_async(
diff --git a/sdks/outpost-python/src/outpost_sdk/destinations.py b/sdks/outpost-python/src/outpost_sdk/destinations.py
index df104c01..c2d22e18 100644
--- a/sdks/outpost-python/src/outpost_sdk/destinations.py
+++ b/sdks/outpost-python/src/outpost_sdk/destinations.py
@@ -62,8 +62,10 @@ def list(
request = models.ListTenantDestinationsRequest(
tenant_id=tenant_id,
- type=type_,
- topics=topics,
+ type=utils.unmarshal(type_, Optional[models.ListTenantDestinationsType]),
+ topics=utils.unmarshal(
+ topics, Optional[models.ListTenantDestinationsTopics]
+ ),
)
req = self._build_request(
@@ -174,8 +176,10 @@ async def list_async(
request = models.ListTenantDestinationsRequest(
tenant_id=tenant_id,
- type=type_,
- topics=topics,
+ type=utils.unmarshal(type_, Optional[models.ListTenantDestinationsType]),
+ topics=utils.unmarshal(
+ topics, Optional[models.ListTenantDestinationsTopics]
+ ),
)
req = self._build_request_async(
@@ -1722,7 +1726,9 @@ def get_attempt(
tenant_id=tenant_id,
destination_id=destination_id,
attempt_id=attempt_id,
- include=include,
+ include=utils.unmarshal(
+ include, Optional[models.GetTenantDestinationAttemptInclude]
+ ),
)
req = self._build_request(
@@ -1837,7 +1843,9 @@ async def get_attempt_async(
tenant_id=tenant_id,
destination_id=destination_id,
attempt_id=attempt_id,
- include=include,
+ include=utils.unmarshal(
+ include, Optional[models.GetTenantDestinationAttemptInclude]
+ ),
)
req = self._build_request_async(
diff --git a/sdks/outpost-python/src/outpost_sdk/models/managedconfig.py b/sdks/outpost-python/src/outpost_sdk/models/managedconfig.py
index cc6b2742..9bc9b8ed 100644
--- a/sdks/outpost-python/src/outpost_sdk/models/managedconfig.py
+++ b/sdks/outpost-python/src/outpost_sdk/models/managedconfig.py
@@ -16,8 +16,8 @@ class ManagedConfigTypedDict(TypedDict):
"""
alert_auto_disable_destination: NotRequired[str]
- alert_callback_url: NotRequired[str]
alert_consecutive_failure_count: NotRequired[str]
+ alert_exhausted_retries_window_seconds: NotRequired[str]
delivery_timeout_seconds: NotRequired[str]
destinations_aws_kinesis_metadata_in_payload: NotRequired[str]
destinations_include_millisecond_timestamp: NotRequired[str]
@@ -39,7 +39,6 @@ class ManagedConfigTypedDict(TypedDict):
idgen_event_prefix: NotRequired[str]
idgen_type: NotRequired[str]
max_destinations_per_tenant: NotRequired[str]
- organization_name: NotRequired[str]
portal_brand_color: NotRequired[str]
portal_disable_outpost_branding: NotRequired[str]
portal_favicon_url: NotRequired[str]
@@ -90,14 +89,14 @@ class ManagedConfig(BaseModel):
Optional[str], pydantic.Field(alias="ALERT_AUTO_DISABLE_DESTINATION")
] = None
- alert_callback_url: Annotated[
- Optional[str], pydantic.Field(alias="ALERT_CALLBACK_URL")
- ] = None
-
alert_consecutive_failure_count: Annotated[
Optional[str], pydantic.Field(alias="ALERT_CONSECUTIVE_FAILURE_COUNT")
] = None
+ alert_exhausted_retries_window_seconds: Annotated[
+ Optional[str], pydantic.Field(alias="ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS")
+ ] = None
+
delivery_timeout_seconds: Annotated[
Optional[str], pydantic.Field(alias="DELIVERY_TIMEOUT_SECONDS")
] = None
@@ -189,10 +188,6 @@ class ManagedConfig(BaseModel):
Optional[str], pydantic.Field(alias="MAX_DESTINATIONS_PER_TENANT")
] = None
- organization_name: Annotated[
- Optional[str], pydantic.Field(alias="ORGANIZATION_NAME")
- ] = None
-
portal_brand_color: Annotated[
Optional[str], pydantic.Field(alias="PORTAL_BRAND_COLOR")
] = None
@@ -344,8 +339,8 @@ def serialize_model(self, handler):
optional_fields = set(
[
"ALERT_AUTO_DISABLE_DESTINATION",
- "ALERT_CALLBACK_URL",
"ALERT_CONSECUTIVE_FAILURE_COUNT",
+ "ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS",
"DELIVERY_TIMEOUT_SECONDS",
"DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD",
"DESTINATIONS_INCLUDE_MILLISECOND_TIMESTAMP",
@@ -367,7 +362,6 @@ def serialize_model(self, handler):
"IDGEN_EVENT_PREFIX",
"IDGEN_TYPE",
"MAX_DESTINATIONS_PER_TENANT",
- "ORGANIZATION_NAME",
"PORTAL_BRAND_COLOR",
"PORTAL_DISABLE_OUTPOST_BRANDING",
"PORTAL_FAVICON_URL",
diff --git a/sdks/outpost-python/src/outpost_sdk/types/base64fileinput.py b/sdks/outpost-python/src/outpost_sdk/types/base64fileinput.py
index 25fc5398..862566fe 100644
--- a/sdks/outpost-python/src/outpost_sdk/types/base64fileinput.py
+++ b/sdks/outpost-python/src/outpost_sdk/types/base64fileinput.py
@@ -23,7 +23,11 @@ def encode_base64_file_input(value: Any) -> Any:
with open(value, "rb") as fh:
binary = fh.read()
else:
+ # Restore position after reading: pydantic may validate the same stream more than once.
+ position = value.tell() if value.seekable() else None
binary = value.read()
+ if position is not None:
+ value.seek(position)
if isinstance(binary, str):
binary = binary.encode()
if not isinstance(binary, (bytes, bytearray)):
diff --git a/sdks/outpost-python/src/outpost_sdk/utils/eventstreaming.py b/sdks/outpost-python/src/outpost_sdk/utils/eventstreaming.py
index 3bdcd6d3..a8d4fe5c 100644
--- a/sdks/outpost-python/src/outpost_sdk/utils/eventstreaming.py
+++ b/sdks/outpost-python/src/outpost_sdk/utils/eventstreaming.py
@@ -7,6 +7,7 @@
Any,
Callable,
Generic,
+ List,
TypeVar,
Optional,
Generator,
@@ -53,6 +54,9 @@ def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
+ self.close()
+
+ def close(self):
self._closed = True
self.response.close()
@@ -92,6 +96,9 @@ async def __aenter__(self):
return self
async def __aexit__(self, exc_type, exc_val, exc_tb):
+ await self.close()
+
+ async def close(self):
self._closed = True
await self.response.aclose()
@@ -114,6 +121,7 @@ class ServerEvent:
b"\n\r",
b"\n\n",
]
+MAX_BOUNDARY_LEN = max(len(b) for b in MESSAGE_BOUNDARIES)
UTF8_BOM = b"\xef\xbb\xbf"
@@ -124,52 +132,56 @@ async def stream_events_async(
sentinel: Optional[str] = None,
data_required: bool = True,
) -> AsyncGenerator[T, None]:
- buffer = bytearray()
- position = 0
- event_id: Optional[str] = None
- async for chunk in response.aiter_bytes():
- if len(buffer) == 0 and chunk.startswith(UTF8_BOM):
- chunk = chunk[len(UTF8_BOM) :]
- buffer += chunk
- for i in range(position, len(buffer)):
- char = buffer[i : i + 1]
- seq: Optional[bytes] = None
- if char in [b"\r", b"\n"]:
- for boundary in MESSAGE_BOUNDARIES:
- seq = _peek_sequence(i, buffer, boundary)
- if seq is not None:
- break
- if seq is None:
- continue
-
- block = buffer[position:i]
- position = i + len(seq)
- event, discard, event_id = _parse_event(
- raw=block,
- decoder=decoder,
- sentinel=sentinel,
- event_id=event_id,
- data_required=data_required,
- )
- if event is not None:
- yield event
- if discard:
- await response.aclose()
- return
-
- if position > 0:
- buffer = buffer[position:]
- position = 0
-
- event, discard, _ = _parse_event(
- raw=buffer,
- decoder=decoder,
- sentinel=sentinel,
- event_id=event_id,
- data_required=data_required,
- )
- if event is not None:
- yield event
+ try:
+ buffer = bytearray()
+ position = 0
+ event_id: Optional[str] = None
+ async for chunk in response.aiter_bytes():
+ if len(buffer) == 0 and chunk.startswith(UTF8_BOM):
+ chunk = chunk[len(UTF8_BOM) :]
+ old_len = len(buffer)
+ buffer += chunk
+ search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1)
+ for i in range(search_start, len(buffer)):
+ char = buffer[i : i + 1]
+ seq: Optional[bytes] = None
+ if char in [b"\r", b"\n"]:
+ for boundary in MESSAGE_BOUNDARIES:
+ seq = _peek_sequence(i, buffer, boundary)
+ if seq is not None:
+ break
+ if seq is None:
+ continue
+
+ block = buffer[position:i]
+ position = i + len(seq)
+ event, discard, event_id = _parse_event(
+ raw=block,
+ decoder=decoder,
+ sentinel=sentinel,
+ event_id=event_id,
+ data_required=data_required,
+ )
+ if event is not None:
+ yield event
+ if discard:
+ return
+
+ if position > 0:
+ buffer = buffer[position:]
+ position = 0
+
+ event, discard, _ = _parse_event(
+ raw=buffer,
+ decoder=decoder,
+ sentinel=sentinel,
+ event_id=event_id,
+ data_required=data_required,
+ )
+ if event is not None:
+ yield event
+ finally:
+ await response.aclose()
def stream_events(
@@ -178,52 +190,56 @@ def stream_events(
sentinel: Optional[str] = None,
data_required: bool = True,
) -> Generator[T, None, None]:
- buffer = bytearray()
- position = 0
- event_id: Optional[str] = None
- for chunk in response.iter_bytes():
- if len(buffer) == 0 and chunk.startswith(UTF8_BOM):
- chunk = chunk[len(UTF8_BOM) :]
- buffer += chunk
- for i in range(position, len(buffer)):
- char = buffer[i : i + 1]
- seq: Optional[bytes] = None
- if char in [b"\r", b"\n"]:
- for boundary in MESSAGE_BOUNDARIES:
- seq = _peek_sequence(i, buffer, boundary)
- if seq is not None:
- break
- if seq is None:
- continue
-
- block = buffer[position:i]
- position = i + len(seq)
- event, discard, event_id = _parse_event(
- raw=block,
- decoder=decoder,
- sentinel=sentinel,
- event_id=event_id,
- data_required=data_required,
- )
- if event is not None:
- yield event
- if discard:
- response.close()
- return
-
- if position > 0:
- buffer = buffer[position:]
- position = 0
-
- event, discard, _ = _parse_event(
- raw=buffer,
- decoder=decoder,
- sentinel=sentinel,
- event_id=event_id,
- data_required=data_required,
- )
- if event is not None:
- yield event
+ try:
+ buffer = bytearray()
+ position = 0
+ event_id: Optional[str] = None
+ for chunk in response.iter_bytes():
+ if len(buffer) == 0 and chunk.startswith(UTF8_BOM):
+ chunk = chunk[len(UTF8_BOM) :]
+ old_len = len(buffer)
+ buffer += chunk
+ search_start = max(position, old_len - MAX_BOUNDARY_LEN + 1)
+ for i in range(search_start, len(buffer)):
+ char = buffer[i : i + 1]
+ seq: Optional[bytes] = None
+ if char in [b"\r", b"\n"]:
+ for boundary in MESSAGE_BOUNDARIES:
+ seq = _peek_sequence(i, buffer, boundary)
+ if seq is not None:
+ break
+ if seq is None:
+ continue
+
+ block = buffer[position:i]
+ position = i + len(seq)
+ event, discard, event_id = _parse_event(
+ raw=block,
+ decoder=decoder,
+ sentinel=sentinel,
+ event_id=event_id,
+ data_required=data_required,
+ )
+ if event is not None:
+ yield event
+ if discard:
+ return
+
+ if position > 0:
+ buffer = buffer[position:]
+ position = 0
+
+ event, discard, _ = _parse_event(
+ raw=buffer,
+ decoder=decoder,
+ sentinel=sentinel,
+ event_id=event_id,
+ data_required=data_required,
+ )
+ if event is not None:
+ yield event
+ finally:
+ response.close()
def _parse_event(
@@ -238,7 +254,7 @@ def _parse_event(
lines = re.split(r"\r?\n|\r", block)
publish = False
event = ServerEvent()
- data = ""
+ data_parts: List[str] = []
for line in lines:
if not line:
continue
@@ -259,7 +275,7 @@ def _parse_event(
event.event = value
publish = True
elif field == "data":
- data += value + "\n"
+ data_parts.append(value)
publish = True
elif field == "id":
publish = True
@@ -271,16 +287,17 @@ def _parse_event(
publish = True
event.id = event_id
+ has_data = bool(data_parts)
+ data = "\n".join(data_parts)
- if sentinel and data == f"{sentinel}\n":
+ if sentinel and has_data and data == sentinel:
return None, True, event_id
# Skip data-less events when data is required
- if not data and publish and data_required:
+ if not has_data and publish and data_required:
return None, False, event_id
- if data:
- data = data[:-1]
+ if has_data:
try:
event.data = json.loads(data)
except json.JSONDecodeError:
@@ -291,7 +308,7 @@ def _parse_event(
out_dict = {
k: v
for k, v in asdict(event).items()
- if v is not None or (k == "data" and data)
+ if v is not None or (k == "data" and has_data)
}
out = decoder(json.dumps(out_dict))
diff --git a/sdks/outpost-python/src/outpost_sdk/utils/forms.py b/sdks/outpost-python/src/outpost_sdk/utils/forms.py
index f961e76b..fdf0dc9b 100644
--- a/sdks/outpost-python/src/outpost_sdk/utils/forms.py
+++ b/sdks/outpost-python/src/outpost_sdk/utils/forms.py
@@ -1,5 +1,6 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
+import io
from typing import (
Any,
Dict,
@@ -103,6 +104,10 @@ def _extract_file_properties(file_obj: Any) -> Tuple[str, Any, Any]:
if file_metadata.content:
content = getattr(file_obj, file_field_name, None)
+ if isinstance(content, io.TextIOBase):
+ content = content.read().encode(
+ getattr(content, "encoding", None) or "utf-8"
+ )
elif file_field_name == "content_type":
content_type = getattr(file_obj, file_field_name, None)
else:
diff --git a/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py b/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py
index 1de32b6d..591415af 100644
--- a/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py
+++ b/sdks/outpost-python/src/outpost_sdk/utils/requestbodies.py
@@ -46,6 +46,7 @@ def serialize_request_body(
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:
(
serialized_request_body.media_type,
diff --git a/sdks/outpost-python/src/outpost_sdk/utils/retries.py b/sdks/outpost-python/src/outpost_sdk/utils/retries.py
index af07d4e9..bab2066f 100644
--- a/sdks/outpost-python/src/outpost_sdk/utils/retries.py
+++ b/sdks/outpost-python/src/outpost_sdk/utils/retries.py
@@ -93,6 +93,21 @@ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]:
return None
+def _parse_retry_after_ms_header(response: httpx.Response) -> Optional[int]:
+ retry_after_ms_header = response.headers.get("retry-after-ms")
+ if not retry_after_ms_header:
+ return None
+
+ try:
+ milliseconds = float(retry_after_ms_header)
+ if milliseconds >= 0:
+ return round(milliseconds)
+ except (OverflowError, ValueError):
+ pass
+
+ return None
+
+
def _get_sleep_interval(
exception: Exception,
initial_interval: int,
@@ -234,6 +249,10 @@ def retry_with_backoff(
raise
+ if isinstance(exception, TemporaryError):
+ retry_after_ms = _parse_retry_after_ms_header(exception.response)
+ if retry_after_ms is not None:
+ exception.retry_after = retry_after_ms
sleep = _get_sleep_interval(
exception, initial_interval, max_interval, exponent, retries
)
@@ -264,6 +283,10 @@ async def retry_with_backoff_async(
raise
+ if isinstance(exception, TemporaryError):
+ retry_after_ms = _parse_retry_after_ms_header(exception.response)
+ if retry_after_ms is not None:
+ exception.retry_after = retry_after_ms
sleep = _get_sleep_interval(
exception, initial_interval, max_interval, exponent, retries
)
diff --git a/sdks/outpost-python/src/outpost_sdk/utils/serializers.py b/sdks/outpost-python/src/outpost_sdk/utils/serializers.py
index d2149f8b..1031ed93 100644
--- a/sdks/outpost-python/src/outpost_sdk/utils/serializers.py
+++ b/sdks/outpost-python/src/outpost_sdk/utils/serializers.py
@@ -4,7 +4,7 @@
import functools
import json
import typing
-from typing import Any, Dict, List, Tuple, Union, get_args
+from typing import Any, Dict, Iterable, List, Mapping, Tuple, Union, get_args
import typing_extensions
from typing_extensions import get_origin
@@ -113,10 +113,12 @@ def validate(c):
def unmarshal_json(raw, typ: Any) -> Any:
- return unmarshal(from_json(raw), typ)
+ return unmarshal(from_json(raw), typ, coerce_iterables=False)
-def unmarshal(val, typ: Any) -> Any:
+def unmarshal(val, typ: Any, coerce_iterables: bool = True) -> Any:
+ if coerce_iterables:
+ val = _coerce_iterables_for_type(val, typ)
unmarshaller = create_model(
"Unmarshaller",
body=(typ, ...),
@@ -193,9 +195,88 @@ def get_pydantic_model(data: Any, typ: Any) -> Any:
if not _contains_pydantic_model(data):
return unmarshal(data, typ)
+ return _coerce_iterables_for_type(data, typ)
+
+
+def _coerce_iterables_for_type(data: Any, typ: Any) -> Any:
+ if data is None or isinstance(data, (BaseModel, Unset)):
+ return data
+
+ typ = _resolve_type_alias(typ)
+ origin = get_origin(typ)
+
+ if _is_annotated_type(origin):
+ args = get_args(typ)
+ return _coerce_iterables_for_type(data, args[0]) if args else data
+
+ if is_union(origin):
+ for arg in (arg for arg in get_args(typ) if arg is not type(None)):
+ coerced = _coerce_iterables_for_type(data, arg)
+ if coerced is not data:
+ return coerced
+ return data
+
+ if _is_list_type(typ):
+ item_type = get_args(typ)[0] if get_args(typ) else Any
+ if isinstance(data, (str, bytes, bytearray, Mapping)):
+ return data
+ if isinstance(data, Iterable):
+ return [_coerce_iterables_for_type(item, item_type) for item in data]
+ return data
+
+ if _is_mapping_type(typ):
+ value_type = get_args(typ)[1] if len(get_args(typ)) > 1 else Any
+ if isinstance(data, Mapping):
+ return {
+ key: _coerce_iterables_for_type(value, value_type)
+ for key, value in data.items()
+ }
+ return data
+
+ if _is_pydantic_model_type(typ) and isinstance(data, Mapping):
+ coerced = None
+ for field_name, field in typ.model_fields.items():
+ field_type = field.annotation
+ for key in (field_name, field.alias):
+ if key is not None and key in data:
+ value = data[key] if coerced is None else coerced[key]
+ coerced_value = _coerce_iterables_for_type(value, field_type)
+ if coerced_value is not value:
+ if coerced is None:
+ coerced = dict(data)
+ coerced[key] = coerced_value
+ return coerced if coerced is not None else data
+
return data
+def _resolve_type_alias(typ: Any) -> Any:
+ return getattr(typ, "__value__", typ)
+
+
+def _is_annotated_type(origin: Any) -> bool:
+ return any(
+ origin is typing_obj
+ for typing_obj in _get_typing_objects_by_name_of("Annotated")
+ )
+
+
+def _is_list_type(typ: Any) -> bool:
+ typ = _resolve_type_alias(typ)
+ return typ is list or get_origin(typ) is list
+
+
+def _is_mapping_type(typ: Any) -> bool:
+ typ = _resolve_type_alias(typ)
+ origin = get_origin(typ)
+ mapping_origin = get_origin(Mapping[Any, Any])
+ return typ in (dict, Dict, Mapping) or origin in (dict, Mapping, mapping_origin)
+
+
+def _is_pydantic_model_type(typ: Any) -> bool:
+ return isinstance(typ, type) and issubclass(typ, BaseModel)
+
+
def _contains_pydantic_model(data: Any) -> bool:
if isinstance(data, BaseModel):
return True
diff --git a/sdks/outpost-typescript/.speakeasy/gen.lock b/sdks/outpost-typescript/.speakeasy/gen.lock
index 20b8176a..43cb6014 100644
--- a/sdks/outpost-typescript/.speakeasy/gen.lock
+++ b/sdks/outpost-typescript/.speakeasy/gen.lock
@@ -1,26 +1,26 @@
lockVersion: 2.0.0
id: edb58086-83b9-45a3-9095-52bf57a11009
management:
- docChecksum: 470afcaf2b59cadf7c023fcf357b65ca
+ docChecksum: 6a334158a637f335e7e0966f24c17c76
docVersion: 0.0.1
- speakeasyVersion: 1.768.2
- generationVersion: 2.889.1
- releaseVersion: 1.4.0
- configChecksum: 5e4ba798de3a7b387f8d1f953094054c
+ speakeasyVersion: 1.780.0
+ generationVersion: 2.906.0
+ releaseVersion: 1.4.1
+ configChecksum: 49ca5a5ce85e0e93f508b5c168150627
repoURL: https://github.com/hookdeck/outpost.git
repoSubDirectory: sdks/outpost-typescript
installationURL: https://github.com/hookdeck/outpost
published: true
persistentEdits:
- generation_id: fc97ef97-a604-428f-bc39-81d367e68e12
- pristine_commit_hash: 55ca5eb615d9cd85736c4ed8dda2d444be31353f
- pristine_tree_hash: 65a710fa3d8859f2d39b6386da9579645d6c19f3
+ generation_id: 62d6dad2-0ff2-4d8c-9ac3-ffad26456377
+ pristine_commit_hash: df658454560cb0602765eeba750e771b77a8ed88
+ pristine_tree_hash: 45ce2176a04358f2de63878428fac3db30378a32
features:
typescript:
additionalDependencies: 0.1.0
additionalProperties: 0.1.3
constsAndDefaults: 0.1.14
- core: 3.27.0
+ core: 3.31.1
defaultEnabledRetries: 0.1.0
enumUnions: 0.1.0
envVarSecurityUsage: 0.1.2
@@ -34,7 +34,7 @@ features:
nameOverrides: 2.81.4
nullables: 0.1.1
responseFormat: 0.3.0
- retries: 2.83.0
+ retries: 2.83.1
sdkHooks: 0.4.0
unions: 2.86.4
trackedFiles:
@@ -348,8 +348,8 @@ trackedFiles:
pristine_git_object: a059479fd884b79d3d0ece45249299ff92b74047
docs/models/components/managedconfig.md:
id: f5084f1c1f7a
- last_write_checksum: sha1:ebb5b3761b9e551a5e88380af6baf6d2ff88b2a9
- pristine_git_object: 54635f0036ee132ea15f02aa1a1a86a446354818
+ last_write_checksum: sha1:266db67eb27969a1349b4394a6958f0cbee03296
+ pristine_git_object: bc76df3eedc0a3f745f9f02a82220d5827a88204
docs/models/components/metricsdatapoint.md:
id: dfbc8ed48932
last_write_checksum: sha1:98cd730d46794e7aef19d65e365d7b6f89176487
@@ -904,12 +904,12 @@ trackedFiles:
pristine_git_object: c9a9042272cbc4b2cf7ae93f82d4ea8a7d25bba2
jsr.json:
id: 7f6ab7767282
- last_write_checksum: sha1:fb22447a864e48bf40bd764aae6773c6211c3419
- pristine_git_object: b3fb16addfeffad141cb1e91bf4b7cc2b7266c48
+ last_write_checksum: sha1:abb467bc0d4ae8e5453eb6f818057597540c9536
+ pristine_git_object: c819ded5d1d43d918eaab1d40b151f7bf8be0852
package.json:
id: 7030d0b2f71b
- last_write_checksum: sha1:7ea45be7fdb354c8946c771281f7600228c9eceb
- pristine_git_object: 9fbf2f820b4c5cec2cb1ee1eec28467d792caeb1
+ last_write_checksum: sha1:45da602108ed7ecff48b84334d84339f273c13a5
+ pristine_git_object: 59939cafee7b4d1f45dc3addbcfaca0904f69ec8
src/core.ts:
id: f431fdbcd144
last_write_checksum: sha1:c858d8ea76a86c428e26943bf348319ba0a3c865
@@ -1040,8 +1040,8 @@ trackedFiles:
pristine_git_object: f60ec7acd76141a71d78008c5a362eb0236d8335
src/hooks/types.ts:
id: 2a02d86ec24f
- last_write_checksum: sha1:29372122898cc523fa47576f3f6608a28ec6080e
- pristine_git_object: 8bfe4fe8137138decea7af0a5ed791bf01201789
+ last_write_checksum: sha1:da18f72efc4b8bef7912bc70fc6166b4be2f8a95
+ pristine_git_object: 5ffda46a9def49d060911f29656c75d88095bcdd
src/index.ts:
id: c5fb850250c7
last_write_checksum: sha1:35c9cde3ae14b18b3f893a1afe8b6c44f8760f24
@@ -1052,16 +1052,12 @@ trackedFiles:
pristine_git_object: 0aebd8b0a4867e35cb3348fc52921c3c0b4725b7
src/lib/config.ts:
id: 320761608fb3
- last_write_checksum: sha1:f783b09e39aead9020e30a406b5fd7d2dd83fb3b
- pristine_git_object: 3e5ea30f9c600fc806984221cffed1e92c1c2090
- src/lib/dlv.ts:
- id: b1988214835a
- last_write_checksum: sha1:1dd3e3fbb4550c4bf31f5ef997faff355d6f3250
- pristine_git_object: e81091f5e536f82739f71379b1fddc2d147c49e2
+ last_write_checksum: sha1:348c6f0aec3bc8536fa2d4bd0201421b55cba92c
+ pristine_git_object: 82d5fe064e2f88d0092af8e7a8ae0677dba54031
src/lib/encodings.ts:
id: 3bd8ead98afd
- last_write_checksum: sha1:d47614c415b37e092965c34cb668562195701004
- pristine_git_object: 2791d25bc4f7cf6eec17a65f899851e225fa3deb
+ last_write_checksum: sha1:50d9b187dcfc3cca8d3bbd9fe074f865d715d2b0
+ pristine_git_object: dcab511b4b4d98f1e4b7dd94866e2b41c478b7f0
src/lib/files.ts:
id: e5efa54fcb95
last_write_checksum: sha1:795c14026405d547bfc47012f7ad9666e530fa7f
@@ -1070,34 +1066,30 @@ trackedFiles:
id: 63a80782d37e
last_write_checksum: sha1:797cbf16d3c7c4d62d3ba0eedb08617524938457
pristine_git_object: 13cf1fd7894a89f727b8d2db2ad24313a94f68c7
- src/lib/is-plain-object.ts:
- id: b9862591096a
- last_write_checksum: sha1:df687f25a9590b6fd95d39df41a652ae3fd4e517
- pristine_git_object: 61070d3d7c7e5e95b1ed7e7ea21869eb0767db77
src/lib/logger.ts:
id: 7ee7741a02bf
last_write_checksum: sha1:0ec9d3a2a34c362746b767e4f9a746c055d57a7b
pristine_git_object: d181f2937d4128afbe9b0327e0f81d1fa9c877b7
src/lib/matchers.ts:
id: d54b2253b719
- last_write_checksum: sha1:32bda3887292d2b0430bb6688982e34038342919
- pristine_git_object: b7ef1986eaa94795a3b1a7409e8aeed6591a11e6
+ last_write_checksum: sha1:43e3184df0c1dc3d7ba2d50ccdd7655d3a6697ce
+ pristine_git_object: efc0928ae61beebe1eff5f15c0cc1305fcbaf194
src/lib/primitives.ts:
id: 74859f750b28
- last_write_checksum: sha1:987869fc54790b9c22e9182099103d6aa7c67016
- pristine_git_object: d21f1dc49affa4e6d324bdd60811b470fdfa7eb6
+ last_write_checksum: sha1:fe3abb7d6b61596e346873519bcec9b2eaa61467
+ pristine_git_object: 8ce65db0f7c0d6b68f5edc3ebf518121e284e954
src/lib/retries.ts:
id: b24a69d15639
- last_write_checksum: sha1:f3da74dffcbe2756c69393f8600205aa1dc06e68
- pristine_git_object: e3ce9aba72150fc3c18f3105d39b21aba809377b
+ last_write_checksum: sha1:42c8f6cc4c875be236230a8c760f4f32d8c1ab68
+ pristine_git_object: 21a647e1e9ae64817fcd63b5dd6bb5a51b63d225
src/lib/schemas.ts:
id: deb4b531fae1
last_write_checksum: sha1:209cfaabfa7fc1c1310f97453215cb0755619c6e
pristine_git_object: 47edb9725c2482c667e2ddc8a56b1fec4285c492
src/lib/sdks.ts:
id: 8a6d91f1218d
- last_write_checksum: sha1:943004827f7fea73bdfa36dc958658450b7ca267
- pristine_git_object: 79d433bddc7dcd83160e704c396b9a2b418b40af
+ last_write_checksum: sha1:b759eaea4ae69dbc76a50b932cfcb2afbff6400b
+ pristine_git_object: 05c4bb944f9461ce823d5c93cfc4287b32454443
src/lib/security.ts:
id: 0502afa7922e
last_write_checksum: sha1:42da73a553537a91dd08a52efa9e6b592f515b5f
@@ -1132,8 +1124,8 @@ trackedFiles:
pristine_git_object: 0955a573c2ce989d63c737410ab8cc28706d9f74
src/mcp-server/mcp-server.ts:
id: aabbc4ab07c1
- last_write_checksum: sha1:976d2a0b644967e4bf05154452bda2da8cd91c6e
- pristine_git_object: 5641b3206de9683fd80918ce16a962d65ff03f2a
+ last_write_checksum: sha1:08ad21b2be6f78a9e903ea2c6af1b822c0c29526
+ pristine_git_object: 635d493f573778a4ca59f8eee36db33657c6e4af
src/mcp-server/prompts.ts:
id: 26f3d73cbf31
last_write_checksum: sha1:3472c8babea2d3b44d3a61e42fbba471fbd936b7
@@ -1148,8 +1140,8 @@ trackedFiles:
pristine_git_object: c25696d4c4f70e081fa5d87ad6891874c509a577
src/mcp-server/server.ts:
id: 2784dd48e82a
- last_write_checksum: sha1:a8ac93eb2400d41367e83d4d1bf5f5ddd19c84be
- pristine_git_object: 103ea620607b7fcd8de6acadf164292e295a9dec
+ last_write_checksum: sha1:1f765f8f51c4e2d731838b430c13158ff4659581
+ pristine_git_object: daddfd3b8e9514c479b7596fa04b8133e584d4af
src/mcp-server/shared.ts:
id: 074e80d4be1e
last_write_checksum: sha1:d89576cea2bef3856b7fc3e65b868875528be042
@@ -1532,8 +1524,8 @@ trackedFiles:
pristine_git_object: 8ef1965cf279a8d8b5aca7093981332e93312c60
src/models/components/managedconfig.ts:
id: f3c9dfef76a1
- last_write_checksum: sha1:8185e1befb628d03c8b45c3d647d5cf9c7886d3e
- pristine_git_object: 9531eb0fd8902066bd7f3f44ced6ea86166cd455
+ last_write_checksum: sha1:a9937cb94562811387e3065257942cb68e2c7dbd
+ pristine_git_object: bb87e48c0f6795d170ecf96d73d4a197fa3b459a
src/models/components/metricsdatapoint.ts:
id: 55e9f7c3cc30
last_write_checksum: sha1:3c1a228845dc83f0b1ea5eb00f807a510fcdd5b4
@@ -2452,9 +2444,7 @@ examples:
application/json: {}
examplesVersion: 1.0.2
generatedTests: {}
-releaseNotes: |
- ## Typescript SDK Changes:
- * `outpost.destinations.update()`: `request.body` **Changed** (Breaking ⚠️)
+releaseNotes: "## Typescript SDK Changes:\n* `outpost.configuration.getManagedConfig()`: `response` **Changed** (Breaking ⚠️)\n* `outpost.configuration.updateManagedConfig()`: \n * `request` **Changed** (Breaking ⚠️)\n * `response` **Changed** (Breaking ⚠️)\n"
generatedFiles:
- .gitattributes
- .npmignore
diff --git a/sdks/outpost-typescript/.speakeasy/gen.yaml b/sdks/outpost-typescript/.speakeasy/gen.yaml
index 06b7c7f0..8a0d88e0 100644
--- a/sdks/outpost-typescript/.speakeasy/gen.yaml
+++ b/sdks/outpost-typescript/.speakeasy/gen.yaml
@@ -29,7 +29,7 @@ generation:
generateNewTests: false
skipResponseBodyAssertions: false
typescript:
- version: 1.4.0
+ version: 1.4.1
acceptHeaderEnum: true
additionalDependencies:
dependencies: {}
@@ -38,6 +38,7 @@ typescript:
additionalPackageJSON: {}
additionalScripts: {}
alwaysIncludeInboundAndOutbound: false
+ apiPromiseHelpers: false
author: Speakeasy
baseErrorName: OutpostError
clientServerStatusCodesAsErrors: true
@@ -47,6 +48,7 @@ typescript:
enableMCPServer: true
enableReactQuery: false
enumFormat: union
+ eventStreamClassName: EventStream
exportZodModelNamespace: false
fixEnumNameSanitization: false
flatAdditionalProperties: false
@@ -79,6 +81,7 @@ typescript:
preApplyUnionDiscriminators: true
preserveModelFieldNames: false
privateIdentifierPrefix: '#'
+ requestExtras: false
responseFormat: flat
sseFlatResponse: false
templateVersion: v2
diff --git a/sdks/outpost-typescript/RELEASES.md b/sdks/outpost-typescript/RELEASES.md
index b39f5599..d20ac60e 100644
--- a/sdks/outpost-typescript/RELEASES.md
+++ b/sdks/outpost-typescript/RELEASES.md
@@ -178,4 +178,14 @@ Based on:
### Generated
- [typescript v1.4.0] sdks/outpost-typescript
### Releases
-- [NPM v1.4.0] https://www.npmjs.com/package/@hookdeck/outpost-sdk/v/1.4.0 - sdks/outpost-typescript
\ No newline at end of file
+- [NPM v1.4.0] https://www.npmjs.com/package/@hookdeck/outpost-sdk/v/1.4.0 - sdks/outpost-typescript
+
+## 2026-06-16 18:54:28
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.780.0 (2.906.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [typescript v1.4.1] sdks/outpost-typescript
+### Releases
+- [NPM v1.4.1] https://www.npmjs.com/package/@hookdeck/outpost-sdk/v/1.4.1 - sdks/outpost-typescript
\ No newline at end of file
diff --git a/sdks/outpost-typescript/docs/models/components/managedconfig.md b/sdks/outpost-typescript/docs/models/components/managedconfig.md
index 54635f00..bc76df3e 100644
--- a/sdks/outpost-typescript/docs/models/components/managedconfig.md
+++ b/sdks/outpost-typescript/docs/models/components/managedconfig.md
@@ -21,8 +21,8 @@ let value: ManagedConfig = {
| Field | Type | Required | Description |
| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- |
| `alertAutoDisableDestination` | *string* | :heavy_minus_sign: | N/A |
-| `alertCallbackUrl` | *string* | :heavy_minus_sign: | N/A |
| `alertConsecutiveFailureCount` | *string* | :heavy_minus_sign: | N/A |
+| `alertExhaustedRetriesWindowSeconds` | *string* | :heavy_minus_sign: | N/A |
| `deliveryTimeoutSeconds` | *string* | :heavy_minus_sign: | N/A |
| `destinationsAwsKinesisMetadataInPayload` | *string* | :heavy_minus_sign: | N/A |
| `destinationsIncludeMillisecondTimestamp` | *string* | :heavy_minus_sign: | N/A |
@@ -44,7 +44,6 @@ let value: ManagedConfig = {
| `idgenEventPrefix` | *string* | :heavy_minus_sign: | N/A |
| `idgenType` | *string* | :heavy_minus_sign: | N/A |
| `maxDestinationsPerTenant` | *string* | :heavy_minus_sign: | N/A |
-| `organizationName` | *string* | :heavy_minus_sign: | N/A |
| `portalBrandColor` | *string* | :heavy_minus_sign: | N/A |
| `portalDisableOutpostBranding` | *string* | :heavy_minus_sign: | N/A |
| `portalFaviconUrl` | *string* | :heavy_minus_sign: | N/A |
diff --git a/sdks/outpost-typescript/examples/package-lock.json b/sdks/outpost-typescript/examples/package-lock.json
index ece97076..3db6b8ae 100644
--- a/sdks/outpost-typescript/examples/package-lock.json
+++ b/sdks/outpost-typescript/examples/package-lock.json
@@ -18,7 +18,7 @@
},
"..": {
"name": "@hookdeck/outpost-sdk",
- "version": "1.4.0",
+ "version": "1.4.1",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.26.0",
"zod": "^3.25.0 || ^4.0.0"
diff --git a/sdks/outpost-typescript/jsr.json b/sdks/outpost-typescript/jsr.json
index b3fb16ad..c819ded5 100644
--- a/sdks/outpost-typescript/jsr.json
+++ b/sdks/outpost-typescript/jsr.json
@@ -2,7 +2,7 @@
{
"name": "@hookdeck/outpost-sdk",
- "version": "1.4.0",
+ "version": "1.4.1",
"exports": {
".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts",
diff --git a/sdks/outpost-typescript/package-lock.json b/sdks/outpost-typescript/package-lock.json
index d887e13b..cb38e22b 100644
--- a/sdks/outpost-typescript/package-lock.json
+++ b/sdks/outpost-typescript/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@hookdeck/outpost-sdk",
- "version": "1.4.0",
+ "version": "1.4.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@hookdeck/outpost-sdk",
- "version": "1.4.0",
+ "version": "1.4.1",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.26.0",
"zod": "^3.25.0 || ^4.0.0"
diff --git a/sdks/outpost-typescript/package.json b/sdks/outpost-typescript/package.json
index 9fbf2f82..59939caf 100644
--- a/sdks/outpost-typescript/package.json
+++ b/sdks/outpost-typescript/package.json
@@ -1,6 +1,6 @@
{
"name": "@hookdeck/outpost-sdk",
- "version": "1.4.0",
+ "version": "1.4.1",
"author": "Speakeasy",
"type": "module",
"bin": {
diff --git a/sdks/outpost-typescript/src/hooks/types.ts b/sdks/outpost-typescript/src/hooks/types.ts
index 8bfe4fe8..5ffda46a 100644
--- a/sdks/outpost-typescript/src/hooks/types.ts
+++ b/sdks/outpost-typescript/src/hooks/types.ts
@@ -15,6 +15,7 @@ export type HookContext = {
retryConfig: RetryConfig;
resolvedSecurity: SecurityState | null;
options: SDKOptions;
+ timeoutMs?: number;
};
export type Awaitable = T | Promise;
diff --git a/sdks/outpost-typescript/src/lib/config.ts b/sdks/outpost-typescript/src/lib/config.ts
index 3e5ea30f..82d5fe06 100644
--- a/sdks/outpost-typescript/src/lib/config.ts
+++ b/sdks/outpost-typescript/src/lib/config.ts
@@ -65,8 +65,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
export const SDK_METADATA = {
language: "typescript",
openapiDocVersion: "0.0.1",
- sdkVersion: "1.4.0",
- genVersion: "2.889.1",
+ sdkVersion: "1.4.1",
+ genVersion: "2.906.0",
userAgent:
- "speakeasy-sdk/typescript 1.4.0 2.889.1 0.0.1 @hookdeck/outpost-sdk",
+ "speakeasy-sdk/typescript 1.4.1 2.906.0 0.0.1 @hookdeck/outpost-sdk",
} as const;
diff --git a/sdks/outpost-typescript/src/lib/dlv.ts b/sdks/outpost-typescript/src/lib/dlv.ts
deleted file mode 100644
index e81091f5..00000000
--- a/sdks/outpost-typescript/src/lib/dlv.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
- */
-
-/*
-MIT License
-
-Copyright (c) 2024 Jason Miller (http://jasonformat.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-/**
- * @param obj The object to walk
- * @param key The key path to walk the object with
- * @param def A default value to return if the result is undefined
- *
- * @example
- * dlv(obj, "a.b.c.d")
- * @example
- * dlv(object, ["a", "b", "c", "d"])
- * @example
- * dlv(object, "foo.bar.baz", "Hello, default value!")
- */
-export function dlv(
- obj: any,
- key: string | string[],
- def?: T,
- p?: number,
- undef?: never,
-): T | undefined {
- key = Array.isArray(key) ? key : key.split(".");
- for (p = 0; p < key.length; p++) {
- const k = key[p];
- obj = k != null && obj ? obj[k] : undef;
- }
- return obj === undef ? def : obj;
-}
diff --git a/sdks/outpost-typescript/src/lib/encodings.ts b/sdks/outpost-typescript/src/lib/encodings.ts
index 2791d25b..dcab511b 100644
--- a/sdks/outpost-typescript/src/lib/encodings.ts
+++ b/sdks/outpost-typescript/src/lib/encodings.ts
@@ -3,7 +3,7 @@
*/
import { bytesToBase64 } from "./base64.js";
-import { isPlainObject } from "./is-plain-object.js";
+import { isPlainObject } from "./primitives.js";
export class EncodingError extends Error {
constructor(message: string) {
diff --git a/sdks/outpost-typescript/src/lib/is-plain-object.ts b/sdks/outpost-typescript/src/lib/is-plain-object.ts
deleted file mode 100644
index 61070d3d..00000000
--- a/sdks/outpost-typescript/src/lib/is-plain-object.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
- */
-
-/*
-MIT License
-
-Copyright (c) Sindre Sorhus (https://sindresorhus.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-// Taken from https://github.com/sindresorhus/is-plain-obj/blob/97f38e8836f86a642cce98fc6ab3058bc36df181/index.js
-
-export function isPlainObject(value: unknown): value is object {
- if (typeof value !== "object" || value === null) {
- return false;
- }
-
- const prototype = Object.getPrototypeOf(value);
- return (
- (prototype === null ||
- prototype === Object.prototype ||
- Object.getPrototypeOf(prototype) === null) &&
- !(Symbol.toStringTag in value) &&
- !(Symbol.iterator in value)
- );
-}
diff --git a/sdks/outpost-typescript/src/lib/matchers.ts b/sdks/outpost-typescript/src/lib/matchers.ts
index b7ef1986..efc0928a 100644
--- a/sdks/outpost-typescript/src/lib/matchers.ts
+++ b/sdks/outpost-typescript/src/lib/matchers.ts
@@ -6,7 +6,7 @@ import { APIError } from "../models/errors/apierror.js";
import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
import { ERR, OK, Result } from "../types/fp.js";
import { matchResponse, matchStatusCode, StatusCodePredicate } from "./http.js";
-import { isPlainObject } from "./is-plain-object.js";
+import { isPlainObject } from "./primitives.js";
export type Encoding =
| "jsonl"
diff --git a/sdks/outpost-typescript/src/lib/primitives.ts b/sdks/outpost-typescript/src/lib/primitives.ts
index d21f1dc4..8ce65db0 100644
--- a/sdks/outpost-typescript/src/lib/primitives.ts
+++ b/sdks/outpost-typescript/src/lib/primitives.ts
@@ -148,3 +148,19 @@ export function allRequired>(
return v as ReturnType>;
}
+
+export function isPlainObject(
+ value: unknown,
+): value is Record {
+ if (value === null || typeof value !== "object") return false;
+ if (Object.prototype.toString.call(value) !== "[object Object]") return false;
+ const proto = Object.getPrototypeOf(value);
+ if (proto === null || proto === Object.prototype) return true;
+ // cross-realm plain objects (vm contexts, iframes) inherit from a
+ // different realm's Object.prototype, which itself has a null prototype
+ try {
+ return Object.getPrototypeOf(proto) === null;
+ } catch {
+ return false;
+ }
+}
diff --git a/sdks/outpost-typescript/src/lib/retries.ts b/sdks/outpost-typescript/src/lib/retries.ts
index e3ce9aba..21a647e1 100644
--- a/sdks/outpost-typescript/src/lib/retries.ts
+++ b/sdks/outpost-typescript/src/lib/retries.ts
@@ -194,6 +194,14 @@ async function retryBackoff(
}
function retryIntervalFromResponse(res: Response): number {
+ const retryAfterMsVal = res.headers.get("retry-after-ms");
+ if (retryAfterMsVal) {
+ const parsedMs = Number(retryAfterMsVal);
+ if (Number.isFinite(parsedMs) && parsedMs >= 0) {
+ return parsedMs;
+ }
+ }
+
const retryVal = res.headers.get("retry-after") || "";
if (!retryVal) {
return 0;
diff --git a/sdks/outpost-typescript/src/lib/sdks.ts b/sdks/outpost-typescript/src/lib/sdks.ts
index 79d433bd..05c4bb94 100644
--- a/sdks/outpost-typescript/src/lib/sdks.ts
+++ b/sdks/outpost-typescript/src/lib/sdks.ts
@@ -23,6 +23,7 @@ import {
matchContentType,
} from "./http.js";
import { Logger } from "./logger.js";
+import { combineSignals } from "./primitives.js";
import { retry, RetryConfig } from "./retries.js";
import { SecurityState } from "./security.js";
@@ -128,27 +129,55 @@ export class ClientSDK {
if (path) {
baseURL.pathname = baseURL.pathname.replace(/\/+$/, "") + "/";
reqURL = new URL(path, baseURL);
+ if (!reqURL.search && baseURL.search) {
+ reqURL.search = baseURL.search;
+ }
} else {
reqURL = baseURL;
}
reqURL.hash = "";
- let finalQuery = query || "";
-
- const secQuery: string[] = [];
- for (const [k, v] of Object.entries(security?.queryParams || {})) {
- const q = encodeForm(k, v, { charEncoding: "percent" });
- if (typeof q !== "undefined") {
- secQuery.push(q);
+ // Appends already-encoded query pairs to a query string, replacing any
+ // existing pairs with the same key so later sources take precedence.
+ const mergeQuery = (current: string, additions: string): string => {
+ if (!additions) {
+ return current;
}
- }
- if (secQuery.length) {
- finalQuery += `&${secQuery.join("&")}`;
- }
+ const additionKeys = new Set(
+ additions
+ .split("&")
+ .filter((pair) => pair !== "")
+ .map((pair) => pair.split("=")[0] ?? ""),
+ );
+ const kept = current.split("&").filter((pair) => {
+ return pair !== "" && !additionKeys.has(pair.split("=")[0] ?? "");
+ });
+ return [...kept, additions].join("&");
+ };
+
+ const encodeQueryRecord = (record: Record): string => {
+ return Object.entries(record)
+ .map(([k, v]) => {
+ if (v == null) {
+ return undefined;
+ }
+ const value = v;
+ return encodeForm(k, value, {
+ explode: Array.isArray(value),
+ charEncoding: "percent",
+ });
+ })
+ .filter((pair): pair is string => typeof pair !== "undefined")
+ .join("&");
+ };
+
+ const finalQuery = [
+ query || "",
+ encodeQueryRecord(security?.queryParams || {}),
+ ].reduce(mergeQuery, reqURL.search.slice(1));
if (finalQuery) {
- const q = finalQuery.startsWith("&") ? finalQuery.slice(1) : finalQuery;
- reqURL.search = `?${q}`;
+ reqURL.search = `?${finalQuery}`;
}
const headers = new Headers(opHeaders);
@@ -194,9 +223,8 @@ export class ClientSDK {
...options?.fetchOptions,
...options,
};
- if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) {
- const timeoutSignal = AbortSignal.timeout(conf.timeoutMs);
- fetchOptions.signal = timeoutSignal;
+ if (!fetchOptions?.signal && conf.timeoutMs != null && conf.timeoutMs > 0) {
+ context.timeoutMs = conf.timeoutMs;
}
if (conf.body instanceof ReadableStream) {
@@ -243,10 +271,19 @@ export class ClientSDK {
>
> {
const { context, isErrorStatusCode } = options;
+ const timeoutMs = context.timeoutMs;
return retry(
async () => {
- const req = await this.#hooks.beforeRequest(context, request.clone());
+ const cloned = request.clone();
+ let attempt = cloned;
+ if (timeoutMs != null && timeoutMs > 0) {
+ const timeoutSignal = AbortSignal.timeout(timeoutMs);
+ const combined = combineSignals(cloned.signal, timeoutSignal)
+ ?? timeoutSignal;
+ attempt = new Request(cloned, { signal: combined });
+ }
+ const req = await this.#hooks.beforeRequest(context, attempt);
await logRequest(this.#logger, req).catch((e) =>
this.#logger?.log("Failed to log request:", e)
);
diff --git a/sdks/outpost-typescript/src/mcp-server/mcp-server.ts b/sdks/outpost-typescript/src/mcp-server/mcp-server.ts
index 5641b320..635d493f 100644
--- a/sdks/outpost-typescript/src/mcp-server/mcp-server.ts
+++ b/sdks/outpost-typescript/src/mcp-server/mcp-server.ts
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
export const app = buildApplication(routes, {
name: "mcp",
versionInfo: {
- currentVersion: "1.4.0",
+ currentVersion: "1.4.1",
},
});
diff --git a/sdks/outpost-typescript/src/mcp-server/server.ts b/sdks/outpost-typescript/src/mcp-server/server.ts
index 103ea620..daddfd3b 100644
--- a/sdks/outpost-typescript/src/mcp-server/server.ts
+++ b/sdks/outpost-typescript/src/mcp-server/server.ts
@@ -53,7 +53,7 @@ export function createMCPServer(deps: {
}) {
const server = new McpServer({
name: "Outpost",
- version: "1.4.0",
+ version: "1.4.1",
});
const client = new OutpostCore({
diff --git a/sdks/outpost-typescript/src/models/components/managedconfig.ts b/sdks/outpost-typescript/src/models/components/managedconfig.ts
index 9531eb0f..bb87e48c 100644
--- a/sdks/outpost-typescript/src/models/components/managedconfig.ts
+++ b/sdks/outpost-typescript/src/models/components/managedconfig.ts
@@ -17,8 +17,8 @@ import { SDKValidationError } from "../errors/sdkvalidationerror.js";
*/
export type ManagedConfig = {
alertAutoDisableDestination?: string | undefined;
- alertCallbackUrl?: string | undefined;
alertConsecutiveFailureCount?: string | undefined;
+ alertExhaustedRetriesWindowSeconds?: string | undefined;
deliveryTimeoutSeconds?: string | undefined;
destinationsAwsKinesisMetadataInPayload?: string | undefined;
destinationsIncludeMillisecondTimestamp?: string | undefined;
@@ -40,7 +40,6 @@ export type ManagedConfig = {
idgenEventPrefix?: string | undefined;
idgenType?: string | undefined;
maxDestinationsPerTenant?: string | undefined;
- organizationName?: string | undefined;
portalBrandColor?: string | undefined;
portalDisableOutpostBranding?: string | undefined;
portalFaviconUrl?: string | undefined;
@@ -87,8 +86,8 @@ export const ManagedConfig$inboundSchema: z.ZodType<
unknown
> = z.object({
ALERT_AUTO_DISABLE_DESTINATION: z.string().optional(),
- ALERT_CALLBACK_URL: z.string().optional(),
ALERT_CONSECUTIVE_FAILURE_COUNT: z.string().optional(),
+ ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS: z.string().optional(),
DELIVERY_TIMEOUT_SECONDS: z.string().optional(),
DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD: z.string().optional(),
DESTINATIONS_INCLUDE_MILLISECOND_TIMESTAMP: z.string().optional(),
@@ -110,7 +109,6 @@ export const ManagedConfig$inboundSchema: z.ZodType<
IDGEN_EVENT_PREFIX: z.string().optional(),
IDGEN_TYPE: z.string().optional(),
MAX_DESTINATIONS_PER_TENANT: z.string().optional(),
- ORGANIZATION_NAME: z.string().optional(),
PORTAL_BRAND_COLOR: z.string().optional(),
PORTAL_DISABLE_OUTPOST_BRANDING: z.string().optional(),
PORTAL_FAVICON_URL: z.string().optional(),
@@ -151,8 +149,9 @@ export const ManagedConfig$inboundSchema: z.ZodType<
}).transform((v) => {
return remap$(v, {
"ALERT_AUTO_DISABLE_DESTINATION": "alertAutoDisableDestination",
- "ALERT_CALLBACK_URL": "alertCallbackUrl",
"ALERT_CONSECUTIVE_FAILURE_COUNT": "alertConsecutiveFailureCount",
+ "ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS":
+ "alertExhaustedRetriesWindowSeconds",
"DELIVERY_TIMEOUT_SECONDS": "deliveryTimeoutSeconds",
"DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD":
"destinationsAwsKinesisMetadataInPayload",
@@ -185,7 +184,6 @@ export const ManagedConfig$inboundSchema: z.ZodType<
"IDGEN_EVENT_PREFIX": "idgenEventPrefix",
"IDGEN_TYPE": "idgenType",
"MAX_DESTINATIONS_PER_TENANT": "maxDestinationsPerTenant",
- "ORGANIZATION_NAME": "organizationName",
"PORTAL_BRAND_COLOR": "portalBrandColor",
"PORTAL_DISABLE_OUTPOST_BRANDING": "portalDisableOutpostBranding",
"PORTAL_FAVICON_URL": "portalFaviconUrl",
@@ -231,8 +229,8 @@ export const ManagedConfig$inboundSchema: z.ZodType<
/** @internal */
export type ManagedConfig$Outbound = {
ALERT_AUTO_DISABLE_DESTINATION?: string | undefined;
- ALERT_CALLBACK_URL?: string | undefined;
ALERT_CONSECUTIVE_FAILURE_COUNT?: string | undefined;
+ ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS?: string | undefined;
DELIVERY_TIMEOUT_SECONDS?: string | undefined;
DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD?: string | undefined;
DESTINATIONS_INCLUDE_MILLISECOND_TIMESTAMP?: string | undefined;
@@ -254,7 +252,6 @@ export type ManagedConfig$Outbound = {
IDGEN_EVENT_PREFIX?: string | undefined;
IDGEN_TYPE?: string | undefined;
MAX_DESTINATIONS_PER_TENANT?: string | undefined;
- ORGANIZATION_NAME?: string | undefined;
PORTAL_BRAND_COLOR?: string | undefined;
PORTAL_DISABLE_OUTPOST_BRANDING?: string | undefined;
PORTAL_FAVICON_URL?: string | undefined;
@@ -301,8 +298,8 @@ export const ManagedConfig$outboundSchema: z.ZodType<
ManagedConfig
> = z.object({
alertAutoDisableDestination: z.string().optional(),
- alertCallbackUrl: z.string().optional(),
alertConsecutiveFailureCount: z.string().optional(),
+ alertExhaustedRetriesWindowSeconds: z.string().optional(),
deliveryTimeoutSeconds: z.string().optional(),
destinationsAwsKinesisMetadataInPayload: z.string().optional(),
destinationsIncludeMillisecondTimestamp: z.string().optional(),
@@ -324,7 +321,6 @@ export const ManagedConfig$outboundSchema: z.ZodType<
idgenEventPrefix: z.string().optional(),
idgenType: z.string().optional(),
maxDestinationsPerTenant: z.string().optional(),
- organizationName: z.string().optional(),
portalBrandColor: z.string().optional(),
portalDisableOutpostBranding: z.string().optional(),
portalFaviconUrl: z.string().optional(),
@@ -365,8 +361,9 @@ export const ManagedConfig$outboundSchema: z.ZodType<
}).transform((v) => {
return remap$(v, {
alertAutoDisableDestination: "ALERT_AUTO_DISABLE_DESTINATION",
- alertCallbackUrl: "ALERT_CALLBACK_URL",
alertConsecutiveFailureCount: "ALERT_CONSECUTIVE_FAILURE_COUNT",
+ alertExhaustedRetriesWindowSeconds:
+ "ALERT_EXHAUSTED_RETRIES_WINDOW_SECONDS",
deliveryTimeoutSeconds: "DELIVERY_TIMEOUT_SECONDS",
destinationsAwsKinesisMetadataInPayload:
"DESTINATIONS_AWS_KINESIS_METADATA_IN_PAYLOAD",
@@ -399,7 +396,6 @@ export const ManagedConfig$outboundSchema: z.ZodType<
idgenEventPrefix: "IDGEN_EVENT_PREFIX",
idgenType: "IDGEN_TYPE",
maxDestinationsPerTenant: "MAX_DESTINATIONS_PER_TENANT",
- organizationName: "ORGANIZATION_NAME",
portalBrandColor: "PORTAL_BRAND_COLOR",
portalDisableOutpostBranding: "PORTAL_DISABLE_OUTPOST_BRANDING",
portalFaviconUrl: "PORTAL_FAVICON_URL",