Svix

Webhooks as a service

docs.svix.com/api ↗
Version
1.21.0
OpenAPI
3.0.3
Endpoints
59
Schemas
120
87
Quality
Updated
3 days ago
Infrastructure webhooks infrastructure events
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.eu.svix.com
https://api.us.svix.com

Endpoints

Application 6 endpoints

GET /api/v1/app

List of all the organization’s applications.

operationId: Application_listAll

Parameters

Name In Required Type Description
limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

order query optional

The sorting order of the returned items

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app
POST /api/v1/app

Create a new application.

operationId: Application_createNewApplication

Parameters

Name In Required Type Description
get_if_exists query optional boolean

Get an existing application, or create a new one if doesn’t exist. It’s two separate functions in the libs.

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema ApplicationIn
Property Type Required
uid string optional
name string required
metadata object optional
rateLimit integer optional

Responses

200
201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app
DELETE /api/v1/app/{app_id}

Delete an application.

operationId: Application_removeApp

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

DELETE /api/v1/app/{app_id}
GET /api/v1/app/{app_id}

Get an application.

operationId: Application_getById

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}
PATCH /api/v1/app/{app_id}

Partially update an application.

operationId: Application_partiallyUpdate

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

Request Body

required
application/json
schema ApplicationPatch
Property Type Required
uid string optional
name string optional
metadata object optional
rateLimit integer optional

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PATCH /api/v1/app/{app_id}
PUT /api/v1/app/{app_id}

Update an application.

operationId: Application_updateApplicationById

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

Request Body

required
application/json
schema ApplicationIn
Property Type Required
uid string optional
name string required
metadata object optional
rateLimit integer optional

Responses

200
201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PUT /api/v1/app/{app_id}

Authentication 3 endpoints

POST /api/v1/auth/app-portal-access/{app_id}

Use this function to get magic links (and authentication codes) for connecting your users to the Consumer Application Portal.

operationId: Authentication_generateMagicLinks

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema AppPortalAccessIn
Property Type Required
expiry integer optional
featureFlags array optional

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/auth/app-portal-access/{app_id}
POST /api/v1/auth/app/{app_id}/expire-all

Expire all of the tokens associated with a specific Application

operationId: Authentication_expireAllTokens

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema ApplicationTokenExpireIn
Property Type Required
expiry integer optional

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/auth/app/{app_id}/expire-all
POST /api/v1/auth/logout

Logout an app token.

Trying to log out other tokens will fail.

operationId: Authentication_logoutToken

Parameters

Name In Required Type Description
idempotency-key header optional string

The request’s idempotency key

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/auth/logout

Backgroundtasks 2 endpoints

GET /api/v1/background-task

List background tasks executed in the past 90 days.

operationId: BackgroundTasks_getPastTasks

Parameters

Name In Required Type Description
status query optional

Filter the response based on the status

task query optional

Filter the response based on the type

limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

order query optional

The sorting order of the returned items

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/background-task
GET /api/v1/background-task/{task_id}

Get a background task by ID.

operationId: BackgroundTasks_getById

Parameters

Name In Required Type Description
task_id path required string

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/background-task/{task_id}

Endpoint 17 endpoints

GET /api/v1/app/{app_id}/endpoint

List the application’s endpoints.

operationId: Endpoint_listEndpoints

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

order query optional

The sorting order of the returned items

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint
POST /api/v1/app/{app_id}/endpoint

Create a new endpoint for the application.

When secret is null the secret is automatically generated (recommended)

operationId: Endpoint_createOrUpdate

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema EndpointIn
Property Type Required
uid string optional
url string required
secret string optional
version integer optional
channels array optional
disabled boolean optional
metadata object optional
rateLimit integer optional
description string optional
filterTypes array optional

Responses

201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/endpoint
DELETE /api/v1/app/{app_id}/endpoint/{endpoint_id}

Delete an endpoint.

operationId: Endpoint_remove

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

DELETE /api/v1/app/{app_id}/endpoint/{endpoint_id}
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}

Get an endpoint.

operationId: Endpoint_getDetails

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint/{endpoint_id}
PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}

Partially update an endpoint.

operationId: Endpoint_partiallyUpdate

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Request Body

required
application/json
schema EndpointPatch
Property Type Required
uid string optional
url string optional
secret string optional
version integer optional
channels array optional
disabled boolean optional
metadata object optional
rateLimit integer optional
description string optional
filterTypes array optional

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}
PUT /api/v1/app/{app_id}/endpoint/{endpoint_id}

Update an endpoint.

operationId: Endpoint_updateEndpointById

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Request Body

required
application/json
schema EndpointUpdate
Property Type Required
uid string optional
url string required
version integer optional
channels array optional
disabled boolean optional
metadata object optional
rateLimit integer optional
description string optional
filterTypes array optional

Responses

200
201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PUT /api/v1/app/{app_id}/endpoint/{endpoint_id}
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers

Get the additional headers to be sent with the webhook

operationId: Endpoint_getHeaders

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers

Partially set the additional headers to be sent with the webhook

operationId: Endpoint_partiallySetHeaders

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Request Body

required
application/json
schema EndpointHeadersPatchIn
Property Type Required
headers object required

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
PUT /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers

