Query structured spec data via REST or MCP. Get exactly what your agent needs.
https://api.eu.svix.com
https://api.us.svix.com
/api/v1/app
List of all the organization's applications.
| 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 |
GET /api/v1/app
/api/v1/app
Create a new application.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationIn"
}
}
},
"required": true
}
POST /api/v1/app
/api/v1/app/{app_id}
Delete an application.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| app_id | path | required | string | The app's ID or UID |
DELETE /api/v1/app/{app_id}
/api/v1/app/{app_id}
Get an application.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| app_id | path | required | string | The app's ID or UID |
GET /api/v1/app/{app_id}
/api/v1/app/{app_id}
Partially update an application.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| app_id | path | required | string | The app's ID or UID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationPatch"
}
}
},
"required": true
}
PATCH /api/v1/app/{app_id}
/api/v1/app/{app_id}
Update an application.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| app_id | path | required | string | The app's ID or UID |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationIn"
}
}
},
"required": true
}
PUT /api/v1/app/{app_id}
/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.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AppPortalAccessIn"
}
}
},
"required": true
}
POST /api/v1/auth/app-portal-access/{app_id}
/api/v1/auth/app/{app_id}/expire-all
Expire all of the tokens associated with a specific Application
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApplicationTokenExpireIn"
}
}
},
"required": true
}
POST /api/v1/auth/app/{app_id}/expire-all
/api/v1/auth/logout
Logout an app token. Trying to log out other tokens will fail.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| idempotency-key | header | optional | string | The request's idempotency key |
POST /api/v1/auth/logout
/api/v1/background-task
List background tasks executed in the past 90 days.
| 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 |
GET /api/v1/background-task
/api/v1/background-task/{task_id}
Get a background task by ID.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| task_id | path | required | string |
GET /api/v1/background-task/{task_id}
/api/v1/app/{app_id}/endpoint
List the application's endpoints.
| 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 |
GET /api/v1/app/{app_id}/endpoint
/api/v1/app/{app_id}/endpoint
Create a new endpoint for the application. When `secret` is `null` the secret is automatically generated (recommended)
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/endpoint
/api/v1/app/{app_id}/endpoint/{endpoint_id}
Delete an endpoint.
| 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 |
DELETE /api/v1/app/{app_id}/endpoint/{endpoint_id}
/api/v1/app/{app_id}/endpoint/{endpoint_id}
Get an endpoint.
| 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 |
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}
/api/v1/app/{app_id}/endpoint/{endpoint_id}
Partially update an endpoint.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointPatch"
}
}
},
"required": true
}
PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}
/api/v1/app/{app_id}/endpoint/{endpoint_id}
Update an endpoint.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointUpdate"
}
}
},
"required": true
}
PUT /api/v1/app/{app_id}/endpoint/{endpoint_id}
/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
Get the additional headers to be sent with the webhook
| 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 |
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
Partially set the additional headers to be sent with the webhook
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointHeadersPatchIn"
}
}
},
"required": true
}
PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
/api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
Set the additional headers to be sent with the webhook
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointHeadersIn"
}
}
},
"required": true
}
PUT /api/v1/app/{app_id}/endpoint/{endpoint_id}/headers
/api/v1/app/{app_id}/endpoint/{endpoint_id}/recover
Resend all failed messages since a given time.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RecoverIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/recover
/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.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReplayIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/replay-missing
/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](https://docs.svix.com/consuming-webhooks/).
| 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 |
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/secret
/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.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointSecretRotateIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/secret/rotate
/api/v1/app/{app_id}/endpoint/{endpoint_id}/send-example
Send an example message for event
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventExampleIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/send-example
/api/v1/app/{app_id}/endpoint/{endpoint_id}/stats
Get basic statistics for the endpoint.
| 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 |
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/stats
/api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation
Get the transformation code associated with this endpoint
| 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 |
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation
/api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation
Set or unset the transformation code associated with this endpoint
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EndpointTransformationIn"
}
}
},
"required": true
}
PATCH /api/v1/app/{app_id}/endpoint/{endpoint_id}/transformation
/api/v1/event-type
Return the list of event types.
| 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 |
GET /api/v1/event-type
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| idempotency-key | header | optional | string | The request's idempotency key |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeIn"
}
}
},
"required": true
}
POST /api/v1/event-type
/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.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| idempotency-key | header | optional | string | The request's idempotency key |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeImportOpenApiIn"
}
}
},
"required": true,
"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**."
}
POST /api/v1/event-type/import/openapi
/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](#operation/create_event_type_api_v1_event_type__post).
| 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. |
DELETE /api/v1/event-type/{event_type_name}
/api/v1/event-type/{event_type_name}
Get an event type.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| event_type_name | path | required | string | The event type's name |
GET /api/v1/event-type/{event_type_name}
/api/v1/event-type/{event_type_name}
Partially update an event type.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| event_type_name | path | required | string | The event type's name |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypePatch"
}
}
},
"required": true
}
PATCH /api/v1/event-type/{event_type_name}
/api/v1/event-type/{event_type_name}
Update an event type.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| event_type_name | path | required | string | The event type's name |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EventTypeUpdate"
}
}
},
"required": true
}
PUT /api/v1/event-type/{event_type_name}
/api/v1/health
Verify the API server is up and running.
GET /api/v1/health
/api/v1/app/{app_id}/integration
List the application's integrations.
| 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 |
GET /api/v1/app/{app_id}/integration
/api/v1/app/{app_id}/integration
Create an integration.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IntegrationIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/integration
/api/v1/app/{app_id}/integration/{integ_id}
Delete an integration.
| 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 |
DELETE /api/v1/app/{app_id}/integration/{integ_id}
/api/v1/app/{app_id}/integration/{integ_id}
Get an integration.
| 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 |
GET /api/v1/app/{app_id}/integration/{integ_id}
/api/v1/app/{app_id}/integration/{integ_id}
Update an integration.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IntegrationUpdate"
}
}
},
"required": true
}
PUT /api/v1/app/{app_id}/integration/{integ_id}
/api/v1/app/{app_id}/integration/{integ_id}/key/rotate
Rotate the integration's key. The previous key will be immediately revoked.
| 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 |
POST /api/v1/app/{app_id}/integration/{integ_id}/key/rotate
/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.
| 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 |
GET /api/v1/app/{app_id}/msg
/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.
| 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 |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MessageIn"
}
}
},
"required": true
}
POST /api/v1/app/{app_id}/msg
/api/v1/app/{app_id}/msg/{msg_id}
Get a message by its ID or eventID.
| 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 |
GET /api/v1/app/{app_id}/msg/{msg_id}
/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.
| 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 |
DELETE /api/v1/app/{app_id}/msg/{msg_id}/content
/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.
| 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 |
GET /api/v1/app/{app_id}/attempt/endpoint/{endpoint_id}
/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.
| 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 |
GET /api/v1/app/{app_id}/attempt/msg/{msg_id}
/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.
| 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 |
GET /api/v1/app/{app_id}/endpoint/{endpoint_id}/msg
/api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}
`msg_id`: Use a message id or a message `eventId`
| 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 |
GET /api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}
/api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}/content
Deletes the given attempt's response body. Useful when an endpoint accidentally returned sensitive content.
| 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 |
DELETE /api/v1/app/{app_id}/msg/{msg_id}/attempt/{attempt_id}/content
/api/v1/app/{app_id}/msg/{msg_id}/endpoint
List endpoints attempted by a given message. Additionally includes metadata about the latest message attempt. By default, endpoints are listed in ascending order by ID.
| 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 |
| app_id | path | required | string | The app's ID or UID |
| msg_id | path | required | string | The msg's ID or UID |
GET /api/v1/app/{app_id}/msg/{msg_id}/endpoint
/api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/resend
Resend a message to the specified endpoint.
| 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 |
| endpoint_id | path | required | string | The ep's ID or UID |
| idempotency-key | header | optional | string | The request's idempotency key |
POST /api/v1/app/{app_id}/msg/{msg_id}/endpoint/{endpoint_id}/resend
/api/v1/stats/usage/app
Creates a background task to calculate the message destinations for all applications in the environment. Note that this endpoint is asynchronous. You will need to poll the `Get Background Task` endpoint to retrieve the results of the operation.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| idempotency-key | header | optional | string | The request's idempotency key |
{
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AppUsageStatsIn"
}
}
},
"required": true
}
POST /api/v1/stats/usage/app
/api/v1/stats/usage/event-types
Creates a background task to calculate the listed event types for all apps in the organization. Note that this endpoint is asynchronous. You will need to poll the `Get Background Task` endpoint to retrieve the results of the operation.
PUT /api/v1/stats/usage/event-types
AggregateEventTypesOut
{
"type": "object",
"required": [
"id",
"status",
"task"
],
"properties": {
"id": {
"type": "string"
},
"task": {
"$ref": "#/components/schemas/BackgroundTaskType"
},
"status": {
"$ref": "#/components/schemas/BackgroundTaskStatus"
}
}
}
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
}
}
}
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"
}
}
}
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
}
}
}
AppUsageStatsOut
{
"type": "object",
"required": [
"id",
"status",
"task"
],
"properties": {
"id": {
"type": "string"
},
"task": {
"$ref": "#/components/schemas/BackgroundTaskType"
},
"status": {
"$ref": "#/components/schemas/BackgroundTaskStatus"
}
}
}
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
}
}
}
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"
}
}
}
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
}
}
}
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."
}
}
}
BackgroundTaskData
{
"type": "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"
}
}
}
BackgroundTaskStatus
{
"enum": [
"running",
"finished",
"failed"
],
"type": "string"
}
BackgroundTaskType
{
"enum": [
"endpoint.replay",
"endpoint.recover",
"application.stats",
"message.broadcast",
"sdk.generate",
"event-type.aggregate"
],
"type": "string"
}
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
}
}
}
BorderRadiusEnum
{
"enum": [
"none",
"lg",
"md",
"sm",
"full"
],
"type": "string"
}
CompletionChoice
{
"type": "object",
"required": [
"finish_reason",
"index",
"message"
],
"properties": {
"index": {
"type": "integer",
"format": "int64"
},
"message": {
"$ref": "#/components/schemas/CompletionMessage"
},
"finish_reason": {
"type": "string"
}
}
}
CompletionMessage
{
"type": "object",
"required": [
"content",
"role"
],
"properties": {
"role": {
"type": "string"
},
"content": {
"type": "string"
}
}
}
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
}
}
}
CustomThemeOverride
{
"type": "object",
"properties": {
"fontSize": {
"$ref": "#/components/schemas/FontSizeConfig",
"nullable": true
},
"borderRadius": {
"$ref": "#/components/schemas/BorderRadiusConfig",
"nullable": true
}
}
}
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"
}
}
}
Duration
{
"type": "object",
"required": [
"nanos",
"secs"
],
"properties": {
"secs": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"nanos": {
"type": "integer",
"format": "uint32",
"minimum": 0
}
}
}
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."
}
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"
}
}
}
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."
}
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"
}
}
}
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."
}
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."
}
EndpointHeadersIn
{
"type": "object",
"required": [
"headers"
],
"properties": {
"headers": {
"type": "object",
"example": {
"X-Foobar": "Bar",
"X-Example": "123"
},
"additionalProperties": {
"type": "string"
}
}
}
}
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."
}
EndpointHeadersPatchIn
{
"type": "object",
"required": [
"headers"
],
"properties": {
"headers": {
"type": "object",
"example": {
"X-Foobar": "Bar",
"X-Example": "123"
},
"additionalProperties": {
"type": "string",
"nullable": true
}
}
}
}
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
}
}
}
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."
}
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
}
}
}
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
}
}
}
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."
}
}
}
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."
}
}
}
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"
}
}
}
EndpointTransformationIn
{
"type": "object",
"properties": {
"code": {
"type": "string",
"nullable": true,
"maxLength": 51200,
"minLength": 10
},
"enabled": {
"type": "boolean"
}
}
}
EndpointTransformationOut
{
"type": "object",
"properties": {
"code": {
"type": "string",
"nullable": true,
"maxLength": 51200,
"minLength": 10
},
"enabled": {
"type": "boolean",
"default": false
}
}
}
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"
}
}
}
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"
}
}
}
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
}
}
}
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."
}
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"
}
}
}
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
}
}
}
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"
}
}
}
}
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
}
}
}
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"
}
}
}
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**."
}
EventTypeImportOpenApiOut
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"$ref": "#/components/schemas/EventTypeImportOpenApiOutData"
}
}
}
EventTypeImportOpenApiOutData
{
"type": "object",
"required": [
"modified"
],
"properties": {
"modified": {
"type": "array",
"items": {
"type": "string",
"example": "user.signup",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"maxLength": 256,
"description": "The event type's name"
}
}
}
}
EventTypeIn
{
"type": "object",
"required": [
"description",
"name"
],
"properties": {
"name": {
"type": "string",
"example": "user.signup",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"maxLength": 256,
"description": "The event type's name"
},
"schemas": {
"type": "object",
"example": {
"1": {
"type": "object",
"title": "Invoice Paid Event",
"required": [
"invoiceId",
"userId"
],
"properties": {
"userId": {
"type": "string",
"description": "The user id"
},
"invoiceId": {
"type": "string",
"description": "The invoice id"
}
},
"description": "An invoice was paid by a user"
}
},
"nullable": true,
"description": "The schema for the event type for a specific version as a JSON schema.",
"additionalProperties": {
"type": "object"
}
},
"archived": {
"type": "boolean",
"default": false,
"example": false
},
"description": {
"type": "string",
"example": "A user has signed up"
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
}
}
}
EventTypeOut
{
"type": "object",
"required": [
"createdAt",
"description",
"name",
"updatedAt"
],
"properties": {
"name": {
"type": "string",
"example": "user.signup",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"maxLength": 256,
"description": "The event type's name"
},
"schemas": {
"type": "object",
"example": {
"1": {
"type": "object",
"title": "Invoice Paid Event",
"required": [
"invoiceId",
"userId"
],
"properties": {
"userId": {
"type": "string",
"description": "The user id"
},
"invoiceId": {
"type": "string",
"description": "The invoice id"
}
},
"description": "An invoice was paid by a user"
}
},
"nullable": true,
"description": "The schema for the event type for a specific version as a JSON schema.",
"additionalProperties": {
"type": "object"
}
},
"archived": {
"type": "boolean",
"default": false,
"example": false
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"description": {
"type": "string",
"example": "A user has signed up"
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
}
}
}
EventTypePatch
{
"type": "object",
"properties": {
"schemas": {
"type": "object",
"example": {
"type": "object",
"title": "Invoice Paid Event",
"required": [
"invoiceId",
"userId"
],
"properties": {
"userId": {
"type": "string",
"description": "The user id"
},
"invoiceId": {
"type": "string",
"description": "The invoice id"
}
},
"description": "An invoice was paid by a user"
},
"nullable": true,
"additionalProperties": {
"type": "object"
}
},
"archived": {
"type": "boolean"
},
"description": {
"type": "string"
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
}
}
}
EventTypeUpdate
{
"type": "object",
"required": [
"description"
],
"properties": {
"schemas": {
"type": "object",
"example": {
"1": {
"type": "object",
"title": "Invoice Paid Event",
"required": [
"invoiceId",
"userId"
],
"properties": {
"userId": {
"type": "string",
"description": "The user id"
},
"invoiceId": {
"type": "string",
"description": "The invoice id"
}
},
"description": "An invoice was paid by a user"
}
},
"nullable": true,
"description": "The schema for the event type for a specific version as a JSON schema.",
"additionalProperties": {
"type": "object"
}
},
"archived": {
"type": "boolean",
"default": false,
"example": false
},
"description": {
"type": "string",
"example": "A user has signed up"
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
}
}
}
ExportEventTypeOut
{
"type": "object",
"required": [
"id",
"status",
"task"
],
"properties": {
"id": {
"type": "string"
},
"task": {
"$ref": "#/components/schemas/BackgroundTaskType"
},
"status": {
"$ref": "#/components/schemas/BackgroundTaskStatus"
}
}
}
FontSizeConfig
{
"type": "object",
"properties": {
"base": {
"type": "integer",
"format": "uint16",
"minimum": 0,
"nullable": true
}
}
}
GenerateIn
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string"
}
}
}
GenerateOut
{
"type": "object",
"required": [
"choices",
"created",
"id",
"model",
"object"
],
"properties": {
"id": {
"type": "string"
},
"model": {
"type": "string"
},
"object": {
"type": "string"
},
"choices": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CompletionChoice"
}
},
"created": {
"type": "integer",
"format": "int64"
}
}
}
HTTPValidationError
{
"type": "object",
"required": [
"detail"
],
"properties": {
"detail": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValidationError"
}
}
}
}
HttpErrorOut
{
"type": "object",
"title": "HttpError",
"required": [
"code",
"detail"
],
"properties": {
"code": {
"type": "string"
},
"detail": {
"type": "string"
}
}
}
InboundPathParams
{
"type": "object",
"required": [
"app_id",
"inbound_token"
],
"properties": {
"app_id": {
"type": "string",
"example": "unique-app-identifier",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"maxLength": 256,
"minLength": 1,
"description": "The app's ID or UID"
},
"inbound_token": {
"type": "string"
}
}
}
IntegrationIn
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Example Integration"
}
}
}
IntegrationKeyOut
{
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"example": "integsk_kV3ts5tKPNJN4Dl25cMTfUNdmabxbX0O"
}
}
}
IntegrationOut
{
"type": "object",
"required": [
"createdAt",
"id",
"name",
"updatedAt"
],
"properties": {
"id": {
"type": "string",
"example": "integ_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The integ's ID"
},
"name": {
"type": "string",
"example": "Example Integration"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
}
IntegrationUpdate
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"example": "Example Integration"
}
}
}
ListResponse_ApplicationOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ApplicationOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_BackgroundTaskOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BackgroundTaskOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_EndpointMessageOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EndpointMessageOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_EndpointOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EndpointOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_EventTypeOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventTypeOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_IntegrationOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IntegrationOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_MessageAttemptEndpointOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MessageAttemptEndpointOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_MessageAttemptOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MessageAttemptOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_MessageEndpointOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MessageEndpointOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_MessageOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MessageOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
ListResponse_TemplateOut_
{
"type": "object",
"required": [
"data",
"done"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TemplateOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string",
"example": "iterator",
"nullable": true
},
"prevIterator": {
"type": "string",
"example": "-iterator",
"nullable": true
}
}
}
MessageAttemptEndpointOut
{
"type": "object",
"required": [
"endpointId",
"id",
"msgId",
"response",
"responseStatusCode",
"status",
"timestamp",
"triggerType",
"url"
],
"properties": {
"id": {
"type": "string",
"example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The attempt's ID"
},
"msg": {
"$ref": "#/components/schemas/MessageOut",
"nullable": true
},
"url": {
"type": "string",
"format": "uri",
"example": "https://example.com/webhook/",
"maxLength": 65536,
"minLength": 1
},
"msgId": {
"type": "string",
"example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The msg's ID"
},
"status": {
"$ref": "#/components/schemas/MessageStatus"
},
"response": {
"type": "string",
"example": "{}"
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"endpointId": {
"type": "string",
"example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The ep's ID"
},
"triggerType": {
"$ref": "#/components/schemas/MessageAttemptTriggerType"
},
"responseStatusCode": {
"type": "integer",
"format": "int16",
"example": 200
}
}
}
MessageAttemptExhaustedEvent
{
"type": "object",
"required": [
"data",
"type"
],
"properties": {
"data": {
"$ref": "#/components/schemas/MessageAttemptExhaustedEventData"
},
"type": {
"enum": [
"message.attempt.exhausted"
],
"type": "string",
"default": "message.attempt.exhausted"
}
},
"description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted)."
}
MessageAttemptExhaustedEventData
{
"type": "object",
"required": [
"appId",
"endpointId",
"lastAttempt",
"msgId"
],
"properties": {
"appId": {
"type": "string",
"example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The app's ID"
},
"msgId": {
"type": "string",
"example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The msg'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"
},
"msgEventId": {
"type": "string",
"example": "unique-msg-identifier",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256,
"minLength": 1,
"description": "The msg's UID"
},
"lastAttempt": {
"$ref": "#/components/schemas/MessageAttemptFailedData"
}
},
"description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event."
}
MessageAttemptFailedData
{
"type": "object",
"required": [
"id",
"responseStatusCode",
"timestamp"
],
"properties": {
"id": {
"type": "string",
"example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The attempt's ID"
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"responseStatusCode": {
"type": "integer",
"format": "int16"
}
}
}
MessageAttemptFailingEvent
{
"type": "object",
"required": [
"data",
"type"
],
"properties": {
"data": {
"$ref": "#/components/schemas/MessageAttemptFailingEventData"
},
"type": {
"enum": [
"message.attempt.failing"
],
"type": "string",
"default": "message.attempt.failing"
}
},
"description": "Sent after a message has been failing for a few times.\nIt's sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure."
}
MessageAttemptFailingEventData
{
"type": "object",
"required": [
"appId",
"endpointId",
"lastAttempt",
"msgId"
],
"properties": {
"appId": {
"type": "string",
"example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The app's ID"
},
"msgId": {
"type": "string",
"example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The msg'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"
},
"msgEventId": {
"type": "string",
"example": "unique-msg-identifier",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256,
"minLength": 1,
"description": "The msg's UID"
},
"lastAttempt": {
"$ref": "#/components/schemas/MessageAttemptFailedData"
}
},
"description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event."
}
MessageAttemptHeadersOut
{
"type": "object",
"required": [
"sensitive",
"sentHeaders"
],
"properties": {
"sensitive": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"sentHeaders": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"responseHeaders": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 2,
"minItems": 2
},
"nullable": true
}
}
}
MessageAttemptOut
{
"type": "object",
"required": [
"endpointId",
"id",
"msgId",
"response",
"responseStatusCode",
"status",
"timestamp",
"triggerType",
"url"
],
"properties": {
"id": {
"type": "string",
"example": "atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The attempt's ID"
},
"msg": {
"$ref": "#/components/schemas/MessageOut",
"nullable": true
},
"url": {
"type": "string",
"format": "uri",
"example": "https://example.com/webhook/",
"maxLength": 65536,
"minLength": 1
},
"msgId": {
"type": "string",
"example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The msg's ID"
},
"status": {
"$ref": "#/components/schemas/MessageStatus"
},
"response": {
"type": "string",
"example": "{}"
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"endpointId": {
"type": "string",
"example": "ep_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The ep's ID"
},
"triggerType": {
"$ref": "#/components/schemas/MessageAttemptTriggerType"
},
"responseStatusCode": {
"type": "integer",
"format": "int16",
"example": 200
}
}
}
MessageAttemptRecoveredEvent
{
"type": "object",
"required": [
"data",
"type"
],
"properties": {
"data": {
"$ref": "#/components/schemas/MessageAttemptRecoveredEventData"
},
"type": {
"enum": [
"message.attempt.recovered"
],
"type": "string",
"default": "message.attempt.recovered"
}
},
"description": "Sent on a successful dispatch after an earlier failure op webhook has already been sent."
}
MessageAttemptRecoveredEventData
{
"type": "object",
"required": [
"appId",
"endpointId",
"lastAttempt",
"msgId"
],
"properties": {
"appId": {
"type": "string",
"example": "app_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The app's ID"
},
"msgId": {
"type": "string",
"example": "msg_1srOrx2ZWZBpBUvZwXKQmoEYga2",
"description": "The msg'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"
},
"msgEventId": {
"type": "string",
"example": "unique-msg-identifier",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256,
"minLength": 1,
"description": "The msg's UID"
},
"lastAttempt": {
"$ref": "#/components/schemas/MessageAttemptFailedData"
}
},
"description": "Sent when a message delivery has failed (all of the retry attempts have been exhausted) as a \"message.attempt.exhausted\" type or after it's failed four times as a \"message.attempt.failing\" event."
}
MessageAttemptTriggerType
{
"enum": [
0,
1
],
"type": "integer",
"title": "MessageAttemptTriggerType",
"description": "The reason an attempt was made:\n- Scheduled = 0\n- Manual = 1",
"x-enum-varnames": [
"Scheduled",
"Manual"
]
}
MessageBroadcastIn
{
"type": "object",
"required": [
"eventType",
"payload"
],
"properties": {
"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"
},
"payloadRetentionPeriod": {
"type": "integer",
"format": "int64",
"default": 90,
"example": 90,
"maximum": 90,
"minimum": 5
}
}
}
MessageBroadcastOut
{
"type": "object",
"required": [
"id",
"status",
"task"
],
"properties": {
"id": {
"type": "string"
},
"task": {
"$ref": "#/components/schemas/BackgroundTaskType"
},
"status": {
"$ref": "#/components/schemas/BackgroundTaskStatus"
}
}
}
MessageEndpointOut
{
"type": "object",
"required": [
"createdAt",
"description",
"id",
"status",
"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
},
"status": {
"$ref": "#/components/schemas/MessageStatus"
},
"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
},
"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
},
"nextAttempt": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
}
MessageIn
{
"type": "object",
"required": [
"eventType",
"payload"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"example": "project_1337",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"maxLength": 128
},
"example": [
"my_tag",
"other"
],
"maxItems": 5,
"minItems": 1,
"nullable": true,
"description": "List of free-form tags that can be filtered by when listing messages",
"uniqueItems": true
},
"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"
},
"application": {
"$ref": "#/components/schemas/ApplicationIn",
"nullable": true,
"description": "Optionally creates a new application alongside the message. If the application id or uid that is used in the path already exists, this argument is ignored."
},
"transformationsParams": {
"type": "object",
"nullable": true,
"description": "Extra parameters to pass to Transformations (for future use)"
},
"payloadRetentionPeriod": {
"type": "integer",
"format": "int64",
"default": 90,
"example": 90,
"maximum": 90,
"minimum": 5
}
}
}
MessageOut
{
"type": "object",
"required": [
"eventType",
"id",
"payload",
"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
},
"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"
}
}
}
MessageRawPayloadOut
{
"type": "object",
"required": [
"payload"
],
"properties": {
"payload": {
"type": "string",
"example": "{\"email\":\"test@example.com\",\"type\":\"user.created\",\"username\":\"test_user\"}"
}
}
}
MessageStatus
{
"enum": [
0,
1,
2,
3
],
"type": "integer",
"title": "MessageStatus",
"description": "The sending status of the message:\n- Success = 0\n- Pending = 1\n- Fail = 2\n- Sending = 3",
"x-enum-varnames": [
"Success",
"Pending",
"Fail",
"Sending"
]
}
MessageStreamOut
{
"type": "object",
"required": [
"data",
"done",
"iterator"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MessageOut"
}
},
"done": {
"type": "boolean"
},
"iterator": {
"type": "string"
}
}
}
OauthPayloadIn
{
"type": "object",
"required": [
"code",
"redirectUri"
],
"properties": {
"code": {
"type": "string"
},
"redirectUri": {
"type": "string"
}
}
}
OauthPayloadOut
{
"type": "object",
"properties": {
"error": {
"type": "string",
"nullable": true
},
"channel": {
"type": "string",
"nullable": true
},
"incomingWebhookUrl": {
"type": "string",
"format": "uri",
"nullable": true
}
}
}
OneTimeTokenIn
{
"type": "object",
"required": [
"oneTimeToken"
],
"properties": {
"oneTimeToken": {
"type": "string"
}
}
}
OneTimeTokenOut
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string"
}
}
}
Ordering
{
"enum": [
"ascending",
"descending"
],
"type": "string",
"description": "Defines the ordering in a listing of results."
}
RecoverIn
{
"type": "object",
"required": [
"since"
],
"properties": {
"since": {
"type": "string",
"format": "date-time"
},
"until": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
}
RecoverOut
{
"type": "object",
"required": [
"id",
"status",
"task"
],
"properties": {
"id": {
"type": "string"
},
"task": {
"$ref": "#/components/schemas/BackgroundTaskType"
},
"status": {
"$ref": "#/components/schemas/BackgroundTaskStatus"
}
}
}
ReplayIn
{
"type": "object",
"required": [
"since"
],
"properties": {
"since": {
"type": "string",
"format": "date-time"
},
"until": {
"type": "string",
"format": "date-time",
"nullable": true
}
}
}
ReplayOut
{
"type": "object",
"required": [
"id",
"status",
"task"
],
"properties": {
"id": {
"type": "string"
},
"task": {
"$ref": "#/components/schemas/BackgroundTaskType"
},
"status": {
"$ref": "#/components/schemas/BackgroundTaskStatus"
}
}
}
RetrySchedule
{
"type": "array",
"items": {
"$ref": "#/components/schemas/Duration"
}
}
RetryScheduleInOut
{
"type": "object",
"properties": {
"retrySchedule": {
"$ref": "#/components/schemas/RetrySchedule",
"nullable": true
}
}
}
RotatedUrlOut
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string"
}
}
}
SettingsIn
{
"type": "object",
"properties": {
"readOnly": {
"type": "boolean",
"default": false
},
"customColor": {
"type": "string",
"format": "color",
"nullable": true
},
"displayName": {
"type": "string",
"nullable": true
},
"enforceHttps": {
"type": "boolean",
"default": 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
},
"customBaseFontSize": {
"type": "integer",
"format": "int",
"nullable": true
},
"customFontFamilyUrl": {
"type": "string",
"format": "uri",
"nullable": true,
"maxLength": 65536,
"minLength": 1
},
"customThemeOverride": {
"$ref": "#/components/schemas/CustomThemeOverride",
"nullable": true
},
"enableTransformations": {
"type": "boolean",
"default": false
},
"eventCatalogPublished": {
"type": "boolean",
"default": false
},
"disableEndpointOnFailure": {
"type": "boolean",
"default": true
},
"enableIntegrationManagement": {
"type": "boolean",
"default": false
}
}
}
SettingsOut
{
"type": "object",
"properties": {
"readOnly": {
"type": "boolean",
"default": false
},
"customColor": {
"type": "string",
"format": "color",
"nullable": true
},
"displayName": {
"type": "string",
"nullable": true
},
"enforceHttps": {
"type": "boolean",
"default": 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
},
"customBaseFontSize": {
"type": "integer",
"format": "int",
"nullable": true
},
"customFontFamilyUrl": {
"type": "string",
"format": "uri",
"nullable": true,
"maxLength": 65536,
"minLength": 1
},
"customThemeOverride": {
"$ref": "#/components/schemas/CustomThemeOverride",
"nullable": true
},
"enableTransformations": {
"type": "boolean",
"default": false
},
"eventCatalogPublished": {
"type": "boolean",
"default": false
},
"disableEndpointOnFailure": {
"type": "boolean",
"default": true
},
"enableIntegrationManagement": {
"type": "boolean",
"default": false
}
}
}
StatusCodeClass
{
"enum": [
0,
100,
200,
300,
400,
500
],
"type": "integer",
"title": "StatusCodeClass",
"description": "The different classes of HTTP status codes:\n- CodeNone = 0\n- Code1xx = 100\n- Code2xx = 200\n- Code3xx = 300\n- Code4xx = 400\n- Code5xx = 500",
"x-enum-varnames": [
"CodeNone",
"Code1xx",
"Code2xx",
"Code3xx",
"Code4xx",
"Code5xx"
]
}
TemplateIn
{
"type": "object",
"required": [
"logo",
"name",
"transformation"
],
"properties": {
"kind": {
"$ref": "#/components/schemas/TransformationTemplateKind",
"default": "Custom"
},
"logo": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string"
},
"description": {
"type": "string",
"default": ""
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
},
"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
},
"instructions": {
"type": "string",
"default": ""
},
"transformation": {
"type": "string",
"maxLength": 51200,
"minLength": 10
},
"instructionsLink": {
"type": "string",
"format": "uri",
"default": null,
"nullable": true
}
}
}
TemplateOut
{
"type": "object",
"required": [
"createdAt",
"description",
"id",
"instructions",
"kind",
"logo",
"name",
"orgId",
"transformation",
"updatedAt"
],
"properties": {
"id": {
"type": "string"
},
"kind": {
"$ref": "#/components/schemas/TransformationTemplateKind"
},
"logo": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string"
},
"orgId": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"description": {
"type": "string"
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
},
"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
},
"instructions": {
"type": "string"
},
"transformation": {
"type": "string"
},
"instructionsLink": {
"type": "string",
"format": "uri",
"nullable": true
}
}
}
TemplatePatch
{
"type": "object",
"properties": {
"kind": {
"$ref": "#/components/schemas/TransformationTemplateKind"
},
"logo": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
},
"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
},
"instructions": {
"type": "string"
},
"transformation": {
"type": "string",
"maxLength": 51200,
"minLength": 10
},
"instructionsLink": {
"type": "string",
"format": "uri",
"nullable": true
}
}
}
TemplateUpdate
{
"type": "object",
"required": [
"logo",
"transformation"
],
"properties": {
"kind": {
"$ref": "#/components/schemas/TransformationTemplateKind",
"default": "Custom"
},
"logo": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string",
"default": ""
},
"description": {
"type": "string",
"default": ""
},
"featureFlag": {
"type": "string",
"example": "cool-new-feature",
"pattern": "^[a-zA-Z0-9\\-_.]+$",
"nullable": true,
"maxLength": 256
},
"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
},
"instructions": {
"type": "string",
"default": ""
},
"transformation": {
"type": "string",
"maxLength": 51200,
"minLength": 10
},
"instructionsLink": {
"type": "string",
"format": "uri",
"nullable": true
}
}
}
TransformationHttpMethod
{
"enum": [
"POST",
"PUT"
],
"type": "string"
}
TransformationSimulateIn
{
"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"
}
}
}
TransformationSimulateOut
{
"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"
}
}
}
TransformationTemplateKind
{
"enum": [
"Custom",
"CustomerIO",
"Discord",
"Hubspot",
"Inngest",
"Salesforce",
"Segment",
"Slack",
"Teams",
"TriggerDev",
"Windmill",
"Zapier"
],
"type": "string"
}
ValidationError
{
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"properties": {
"loc": {
"type": "array",
"items": {
"type": "string"
},
"description": "The location as a [`Vec`] of [`String`]s -- often in the form `[\"body\", \"field_name\"]`, `[\"query\", \"field_name\"]`, etc. They may, however, be arbitrarily deep."
},
"msg": {
"type": "string",
"description": "The message accompanying the validation error item."
},
"type": {
"type": "string",
"description": "The type of error, often \"type_error\" or \"value_error\", but sometimes with more context like as \"value_error.number.not_ge\""
}
},
"description": "Validation errors have their own schema to provide context for invalid requests eg. mismatched types and out of bounds values. There may be any number of these per 422 UNPROCESSABLE ENTITY error."
}