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
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 |
application/json
ApplicationIn
| Property | Type | Required |
|---|---|---|
| uid | string | optional |
| name | string | required |
| metadata | object | optional |
| rateLimit | integer | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/app
/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 |
application/json
AppPortalAccessIn
| Property | Type | Required |
|---|---|---|
| expiry | integer | optional |
| featureFlags | array | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
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 |
application/json
ApplicationTokenExpireIn
| Property | Type | Required |
|---|---|---|
| expiry | integer | optional |
no content
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
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 |
no content
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/auth/logout
/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 |
application/json
EndpointIn
| Property | Type | Required |
|---|---|---|
| uid | string | optional |
| url | string | required |
| secret | string | optional |
| version | integer | optional |
| channels | array | optional |
| disabled | boolean | optional |
| metadata | object | optional |
| rateLimit | integer | optional |
| description | string | optional |
| filterTypes | array | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/app/{app_id}/endpoint
/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 |
application/json
RecoverIn
| Property | Type | Required |
|---|---|---|
| since | string | required |
| until | string | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
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 |
application/json
ReplayIn
| Property | Type | Required |
|---|---|---|
| since | string | required |
| until | string | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/replay-missing
/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 |
application/json
EndpointSecretRotateIn
| Property | Type | Required |
|---|---|---|
| key | string | optional |
no content
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
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 |
application/json
EventExampleIn
| Property | Type | Required |
|---|---|---|
| eventType | string | required |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/app/{app_id}/endpoint/{endpoint_id}/send-example
/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 |
application/json
EventTypeIn
| Property | Type | Required |
|---|---|---|
| name | string | required |
| schemas | object | optional |
| archived | boolean | optional |
| description | string | required |
| featureFlag | string | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
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 |
Import a list of event types from webhooks defined in an OpenAPI spec.
The OpenAPI spec can be specified as either spec given the spec as a JSON object, or as specRaw (a string) which will be parsed as YAML or JSON by the server. Sending neither or both is invalid, resulting in a 400 Bad Request.
application/json
EventTypeImportOpenApiIn
| Property | Type | Required |
|---|---|---|
| spec | object | optional |
| specRaw | string | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/event-type/import/openapi
/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 |
application/json
IntegrationIn
| Property | Type | Required |
|---|---|---|
| name | string | required |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/app/{app_id}/integration
/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 |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/app/{app_id}/integration/{integ_id}/key/rotate
/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 |
| idempotency-key | header | optional | string | The request’s idempotency key |
application/json
MessageIn
| Property | Type | Required |
|---|---|---|
| tags | array | optional |
| eventId | string | optional |
| payload | object | required |
| channels | array | optional |
| eventType | string | required |
| application | object | optional |
| └ uid | string | optional |
| └ name | string | required |
| └ metadata | object | optional |
| └ rateLimit | integer | optional |
| transformationsParams | object | optional |
| payloadRetentionPeriod | integer | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Payload too large
Validation Error
Too Many Requests
POST /api/v1/app/{app_id}/msg
/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 |
no content
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
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 |
application/json
AppUsageStatsIn
| Property | Type | Required |
|---|---|---|
| since | string | required |
| until | string | required |
| appIds | array | optional |
Bad request
Unauthorized
Forbidden
Not Found
Conflict
Validation Error
Too Many Requests
POST /api/v1/stats/usage/app
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"
}
}
}