Set the additional headers to be sent with the webhook

operationId: Endpoint_setWebhookHeaders

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Request Body

required
application/json
schema EndpointHeadersIn
Property Type Required
headers object required

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PUT /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/recover

Resend all failed messages since a given time.

operationId: Endpoint_resendFailedMessages

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema RecoverIn
Property Type Required
since string required
until string optional

Responses

202
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/recover
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/replay-missing

Replays messages to the endpoint. Only messages that were created after since will be sent. Messages that were previously sent to the endpoint are not resent.

operationId: Endpoint_replayMissingWebhooks

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema ReplayIn
Property Type Required
since string required
until string optional

Responses

202
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/replay-missing
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/secret

Get the endpoint’s signing secret.

This is used to verify the authenticity of the webhook.
For more information please refer to the consuming webhooks docs.

operationId: Endpoint_getSigningSecret

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/secret
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/rotate

Rotates the endpoint’s signing secret. The previous secret will be valid for the next 24 hours.

operationId: Endpoint_rotateSecret

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema EndpointSecretRotateIn
Property Type Required
key string optional

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/rotate
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/send-example

Send an example message for event

operationId: Endpoint_sendExampleMessageType

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema EventExampleIn
Property Type Required
eventType string required

Responses

202
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/send-example
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/stats

Get basic statistics for the endpoint.

operationId: Endpoint_getStatistics

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

since query optional string

Filter the range to data starting from this date

until query optional string

Filter the range to data ending by this date

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/stats
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation

Get the transformation code associated with this endpoint

operationId: Endpoint_getTransformationCode

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation
PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation

Set or unset the transformation code associated with this endpoint

operationId: Endpoint_setTransformationCode

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Request Body

required
application/json
schema EndpointTransformationIn
Property Type Required
code string optional
enabled boolean optional

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation

Eventtype 7 endpoints

GET /api/v1/event-type

Return the list of event types.

operationId: EventType_list

Parameters

Name In Required Type Description
limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

order query optional

The sorting order of the returned items

include_archived query optional boolean

When true archived (deleted but not expunged) items are included in the response

with_content query optional boolean

When true the full item (including the schema) is included in the response

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/event-type
POST /api/v1/event-type

Create new or unarchive existing event type.

Unarchiving an event type will allow endpoints to filter on it and messages to be sent with it.
Endpoints filtering on the event type before archival will continue to filter on it.
This operation does not preserve the description and schemas.

operationId: EventType_createOrUpdate

Parameters

Name In Required Type Description
idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema EventTypeIn
Property Type Required
name string required
schemas object optional
archived boolean optional
description string required
featureFlag string optional

Responses

201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/event-type
POST /api/v1/event-type/import/openapi

Given an OpenAPI spec, create new or update existing event types.
If an existing archived event type is updated, it will be unarchived.

The importer will convert all webhooks found in the either the webhooks or x-webhooks
top-level.

operationId: EventType_importFromOpenapi

Parameters

Name In Required Type Description
idempotency-key header optional string

The request’s idempotency key

Request Body

required

Import a list of event types from webhooks defined in an OpenAPI spec.

The OpenAPI spec can be specified as either spec given the spec as a JSON object, or as specRaw (a string) which will be parsed as YAML or JSON by the server. Sending neither or both is invalid, resulting in a 400 Bad Request.

application/json
schema EventTypeImportOpenApiIn
Property Type Required
spec object optional
specRaw string optional

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/event-type/import/openapi
DELETE /api/v1/event-type/{event_type_name}

Archive an event type.

Endpoints already configured to filter on an event type will continue to do so after archival.
However, new messages can not be sent with it and endpoints can not filter on it.
An event type can be unarchived with the
create operation.

operationId: EventType_archive

Parameters

Name In Required Type Description
event_type_name path required string

The event type’s name

expunge query optional boolean

By default event types are archived when “deleted”. Passing this to true deletes them entirely.

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

DELETE /api/v1/event-type/{event_type_name}
GET /api/v1/event-type/{event_type_name}

Get an event type.

operationId: EventType_getEventType

Parameters

Name In Required Type Description
event_type_name path required string

The event type’s name

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/event-type/{event_type_name}
PATCH /api/v1/event-type/{event_type_name}

Partially update an event type.

operationId: EventType_partiallyUpdateEventType

Parameters

Name In Required Type Description
event_type_name path required string

The event type’s name

Request Body

required
application/json
schema EventTypePatch
Property Type Required
schemas object optional
archived boolean optional
description string optional
featureFlag string optional

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PATCH /api/v1/event-type/{event_type_name}
PUT /api/v1/event-type/{event_type_name}

Update an event type.

operationId: EventType_updateEventTypeName

Parameters

Name In Required Type Description
event_type_name path required string

The event type’s name

Request Body

required
application/json
schema EventTypeUpdate
Property Type Required
schemas object optional
archived boolean optional
description string required
featureFlag string optional

Responses

200
201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PUT /api/v1/event-type/{event_type_name}

Health 1 endpoints

GET /api/v1/health

Verify the API server is up and running.

operationId: Health_checkStatus

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/health

Integration 6 endpoints

