Skip to content

Releases: hookdeck/outpost

v0.16.0

10 Apr 19:14
094cf6c

Choose a tag to compare

Warning: This release contains significant breaking changes. Please review the v0.16 Migration Guide before upgrading.

⚠️ Breaking Changes

  • Webhook signing secret prefix changed to whsec_ — New webhook destinations now generate secrets prefixed with whsec_. Set DESTINATIONS_WEBHOOK_SIGNING_SECRET_TEMPLATE={{.RandomHex}} to preserve previous behavior. Existing destinations are unaffected. by @alexluong in #808, #792
  • Event destination_id replaced with matched_destination_ids — Events now return an array of matched destination IDs instead of a single destination_id. Supports filtering via GET /events?destination_id=. No backfill for existing events. by @alexluong in #801
  • Delivery metadata timestamp switched from Unix to ISO 8601 — The timestamp field in delivery metadata is now RFC 3339 format instead of Unix seconds. by @alexluong in #803
  • Response data body stored as raw stringresponse_data.body is now always a string, even for JSON responses. The attempts.response_data DB column migrated from JSONB to TEXT (migration 000009). by @alexluong in #723
  • Alert callbacks replaced by operator eventsALERT_CALLBACK_URL removed. Migrate to OPERATOR_EVENTS_* config with HTTP, AWS SQS, GCP Pub/Sub, or RabbitMQ sinks. Alert defaults also changed: consecutive failure count 20→100, auto-disable true→false. by @alexluong in #807, #813, #819
  • ORGANIZATION_NAME config removed — Use HTTP_USER_AGENT directly for custom User-Agent strings. by @alexluong in #810

Features

  • Apache Kafka destination provider with PLAIN, SCRAM-SHA-256, and SCRAM-SHA-512 SASL auth by @alexluong in #779
  • Operator events system — subscribe to delivery failures, destination disabling, retry exhaustion, and subscription changes via HTTP, AWS SQS, GCP Pub/Sub, or RabbitMQ by @alexluong in #807
  • Portal: JSON viewer with syntax highlighting, collapsible sections, and copy-to-clipboard by @alexluong in #800
  • Portal: URL-based routing for create destination steps (browser back/forward works between steps) by @alexluong in #793
  • destination_type added to attempts table, API responses, and metrics (with filtering support) by @alexluong in #805
  • Configurable webhook signing secret template with RandomHex, RandomBase64, and RandomAlphanumeric variables by @alexluong in #792
  • Support empty webhook header prefix (set to whitespace to disable prefix) by @alexluong in #797

Refactors

  • Idempotent AlertStore using Redis Sets (keyed by attemptID) instead of INCR/GET, making replayed messages safe by @alexluong in #804
  • Eliminated hidden webhook defaults — config owns all defaults explicitly by @alexluong in #808

Fixes

  • Manual retries now derive attempt_number from logstore instead of hardcoding 0 by @alexluong in #781
  • Redis control plane keys scoped by deployment ID, preventing cross-deployment conflicts by @alexluong in #742
  • DELETE /destinations now returns { "success": true } matching other delete endpoints by @alexluong in #798
  • Added missing key property to DestinationSchemaField in OpenAPI spec by @alexluong in #812

Updates

  • Webhook signature verification docs updated and migrated to official SDK by @leggetter in #806
  • Docs/examples: webhook defaults, SDK Node.js demo, API path fixes by @leggetter in #802

Full Changelog: v0.15.0...v0.16.0

typescript - sdks/outpost-typescript/v0.10.0 - 2026-04-10 21:04:16

10 Apr 21:04
f77df94

Choose a tag to compare

Generated by Speakeasy CLI

@hookdeck/outpost-sdk 0.10.0

Typescript SDK Changes:

  • outpost.events.list():
    • request.destinationId Added
    • response.models[] Changed (Breaking ⚠️)
  • outpost.events.get(): response Changed (Breaking ⚠️)
  • outpost.schemas.listDestinationTypes(): response.[].configFields[] Changed (Breaking ⚠️)
  • outpost.schemas.getDestinationType():
    • request.type Changed
    • response.configFields[] Changed (Breaking ⚠️)

Generated with Speakeasy CLI 1.761.3

Publishing Completed

python - sdks/outpost-python/v0.9.0 - 2026-04-10 20:50:33

10 Apr 20:50
ffdc543

Choose a tag to compare

Generated by Speakeasy CLI

outpost_sdk 0.9.0

Python SDK Changes:

  • outpost.events.list():
    • request.destination_id Added
    • response.models[] Changed (Breaking ⚠️)
  • outpost.events.get(): response Changed (Breaking ⚠️)
  • outpost.schemas.list_destination_types(): response.[].config_fields[] Changed (Breaking ⚠️)
  • outpost.schemas.get_destination_type():
    • request.type Changed
    • response.config_fields[] Changed (Breaking ⚠️)

Generated with Speakeasy CLI 1.761.3

Publishing Completed

go - sdks/outpost-go/v0.9.0 - 2026-04-10 20:27:23

