The Svix Server changelog has moved to server/ChangeLog.md. The Svix Bridge changelog has moved to bridge/ChangeLog.md.
- Libs/All: AutoConfig v2. Add support for updated AutoConfig token format (
auto_v2prefix) - Libs/All (Breaking):
AutoConfigConsumer.subscribe()return type changed fromEndpointOuttoDestinationOut - Libs/PHP (Breaking): Remove
AutoConfigConsumerclass
- Libs/All: Add new streaming sink types
- Libs/Ruby: Add missing accessors for
connector,streamingAPIs - Libs/Ruby: Accept symbol keys in struct enums (thanks @anishfyi)
- Libs/Ruby: Fix various small bugs (thanks @clinejj and @anishfyi)
- Libs/JavaScript (Breaking): Remove JSON parsing from
Webhook.verify, for consistency with SDKs for other languages (this was meant to be part of the recently-released v2.0.0 but forgotten for JavaScript and PHP - we're yanking v2.0.0 and v2.1.0 of the JS SDK in response) - Libs/PHP (Breaking): Remove JSON parsing from
Webhook.verify, for consistency with SDKs for other languages (this was meant to be part of the recently-released v2.0.0 but forgotten for JavaScript and PHP - we're yanking v2.0.0 and v2.1.0 of the PHP SDK in response) - Libs/Rust: Re-export
Svix,Webhook,AutoConfigandAutoConfigConsumer,ErrorandResultat the crate root
- Libs/All: Add support for new bulk-expunge endpoint (
svix.message.bulkExpungeContent)- For Svix Server OSS, this endpoint is available as of v1.101.0
- Libs/Rust: Add
Svix::server_urlaccessor method
- Libs/All (Breaking): The
PatchConfig-suffixed types are nowConfigPatch-suffixed- In some libraries, it was previously not possible to distinguish between 'keep this field as-is' and 'unset this field' in the SDK
- Libs/All (Breaking): All the non-patch
Configtypes likeS3Config,GoogleCloudPubSubConfigetc. were split into separate*ConfigInand*ConfigOuttypes- This fixes response deserialization for some of these types
- Libs/All (Breaking): Rename
SinkOtelTracingConfig*toOtelTracingConfig* - Libs/All (Breaking): Mark many sink config fields optional in preparation for future changes (this primarily impacts authentication-related parameters that represent one of multiple authentication methods supported upstream)
- Libs/Rust (Breaking): Remove
Configurationfrom the public API- The access token can still be accessed using
svix.token(), if you were using any of the other fields let us know!
- The access token can still be accessed using
- Libs/Rust (Breaking): Upgrade public dependency
js_optionto 0.2.0 - Libs/Kotlin: Add missing APIs background-task, connector, environment, and health
- Libs/Rust, Libs/JavaScript, Libs/Python, Libs/Go: Strip trailing slashes from a
user-provided server URL, so
https://api.svix.com/andhttps://api.svix.combehave the same - Libs/Ruby, Libs/PHP: The timestamp tolerance used by webhook verification can
now be customized through a
toleranceconstructor argument (in seconds; defaults to the previously hardcoded value of five minutes)
See also the changes for v2.0.0-rc.1 below.
- Libs/JS: Fix a publishing issue
Breaking changes:
- Libs/All, CLI:
- Remove deprecated operations and most deprecated fields
- Default
with_contentquery parameter available in some message- and attempt-related operations tofalse(for example: create-message no longer mirrors back the message payload, list message attempts by endpoint no longer returns response payloads by default) - Rename
filterTypestoeventTypesin endpoint and related models - Rename the "
update" operations for Applications, Endpoints, Event Types, Connectors, Ingest Sources, Streams, and Sinks toupsert; they always were create-or-update operations and this new name reflects that - Rename
ingest.dashboardtoingest.authentication.consumer-portal-access - Rename
endpoint.update-headerstoendpoint.set-headers(same for ingest.endpoint etc.) - Rename
EndpointRateLimitStatusOuttoEndpointThrottleRateStatusOut
- Libs/All:
- Remove
svix.operationalWebhookEndpointin favor ofsvix.operationalWebhook.endpoint - Remove model types for operational webhooks (we might add them back later or provide a separate package - let us know if you want this!)
- Remove
- Libs/JavaScript:
- Drop support for CommonJS
- Change (sub)resource accessors from
snake_casetocamelCase, e.g.svix.operational_webhooktosvix.operationalWebhook - Remove
svix.endpoint.{headersUpdate, headersPatch}in favor ofsvix.endpoint.{setHeaders, patchHeaders}
- Libs/Python:
- Remove a handful of model type re-exports from the
svixnamespace; import them fromsvix.apiorsvix.modelsinstead - Stop returning a parsed JSON object from
Webhook.verify; if you were using this, simply calljson.loadson the passed-in data after theverifycall
- Remove a handful of model type re-exports from the
- Libs/Kotlin:
- Upgrade to Kotlin 2.3.20
- Change timestamps to be
kotlin.time.Instants
- Libs/Java:
- Change type of
throttleRate(inApplicationIn,EndpointInetc.) fromLongtoShort - Change type of
batchSizeandmaxWaitSecs(inStreamSinkInetc.) fromLongtoShort
- Change type of
- Libs/Go:
- Change (sub)resource accessors from properties to methods, e.g.
svix.Ingest.Endpointtosvix.Ingest().Endpoint()
- Change (sub)resource accessors from properties to methods, e.g.
- Libs/Rust:
- Reorder constructor parameters to a more natural order.
This only affects some structs with a
::newfunction that takes more than one parameter. Most notably,EventTypeIn::new()snameanddescriptionparameters have been swapped. - Update timestamp parameters from being represented as
Strings to beingchrono::DateTime<Utc>s - Some
i32s (most notably, thelimitparameter in list operation types) were updated to more appropriate integer types - Change some
Vecs toBTreeSets - Change some
HashMaps toBTreeMaps - Remove model re-exports from
svix::api; import them fromsvix::modelsinstead - Drop support for v0.2 of the
httpcrate - Remove non-sensical
Defaultimplementations - Remove constructors for
*Outmodels, which often had too many parameters to be readable, and could get broken by newly introduced fields - Remove
impl From<String> for svix::error::Error
- Reorder constructor parameters to a more natural order.
This only affects some structs with a
- Libs/Ruby:
- Stop returning a parsed JSON object from
Webhook.verify
- Stop returning a parsed JSON object from
- Libs/PHP:
- Make
optionsparameters onGEToperations non-nullable (but they still have a default value, so this only affects calls that explicitly passed a null)
- Make
Other improvements:
- Libs/(Java and Kotlin): Upgrade OkHttp to 5.4.0
- Libs/JavaScript: Fix empty
retryScheduleInMsnot being honored - Libs/JavaScript: Fix
0entries inretryScheduleInMsnot being honored
- CLI: Use wolfi as the image base instead of Debian, shrinking the Docker image by 77% and removing all open CVEs
- Libs/C#: Fix a bug that made the 'canceled' message-attempt status opt-in unreliable (see also changelog for 1.95.0)
- CLI: Set OCI metadata on Docker images
- CLI: Embed package metadata in compiled binaries on Linux
- CLI: Ignore
EPIPEwhen printing output - Libs/All: Support customizing expiration (grace period) of old endpoint secret when rotating
- Libs/Python: Bump minimum-supported Python interpreter version to 3.9
- Libs/Python: Fix memory and file-descriptor leak from excessively constructing httpx clients
- Libs/Java: Upgrade jackson dependency to v2.21.4
- Libs/Rust: Make
MessagePollerv2Consumer*Optionspublic
- CLI (New): Add
--tokenoption tosvix listen - Libs (New): AutoConfigConsumer SDK to consume Polling Endpoints
- Libs/Csharp: Accept a valid signature when it is last in a multi-sig header (thanks [@devteamaegis])
- Libs/All: Stop sending with_content parameter to the backend, handle it client-side
- Libs/Kotlin: Webhooks AutoConfig SDK
- Libs: Add
health.getto Go, Python and Rust SDK- It was previously missing from these SDKs for historical reasons
- Libs/All: Add versions in user-agent header
- Libs/Go: Add additional internal management APIs
- Libs/Python: Fix release workflow (1.95.0 of the Python SDK failed publishing)
- Libs/All: Enable server-side support of 'canceled' message-attempt status by default
- If you were previously comparing attempt statuses against 'success', note that the result of the comparison will now change for messages canceled by a transformation script
- Libs/Python: Move from
setup.pyto PEP-518-compliantpyproject.tomlbuild system - Libs/Python: Clarify that the minimum-supported Python interpreter version is 3.8
- Libs/Python: Actually run tests against all supported python versions
- Libs/PHP: Fix deprecation warning for
DateTimeImmutableconstruction fromnull(thanks @VincentLanglet)
- Libs (New): Webhooks AutoConfig SDK
- Libs/Java: Restore compatibility with Java 1.8 in Webhooks verification
- CLI: Show input / output JSON examples in
--helpoutput - Libs/Java: Restore compatibility with Java 1.8
- Libs/JavaScript: Remove dependency on
uuid(thanks @ulrichstark)
- Fix docker build
- Libs/Ruby: various fixes to the ruby sdk
- Libs/All: Update to latest Svix Cloud spec
- Libs/Python: Set
__str__on errors
- Libs/Go: Add support for
v1.management.authentication.patch-api-token(Internal endpoint) - Libs/Go: Add TransportWrapper option to SvixOptions (thanks @piotrdomagalski)
- Libs/All: Add support for
v1.message.create-precheck(Svix Cloud exclusive endpoint)
- Libs/Ruby: Return nil if payload is empty, instead of attempting to parse as JSON (thanks @donovanlopez)
- Libs/Rust: Bump MSRV to 1.88.0
- CLI: Bump MSRV to 1.88.0
- Libs/JavaScript: Updated webhook verification logic to use official standard webhooks packages
- Libs/Python: Updated webhook verification logic to use official standard webhooks packages
- CLI: support disabling TLS verification when relaying requests (
svix listen)
- Libs/PHP: Add
MessageIn::createRaw, allows you to create a raw (non-json) message
- Libs/All: Add support for connector UIDs
- CLI: Add support for the Connector API
- CLI: Add
-v --verboseflag - CLI: Fix a bug in config file saving
- Libs/All: Add support for the new Connector API (see also the corresponding docs section)
- CLI: Fix
svix listenfailing with "Could not automatically determine the process-level CryptoProvider"
- Libs/PHP added support for
$svix->application->getOrCreate
- Libs/Kotlin: Add
SvixOptionsto thecom.svix.kotlinnamespace- The un-namespaced symbol is kept as a
typealiasfor backwards compatibility
- The un-namespaced symbol is kept as a
- Libs/Javascript: Add option to configure the fetch method
- Libs/Python: Fix bug preventing the generic webhook ingest source from being deserialized
- Libs/Python: Add API for the new Svix Stream
- Libs/All: Add API for the new Svix Stream
- Libs/PHP: Fix bug causing empty objects to be serialized as
[]instead of{} - Libs/Rust: Upgrade rustls dependency version (thanks @GodTamIt)
- Libs/Go: Fix bug causing 422 errors on
message.createwith messages created using theNewMessageInRawhelper
- Libs/PHP: Added support for the full Svix SDK!
- Libs/Go: Fix bug preventing
time.timequery params from serializing correctly - Libs/All: Allow deleting endpoint headers through new
deleteHeadersfield inEndpointHeadersPatchIn
- CLI: Modify Dockerfiles to use cache mounts for improved build time; these now require Docker 1.2 or later to build
- Libs/JS: Add support for custom retry schedule (thanks @KranzAklilu)
- CLI: Fix installation of ca-certificates in Docker images
- These images were broken as of v1.72.0
- Libs/Rust: Add support for custom retry schedule (thanks @KranzAklilu)
- Libs/Rust: Add support for connecting to the API through a proxy
- Libs/(Java and Kotlin): Fix bug causing runtime exceptions when unknown fields were sent from the server
- Libs/JavaScript: Use native
fetchAPI
- Libs/All: Re-add
endpoint.transformationPartialUpdateas a deprecated operation- It was removed through a rename in the previous version, which should not have happened
- CLI: Add
svix seedcommand to create testing resources (thanks @KranzAklilu) - Libs/Go: Fix request retries not working (thanks @mixnblend!)
- Libs/All: Revert accidental addition of some authentication APIs
- Libs/All: Fix name and input structure for rarely used set-transformation route
- Rename
endpoint.transformationPartialUpdatetoendpoint.patchTransformation - Replace
EndpointTransformationInwithEndpointTransformationPatch- In some but not all the SDKs, these have slightly different field types
- This is a breaking change, but based on server statistics this method is barely used by anybody
- Rename
- Libs/Rust: Don't panic on invalid inputs to request building
- Libs/PHP: Handle Badly Formatted Signatures by @rodnaph in #1942
- Libs/All: Automatically send an idempotency key on all outgoing post requests
- Libs/Go: Disable HTTP/2 for API calls because it was causing issues for some users
- Libs/Python: Enable configuring a proxy for API requests
- Libs/All: Add support for PandaDoc ingest source
- Libs/JavaScript: Fix response processing code for endpoints with an optional datetime field in the response body
- Libs/PHP: Update minimum version of PHP to 8.0
- Libs/Python: Bring back the (deprecated) sync
dashboard_accessmethod, which was accidentally removed in v1.64.1 - Libs/Csharp: The
optionsargument to theSvixClientinitializer is now optional. - Libs/Csharp: The
SvixOptions.BaseUrlfield is deprecated in favor ofSvixOptions.ServerUrl - Libs/(Ruby and Kotlin): Add doc comments to class attributes
- Libs/Go: Added a new
<Enum>From<UnderlyingType>map to all enums. For exampleBackgroundTaskStatusFromString["running"]will result inBACKGROUNDTASKSTATUS_RUNNING - Libs/Go: Fixed bug where the correct
content-typewas not set onPUTrequests
- Libs/JavaScript: Add
HTTPValidationError,HttpErrorOut,ValidationErrorandApiExceptionto the top level exports. - Libs/Python: Specify minimum version of pydantic
pydantic >=2.10in setup.py.
- CLI: Add interactive login with dashboard.svix.com
- Libs/JavaScript: Fix deserialization for optional arrays
- Libs/Python: Fix minimum version requirement for pydantic
- Libs/Python: Removed internal use of
matchstatement, allowing python versions older than 3.10 to be used
- Libs, Cli: New Ingest source and Ingest endpoint APIs are now available.
- Libs: New environment APIs (import, export) are now available.
- Libs/Ruby: Fix bug causing
application.get_or_createto raise aTypeError
- Libs/Python: The client will now reuse the same httpx Client across api calls
- Libs/(C#,Java,Kotlin,Rust): The type of
BackgroundTaskFinishedEvent2.datachanged fromData(a custom type) toObject(Java C#),serde_json::Value(Rust),Map<String, Any>(Kotlin)
- Libs/Javascript: Fix bug where a missing content-type header would cause some requests to fail
- Libs/Java and Libs/Kotlin: Fix bug introduced in v1.61.1, where
message.createwould return 422 on all requests
- Libs/Java (Breaking): The type of
MessageIn.transformationsParamschanged fromObjecttoMap<String,Object>. - Libs/Java and Libs/Kotlin (Breaking): Due to an internal change in the underlining JSON de/serialization library, some JSON objects may not be serialized correctly. To address this
MessageIn.payloadnow accepts a JSON encoded string instead of anObject(for Java) orMap<String, Any>(for Kotlin) - Libs/Go: Fix regression in Go lib, operations now return
&svix.Errorinstead ofsvix.Error
- Libs/Ruby (Breaking): Ruby version changed from
2.7to3.4.2 - Libs/Ruby (Breaking): Deprecated methods
MessageAttempt.listandMessageAttempt.list_attempts_for_endpointare removed
- Libs/Javascript: Fix regression causing json deserialization to throw exception in a few edge cases
- Libs/Java (Breaking): All uses of
ListOptions/PostOptionsare removed, and renamed to{Resource}{Operation}Options. For example inEndpoint.Listyou would now useEndpointListOptions - Libs/Java (Breaking): Deprecated methods
MessageAttempt.listandMessageAttempt.listAttemptsForEndpointare removed
- Libs/Go: Fixed regression where go >= 1.23 was needed, now Go >= 1.21 is supported
- Libs/JavaScript: Fixed regression introduced in version 1.59.0, types are now correctly exported
- Libs/Kotlin (VERY IMPORTANT): The parameter order
appIdandmsgIdwere swapped onMessage.getandMessage.expungeContent - Libs/Kotlin (Breaking): All uses of
ListOptions/PostOptionsare removed, and renamed to{Resource}{Operation}Options. For example inEndpoint.Listyou would now useEndpointListOptions - Libs/Kotlin (Breaking): In the 4
*Patchpatch models, nullable fields are of typeMaybeUnset<T>instead ofT. callMaybeUnset.Present(val)to initialize this value - Libs/Kotlin (Breaking):
SvixOptionsno longer hasinitialRetryDelayMillisornumRetriesinstead useretrySchedule - Libs/Kotlin (Breaking): All
{Resource}{Operation}Optionsand model classes (ApplicationIn/MessageOut) are now data classes - Libs/Kotlin (Breaking): Deprecated functions
MessageAttempt.listandMessageAttempt.listAttemptsForEndpointare removed - Libs/Kotlin (Breaking): All uses of
java.time.OffsetDateTimereplaced withkotlinx.datetime.Instant - Libs/Kotlin (Breaking): All uses of
java.net.URLin request/response models are replaced withString - Libs/JavaScript (Breaking): Removed non-public
endpoint.oauthUpdateandendpoint.oauthDeleteoperations. - Libs/JavaScript (Breaking): Removed deprecated operation
MessageAttempt.list - Libs/JavaScript (Breaking): Exceptions and models are no longer exported from
webhook.ts, import them fromindex.tsinstead
- Libs/Go: New
Message.ExpungeContentis now available - Libs/Go: Fix regression introduced in version
1.58.0. All models are now exported from thesvixpackage. - Libs/Go: Fix regression introduced in version
1.58.0. Nullable fields are now*Tinstead ofT, this affectsListResponseXXXOut.Iterator
- Libs/Go: Fix a null-pointer deference regression introduced in previous version.
- Libs/Rust: Fix regression in previous version. Nullable fields are now
Option<T>instead ofT, this affectsListResponseXXXOut.iteratorandEnvironmentOut.settings
This version contains a big overhaul of the client libraries, with improved typing.
-
Libs/Go: Add
Authentication.ExpireAll(andExpireAllWithOptions) -
Libs/Go (Breaking): Excluding specific fields on the *Patch models (
ApplicationPatchfor example), allNullable{Type}removed from the models -
Libs/Go (Breaking): All
Nullable{Type}(for exampleNullableString) are replaced with a new genericNullable[T]type, the new type can be imported fromgithub.com/svix/svix-webhooks/go/utils -
Libs/Go (Breaking): All custom model types are now imported from
github.com/svix/svix-webhooks/go/modelsinstead ofgithub.com/svix/svix-webhooks/go -
Libs/Go (Breaking): All
-WithOptionsmethods are now removed. Their regular counterparts now take a pointer to an Options type which can be nil when not needed. For example inEndpoint.RecoverWithOptionsis nowEndpoint.Recover -
Libs/C# and Libs/Go (Breaking): All uses of
ListOptions/PostOptionsare removed, and renamed to{Resource}{Operation}Options. For example inEndpoint.Listyou would now useEndpointListOptions -
Libs/C# (Breaking): All
IdempotencyKeymethod parameters are removed, and are now part of{Resource}{Operation}Options. For example inMessage.Create; to the useIdempotencyKey, simply pass it in theMessageCreateOptions -
Libs/C# (Breaking): The
Throwparameter is removed fromSvixOptions -
Libs/C# (Breaking): All redundant interfaces along with the
Svix.Abstractionsnamespace are removed -
Libs/C# (Breaking): The
Svix.ModelandSvix.Modelsnamespaces are now merged into a singleSvix.Modelsnamespace -
Libs/C# (Breaking): The
Svix.Clientnamespace is removed, TheSvixClientclass can now be found in theSvixnamespace -
Libs/Python (Breaking):
PostOptionsandListOptionsare no longer used in methods forAuthentication,Endpoint,EventType,Integration,MessageAttempt,Message,StatisticsandOperationalWebhookEndpointresources. Instead each API call now has its own{Resource}{Operation}Options. (Both sync and async) -
Libs/Python: In
Applicationthedashboard_accessmethod is deprecated in favor ofapp_portal_access. (Both sync and async) -
Libs/Python (Breaking):
EndpointStatsOptionsis renamed toEndpointGetStatsOptions -
Libs/Python (Breaking):
MessageAttemptListOptionsis removed in favor of call specific{Resource}{Operation}Options -
Libs/Python (Breaking): For
Statisticsin theaggregate_event_typesmethod thetask_idparameter is removed, Please note that previously this parameter was ignored and had no affect (Both sync and async) -
Libs/Kotlin (Breaking): Update
recoverto returnRecoverOut(instead of nothing) -
Libs/Kotlin (Breaking): Update
replayMissingto returnReplayOut(instead of nothing) -
Libs/Kotlin (Breaking): Update
sendExampleto returnMessageOut(instead of nothing) -
Libs/Kotlin (Breaking): Update
MessageAttemptlist methods to each have its own type for list options, since they don't all support the exact same set of parameters and some of the parameters that could be set before would just get ignored -
Libs/Kotlin: Fix a bug in
EventType.listwhereoptions.orderwas not getting honored -
Libs/Rust (Breaking): Add optional
EventTypeDeleteOptionsparameter toEventType::delete -
Libs/Rust (Breaking): Add optional
optionsparameters toEndpoint::recover,Endpoint::rotate_secret,Integration::rotate_keyandMessageAttempt::resend -
Libs/Rust (Breaking): Remove model files that were not referenced by any operations available through the
Svixobject -
Libs/Rust (Breaking): Switch
Patchstruct fields fromOption<Option<T>>tojs_option::JsOption<T> -
Libs/Rust (Breaking): Change
rate_limitfromi32tou16in several places -
Libs/Rust (Breaking): Remove
settingsparameter fromEnvironmentIn::new -
Libs/Rust (Breaking): Replace
PostOptionswith operation-specific options structs -
Libs/Rust (Breaking): Remove
PeriodfromBackgroundTaskTypevariant names; this was introduced by accident a few releases ago
- Skipping versions: we had an issue with our CI that created duplicated Go library releases and forced us to bump the version across the libs and the server. Apologies for any inconvenience caused.
- Libs/Go: retracts several versions which were tagged prematurely. Apologies!
- CLI: Rename the binary back from
svix-clitosvix - Libs/Java: Stop sharing one
ApiClientbetween allSvixinstances. Fixes a bug where multiple independently instantiatedSvixinstances would always use the same base path and auth token.
- CLI (New): New Rust-based CLI with support for all recent Svix functionality.
- Libs/Rust (Breaking): Add
api::MessageAttemptListAttemptedMessagesOptionsand use it forMessageAttempt::list_attempted_messages, replacingMessageAttemptListOptionswhich contained some extra parameters never used with this method / endpoint (#1568) - Libs/JavaScript (Breaking): Add more precise type annotations for
optionsparameters onMessageAttempt.list,MessageAttempt.listByMsg,MessageAttempt.listAttemptedMessagesandMessageAttempt.listAttemptedDestinations(#1571) - Libs/JavaScript (Breaking): Rename
EndpointStatsOptionsinterface toEndpointGetStatsOptions(#1585) - Libs/Kotlin (Breaking): Remove
ListOptionsclass. Usage of classes that were inheriting from it should not change though (#1587) - Libs/Rust: Add
api::Authentication::expire_all(#1584) - Libs/Rust: Rename some
Optionstypes. The old names remain as deprecated type aliases (#1584)
- Libs/JavaScript: Revert packaging-related change because it broke for some users (#1556)
- Libs/Rust (Breaking): Remove unused optional
PostOptionsparameters from non-POST methods (#1557)
- Libs/Go: Add convenient construction of messages with pre-serialized payload (#1538)
- Libs/Go: Reduce the use of
NullableXtypes to where they actually have a use (#1543) - Libs/JavaScript: Add convenient construction of messages with pre-serialized payload (#1539)
- Libs/Java: Add convenient construction of messages with pre-serialized payload (#1544)
- Libs/C#: Bump .NET target to 8.0 (#1546)
- Libs/C#: Add convenient construction of messages with pre-serialized payload (#1545)
- Libs/Python: Add convenient construction of messages with pre-serialized payload (#1540)
- Libs/Ruby: Add convenient construction of messages with pre-serialized payload (#1541)
- Libs/JavaScript: Compile svix package for ESM and CommonJS, reducing bundle sizes (#1549)
- Libs/Python: Fix sync / async mismatch for op-webhook-endpoint API (#1535)
- Libs/Rust: Fix types of
iteratorfields (#1534) - Libs/Kotlin: Add convenient construction of messages with pre-serialized payload (#1531)
- Libs/Rust: Add convenient construction of messages with pre-serialized payload (#1533)
- Libs/JS: Allow
iteratorand date parameters on list endpoints to benull(in addition toundefined) - Libs/JS: Fix serialization of message
statusquery parameters - Libs/Rust: Revert many pointless type changes from
Option<T>toOption<Option<T>>that came with 1.39.0
- Libs(JS): downgrade
@stablelib/base64avoidingERR_REQUIRE_ESMby @svix-onelson in #1506
- Libs: Add operational webhook endpoint API
- Libs/Rust: [Breaking] Models for PATCH endpoints now have
Option<Option<T>>fields to allow explicitly sending nulls to unset those fields. - Libs/Go: [Breaking] Nullable arrays are once again represented by
[]Tinstead of*[]T. Serialization handles the empty case correctly. - Libs: Upgrade
openapi-generatorto 7.9.0, with dependency upgrades and internal changes in the SDKs.
- Libs(Go):
EndpointUpdateandEndpointPatchallow null for channels, filter types
- Libs(Go): edit
EndpointInto allow null for channels, filter types
- Libs/Python: Revert breaking change to MessageInPayload/MessageOutPayload
- Libs/Rust: Add missing export of
V1MessageEventsParams
- Libs/Go Remove modules no longer produced by the generator
- Libs/Go: prune out unused import for "time" in codegen output
- Libs/C#: Fix appId, endpointId order in RotateSecretWithHttpInfoAsync
- Libs: Support passing
applicationtoapp-portal-accessendpoint
- Libs/C#: add GetAppPortalAccess* methods to IAuthentication interface
- Libs/Go: expose
with_contentforMessage.List - Libs/Go: expose
with_msgparam onMessageAttempt.ListByEndpoint - Libs/Go: expose
orderinIntegtation.ListandEventType.List - Libs/Go: return response body for recover/replay
- Libs/Go: expose
tagforMessageAttemptlist endpoints - Libs/Javascript: Publish src to npm to make it available for source maps
- Libs/Python: ensure datetimes have a timezone
- Libs: Update OpenAPI spec
- Libs/Python: add missing 'get_stats' function
- Libs/Javascript: Apply workaround for incomplete fetch support in Cloudflare Worker
- Libs/Go: Add NullableBool function
- Libs/Python: Update dependencies and switch to ruff
- Libs/Rust: Add
Svix::with_tokento allow changing API token - Libs/PHP: Replace ctype_digit for PHP 8.1 deprecation of non-string arguments
- Libs: Update OpenAPI
- Libs/Javascript: Fix method naming consistency
- Add oauth support to javascript
- Libs/Ruby: Add PATCH endpoints
- Libs/Rust: Print more detailed error messages for generic errors
- Libs/C#: don't serialize nulls in PATCH endpoints
- Libs/Rust: Make API method Future implement Send/Sync
- Libs/Python: Make request timeout and retries configurable
- Libs/Rust: Make request timeout configurable
- Libs/C#: [Breaking] Return iterator information in list endpoints. Changes the return type of list endpoints.
- Libs/Java: don't serialize nulls in PATCH endpoint methods
- Libs/Rust: upgrade and clean up dependencies
- Libs/Rust: switch from reqwest to hyper 1.0
- Libs/Rust: [Important] Fix a bug in the webhook signature verification method where certain signatures could bypass the verification.
- Libs/Java: [Breaking] Use Java time instead of threetenbp. This removes the need to import threetenbp to use the library. Depending on how the lib is used, it might require migrating uses of threetenbp to Java 8 Date-Time APIs.
- Libs: update OpenAPI spec and libs.
- Libs/Javascript: Fix thrown error message when API status code is unknown.
- Libs: update OpenAPI spec and libs.
- Libs: expose two new Statistics endpoints.
- Libs/Csharp: implement "hard delete" event types.
- Libs/Ruby: accept additional options on message get.
- Libs/Go: fix transformation partial update function.
- Libs/Kotlin: fix errors with APIs that return no content (like endpoint delete).
- Libs/Go: expose
EventType.DeleteWithOptions
- Libs: update OpenAPI spec
- Libs: add functions to import event types from OpenAPI specs
- Libs: update OpenAPI spec
- Libs/Go: export missing types
- Libs: update OpenAPI spec
- Libs/Go: fix behavior of
NullableInt32andNullableString
- Libs/Rust: fix handling of integer enums (was causing failures for some endpoints).
- Libs: implement the
patchendpoints for partial updates
- Libs/JavaScript: Fix regression in previous release and allow passing
Bufferto sign/verify.
- Libs/JavaScript: Add an explicit check that payload is a string.
- Libs: Fix a bug with integration key creation.
- Libs/Go: support passing
WithContenttoList Attempted Messages - Libs/Python: fix regression in Python library (causing some functions not to work).
- Sync OSS package version with our internal version.
- Libs: update OpenAPI spec
- Libs: add support for "Background Task" endpoints
- Libs: add support for since/until to endpoint stats
- Libs/Go: add missing
endpoint_idoption to list attempts by msg. - Libs/JavaScript: add missing
withContentfield toMessageListOptions. - Libs/Rust: fix typo in error handling message
- Libs: update OpenAPI spec
- Libs/Ruby: fix the library failing to load due to missing dependency.
- Libs: [Semi-breaking] we changed the return value of the transformation simulation endpoint. It's technically a breaking page, though the API is private so it shouldn't affect people.
- Libs: regenerate libs from the correct openapi spec (could have caused potential authentication issues)
- Libs/Rust: support choosing the wanted TLS implementation
- Libs: update OpenAPI spec
- Libs: Add
send-examplewrapper to libraries - Libs/Go: alias missing types from internal dir / openapi package
- Libs/Java: serialize nulls when making HTTP requests
- Libs: add support for creating application when creating a message
- Libs/Go: bump Go version
- Libs: add
prev_iteratorandordersupport to application list - Libs: add
prev_iteratorsupport to event type list - Libs/C#: [Breaking] change default value for
SvixOptions.Throwtotrue
- Libs/Ruby: require (reexport) app portal models in ruby (fixing errors)
- Libs/C#: fix MessageAttempt querying when not filtering by status and code
- Libs: add support for
prev_iteratorfor application and endpoints - Libs/JS: fix sign function to support non-round dates
- Libs/Go: [Breaking] accept a context parameter in all Go lib methods
- Libs/Rust: glob-reexport all generated models in Rust
- Libs/Rust: add missing exports to a few API endpoints
- Libs: fix naming of replay-missing methods in libraries (all but Rust)
- Libs: add endpoints to expunge payload and response
- Libs: add replay missing messages functions
- Libs: add transformations APIs
- Libs/Rust: Enable TLS support in
reqwestby default - Libs: support the new feature flag gating of event types
- Libs/Rust: make all
*Optionsand fields public (missing from previous release)
- Libs/Rust: make
ListOptionsandPostOptionsfields public - Libs/Rust: fix Webhook verification to accept &str
- JavaScript: make signature comparison constant time (thanks @arjunyel)
- Libs: Update OpenAPI spec
- Libs/Java: fix issue with automatic region detection not working
- Libs/Kotlin: support configuring retry schedule
- Libs: fix metadata field in Go and Python
- Libs/Java: fix issue with creating multiple Svix instances in parallel.
- Libs: add application/endpoint metadata fields.
- Libs/C#: Add netstandard2.0 support.
- Add gitleaks config to ignore test auth tokens.
- Libs: expose endpoint stats function.
- Libs/Python: fix typo in Python lib causing auto-detection of EU servers to fail.
- Libs/C#: make logger optional when creating SvixClient.
- Libs: support "upsert" of entities on PUT methods.
- Libs/Ruby: fix region auto-detection.
- Libs/JavaScript: fix issue when signing/verifying payloads with high Unicode codepoints (e.g. some new emoji)
- Libs/Go: export missing
svix.NullableStringutility.
- Libs/Kotlin: fix compilation issues.
- Libs: automatically detect region (and URL) from auth token.
- Lib/JavaScript: fix setting string webhook secrets.
- Libs: update libraries to accept a raw webhook secret.
- Libs: fix Kotlin and Java build
- Libs: fix nullable fields to be marked as such (fixes parsing errors in some clients).
- Lib/Python: update httpx dependency to the latest version.
- Lib/Rust: fix mixup with validation errors marked as HTTP errors and vice-versa.
- Libs/Csharp: expose missing getters which prevented a lot of the lib's functionality to be used.
- Libs/Python: show a more useful error for obviously malformed secrets.
- Libs/JavaScript: show a more useful error for obviously malformed secrets.
- Libs: update OpenAPI spec
- Lib/Rust: add a Rust API client + webhook verification library!
- Lib/Python: fix package installation on Windows.
- Lib/Csharp: make some parameters optional for better ergonomics.
- Libs/C#: fix library compilation (broke in the previous release.
- Libs: fix all libraries to handle 429 (rate limiting).
- Libs/C#: add C# API client library.
- Libs/Python: fix user agent to actually work.
- Libs/Python: increase read timeout.
- Libs: add retry and request-id headers for easier debugging.
- Ruby: Fix CI to not include Vendor data in package.
- Java & Kotlin: Build against java 11
- Ruby: Fix a broken import (we changed the name of a webhook event) 🐞
- Python: Breaking The python library is now fully typed! There may be some breaking changes related to this upgrade (including dropping support for Python 2.X). Please check test and check your integration before upgrading to this version. 🤓
- Python: New Async API via SvixAsync! 🚀
- Libs: Remove the
prevIteratoroption from message attempt options (This was added by mistake, never worked and was never meant to work. All iterators should be passed via theiteratoroption. Sorry for the confusion!) - Libs: Allow filtering by messages by channel
- Libs/JS: Fix for setting Idempotency-Key when one isn't set 🐞
- Libs/All: Add
msg_idto attempt list responses (MessageAttemptOut) - Libs/All: New GetOrCreate application function 🆕
- Libs: Support for passing an idempotency key to post commands
- Libs: Add support for filtering by channel
- Kotlin & Go: Support filtering by event type
- JS: fix for API calls using a default idempotency key when one isn't set 🐞
- Libs: Add support for filtering by StatusCodeClass in attempts API
- Libs: Add support for reverse iteration (prev_iterator) & after param in list commands ⬅️
- Libs: Support for new
/attempt/API via list_for_msg and list_for_endpoint. 🚀 - Deprecation warning:
message_attempt.listis deprecated in favor of this new API. ❌
- Java & Kotlin: Minor binding fixes to bring them up to date with other libs 🐞
- Go: Breaking, Changed module name to
github.com/svix/svix-webhooks💥 (We're sorry for any inconvenience this may cause you.) - Python: Add support for passing a custom
idempotency-keyfor POST actions 🔂 - All: Add support for filtering by
channelfor message list APIs 🆕
- Python: Add new get_or_create function for application API 🆕
- All: Add support for the new Integration API 🆕
- JS: Bump vulnerable dependency 👮
- Ruby: Cleanup gem level imports 💅
- Java & Kotlin: Minor internal fix to restore version number parity with other libs
- Python: Allow explicit
Noneto be passed for optional fields ❌
- JS: Use fetch fork from npm to avoid cache/name clashes 🐞
- JS: Rename dependency to avoid name-clashes 🐞
- All: Update Schema
- All: Support new Channels API 📺
- Javascript: Enable keepalives for improved performance 🚀
- Kotlin: Ensure response bodies are properly closed 🐞
- All: Add new
ServerUrloption for overriding the APIs base URL (Useful for testing) 🆕
- All: Support for
payload_retention_periodin message API. 🆕
- Ruby: Upgrade to bundler 2 🆕
- Ruby: Fix endpoint.update parameters 🐞 (thanks sevensidedmarble!)
- Go: Add ability to verify webhook payloads while ignoring timestamp enforcement ❌🕝
- Go: Regenerate OpenAPI Spec
- All: Add support for retrieving a single event type 🆕
- Javascript: Add readme for npm 📚
- Ruby: Fix base64 import on case-sensitive file systems 🐞 (thanks mikelarkin!)
- All: Add support for custom endpoint header API 🆕
- All: Add endpoint recover function ❤️🩹
- All: Add updatedAt fields to Application, Endpoint & EventType 🆕
- All: Better client-side handling of rotateSecret errors 🆕
- Ruby: Fix endpoint list function input 🐞
- All: Add include_archived option to event_type API ➕
- All: Support secret rotation for endpoints 🔁
- Kolin: Fix getSecret return type 🐞
- PHP: Fix 5.6 compatibility issue 🐞
- Ruby: Initial API bindings! 🚀
- Kotlin: Add client-side retries 🔁
- Python: Add additional message-attempt APIs. 🆕
- Kotlin: Initial async kotlin library 🚀
- All: Improved naming for Integer Enums 📛
- JS: Update dependencies 🆕
- Java: Cleanup list option code using generics 🤓
- All: Add before option to message APIs
- Java: Cleanup list options
- All: Add ability to set signing secret
- All: add event type filtering to message attempt API
- All: support for endpoint uids
- All: Adds support for unbranded webhooks 📋
- PHP: Improve tests and validation for sign function 🐞
- Java: Set descriptive message on APIExceptions 🆕
- All: Adds Sending to MessageStatus 📤
- All: Add support for Schemas in EventType API 🆕
- All: Some of the list options structs have been renamed (this is a minor breaking change in some languages) 💥
- All: Filter messages by EventType ⏳
- All: Add custom user-agents 🧑💻
- All: Retry 5XXs & network errors 🔁
- All: Add nextAttempt to MessageEndpointOut 🆕
- All: Update Schema 🆕
- Javascript: Update Dependencies 🆕
- Ruby: Update Dependencies 🆕
- All: Add nextAttempt to EndpointMessageOut 🕛
- Java: Bump dependencies 🆕
- All: Add support for rate limiting 📈
- All: Bump openapi-generator to 5.2.0, fixes bug in python lib which can throw if additionalProperties are found 🐛
- Python: Cleanup explicit exports in python 🤓
- All: Add Disabled flag to endpoint models ❌
- All: Add Sign functions for generating webhook signatures 🔏
- Python: Enable typing 🤓
- Csharp: Initial webhook verification library 🚀
- Go: Set default http client timeout and allow overriding of client. ⏲️
- All: Bump openapi spec, fixes bug in resend function, which could throw an error in some languages on return. 🐛
- JavaScript, Python and Go: fix regression with server URLs not being set correctly.
- All: Update OpenAPI spec
- Javascript: Fix bug with message attempt resend (would throw on return)
- Python: Fix optional bug where optional return types would throw
- Python: Fix issue with pip package not generating the
openapi_clientproperly on deploy
- Python: Clean up exports, add API exceptions as
svix.exceptions
- All: Enforce timestamp tolerance when verifying
- All: Support new webhook signature prefixes when verifying
- Go: Expose new error class for checking API errors
- PHP: Fix issue with psr-4 autoloading
- Python: Properly export WebhookVerificationError
- Python: Fix bug in event_type create function
- Migrate to new GitHub org
svix! 🚀
- Update the OpenAPI spec and change structures accordingly
- go: Add DebugURL option for overriding API URL
- Ruby: initial release
- PHP: initial release
- Update the Message model to call the payload
payloadinstead ofdata. - Add List event_types to go library
- Fix bug in endpoint create function
- Release Go lib
- Add function to update event_types.
- Update OpenAPI spec to the latest version
- Rename to Svix
- Sync library versions
- Make the library open-source
- Future releases will have proper changelogs and a synchronised version scheme.
- Just waiting on the rename of the library