GET /api/v1/app/{app_id}/integration

List the application’s integrations.

operationId: Integration_list

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

order query optional

The sorting order of the returned items

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/integration
POST /api/v1/app/{app_id}/integration

Create an integration.

operationId: Integration_createNewIntegration

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema IntegrationIn
Property Type Required
name string required

Responses

201
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/integration
DELETE /api/v1/app/{app_id}/integration/{integ_id}

Delete an integration.

operationId: Integration_deleteById

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

integ_id path required string

The integ’s ID

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

DELETE /api/v1/app/{app_id}/integration/{integ_id}
GET /api/v1/app/{app_id}/integration/{integ_id}

Get an integration.

operationId: Integration_getById

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

integ_id path required string

The integ’s ID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/integration/{integ_id}
PUT /api/v1/app/{app_id}/integration/{integ_id}

Update an integration.

operationId: Integration_updateIntegrationById

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

integ_id path required string

The integ’s ID

Request Body

required
application/json
schema IntegrationUpdate
Property Type Required
name string required

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

PUT /api/v1/app/{app_id}/integration/{integ_id}
POST /api/v1/app/{app_id}/integration/{integ_id}/key/rotate

Rotate the integration’s key. The previous key will be immediately revoked.

operationId: Integration_rotateKey

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

integ_id path required string

The integ’s ID

idempotency-key header optional string

The request’s idempotency key

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/integration/{integ_id}/key/rotate

Message 4 endpoints

GET /api/v1/app/{app_id}/msg

List all of the application’s messages.

The before and after parameters let you filter all items created before or after a certain date. These can be used alongside an iterator to paginate over results
within a certain window.

Note that by default this endpoint is limited to retrieving 90 days’ worth of data
relative to now or, if an iterator is provided, 90 days before/after the time indicated
by the iterator ID. If you require data beyond those time ranges, you will need to explicitly
set the before or after parameter as appropriate.

operationId: Message_listAllMessages

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

channel query optional string

Filter response based on the channel

before query optional string

Only include items created before a certain date

after query optional string

Only include items created after a certain date

with_content query optional boolean

When true message payloads are included in the response

tag query optional string

Filter messages matching the provided tag

event_types query optional array

Filter response based on the event type

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/msg
POST /api/v1/app/{app_id}/msg

Creates a new message and dispatches it to all of the application’s endpoints.

The eventId is an optional custom unique ID. It’s verified to be unique only up to a day, after that no verification will be made.
If a message with the same eventId already exists for any application in your environment, a 409 conflict error will be returned.

The eventType indicates the type and schema of the event. All messages of a certain eventType are expected to have the same schema. Endpoints can choose to only listen to specific event types.
Messages can also have channels, which similar to event types let endpoints filter by them. Unlike event types, messages can have multiple channels, and channels don’t imply a specific message content or schema.

The payload property is the webhook’s body (the actual webhook message). Svix supports payload sizes of up to ~350kb, though it’s generally a good idea to keep webhook payloads small, probably no larger than 40kb.

operationId: Message_createNewMsg

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

with_content query optional boolean

When true message payloads are included in the response

idempotency-key header optional string

The request’s idempotency key

Request Body

required
application/json
schema MessageIn
Property Type Required
tags array optional
eventId string optional
payload object required
channels array optional
eventType string required
application object optional
uid string optional
name string required
metadata object optional
rateLimit integer optional
transformationsParams object optional
payloadRetentionPeriod integer optional

Responses

202
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

413

Payload too large

422

Validation Error

429

Too Many Requests

POST /api/v1/app/{app_id}/msg
GET /api/v1/app/{app_id}/msg/{msg_id}

Get a message by its ID or eventID.

operationId: Message_getByIdOrEventId

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

msg_id path required string

The msg’s ID or UID

with_content query optional boolean

When true message payloads are included in the response

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/msg/{msg_id}
DELETE /api/v1/app/{app_id}/msg/{msg_id}/content

Delete the given message’s payload. Useful in cases when a message was accidentally sent with sensitive content.

The message can’t be replayed or resent once its payload has been deleted or expired.

operationId: Message_deletePayload

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

msg_id path required string

The msg’s ID or UID

Responses

204

no content

400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

DELETE /api/v1/app/{app_id}/msg/{msg_id}/content

Messageattempt 4 endpoints

GET /api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}

List attempts by endpoint id

Note that by default this endpoint is limited to retrieving 90 days’ worth of data
relative to now or, if an iterator is provided, 90 days before/after the time indicated
by the iterator ID. If you require data beyond those time ranges, you will need to explicitly
set the before or after parameter as appropriate.

operationId: MessageAttempt_listByEndpoint

Parameters

Name In Required Type Description
limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

status query optional

Filter response based on the delivery status

status_code_class query optional

Filter response based on the HTTP status code

channel query optional string

Filter response based on the channel

tag query optional string

Filter response based on the tag

before query optional string

Only include items created before a certain date

after query optional string

Only include items created after a certain date

with_content query optional boolean

When true attempt content is included in the response

with_msg query optional boolean

When true, the message information is included in the response

event_types query optional array

Filter response based on the event type

app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}
GET /api/v1/app/{app_id}/attempt/msg/{msg_id}

