openapi: 3.1.0 info: title: Svix Application Environment API description: 'Welcome to the Svix API documentation! Useful links: [Homepage](https://www.svix.com) | [Support email](mailto:support+docs@svix.com) | [Blog](https://www.svix.com/blog/) | [Slack Community](https://www.svix.com/slack/) # Introduction This is the reference documentation and schemas for the [Svix webhook service](https://www.svix.com) API. For tutorials and other documentation please refer to [the documentation](https://docs.svix.com). ## Main concepts In Svix you have four important entities you will be interacting with: - `messages`: these are the webhooks being sent. They can have contents and a few other properties. - `application`: this is where `messages` are sent to. Usually you want to create one application for each user on your platform. - `endpoint`: endpoints are the URLs messages will be sent to. Each application can have multiple `endpoints` and each message sent to that application will be sent to all of them (unless they are not subscribed to the sent event type). - `event-type`: event types are identifiers denoting the type of the message being sent. Event types are primarily used to decide which events are sent to which endpoint. ## Authentication Get your authentication token (`AUTH_TOKEN`) from the [Svix dashboard](https://dashboard.svix.com) and use it as part of the `Authorization` header as such: `Authorization: Bearer ${AUTH_TOKEN}`. For more information on authentication, please refer to the [authentication token docs](https://docs.svix.com/api-keys). ## Code samples The code samples assume you already have the respective libraries installed and you know how to use them. For the latest information on how to do that, please refer to [the documentation](https://docs.svix.com/). ## Idempotency Svix supports [idempotency](https://en.wikipedia.org/wiki/Idempotence) for safely retrying requests without accidentally performing the same operation twice. This is useful when an API call is disrupted in transit and you do not receive a response. To perform an idempotent request, pass the idempotency key in the `Idempotency-Key` header to the request. The idempotency key should be a unique value generated by the client. You can create the key in however way you like, though we suggest using UUID v4, or any other string with enough entropy to avoid collisions. Your idempotency key should not begin with the string `auto_`, which is reserved for internal use by the client libraries. Svix''s idempotency works by saving the resulting status code and body of the first request made for any given idempotency key for any successful request. Subsequent requests with the same key return the same result for a period of up to 12 hours. Please note that idempotency is only supported for `POST` requests. ## Cross-Origin Resource Sharing This API features Cross-Origin Resource Sharing (CORS) implemented in compliance with [W3C spec](https://www.w3.org/TR/cors/). And that allows cross-domain communication from the browser. All responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site. ' version: 1.84.0 x-logo: altText: Svix Logo url: https://www.svix.com/static/img/brand-padded.svg servers: - url: https://api.eu.svix.com/ description: The Svix EU region - url: https://api.us.svix.com/ description: The Svix US region - url: https://api.ca.svix.com/ description: The Svix Canada region - url: https://api.au.svix.com/ description: The Svix Australia region - url: https://api.in.svix.com/ description: The Svix India region tags: - name: Environment description: Manage your environments like development, staging and production. paths: /api/v1/environment/export: post: tags: - Environment summary: Export Environment Configuration description: 'Download a JSON file containing all org-settings and event types. Note that the schema for [`EnvironmentOut`] is subject to change. The fields herein are provided for convenience but should be treated as JSON blobs.' operationId: v1.environment.export parameters: - in: header name: idempotency-key description: The request's idempotency key schema: type: string style: simple - in: header name: idempotency-key description: The request's idempotency key schema: type: string style: simple responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/EnvironmentOut' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' security: - HTTPBearer: [] x-codeSamples: - label: JavaScript lang: TypeScript source: const response = await svix.environment.export(); - label: TypeScript lang: TypeScript source: const response = await svix.environment.export(); - label: Python lang: Python source: response = svix.environment.export() - label: Python (Async) lang: Python source: response = await svix.environment.export() - label: Go lang: Go source: response, err := svix.Environment.Export(ctx, nil) - label: Kotlin lang: Kotlin source: val response = svix.environment.export() - label: Java lang: Java source: var response = svix.getEnvironment().export(); - label: Ruby lang: Ruby source: response = svix.environment.export - label: Rust lang: Rust source: let response = svix.environment().export(None).await?; - label: C# lang: C# source: var response = svix.Environment.Export(); - label: PHP lang: PHP source: $response = $svix->environment->export(); - label: CLI lang: Shell source: svix environment export - label: cURL lang: Shell source: "curl -X 'POST' \\\n 'https://api.eu.svix.com/api/v1/environment/export' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'Accept: application/json'" /api/v1/environment/import: post: tags: - Environment summary: Import Environment Configuration description: 'Import a configuration into the active organization. It doesn''t delete anything, only adds / updates what was passed to it. Note that the schema for [`EnvironmentIn`] is subject to change. The fields herein are provided for convenience but should be treated as JSON blobs.' operationId: v1.environment.import parameters: - in: header name: idempotency-key description: The request's idempotency key schema: type: string style: simple - in: header name: idempotency-key description: The request's idempotency key schema: type: string style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/EnvironmentIn' required: true responses: '204': description: no content '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/HttpErrorOut' security: - HTTPBearer: [] x-codeSamples: - label: JavaScript lang: TypeScript source: "await svix.environment.import({\n connectors: [],\n eventTypes: [],\n settings: {},\n});" - label: TypeScript lang: TypeScript source: "await svix.environment.import({\n connectors: [],\n eventTypes: [],\n settings: {},\n});" - label: Python lang: Python source: "svix.environment.import_(\n EnvironmentIn(\n connectors=[],\n event_types=[],\n settings={},\n ),\n)" - label: Python (Async) lang: Python source: "await svix.environment.import_(\n EnvironmentIn(\n connectors=[],\n event_types=[],\n settings={},\n ),\n)" - label: Go lang: Go source: "err := svix.Environment.Import(\n\tctx,\n\tEnvironmentIn{Connectors: []ConnectorIn{}, EventTypes: []EventTypeIn{}, Settings: nil},\n\tnil,\n)" - label: Kotlin lang: Kotlin source: "svix.environment.import(\n EnvironmentIn(connectors = listOf(), eventTypes = listOf(), settings = mapOf())\n)" - label: Java lang: Java source: "svix.getEnvironment()\n .import_(\n new EnvironmentIn().connectors(List.of()).eventTypes(List.of()).settings(Map.of()));" - label: Ruby lang: Ruby source: 'response = svix.environment.import({connectors: [], eventTypes: [], settings: {}})' - label: Rust lang: Rust source: "svix.environment()\n .import(\n EnvironmentIn {\n connectors: Some(vec![]),\n event_types: Some(vec![]),\n settings: Some(serde_json::json!({})),\n },\n None,\n )\n .await?;" - label: C# lang: C# source: "var response = svix.Environment.Import(\n new EnvironmentIn\n {\n Connectors = [],\n EventTypes = [],\n Settings = new Dictionary { },\n }\n);" - label: PHP lang: PHP source: "$svix->environment->import(\n EnvironmentIn::create()\n ->withConnectors([])\n ->withEventTypes([])\n);" - label: CLI lang: Shell source: "svix environment import '{\n \"connectors\": [],\n \"eventTypes\": [],\n \"settings\": {}\n }'" - label: cURL lang: Shell source: "curl -X 'POST' \\\n 'https://api.eu.svix.com/api/v1/environment/import' \\\n -H 'Authorization: Bearer AUTH_TOKEN' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"connectors\": [],\n \"eventTypes\": [],\n \"settings\": {}\n }'" components: schemas: ConnectorOut: type: object required: - createdAt - description - id - instructions - kind - name - orgId - productType - transformation - transformationUpdatedAt - updatedAt properties: allowedEventTypes: type: array items: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup minItems: 1 uniqueItems: true example: - user.signup - user.deleted nullable: true createdAt: type: string format: date-time description: type: string featureFlags: default: null type: array items: type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ uniqueItems: true example: - cool-new-feature nullable: true id: description: The Connector's ID. type: string maxLength: 34 minLength: 34 pattern: ^trtmpl_[A-Za-z0-9]{27}$ example: trtmpl_1srOrx2ZWZBpBUvZwXKQmoEYga2 instructions: type: string kind: $ref: '#/components/schemas/ConnectorKind' logo: type: string format: uri nullable: true name: type: string orgId: description: The Environment's ID. type: string maxLength: 31 minLength: 31 pattern: ^org_[A-Za-z0-9]{27}$ example: org_1srOrx2ZWZBpBUvZwXKQmoEYga2 productType: $ref: '#/components/schemas/ConnectorProduct' transformation: type: string transformationUpdatedAt: type: string format: date-time uid: description: The Connector's UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier nullable: true updatedAt: type: string format: date-time HTTPValidationError: type: object required: - detail properties: detail: type: array items: $ref: '#/components/schemas/ValidationError' ValidationError: 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. type: object required: - loc - msg - type properties: loc: 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. type: array items: type: string msg: description: The message accompanying the validation error item. type: string type: description: The type of error, often "type_error" or "value_error", but sometimes with more context like as "value_error.number.not_ge" type: string EnvironmentOut: type: object required: - connectors - createdAt - eventTypes - settings properties: connectors: type: array items: $ref: '#/components/schemas/ConnectorOut' createdAt: type: string format: date-time eventTypes: type: array items: $ref: '#/components/schemas/EventTypeOut' settings: type: object nullable: true version: default: 1 type: integer format: int EventTypeOut: type: object required: - createdAt - deprecated - description - name - updatedAt properties: archived: default: false type: boolean example: false createdAt: type: string format: date-time deprecated: type: boolean description: type: string example: A user has signed up featureFlag: type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ nullable: true featureFlags: type: array items: type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ uniqueItems: true example: - cool-new-feature nullable: true groupName: description: The event type group's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user nullable: true name: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup schemas: description: The schema for the event type for a specific version as a JSON schema. type: object example: '1': description: An invoice was paid by a user properties: invoiceId: description: The invoice id type: string userId: description: The user id type: string required: - invoiceId - userId title: Invoice Paid Event type: object nullable: true updatedAt: type: string format: date-time ConnectorProduct: type: string enum: - Dispatch - Stream ConnectorIn: type: object required: - name - transformation properties: allowedEventTypes: type: array items: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup minItems: 1 uniqueItems: true example: - user.signup - user.deleted nullable: true description: default: '' type: string example: Example connector description featureFlags: default: null type: array items: type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ uniqueItems: true nullable: true instructions: default: '' type: string example: Markdown-formatted instructions kind: default: Custom $ref: '#/components/schemas/ConnectorKind' example: Slack logo: type: string format: uri example: https://example.com/logo.png nullable: true name: type: string example: My first connector productType: default: null $ref: '#/components/schemas/ConnectorProduct' nullable: true transformation: type: string maxLength: 51200 minLength: 10 example: function handler(webhook) { /* ... */ } uid: description: The Connector's UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier nullable: true EventTypeIn: type: object required: - description - name properties: archived: default: false type: boolean example: false deprecated: default: false type: boolean description: type: string example: A user has signed up featureFlag: description: Deprecated, use `featureFlags` instead. default: null deprecated: true type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ nullable: true featureFlags: default: null type: array items: type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ minItems: 1 uniqueItems: true example: - cool-new-feature nullable: true groupName: description: The event type group's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user nullable: true name: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup schemas: description: The schema for the event type for a specific version as a JSON schema. type: object example: '1': description: An invoice was paid by a user properties: invoiceId: description: The invoice id type: string userId: description: The user id type: string required: - invoiceId - userId title: Invoice Paid Event type: object nullable: true ConnectorKind: type: string enum: - Custom - AgenticCommerceProtocol - CloseCRM - CustomerIO - Discord - Hubspot - Inngest - Loops - Otel - Resend - Salesforce - Segment - Sendgrid - Slack - Teams - TriggerDev - Windmill - Zapier EnvironmentIn: type: object properties: connectors: type: array items: $ref: '#/components/schemas/ConnectorIn' nullable: true eventTypes: type: array items: $ref: '#/components/schemas/EventTypeIn' nullable: true settings: type: object nullable: true HttpErrorOut: title: HttpError type: object required: - code - detail properties: code: type: string detail: type: string securitySchemes: HTTPBearer: type: http scheme: bearer description: HTTP Bearer token passed in the `Authorization` header x-tagGroups: - name: General tags: - Background Task - Environment - name: Dispatch tags: - Application - Event Type - Authentication - Endpoint - Message - Message Attempt - Integration - Connector - name: Stream tags: - Stream - Sink - Event - Stream Event Type - Stream Authentication - name: Ingest tags: - Ingest Source - Ingest Endpoint - name: Operational Webhooks tags: - Webhook - Webhook Endpoint - name: Statistics tags: - Statistics - name: Utility tags: - Health x-webhooks: background_task.finished: post: description: Sent when a background task is finished. operationId: background_task.finished requestBody: content: application/json: example: data: data: appStats: - appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: null messageDestinations: 343 status: finished task: application.stats taskId: qtask_1srOrx2ZWZBpBUvZwXKQmoEYga2 type: background_task.finished schema: $ref: '#/components/schemas/BackgroundTaskFinishedEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: background_task.finished tags: - Webhook endpoint.created: post: description: Sent when an endpoint is created. operationId: endpoint.created requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.created schema: $ref: '#/components/schemas/EndpointCreatedEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: endpoint.created tags: - Webhook x-svix-group-name: dispatch endpoint.deleted: post: description: Sent when an endpoint is deleted. operationId: endpoint.deleted requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.deleted schema: $ref: '#/components/schemas/EndpointDeletedEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: endpoint.deleted tags: - Webhook x-svix-group-name: dispatch endpoint.disabled: post: description: Sent when an endpoint has been automatically disabled after continuous failures, or manually via an API call. operationId: endpoint.disabled requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier failSince: '2022-11-06T15:04:05Z' trigger: automatic type: endpoint.disabled schema: $ref: '#/components/schemas/EndpointDisabledEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: endpoint.disabled tags: - Webhook x-svix-group-name: dispatch endpoint.enabled: post: description: Sent when an endpoint has been enabled. operationId: endpoint.enabled requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.enabled schema: $ref: '#/components/schemas/EndpointEnabledEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: endpoint.enabled tags: - Webhook x-svix-group-name: dispatch endpoint.updated: post: description: Sent when an endpoint is updated. operationId: endpoint.updated requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.updated schema: $ref: '#/components/schemas/EndpointUpdatedEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: endpoint.updated tags: - Webhook x-svix-group-name: dispatch ingest.endpoint.disabled: post: description: Sent when an ingest endpoint has been automatically disabled after continuous failures, or manually via an API call. operationId: ingest.endpoint.disabled requestBody: content: application/json: example: data: endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier failSince: '2022-11-06T15:04:05Z' sourceId: src_30HT9jb8WZXKVWIO44ZDr trigger: automatic type: ingest.endpoint.disabled schema: $ref: '#/components/schemas/IngestEndpointDisabledEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: ingest.endpoint.disabled tags: - Webhook ingest.message.attempt.exhausted: post: description: Sent when a message delivery has failed (all of the retry attempts have been exhausted). operationId: ingest.message.attempt.exhausted requestBody: content: application/json: example: data: endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 sourceId: src_30HT9jb8WZXKVWIO44ZDr type: ingest.message.attempt.exhausted schema: $ref: '#/components/schemas/IngestMessageAttemptExhaustedEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: ingest.message.attempt.exhausted tags: - Webhook ingest.message.attempt.failing: post: description: 'Sent after a message has been failing for a few times. It''s sent on the fourth failure. It complements `ingest.message.attempt.exhausted` which is sent after the last failure.' operationId: ingest.message.attempt.failing requestBody: content: application/json: example: data: endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 sourceId: src_30HT9jb8WZXKVWIO44ZDr type: ingest.message.attempt.failing schema: $ref: '#/components/schemas/IngestMessageAttemptFailingEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: ingest.message.attempt.failing tags: - Webhook ingest.message.attempt.recovered: post: description: Sent on a successful dispatch after an earlier failure op webhook has already been sent. operationId: ingest.message.attempt.recovered requestBody: content: application/json: example: data: endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 200 timestamp: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 sourceId: src_30HT9jb8WZXKVWIO44ZDr type: ingest.message.attempt.recovered schema: $ref: '#/components/schemas/IngestMessageAttemptRecoveredEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: ingest.message.attempt.recovered tags: - Webhook message.attempt.exhausted: post: description: Sent when a message delivery has failed (all of the retry attempts have been exhausted). operationId: message.attempt.exhausted requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 type: message.attempt.exhausted schema: $ref: '#/components/schemas/MessageAttemptExhaustedEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: message.attempt.exhausted tags: - Webhook x-svix-group-name: dispatch message.attempt.failing: post: description: 'Sent after a message has been failing for a few times. It''s sent on the fourth failure. It complements `message.attempt.exhausted` which is sent after the last failure.' operationId: message.attempt.failing requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 type: message.attempt.failing schema: $ref: '#/components/schemas/MessageAttemptFailingEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: message.attempt.failing tags: - Webhook x-svix-group-name: dispatch message.attempt.log: post: description: Sent after message attempts are made. Contains metadata about message attempts and their results. In order to reduce the frequency of webhooks, these are sent in batches periodically. operationId: message.attempt.log requestBody: content: application/json: example: data: - appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier attemptCount: 1 attemptEnd: '2022-11-06T15:04:07Z' attemptId: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 attemptStart: '2022-11-06T15:04:06Z' endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 eventType: user.signup msgCreated: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 orgId: env_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 200 status: 0 type: message.attempt.log schema: $ref: '#/components/schemas/MessageAttemptLogEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: message.attempt.log tags: - Webhook x-internal: true x-svix-feature-flags: - attempt_log x-svix-group-name: dispatch message.attempt.recovered: post: description: Sent on a successful dispatch after an earlier failure op webhook has already been sent. operationId: message.attempt.recovered requestBody: content: application/json: example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 200 timestamp: '2022-11-06T15:04:05Z' msgEventId: unique-msg-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 type: message.attempt.recovered schema: $ref: '#/components/schemas/MessageAttemptRecoveredEvent' responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully summary: message.attempt.recovered tags: - Webhook x-svix-group-name: dispatch