openapi: 3.2.0 info: title: Svix Webhook Sink 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.922.0 x-logo: url: https://www.svix.com/static/img/brand-padded.svg altText: Svix Logo 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: Webhook Sink paths: /api/v1/app/{app_id}/stream/sink: get: tags: - Webhook Sink summary: List Sinks description: List of all the stream's sinks. operationId: v1.app.stream.sink.list parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: query name: limit description: Limit the number of returned items schema: description: Limit the number of returned items type: integer format: uint64 maximum: 250 minimum: 1.0 style: form - in: query name: iterator description: The iterator returned from a prior invocation schema: description: The iterator returned from a prior invocation type: string maxLength: 27 minLength: 26 pattern: ^sink_[A-Za-z0-9]{21,22}$ nullable: true example: sink_2yZwUhtgs5Ai8T9yRQJXA style: form - in: query name: order description: The sorting order of the returned items schema: description: The sorting order of the returned items $ref: '#/components/schemas/Ordering' nullable: true style: form responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/ListResponse_StreamSinkOut_' '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-internal: true post: tags: - Webhook Sink summary: Create Sink description: Creates a new sink. operationId: v1.app.stream.sink.create parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier 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/StreamSinkIn' required: true responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/StreamSinkOut' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}: get: tags: - Webhook Sink summary: Get Sink description: Get a sink by id or uid. operationId: v1.app.stream.sink.get parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/StreamSinkOut' '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-internal: true put: tags: - Webhook Sink summary: Upsert Sink description: Create or update a sink. operationId: v1.app.stream.sink.upsert parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/StreamSinkIn' required: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/StreamSinkOut' '201': description: '' content: application/json: schema: $ref: '#/components/schemas/StreamSinkOut' '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-internal: true delete: tags: - Webhook Sink summary: Delete Sink description: Delete a sink. operationId: v1.app.stream.sink.delete parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple 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-internal: true patch: tags: - Webhook Sink summary: Patch Sink description: Partially update a sink. operationId: v1.app.stream.sink.patch parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/StreamSinkPatch' required: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/StreamSinkOut' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/transformation: get: tags: - Webhook Sink summary: Get Sink Transformation description: Get the transformation code associated with this endpoint. operationId: v1.app.stream.sink-transformation-get parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/SinkTransformationOut' '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-internal: true patch: tags: - Webhook Sink summary: Set Sink Transformation description: Set or unset the transformation code associated with this sink. operationId: v1.app.stream.sink.transformation-partial-update parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/SinkTransformIn' required: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/secret: get: tags: - Webhook Sink summary: Get Sink Secret description: 'Get the sink''s signing secret (only supported for http sinks) This is used to verify the authenticity of the delivery For more information please refer to [the consuming webhooks docs](https://docs.svix.com/consuming-webhooks/).' operationId: v1.app.stream.sink.get-secret parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/SinkSecretOut' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/secret/rotate: post: tags: - Webhook Sink summary: Rotate Sink Secret description: Rotates the signing secret (only supported for http sinks). operationId: v1.app.stream.sink.rotate-secret parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier 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/EndpointSecretRotateIn' required: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/EmptyResponse' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/headers: get: tags: - Webhook Sink summary: Get Sink Headers description: Get the HTTP sink headers operationId: v1.app.stream.sink.headers-get parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple responses: '200': description: 'The value of the headers is returned in the `headers` field. Sensitive headers that have been redacted are returned in the sensitive field.' content: application/json: schema: $ref: '#/components/schemas/EndpointHeadersOut' '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-internal: true patch: tags: - Webhook Sink summary: Patch Sink Headers description: Patch the HTTP sink headers operationId: v1.app.stream.sink.headers-patch parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/HttpSinkHeadersPatchIn' required: true responses: '200': description: 'The value of the headers is returned in the `headers` field. Sensitive headers that have been redacted are returned in the sensitive field.' content: application/json: schema: $ref: '#/components/schemas/EndpointHeadersOut' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/force-retry: post: tags: - Webhook Sink summary: Force Retry Sink description: Forces a Sink to retry immediately (if dispatch is paused) operationId: v1.app.stream.sink.force-retry parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple - in: header name: idempotency-key description: The request's idempotency key schema: type: string style: simple 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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/last-acked-event: get: tags: - Webhook Sink summary: Get Last Acked Event description: Get the latest event acked from the stream operationId: v1.app.stream.sink.get-last-acked-event parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/EventOut' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/next-event: get: tags: - Webhook Sink summary: Get Next Stream Sink Event description: Get the oldest event that has not been acked by the sink operationId: v1.app.stream.sink.next-event parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/EventOut' '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-internal: true /api/v1/app/{app_id}/stream/sink/{sink_id}/skip: post: tags: - Webhook Sink summary: Skip N Events description: Skip the last n events from the sink operationId: v1.app.stream.sink.skip parameters: - in: path name: app_id description: The Application's ID or UID. required: true schema: description: The Application's ID or UID. type: string maxLength: 256 minLength: 1 pattern: ^[a-zA-Z0-9\-_.]+$ example: unique-identifier style: simple - in: path name: sink_id description: The StreamSink's ID or UID. required: true schema: description: The StreamSink's ID or UID. type: string maxLength: 60 minLength: 1 example: unique-identifier style: simple - in: query name: iterator schema: type: string nullable: true style: form - in: header name: idempotency-key description: The request's idempotency key schema: type: string style: simple requestBody: content: application/json: schema: $ref: '#/components/schemas/SkipParams' 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-internal: true components: schemas: HttpPatchConfig: type: object properties: url: type: string format: uri RedshiftPatchConfig: type: object properties: accessKeyId: type: string secretAccessKey: type: string region: type: string dbName: description: 'Database name. Only required if not using transformations.' type: string schemaName: description: 'Schema name. Only used if not using transformations.' type: string nullable: true tableName: description: 'Table name. Only required if not using transformations.' type: string AmazonS3PatchConfig: type: object properties: bucket: type: string accessKeyId: type: string secretAccessKey: type: string region: type: string endpointUrl: type: string format: uri BigQueryConfig: description: Configuration for a Google Cloud BigQuery sink. type: object properties: projectId: type: string datasetId: type: string tableId: type: string credentials: description: Google Cloud Credentials JSON Object as a string. type: string required: - credentials - datasetId - projectId - tableId SnsConfig: description: Configuration for a SNS sink. type: object properties: topicArn: type: string region: type: string accessKeyId: type: string secretAccessKey: type: string endpointUrl: type: string format: uri nullable: true required: - accessKeyId - region - secretAccessKey - topicArn RabbitMqConfig: description: Configuration for a RabbitMq sink. type: object properties: uri: type: string routingKey: type: string required: - routingKey - uri SqsConfig: description: Configuration for an SQS sink. type: object properties: queueUrl: type: string format: uri region: type: string accessKeyId: type: string secretAccessKey: type: string endpointUrl: type: string format: uri nullable: true required: - accessKeyId - queueUrl - region - secretAccessKey SinkHttpConfig: type: object properties: url: type: string format: uri headers: type: object default: {} additionalProperties: type: string key: type: string default: null nullable: true required: - url StreamSinkOut: type: object properties: id: description: The sink's ID. type: string maxLength: 27 minLength: 26 pattern: ^sink_[A-Za-z0-9]{21,22}$ example: sink_2yZwUhtgs5Ai8T9yRQJXA uid: description: The sink's UID. type: string maxLength: 60 minLength: 1 pattern: ^(?!sink_)[a-zA-Z0-9_-]+$ example: unique-identifier nullable: true status: $ref: '#/components/schemas/SinkStatus' currentIterator: type: string failureReason: type: string nullable: true createdAt: type: string format: date-time updatedAt: type: string format: date-time batchSize: type: integer format: int32 maxWaitSecs: type: integer format: int32 eventTypes: type: array default: [] items: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup nextRetryAt: type: string format: date-time nullable: true metadata: type: object additionalProperties: type: string oneOf: - type: object properties: type: type: string enum: - poller required: - type - type: object properties: type: type: string enum: - azureBlobStorage config: $ref: '#/components/schemas/AzureBlobStorageConfig' required: - config - type - type: object properties: type: type: string enum: - otelTracing config: $ref: '#/components/schemas/SinkOtelV1Config' required: - config - type - type: object properties: type: type: string enum: - http config: $ref: '#/components/schemas/SinkHttpConfig' required: - config - type - type: object properties: type: type: string enum: - amazonS3 config: $ref: '#/components/schemas/S3Config' required: - config - type - type: object properties: type: type: string enum: - googleCloudStorage config: $ref: '#/components/schemas/GoogleCloudStorageConfig' required: - config - type - type: object properties: type: type: string enum: - googleCloudPubSub config: $ref: '#/components/schemas/GoogleCloudPubSubConfig' required: - config - type - type: object properties: type: type: string enum: - sqs config: $ref: '#/components/schemas/SqsConfig' required: - config - type - type: object properties: type: type: string enum: - sns config: $ref: '#/components/schemas/SnsConfig' required: - config - type - type: object properties: type: type: string enum: - bigQuery config: $ref: '#/components/schemas/BigQueryConfig' required: - config - type - type: object properties: type: type: string enum: - clickhouse config: $ref: '#/components/schemas/ClickhouseConfig' required: - config - type - type: object properties: type: type: string enum: - eventBridge config: $ref: '#/components/schemas/EventBridgeConfig' required: - config - type - type: object properties: type: type: string enum: - snowflake config: $ref: '#/components/schemas/SnowflakeConfig' required: - config - type - type: object properties: type: type: string enum: - rabbitMq config: $ref: '#/components/schemas/RabbitMqConfig' required: - config - type - type: object properties: type: type: string enum: - redshift config: $ref: '#/components/schemas/RedshiftConfig' required: - config - type required: - batchSize - createdAt - currentIterator - id - maxWaitSecs - metadata - status - updatedAt EndpointHeadersOut: description: 'The value of the headers is returned in the `headers` field. Sensitive headers that have been redacted are returned in the sensitive field.' type: object properties: headers: type: object additionalProperties: type: string example: X-Example: '123' X-Foobar: Bar sensitive: type: array uniqueItems: true items: type: string example: - Authorization required: - headers - sensitive S3Config: type: object properties: bucket: type: string accessKeyId: type: string secretAccessKey: type: string region: type: string endpointUrl: type: string format: uri nullable: true required: - accessKeyId - bucket - region - secretAccessKey SinkStatusIn: type: string enum: - enabled - disabled RedshiftConfig: description: 'Configuration parameters for defining a Redshift sink. For provisioned clusters, set `cluster_identifier` and `db_user`. For Redshift Serverless, set `workgroup_name`.' type: object properties: accessKeyId: type: string secretAccessKey: type: string region: type: string clusterIdentifier: description: Required for provisioned clusters. type: string nullable: true dbUser: description: Required for provisioned clusters. type: string nullable: true workgroupName: description: Required for Redshift Serverless. type: string nullable: true dbName: description: 'Database name. Only required if not using transformations.' type: string schemaName: description: 'Schema name. Only used if not using transformations.' type: string nullable: true tableName: description: 'Table name. Only required if not using transformations.' type: string required: - accessKeyId - region - secretAccessKey GoogleCloudPubSubPatchConfig: type: object properties: projectId: type: string topicId: type: string credentials: type: string GoogleCloudPubSubConfig: type: object properties: projectId: type: string topicId: type: string credentials: description: Google Cloud Credentials JSON Object as a string. type: string required: - credentials - projectId - topicId SnsPatchConfig: type: object properties: topicArn: type: string region: type: string accessKeyId: type: string secretAccessKey: type: string endpointUrl: type: string format: uri nullable: true SinkTransformIn: type: object properties: code: type: string maxLength: 51200 minLength: 10 nullable: true OtelTracingPatchConfig: type: object properties: url: type: string format: uri EventBridgePatchConfig: type: object properties: eventBusName: type: string detailType: type: string maxLength: 128 example: ResourceGroups Resource State Change accessKeyId: type: string secretAccessKey: type: string region: type: string SinkOtelV1Config: type: object properties: url: type: string format: uri headers: type: object default: {} additionalProperties: type: string required: - url SqsPatchConfig: type: object properties: queueUrl: type: string format: uri region: type: string accessKeyId: type: string secretAccessKey: type: string endpointUrl: type: string format: uri nullable: true ClickhouseConfig: type: object properties: url: description: The HTTP URL of the ClickHouse server (e.g. `https://my_clickhouse:8443`). type: string format: uri username: description: Username to access Clickhouse type: string password: description: Password to access Clickhouse type: string database: description: The Clickhouse database to connect to type: string default: default tableName: description: The Clickhouse table to write to type: string required: - password - tableName - url - username AzureBlobStoragePatchConfig: type: object properties: container: type: string account: type: string accessKey: type: string RabbitMqPatchConfig: type: object properties: routingKey: type: string uri: type: string AzureBlobStorageConfig: type: object properties: container: type: string account: type: string accessKey: type: string required: - accessKey - account - container SnowflakePatchConfig: type: object properties: privateKey: type: string accountIdentifier: type: string userId: type: string dbName: description: 'Database name. Only required if not using transformations.' type: string schemaName: description: 'Schema name. Only required if not using transformations.' type: string tableName: description: 'Table name. Only required if not using transformations.' type: string EmptyResponse: type: object ClickhousePatchConfig: type: object properties: url: type: string format: uri username: type: string password: type: string database: type: string tableName: type: string SinkSecretOut: type: object properties: key: description: 'The endpoint''s verification secret. Format: `base64` encoded random bytes optionally prefixed with `whsec_`. It is recommended to not set this and let the server generate the secret.' type: string pattern: ^(whsec_|whsk_|whsk1_|whpk_|whpk1_)?[a-zA-Z0-9+/=]{32,100}$ example: whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD nullable: true StreamSinkPatch: type: object properties: uid: description: The StreamSink's UID. type: string maxLength: 60 minLength: 1 pattern: ^(?!sink_)[a-zA-Z0-9_-]+$ example: unique-identifier nullable: true status: default: null $ref: '#/components/schemas/SinkStatusIn' nullable: true batchSize: type: integer format: uint16 default: null nullable: true maximum: 1000 minimum: 1 example: 100 maxWaitSecs: type: integer format: uint16 default: null maximum: 300 minimum: 0 nullable: true eventTypes: type: array items: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup metadata: type: object additionalProperties: type: string oneOf: - type: object properties: type: type: string enum: - poller required: - type - type: object properties: type: type: string enum: - azureBlobStorage config: $ref: '#/components/schemas/AzureBlobStoragePatchConfig' required: - config - type - type: object properties: type: type: string enum: - otelTracing config: $ref: '#/components/schemas/OtelTracingPatchConfig' required: - config - type - type: object properties: type: type: string enum: - http config: $ref: '#/components/schemas/HttpPatchConfig' required: - config - type - type: object properties: type: type: string enum: - amazonS3 config: $ref: '#/components/schemas/AmazonS3PatchConfig' required: - config - type - type: object properties: type: type: string enum: - googleCloudStorage config: $ref: '#/components/schemas/GoogleCloudStoragePatchConfig' required: - config - type - type: object properties: type: type: string enum: - googleCloudPubSub config: $ref: '#/components/schemas/GoogleCloudPubSubPatchConfig' required: - config - type - type: object properties: type: type: string enum: - sqs config: $ref: '#/components/schemas/SqsPatchConfig' required: - config - type - type: object properties: type: type: string enum: - sns config: $ref: '#/components/schemas/SnsPatchConfig' required: - config - type - type: object properties: type: type: string enum: - bigQuery config: $ref: '#/components/schemas/BigQueryPatchConfig' required: - config - type - type: object properties: type: type: string enum: - clickhouse config: $ref: '#/components/schemas/ClickhousePatchConfig' required: - config - type - type: object properties: type: type: string enum: - eventBridge config: $ref: '#/components/schemas/EventBridgePatchConfig' required: - config - type - type: object properties: type: type: string enum: - snowflake config: $ref: '#/components/schemas/SnowflakePatchConfig' required: - config - type - type: object properties: type: type: string enum: - rabbitMq config: $ref: '#/components/schemas/RabbitMqPatchConfig' required: - config - type - type: object properties: type: type: string enum: - redshift config: $ref: '#/components/schemas/RedshiftPatchConfig' required: - config - type HttpErrorOut: title: HttpError type: object properties: code: type: string detail: type: string required: - code - detail SinkStatus: type: string enum: - enabled - paused - disabled - retrying EventBridgeConfig: type: object properties: eventBusName: description: The name or ARN of the event bus to receive the event type: string detailType: description: Free-form string, with a maximum of 128 characters type: string default: application/json maxLength: 128 example: ResourceGroups Resource State Change accessKeyId: type: string secretAccessKey: type: string region: type: string required: - accessKeyId - eventBusName - region - secretAccessKey SinkTransformationOut: type: object properties: code: type: string nullable: true enabled: type: boolean required: - enabled EndpointSecretRotateIn: type: object properties: key: description: 'The endpoint''s verification secret. Format: `base64` encoded random bytes optionally prefixed with `whsec_`. It is recommended to not set this and let the server generate the secret.' type: string default: null pattern: ^(whsec_|whsk_|whsk1_|whpk_|whpk1_)?[a-zA-Z0-9+/=]{32,100}$ example: whsec_C2FVsBQIhrscChlQIMV+b5sSYspob7oD nullable: true gracePeriodSeconds: description: 'How long the old secret will be valid for, in seconds. Valid values are between 0 (immediate expiry) and 7 days. The default is 24 hours.' type: integer format: uint32 default: 86400 maximum: 604800 minimum: 0 nullable: true GoogleCloudStorageConfig: description: 'Configuration for a Google Cloud Storage sink. Write stream events into the named bucket using the supplied Google Cloud credentials.' type: object properties: bucket: type: string credentials: description: Google Cloud Credentials JSON Object as a string. type: string required: - bucket - credentials HTTPValidationError: type: object properties: detail: type: array items: $ref: '#/components/schemas/ValidationError' required: - detail 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 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 required: - loc - msg - type Ordering: description: Defines the ordering in a listing of results. type: string enum: - ascending - descending GoogleCloudStoragePatchConfig: type: object properties: bucket: type: string credentials: type: string EventOut: type: object properties: eventType: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup payload: type: string timestamp: type: string format: date-time required: - eventType - payload - timestamp HttpSinkHeadersPatchIn: type: object properties: headers: type: object additionalProperties: type: string nullable: true example: X-Example: '123' X-Foobar: Bar required: - headers SnowflakeConfig: description: Configuration parameters for defining a Snowflake sink. type: object properties: privateKey: description: 'PEM-encoded private key used for signing token-based requests to the Snowflake API. Beginning/end delimiters are not required.' type: string accountIdentifier: description: Snowflake account identifier, which includes both the organization and account IDs separated by a hyphen. type: string userId: description: The Snowflake user id. type: string dbName: description: 'Database name. Only required if not using transformations.' type: string schemaName: description: 'Schema name. Only required if not using transformations.' type: string tableName: description: 'Table name. Only required if not using transformations.' type: string required: - accountIdentifier - privateKey - userId BigQueryPatchConfig: type: object properties: projectId: type: string datasetId: type: string tableId: type: string credentials: type: string SkipParams: type: object properties: iterator: type: string nullable: true ListResponse_StreamSinkOut_: type: object properties: data: type: array items: $ref: '#/components/schemas/StreamSinkOut' iterator: type: string nullable: true example: iterator prevIterator: type: string nullable: true example: -iterator done: type: boolean required: - data - done - iterator StreamSinkIn: type: object properties: uid: description: An optional unique identifier for the sink. type: string maxLength: 60 minLength: 1 pattern: ^(?!sink_)[a-zA-Z0-9_-]+$ example: unique-identifier nullable: true status: description: 'Whether the sink will receive events. If the sink is `enabled`, any events posted to the stream will be dispatched to the Sink in the same order that events were posted to the stream. If the sink is `disabled`, events will not be dispatched to the sink until the sink is reenabled.' default: enabled $ref: '#/components/schemas/SinkStatusIn' batchSize: description: How many events will be batched in a request to the Sink. type: integer format: uint16 default: 100 minimum: 1 maximum: 1000 example: 100 maxWaitSecs: description: 'How long to wait before a batch of events is sent, if the `batchSize` is not reached. For example, with a `batchSize` of 100 and `maxWaitSecs` of 10, we will send a request after 10 seconds or 100 events, whichever comes first. Note that we will never send an empty batch of events to the Sink.' type: integer format: uint16 default: 0 maximum: 300 minimum: 0.0 eventTypes: description: A list of event types that filter which events are dispatched to the Sink. An empty list (or null) will not filter out any events. type: array default: [] items: description: The event type's name type: string maxLength: 256 pattern: ^[a-zA-Z0-9\-_.]+$ example: user.signup metadata: type: object default: {} additionalProperties: type: string oneOf: - type: object properties: type: type: string enum: - poller required: - type - type: object properties: type: type: string enum: - azureBlobStorage config: $ref: '#/components/schemas/AzureBlobStorageConfig' required: - config - type - type: object properties: type: type: string enum: - otelTracing config: $ref: '#/components/schemas/SinkOtelV1Config' required: - config - type - type: object properties: type: type: string enum: - http config: $ref: '#/components/schemas/SinkHttpConfig' required: - config - type - type: object properties: type: type: string enum: - amazonS3 config: $ref: '#/components/schemas/S3Config' required: - config - type - type: object properties: type: type: string enum: - googleCloudStorage config: $ref: '#/components/schemas/GoogleCloudStorageConfig' required: - config - type - type: object properties: type: type: string enum: - googleCloudPubSub config: $ref: '#/components/schemas/GoogleCloudPubSubConfig' required: - config - type - type: object properties: type: type: string enum: - sqs config: $ref: '#/components/schemas/SqsConfig' required: - config - type - type: object properties: type: type: string enum: - sns config: $ref: '#/components/schemas/SnsConfig' required: - config - type - type: object properties: type: type: string enum: - bigQuery config: $ref: '#/components/schemas/BigQueryConfig' required: - config - type - type: object properties: type: type: string enum: - clickhouse config: $ref: '#/components/schemas/ClickhouseConfig' required: - config - type - type: object properties: type: type: string enum: - eventBridge config: $ref: '#/components/schemas/EventBridgeConfig' required: - config - type - type: object properties: type: type: string enum: - snowflake config: $ref: '#/components/schemas/SnowflakeConfig' required: - config - type - type: object properties: type: type: string enum: - rabbitMq config: $ref: '#/components/schemas/RabbitMqConfig' required: - config - type - type: object properties: type: type: string enum: - redshift config: $ref: '#/components/schemas/RedshiftConfig' required: - config - type 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: endpoint.created: post: tags: - Webhook summary: endpoint.created description: Sent when an endpoint is created. operationId: endpoint.created requestBody: content: application/json: schema: $ref: '#/components/schemas/EndpointCreatedEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.created responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch endpoint.deleted: post: tags: - Webhook summary: endpoint.deleted description: Sent when an endpoint is deleted. operationId: endpoint.deleted requestBody: content: application/json: schema: $ref: '#/components/schemas/EndpointDeletedEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.deleted responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch endpoint.disabled: post: tags: - Webhook summary: endpoint.disabled 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: schema: $ref: '#/components/schemas/EndpointDisabledEvent' 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 responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch endpoint.enabled: post: tags: - Webhook summary: endpoint.enabled description: Sent when an endpoint has been enabled. operationId: endpoint.enabled requestBody: content: application/json: schema: $ref: '#/components/schemas/EndpointEnabledEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.enabled responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch endpoint.updated: post: tags: - Webhook summary: endpoint.updated description: Sent when an endpoint is updated. operationId: endpoint.updated requestBody: content: application/json: schema: $ref: '#/components/schemas/EndpointUpdatedEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier type: endpoint.updated responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch message.attempt.exhausted: post: tags: - Webhook summary: message.attempt.exhausted description: Sent when a message delivery has failed (all of the retry attempts have been exhausted). operationId: message.attempt.exhausted requestBody: content: application/json: schema: $ref: '#/components/schemas/MessageAttemptExhaustedEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' type: message.attempt.exhausted responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch message.attempt.failing: post: tags: - Webhook summary: message.attempt.failing 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: schema: $ref: '#/components/schemas/MessageAttemptFailingEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' type: message.attempt.failing responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch message.attempt.recovered: post: tags: - Webhook summary: message.attempt.recovered description: Sent on a successful dispatch after an earlier failure op webhook has already been sent. operationId: message.attempt.recovered requestBody: content: application/json: schema: $ref: '#/components/schemas/MessageAttemptRecoveredEvent' example: data: appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 200 timestamp: '2022-11-06T15:04:05Z' type: message.attempt.recovered responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch background_task.finished: post: tags: - Webhook summary: background_task.finished description: Sent when a background task is finished. operationId: background_task.finished requestBody: content: application/json: schema: $ref: '#/components/schemas/BackgroundTaskFinishedEvent' example: data: taskId: qtask_1srOrx2ZWZBpBUvZwXKQmoEYga2 task: application.stats status: finished data: appStats: - messageDestinations: 343 appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: null type: background_task.finished responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully ingest.endpoint.disabled: post: tags: - Webhook summary: ingest.endpoint.disabled 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: schema: $ref: '#/components/schemas/IngestEndpointDisabledEvent' example: data: sourceId: src_30HT9jb8WZXKVWIO44ZDr endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 endpointUid: unique-endpoint-identifier failSince: '2022-11-06T15:04:05Z' trigger: automatic type: ingest.endpoint.disabled responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully ingest.message.attempt.exhausted: post: tags: - Webhook summary: ingest.message.attempt.exhausted 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: schema: $ref: '#/components/schemas/IngestMessageAttemptExhaustedEvent' example: data: sourceId: src_30HT9jb8WZXKVWIO44ZDr msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' type: ingest.message.attempt.exhausted responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully ingest.message.attempt.failing: post: tags: - Webhook summary: ingest.message.attempt.failing 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: schema: $ref: '#/components/schemas/IngestMessageAttemptFailingEvent' example: data: sourceId: src_30HT9jb8WZXKVWIO44ZDr msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 500 timestamp: '2022-11-06T15:04:05Z' type: ingest.message.attempt.failing responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully ingest.message.attempt.recovered: post: tags: - Webhook summary: ingest.message.attempt.recovered 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: schema: $ref: '#/components/schemas/IngestMessageAttemptRecoveredEvent' example: data: sourceId: src_30HT9jb8WZXKVWIO44ZDr msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 lastAttempt: id: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 200 timestamp: '2022-11-06T15:04:05Z' type: ingest.message.attempt.recovered responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully message.attempt.log: post: tags: - Webhook summary: message.attempt.log 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: schema: $ref: '#/components/schemas/MessageAttemptLogEvent' example: data: - orgId: env_1srOrx2ZWZBpBUvZwXKQmoEYga2 appId: app_1srOrx2ZWZBpBUvZwXKQmoEYga2 appUid: unique-app-identifier endpointId: ep_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgId: msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 msgEventId: unique-msg-identifier msgCreated: '2022-11-06T15:04:05Z' attemptStart: '2022-11-06T15:04:06Z' attemptEnd: '2022-11-06T15:04:07Z' attemptId: atmpt_1srOrx2ZWZBpBUvZwXKQmoEYga2 responseStatusCode: 200 attemptCount: 1 status: 0 eventType: user.signup type: message.attempt.log responses: 2XX: description: Return any 2XX status to indicate that the data was received successfully x-svix-group-name: dispatch x-svix-feature-flags: - attempt_log x-internal: true