List attempts by message id

Note that by default this endpoint is limited to retrieving 90 days’ worth of data
relative to now or, if an iterator is provided, 90 days before/after the time indicated
by the iterator ID. If you require data beyond those time ranges, you will need to explicitly
set the before or after parameter as appropriate.

operationId: MessageAttempt_listByMsg

Parameters

Name In Required Type Description
limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

status query optional

Filter response based on the delivery status

status_code_class query optional

Filter response based on the HTTP status code

channel query optional string

Filter response based on the channel

tag query optional string

Filter response based on the tag

endpoint_id query optional string

Filter the attempts based on the attempted endpoint

before query optional string

Only include items created before a certain date

after query optional string

Only include items created after a certain date

with_content query optional boolean

When true attempt content is included in the response

app_id path required string

The app’s ID or UID

msg_id path required string

The msg’s ID or UID

event_types query optional array

Filter response based on the event type

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/attempt/msg/{msg_id}
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/msg

List messages for a particular endpoint. Additionally includes metadata about the latest message attempt.

The before parameter lets you filter all items created before a certain date and is ignored if an iterator is passed.

Note that by default this endpoint is limited to retrieving 90 days’ worth of data
relative to now or, if an iterator is provided, 90 days before/after the time indicated
by the iterator ID. If you require data beyond those time ranges, you will need to explicitly
set the before or after parameter as appropriate.

operationId: MessageAttempt_listAttemptedMessages

Parameters

Name In Required Type Description
limit query optional integer

Limit the number of returned items

iterator query optional string

The iterator returned from a prior invocation

channel query optional string

Filter response based on the channel

tag query optional string

Filter response based on the message tags

status query optional

Filter response based on the delivery status

before query optional string

Only include items created before a certain date

after query optional string

Only include items created after a certain date

with_content query optional boolean

When true message payloads are included in the response

app_id path required string

The app’s ID or UID

endpoint_id path required string

The ep’s ID or UID

event_types query optional array

Filter response based on the event type

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/msg
GET /api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}

msg_id: Use a message id or a message eventId

operationId: MessageAttempt_getByAttempt

Parameters

Name In Required Type Description
app_id path required string

The app’s ID or UID

msg_id path required string

The msg’s ID or UID

attempt_id path required string

The attempt’s ID

Responses

200
400

Bad request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

422

Validation Error

429

Too Many Requests

GET /api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}

Schemas