10 Apr 20:27
ddb2f36

Choose a tag to compare

Generated by Speakeasy CLI

github.com/hookdeck/outpost/sdks/outpost-go 0.9.0

Go SDK Changes:

  • Outpost.Events.List():
    • request.Request.DestinationId Added
    • response.Models[] Changed (Breaking ⚠️)
  • Outpost.Events.Get(): response Changed (Breaking ⚠️)
  • Outpost.Schemas.ListDestinationTypes(): response.[].ConfigFields[] Changed (Breaking ⚠️)
  • Outpost.Schemas.GetDestinationType():
    • request.Type Changed
    • response.ConfigFields[] Changed (Breaking ⚠️)

Generated with Speakeasy CLI 1.761.3

typescript - sdks/outpost-typescript/v0.9.2 - 2026-03-25 17:49:22

25 Mar 17:49
1dc0356

Choose a tag to compare

Generated by Speakeasy CLI

@hookdeck/outpost-sdk 0.9.2

Typescript SDK Changes:

  • outpost.attempts.list(): response.models[] Changed (Breaking ⚠️)
  • outpost.attempts.get(): response Changed (Breaking ⚠️)
  • outpost.destinations.listAttempts(): response.models[] Changed (Breaking ⚠️)
  • outpost.destinations.getAttempt(): response Changed (Breaking ⚠️)
  • outpost.metrics.getEventMetrics(): Added
  • outpost.metrics.getAttemptMetrics(): Added

Generated with Speakeasy CLI 1.759.1

Publishing Completed

python - sdks/outpost-python/v0.8.2 - 2026-03-25 17:49:10

25 Mar 17:49
1dc0356

Choose a tag to compare

Generated by Speakeasy CLI

outpost_sdk 0.8.2

Python SDK Changes:

  • outpost.attempts.list(): response.models[] Changed (Breaking ⚠️)
  • outpost.attempts.get(): response Changed (Breaking ⚠️)
  • outpost.destinations.list_attempts(): response.models[] Changed (Breaking ⚠️)
  • outpost.destinations.get_attempt(): response Changed (Breaking ⚠️)
  • outpost.metrics.get_event_metrics(): Added
  • outpost.metrics.get_attempt_metrics(): Added

Generated with Speakeasy CLI 1.759.1

Publishing Completed

go - sdks/outpost-go/v0.8.2 - 2026-03-25 17:49:14

25 Mar 17:49
1dc0356

Choose a tag to compare

Generated by Speakeasy CLI

github.com/hookdeck/outpost/sdks/outpost-go 0.8.2

Go SDK Changes:

  • Outpost.Attempts.List(): response.Models[] Changed (Breaking ⚠️)
  • Outpost.Attempts.Get(): response Changed (Breaking ⚠️)
  • Outpost.Destinations.ListAttempts(): response.Models[] Changed (Breaking ⚠️)
  • Outpost.Destinations.GetAttempt(): response Changed (Breaking ⚠️)
  • Outpost.Metrics.GetEventMetrics(): Added
  • Outpost.Metrics.GetAttemptMetrics(): Added

Generated with Speakeasy CLI 1.759.1

v0.15.0

23 Mar 17:51
135ccdc

Choose a tag to compare

Features

  • Metrics — New metrics API (Postgres and ClickHouse) and portal UI (#734, #762, #771, #777, #782)
  • Include destination in attempts — Add ?include=destination query parameter to attempts endpoint (#780)
  • Helm improvements — Improve deployment configuration options in Helm chart (#773)

Fixes

  • 1-based attempt numbering — Change attempt_number to 1-based indexing (#740)
  • MQ consumer reliability — Add exponential backoff retry to MQ consumer on receive errors for more reliable operation (#775)
  • key_value_map schema type — Add key_value_map to DestinationSchemaField type enum (#763)

Full Changelog: v0.14.0...v0.15.0

typescript - sdks/outpost-typescript/v0.9.1 - 2026-03-15 17:53:47

15 Mar 17:53
b90110f

Choose a tag to compare

Generated by Speakeasy CLI

@hookdeck/outpost-sdk 0.9.1

Typescript SDK Changes:

  • outpost.schemas.listDestinationTypes(): response.[].configFields[].type.enum(keyValueMap) Added (Breaking ⚠️)
  • outpost.schemas.getDestinationType(): response.configFields[].type.enum(keyValueMap) Added (Breaking ⚠️)

Generated with Speakeasy CLI 1.755.0

Publishing Completed

python - sdks/outpost-python/v0.8.1 - 2026-03-15 17:50:55

15 Mar 17:50
58a5cb6

Choose a tag to compare

Generated by Speakeasy CLI

outpost_sdk 0.8.1

Python SDK Changes:

  • outpost.schemas.list_destination_types(): response.[].config_fields[].type.enum(key_value_map) Added (Breaking ⚠️)
  • outpost.schemas.get_destination_type(): response.config_fields[].type.enum(key_value_map) Added (Breaking ⚠️)

Generated with Speakeasy CLI 1.755.0

Publishing Completed