object AggregateEventTypesOut
{
  "type": "object",
  "required": [
    "id",
    "status",
    "task"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "task": {
      "$ref": "#/components/schemas/BackgroundTaskType"
    },
    "status": {
      "$ref": "#/components/schemas/BackgroundTaskStatus"
    }
  }
}
object AppPortalAccessIn
{
  "type": "object",
  "properties": {
    "expiry": {
      "type": "integer",
      "format": "uint64",
      "default": 604800,
      "maximum": 604800,
      "minimum": 3600,
      "nullable": true,
      "description": "How long the token will be valid for, in seconds. Valid values are between 1 hour and 7 days. The default is 7 days."
    },
    "featureFlags": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "cool-new-feature",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 256
      },
      "example": [],
      "description": "The set of feature flags the created token will have access to.",
      "uniqueItems": true
    }
  }
}
object AppPortalAccessOut
{
  "type": "object",
  "required": [
    "token",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://app.svix.com/login#key=eyJhcHBJZCI6ICJhcHBfMXRSdFl",
      "maxLength": 65536,
      "minLength": 1
    },
    "token": {
      "type": "string",
      "example": "appsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O"
    }
  }
}
object AppUsageStatsIn
{
  "type": "object",
  "required": [
    "since",
    "until"
  ],
  "properties": {
    "since": {
      "type": "string",
      "format": "date-time"
    },
    "until": {
      "type": "string",
      "format": "date-time"
    },
    "appIds": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "unique-app-identifier",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 256,
        "minLength": 1,
        "description": "The app's ID or UID"
      },
      "nullable": true,
      "uniqueItems": true
    }
  }
}
object AppUsageStatsOut
{
  "type": "object",
  "required": [
    "id",
    "status",
    "task"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "task": {
      "$ref": "#/components/schemas/BackgroundTaskType"
    },
    "status": {
      "$ref": "#/components/schemas/BackgroundTaskStatus"
    }
  }
}
object ApplicationIn
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "uid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "Optional unique identifier for the application"
    },
    "name": {
      "type": "string",
      "example": "My first application",
      "minLength": 1
    },
    "metadata": {
      "type": "object",
      "default": {},
      "additionalProperties": {
        "type": "string"
      }
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 1,
      "nullable": true
    }
  }
}
object ApplicationOut
{
  "type": "object",
  "required": [
    "createdAt",
    "id",
    "metadata",
    "name",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The app's ID"
    },
    "uid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The app's UID"
    },
    "name": {
      "type": "string",
      "example": "My first application"
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 0,
      "nullable": true
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    }
  }
}
object ApplicationPatch
{
  "type": "object",
  "properties": {
    "uid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The app's UID"
    },
    "name": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 0,
      "nullable": true
    }
  }
}
object ApplicationTokenExpireIn
{
  "type": "object",
  "properties": {
    "expiry": {
      "type": "integer",
      "format": "int64",
      "example": 60,
      "maximum": 259200,
      "minimum": 0,
      "nullable": true,
      "description": "How many seconds until the old key is expired."
    }
  }
}
object BackgroundTaskData
{
  "type": "object"
}
object BackgroundTaskOut
{
  "type": "object",
  "required": [
    "data",
    "id",
    "status",
    "task"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "data": {
      "$ref": "#/components/schemas/BackgroundTaskData"
    },
    "task": {
      "$ref": "#/components/schemas/BackgroundTaskType"
    },
    "status": {
      "$ref": "#/components/schemas/BackgroundTaskStatus"
    }
  }
}
string BackgroundTaskStatus
{
  "enum": [
    "running",
    "finished",
    "failed"
  ],
  "type": "string"
}
string BackgroundTaskType
{
  "enum": [
    "endpoint.replay",
    "endpoint.recover",
    "application.stats",
    "message.broadcast",
    "sdk.generate",
    "event-type.aggregate"
  ],
  "type": "string"
}
object BorderRadiusConfig
{
  "type": "object",
  "properties": {
    "card": {
      "$ref": "#/components/schemas/BorderRadiusEnum",
      "nullable": true
    },
    "input": {
      "$ref": "#/components/schemas/BorderRadiusEnum",
      "nullable": true
    },
    "button": {
      "$ref": "#/components/schemas/BorderRadiusEnum",
      "nullable": true
    }
  }
}
string BorderRadiusEnum
{
  "enum": [
    "none",
    "lg",
    "md",
    "sm",
    "full"
  ],
  "type": "string"
}
object CompletionChoice
{
  "type": "object",
  "required": [
    "finish_reason",
    "index",
    "message"
  ],
  "properties": {
    "index": {
      "type": "integer",
      "format": "int64"
    },
    "message": {
      "$ref": "#/components/schemas/CompletionMessage"
    },
    "finish_reason": {
      "type": "string"
    }
  }
}
object CompletionMessage
{
  "type": "object",
  "required": [
    "content",
    "role"
  ],
  "properties": {
    "role": {
      "type": "string"
    },
    "content": {
      "type": "string"
    }
  }
}
object CustomColorPalette
{
  "type": "object",
  "properties": {
    "primary": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "textDanger": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "textPrimary": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "buttonPrimary": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "backgroundHover": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "navigationAccent": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "backgroundPrimary": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "interactiveAccent": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "backgroundSecondary": {
      "type": "string",
      "format": "color",
      "nullable": true
    }
  }
}
object CustomThemeOverride
{
  "type": "object",
  "properties": {
    "fontSize": {
      "$ref": "#/components/schemas/FontSizeConfig",
      "nullable": true
    },
    "borderRadius": {
      "$ref": "#/components/schemas/BorderRadiusConfig",
      "nullable": true
    }
  }
}
object DashboardAccessOut
{
  "type": "object",
  "required": [
    "token",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://app.svix.com/login#key=eyJhcHBJZCI6ICJhcHBfMXRSdFl",
      "maxLength": 65536,
      "minLength": 1
    },
    "token": {
      "type": "string",
      "example": "appsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O"
    }
  }
}
object Duration
{
  "type": "object",
  "required": [
    "nanos",
    "secs"
  ],
  "properties": {
    "secs": {
      "type": "integer",
      "format": "uint64",
      "minimum": 0
    },
    "nanos": {
      "type": "integer",
      "format": "uint32",
      "minimum": 0
    }
  }
}
object EndpointCreatedEvent
{
  "type": "object",
  "required": [
    "data",
    "type"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EndpointCreatedEventData"
    },
    "type": {
      "enum": [
        "endpoint.created"
      ],
      "type": "string",
      "default": "endpoint.created"
    }
  },
  "description": "Sent when an endpoint is created."
}
object EndpointCreatedEventData
{
  "type": "object",
  "required": [
    "appId",
    "endpointId"
  ],
  "properties": {
    "appId": {
      "type": "string",
      "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The app's ID"
    },
    "appUid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The app's UID"
    },
    "endpointId": {
      "type": "string",
      "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The ep's ID"
    },
    "endpointUid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The ep's UID"
    }
  }
}
object EndpointDeletedEvent
{
  "type": "object",
  "required": [
    "data",
    "type"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EndpointDeletedEventData"
    },
    "type": {
      "enum": [
        "endpoint.deleted"
      ],
      "type": "string",
      "default": "endpoint.deleted"
    }
  },
  "description": "Sent when an endpoint is deleted."
}
object EndpointDeletedEventData
{
  "type": "object",
  "required": [
    "appId",
    "endpointId"
  ],
  "properties": {
    "appId": {
      "type": "string",
      "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The app's ID"
    },
    "appUid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The app's UID"
    },
    "endpointId": {
      "type": "string",
      "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The ep's ID"
    },
    "endpointUid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The ep's UID"
    }
  }
}
object EndpointDisabledEvent
{
  "type": "object",
  "required": [
    "data",
    "type"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EndpointDisabledEventData"
    },
    "type": {
      "enum": [
        "endpoint.disabled"
      ],
      "type": "string",
      "default": "endpoint.disabled"
    }
  },
  "description": "Sent when an endpoint has been automatically disabled after continuous failures."
}
object EndpointDisabledEventData
{
  "type": "object",
  "required": [
    "appId",
    "endpointId",
    "failSince"
  ],
  "properties": {
    "appId": {
      "type": "string",
      "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The app's ID"
    },
    "appUid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The app's UID"
    },
    "failSince": {
      "type": "string",
      "format": "date-time"
    },
    "endpointId": {
      "type": "string",
      "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The ep's ID"
    },
    "endpointUid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The ep's UID"
    }
  },
  "description": "Sent when an endpoint has been automatically disabled after continuous failures."
}
object EndpointHeadersIn
{
  "type": "object",
  "required": [
    "headers"
  ],
  "properties": {
    "headers": {
      "type": "object",
      "example": {
        "X-Foobar": "Bar",
        "X-Example": "123"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  }
}
object EndpointHeadersOut
{
  "type": "object",
  "required": [
    "headers",
    "sensitive"
  ],
  "properties": {
    "headers": {
      "type": "object",
      "example": {
        "X-Foobar": "Bar",
        "X-Example": "123"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "sensitive": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "example": [
        "Authorization"
      ],
      "uniqueItems": true
    }
  },
  "description": "The value of the headers is returned in the `headers` field.\n\nSensitive headers that have been redacted are returned in the sensitive field."
}
object EndpointHeadersPatchIn
{
  "type": "object",
  "required": [
    "headers"
  ],
  "properties": {
    "headers": {
      "type": "object",
      "example": {
        "X-Foobar": "Bar",
        "X-Example": "123"
      },
      "additionalProperties": {
        "type": "string",
        "nullable": true
      }
    }
  }
}
object EndpointIn
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "uid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "Optional unique identifier for the endpoint"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/webhook/",
      "maxLength": 65536,
      "minLength": 1
    },
    "secret": {
      "type": "string",
      "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD",
      "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$",
      "nullable": true,
      "description": "The endpoint's verification secret. If `null` is passed, a secret is automatically generated. Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24."
    },
    "version": {
      "type": "integer",
      "format": "uint16",
      "default": 1,
      "example": 1,
      "minimum": 1,
      "nullable": true,
      "deprecated": true
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "example": [
        "project_123",
        "group_2"
      ],
      "maxItems": 10,
      "minItems": 1,
      "nullable": true,
      "description": "List of message channels this endpoint listens to (omit for all)",
      "uniqueItems": true
    },
    "disabled": {
      "type": "boolean",
      "default": false,
      "example": false
    },
    "metadata": {
      "type": "object",
      "default": {},
      "additionalProperties": {
        "type": "string"
      }
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 1,
      "nullable": true
    },
    "description": {
      "type": "string",
      "default": "",
      "example": "An example endpoint name"
    },
    "filterTypes": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "user.signup",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 256,
        "description": "The event type's name"
      },
      "example": [
        "user.signup",
        "user.deleted"
      ],
      "minItems": 1,
      "nullable": true,
      "uniqueItems": true
    }
  }
}
object EndpointMessageOut
{
  "type": "object",
  "required": [
    "eventType",
    "id",
    "payload",
    "status",
    "timestamp"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The msg's ID"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "nullable": true,
      "uniqueItems": true
    },
    "status": {
      "$ref": "#/components/schemas/MessageStatus"
    },
    "eventId": {
      "type": "string",
      "example": "unique-msg-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "Optional unique identifier for the message"
    },
    "payload": {
      "type": "object",
      "example": {
        "type": "user.created",
        "email": "test@example.com",
        "username": "test_user"
      }
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "example": [
        "project_123",
        "group_2"
      ],
      "maxItems": 5,
      "minItems": 1,
      "nullable": true,
      "description": "List of free-form identifiers that endpoints can filter by",
      "uniqueItems": true
    },
    "eventType": {
      "type": "string",
      "example": "user.signup",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "maxLength": 256,
      "description": "The event type's name"
    },
    "timestamp": {
      "type": "string",
      "format": "date-time"
    },
    "nextAttempt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    }
  },
  "description": "A model containing information on a given message plus additional fields on the last attempt for that message."
}
object EndpointOut
{
  "type": "object",
  "required": [
    "createdAt",
    "description",
    "id",
    "metadata",
    "updatedAt",
    "url",
    "version"
  ],
  "properties": {
    "id": {
      "type": "string",
      "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The ep's ID"
    },
    "uid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "Optional unique identifier for the endpoint"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/webhook/",
      "maxLength": 65536,
      "minLength": 1
    },
    "version": {
      "type": "integer",
      "format": "int32",
      "example": 1,
      "minimum": 1,
      "deprecated": true
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "example": [
        "project_123",
        "group_2"
      ],
      "maxItems": 10,
      "minItems": 1,
      "nullable": true,
      "description": "List of message channels this endpoint listens to (omit for all)",
      "uniqueItems": true
    },
    "disabled": {
      "type": "boolean",
      "default": false,
      "example": false
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 0,
      "nullable": true
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "description": {
      "type": "string",
      "description": "An example endpoint name"
    },
    "filterTypes": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "user.signup",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 256,
        "description": "The event type's name"
      },
      "example": [
        "user.signup",
        "user.deleted"
      ],
      "minItems": 1,
      "nullable": true,
      "uniqueItems": true
    }
  }
}
object EndpointPatch
{
  "type": "object",
  "properties": {
    "uid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The ep's UID"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "secret": {
      "type": "string",
      "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD",
      "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$",
      "nullable": true,
      "description": "The endpoint's verification secret. If `null` is passed, a secret is automatically generated. Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24."
    },
    "version": {
      "type": "integer",
      "format": "uint16",
      "example": 1,
      "minimum": 1,
      "deprecated": true
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "nullable": true,
      "uniqueItems": true
    },
    "disabled": {
      "type": "boolean"
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 0,
      "nullable": true
    },
    "description": {
      "type": "string"
    },
    "filterTypes": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "user.signup",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 256,
        "description": "The event type's name"
      },
      "nullable": true,
      "uniqueItems": true
    }
  }
}
object EndpointSecretOut
{
  "type": "object",
  "required": [
    "key"
  ],
  "properties": {
    "key": {
      "type": "string",
      "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD",
      "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$",
      "description": "The endpoint's verification secret. If `null` is passed, a secret is automatically generated. Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24."
    }
  }
}
object EndpointSecretRotateIn
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "default": null,
      "example": "whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD",
      "pattern": "^(whsec_)?[a-zA-Z0-9+/=]{32,100}$",
      "nullable": true,
      "description": "The endpoint's verification secret. If `null` is passed, a secret is automatically generated. Format: `base64` encoded random bytes optionally prefixed with `whsec_`. Recommended size: 24."
    }
  }
}
object EndpointStats
{
  "type": "object",
  "required": [
    "fail",
    "pending",
    "sending",
    "success"
  ],
  "properties": {
    "fail": {
      "type": "integer",
      "format": "int64"
    },
    "pending": {
      "type": "integer",
      "format": "int64"
    },
    "sending": {
      "type": "integer",
      "format": "int64"
    },
    "success": {
      "type": "integer",
      "format": "int64"
    }
  }
}
object EndpointTransformationIn
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "nullable": true,
      "maxLength": 51200,
      "minLength": 10
    },
    "enabled": {
      "type": "boolean"
    }
  }
}
object EndpointTransformationOut
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "nullable": true,
      "maxLength": 51200,
      "minLength": 10
    },
    "enabled": {
      "type": "boolean",
      "default": false
    }
  }
}
object EndpointTransformationSimulateIn
{
  "type": "object",
  "required": [
    "code",
    "eventType",
    "payload"
  ],
  "properties": {
    "code": {
      "type": "string",
      "maxLength": 51200,
      "minLength": 10
    },
    "payload": {
      "type": "object"
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "nullable": true,
      "uniqueItems": true
    },
    "eventType": {
      "type": "string",
      "example": "user.signup",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "maxLength": 256,
      "description": "The event type's name"
    }
  }
}
object EndpointTransformationSimulateOut
{
  "type": "object",
  "required": [
    "payload",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "maxLength": 65536,
      "minLength": 1
    },
    "method": {
      "$ref": "#/components/schemas/TransformationHttpMethod",
      "nullable": true
    },
    "payload": {
      "type": "string"
    }
  }
}
object EndpointUpdate
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "uid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "Optional unique identifier for the endpoint"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://example.com/webhook/",
      "maxLength": 65536,
      "minLength": 1
    },
    "version": {
      "type": "integer",
      "format": "uint16",
      "default": 1,
      "example": 1,
      "minimum": 1,
      "nullable": true,
      "deprecated": true
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "project_1337",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 128
      },
      "example": [
        "project_123",
        "group_2"
      ],
      "maxItems": 10,
      "minItems": 1,
      "nullable": true,
      "description": "List of message channels this endpoint listens to (omit for all)",
      "uniqueItems": true
    },
    "disabled": {
      "type": "boolean",
      "default": false,
      "example": false
    },
    "metadata": {
      "type": "object",
      "default": {},
      "additionalProperties": {
        "type": "string"
      }
    },
    "rateLimit": {
      "type": "integer",
      "format": "uint16",
      "minimum": 1,
      "nullable": true
    },
    "description": {
      "type": "string",
      "default": "",
      "example": "An example endpoint name"
    },
    "filterTypes": {
      "type": "array",
      "items": {
        "type": "string",
        "example": "user.signup",
        "pattern": "^[a-zA-Z0-9\\-_.]+$",
        "maxLength": 256,
        "description": "The event type's name"
      },
      "example": [
        "user.signup",
        "user.deleted"
      ],
      "minItems": 1,
      "nullable": true,
      "uniqueItems": true
    }
  }
}
object EndpointUpdatedEvent
{
  "type": "object",
  "required": [
    "data",
    "type"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EndpointUpdatedEventData"
    },
    "type": {
      "enum": [
        "endpoint.updated"
      ],
      "type": "string",
      "default": "endpoint.updated"
    }
  },
  "description": "Sent when an endpoint is updated."
}
object EndpointUpdatedEventData
{
  "type": "object",
  "required": [
    "appId",
    "endpointId"
  ],
  "properties": {
    "appId": {
      "type": "string",
      "example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The app's ID"
    },
    "appUid": {
      "type": "string",
      "example": "unique-app-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The app's UID"
    },
    "endpointId": {
      "type": "string",
      "example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
      "description": "The ep's ID"
    },
    "endpointUid": {
      "type": "string",
      "example": "unique-ep-identifier",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "nullable": true,
      "maxLength": 256,
      "minLength": 1,
      "description": "The ep's UID"
    }
  }
}
object EnvironmentIn
{
  "type": "object",
  "required": [
    "createdAt",
    "version"
  ],
  "properties": {
    "version": {
      "type": "integer",
      "format": "int"
    },
    "settings": {
      "$ref": "#/components/schemas/SettingsIn",
      "nullable": true
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "eventTypes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EventTypeIn"
      },
      "nullable": true
    }
  }
}
object EnvironmentOut
{
  "type": "object",
  "required": [
    "createdAt",
    "eventTypes"
  ],
  "properties": {
    "version": {
      "type": "integer",
      "format": "int",
      "default": 1
    },
    "settings": {
      "$ref": "#/components/schemas/SettingsOut",
      "nullable": true
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "eventTypes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EventTypeOut"
      }
    }
  }
}
object EnvironmentSettingsOut
{
  "type": "object",
  "properties": {
    "customColor": {
      "type": "string",
      "format": "color",
      "nullable": true
    },
    "displayName": {
      "type": "string",
      "nullable": true
    },
    "customLogoUrl": {
      "type": "string",
      "format": "uri",
      "nullable": true,
      "maxLength": 65536,
      "minLength": 1
    },
    "enableChannels": {
      "type": "boolean",
      "default": false
    },
    "showUseSvixPlay": {
      "type": "boolean",
      "default": true
    },
    "colorPaletteDark": {
      "$ref": "#/components/schemas/CustomColorPalette",
      "nullable": true
    },
    "customFontFamily": {
      "type": "string",
      "example": "Open Sans",
      "pattern": "^[a-zA-Z0-9\\-_ ]+$",
      "nullable": true
    },
    "colorPaletteLight": {
      "$ref": "#/components/schemas/CustomColorPalette",
      "nullable": true
    },
    "enableMessageTags": {
      "type": "boolean",
      "default": false
    },
    "customFontFamilyUrl": {
      "type": "string",
      "format": "uri",
      "nullable": true,
      "maxLength": 65536,
      "minLength": 1
    },
    "customThemeOverride": {
      "$ref": "#/components/schemas/CustomThemeOverride",
      "nullable": true
    },
    "enableTransformations": {
      "type": "boolean",
      "default": false
    },
    "enableIntegrationManagement": {
      "type": "boolean",
      "default": false
    }
  }
}
object EventExampleIn
{
  "type": "object",
  "required": [
    "eventType"
  ],
  "properties": {
    "eventType": {
      "type": "string",
      "example": "user.signup",
      "pattern": "^[a-zA-Z0-9\\-_.]+$",
      "maxLength": 256,
      "description": "The event type's name"
    }
  }
}
object EventTypeImportOpenApiIn
{
  "type": "object",
  "properties": {
    "spec": {
      "type": "object",
      "example": {
        "info": {
          "title": "Webhook Example",
          "version": "1.0.0"
        },
        "openapi": "3.1.0",
        "webhooks": {
          "pet.new": {
            "post": {
              "responses": {
                "200": {
                  "description": "Return a 200 status to indicate that the data was received successfully"
                }
              },
              "requestBody": {
                "content": {
                  "application/json": {
                    "schema": {
                      "required": [
                        "id",
                        "name"
                      ],
                      "properties": {
                        "id": {
                          "type": "integer",
                          "format": "int64"
                        },
                        "tag": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "description": "Information about a new pet in the system"
              }
            }
          }
        }
      },
      "nullable": true,
      "description": "A pre-parsed JSON spec.",
      "additionalProperties": {
        "type": "object"
      }
    },
    "specRaw": {
      "type": "string",
      "example": {
        "info": {
          "title": "Webhook Example",
          "version": "1.0.0"
        },
        "openapi": "3.1.0",
        "webhooks": {
          "pet.new": {
            "post": {
              "responses": {
                "200": {
                  "description": "Return a 200 status to indicate that the data was received successfully"
                }
              },
              "requestBody": {
                "content": {
                  "application/json": {
                    "schema": {
                      "required": [
                        "id",
                        "name"
                      ],
                      "properties": {
                        "id": {
                          "type": "integer",
                          "format": "int64"
                        },
                        "tag": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "description": "Information about a new pet in the system"
              }
            }
          }
        }
      },
      "nullable": true,
      "description": "A string, parsed by the server as YAML or JSON."
    }
  },
  "description": "Import a list of event types from webhooks defined in an OpenAPI spec.\n\nThe OpenAPI spec can be specified as either `spec` given the spec as a JSON object, or as `specRaw` (a `string`) which will be parsed as YAML or JSON by the server. Sending neither or both is invalid, resulting in a `400` **Bad Request**."
}
object EventTypeImportOpenApiOut
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/EventTypeImportOpenApiOutData"
    }
  }
}